# Copyright 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
# 1998, 1999, 2000 Free Software Foundation, Inc.

# This file is part of GDB.

# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
# 
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
# 
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

prefix = @prefix@
exec_prefix = @exec_prefix@

host_alias = @host_alias@
target_alias = @target_alias@
program_transform_name = @program_transform_name@
bindir = @bindir@
libdir = @libdir@
tooldir = $(libdir)/$(target_alias)

datadir = @datadir@
mandir = @mandir@
man1dir = $(mandir)/man1
man2dir = $(mandir)/man2
man3dir = $(mandir)/man3
man4dir = $(mandir)/man4
man5dir = $(mandir)/man5
man6dir = $(mandir)/man6
man7dir = $(mandir)/man7
man8dir = $(mandir)/man8
man9dir = $(mandir)/man9
infodir = @infodir@
htmldir = $(prefix)/html
includedir = @includedir@

# This can be referenced by `INTLDEPS' as computed by CY_GNU_GETTEXT.
top_builddir = .

SHELL = @SHELL@
EXEEXT = @EXEEXT@

AWK = @AWK@
LN_S = @LN_S@

INSTALL = @INSTALL@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_DATA = @INSTALL_DATA@

AR = @AR@
AR_FLAGS = qv
RANLIB = @RANLIB@
DLLTOOL = @DLLTOOL@
WINDRES = @WINDRES@
MIG = @MIG@

# Flags that describe where you can find the termcap library.
# This can be overridden in the host Makefile fragment file.
TERMCAP = @TERM_LIB@

# If you are compiling with GCC, make sure that either 1) You have the
# fixed include files where GCC can reach them, or 2) You use the
# -traditional flag.  Otherwise the ioctl calls in inflow.c
# will be incorrectly compiled.  The "fixincludes" script in the gcc
# distribution will fix your include files up.
CC=@CC@

# Directory containing source files.
srcdir = @srcdir@
VPATH = @srcdir@

YACC=@YACC@

YLWRAP = $(srcdir)/../ylwrap

# where to find makeinfo, preferably one designed for texinfo-2
MAKEINFO=makeinfo

MAKEHTML = texi2html

MAKEHTMLFLAGS = -glossary -menu -split_chapter

# Set this up with gcc if you have gnu ld and the loader will print out
# line numbers for undefined references.
#CC_LD=gcc -static
CC_LD=$(CC)

# Where is our "include" directory?  Typically $(srcdir)/../include.
# This is essentially the header file directory for the library
# routines in libiberty.
INCLUDE_DIR =  $(srcdir)/../include
INCLUDE_CFLAGS = -I$(INCLUDE_DIR)

# Where is the "-liberty" library?  Typically in ../libiberty.
LIBIBERTY = ../libiberty/libiberty.a

# Configured by the --with-mmalloc option to configure.
MMALLOC = @MMALLOC@
MMALLOC_CFLAGS = @MMALLOC_CFLAGS@

# We are using our own version of REGEX now to be consistent across
# machines.
REGEX = @REGEX@

# Where is the BFD library?  Typically in ../bfd.
BFD_DIR = ../bfd
BFD = $(BFD_DIR)/libbfd.a
BFD_SRC = $(srcdir)/$(BFD_DIR)
BFD_CFLAGS = -I$(BFD_DIR) -I$(BFD_SRC)

# Where is the READLINE library?  Typically in ../readline.
READLINE_DIR = ../readline
READLINE = $(READLINE_DIR)/libreadline.a
READLINE_SRC = $(srcdir)/$(READLINE_DIR)
READLINE_CFLAGS = -I$(READLINE_SRC)/..

WARN_CFLAGS = @WARN_CFLAGS@
WERROR_CFLAGS = @WERROR_CFLAGS@
GDB_WARN_CFLAGS = $(WARN_CFLAGS)
GDB_WERROR_CFLAGS = $(WERROR_CFLAGS)

# Where is the INTL library?  Typically in ../intl.
INTL_DIR = ../intl
INTL = @INTLLIBS@
INTL_DEPS = @INTLDEPS@
INTL_SRC = $(srcdir)/$(INTL_DIR)
INTL_CFLAGS = -I$(INTL_DIR) -I$(INTL_SRC)

#
# MI sub directory definitons
#
SUBDIR_MI_OBS = \
	mi-out.o mi-console.o \
	mi-cmds.o mi-cmd-var.o mi-cmd-break.o mi-cmd-stack.o \
	mi-cmd-disas.o \
	mi-main.o mi-parse.o mi-getopt.o
SUBDIR_MI_SRCS = \
	mi/mi-out.c mi/mi-console.c \
	mi/mi-cmds.c \
	mi/mi-cmd-var.c mi/mi-cmd-break.c mi/mi-cmd-stack.c \
	mi/mi-cmd-disas.c \
	mi/mi-main.c mi/mi-parse.c mi/mi-getopt.c
SUBDIR_MI_DEPS =
SUBDIR_MI_INITS = \
	mi/mi-cmds.c mi/mi-parse.c mi/mi-main.c
SUBDIR_MI_LDFLAGS=
SUBDIR_MI_CFLAGS= \
	-DUI_OUT=1
SUBDIR_MI_ALL=
SUBDIR_MI_CLEAN=
SUBDIR_MI_INSTALL=
SUBDIR_MI_UNINSTALL=

#
# TUI sub directory definitions
#
SUBDIR_TUI_OBS = \
	tui.o tuiData.o tuiSource.o tuiStack.o tuiIO.o \
	tuiGeneralWin.o tuiLayout.o tuiWin.o tuiCommand.o \
	tuiDisassem.o tuiSourceWin.o tuiRegs.o tuiDataWin.o
SUBDIR_TUI_SRCS = \
	tui/tui.c tui/tuiData.c tui/tuiSource.c \
	tui/tuiStack.c tui/tuiIO.c \
	tui/tuiGeneralWin.c tui/tuiLayout.c \
	tui/tuiWin.c tui/tuiCommand.c \
	tui/tuiDisassem.c tui/tuiSourceWin.c \
	tui/tuiRegs.c tui/tuiDataWin.c
SUBDIR_TUI_DEPS =
SUBDIR_TUI_INITS = \
	$(SUBDIR_TUI_SRCS)
SUBDIR_TUI_LDFLAGS=
SUBDIR_TUI_CFLAGS= \
	-DTUI=1 -I${srcdir}/tui
SUBDIR_TUI_ALL=
SUBDIR_TUI_CLEAN=
SUBDIR_TUI_INSTALL=
SUBDIR_TUI_UNINSTALL=



# Opcodes currently live in one of two places.  Either they are in the
# opcode library, typically ../opcodes, or they are in a header file
# in INCLUDE_DIR.
# Where is the "-lopcodes" library, with (some of) the opcode tables and
# disassemblers?
OPCODES = ../opcodes/libopcodes.a
# Where are the other opcode tables which only have header file
# versions?
OP_INCLUDE = $(INCLUDE_DIR)/opcode
OPCODES_CFLAGS = -I$(OP_INCLUDE)

# The simulator is usually nonexistent; targets that include one
# should set this to list all the .o or .a files to be linked in.
SIM =

WIN32LIBS = @WIN32LIBS@

# Where is the TCL library?  Typically in ../tcl.
LIB_INSTALL_DIR = $(libdir)
# This variable is needed when doing dynamic linking.
LIB_RUNTIME_DIR = $(libdir)
TCL = @TCL_LD_SEARCH_FLAGS@ @TCL_BUILD_LIB_SPEC@
TCL_CFLAGS = @TCLHDIR@
TCL_DEPS =
GDBTKLIBS = @GDBTKLIBS@
# Extra flags that the GDBTK files need:
GDBTK_CFLAGS = @GDBTK_CFLAGS@

# Where is the TK library?  Typically in ../tk.
TK = @TK_BUILD_LIB_SPEC@
TK_CFLAGS = @TKHDIR@ @TK_BUILD_INCLUDES@
TK_DEPS =

# Where is Itcl?  Typically in ../itcl/itcl.
ITCL_CFLAGS = @ITCLHDIR@
ITCL = @ITCLLIB@
ITCL_DEPS = @ITCL_DEPS@ 

# Where is Itk?  Typically in ../itcl/itk.
ITK_CFLAGS = @ITKHDIR@
ITK = @ITKLIB@
ITK_DEPS = @ITK_DEPS@ 

# Where is Tix?  Typically in ../tix.
TIX_CFLAGS = @TIXHDIR@
TIX = @TIXLIB@
TIX_DEPS = @TIX_DEPS@

X11_CFLAGS = @TK_XINCLUDES@
X11_LDFLAGS =
X11_LIBS =

WIN32LDAPP = @WIN32LDAPP@

LIBGUI = @LIBGUI@
GUI_CFLAGS_X = @GUI_CFLAGS_X@
IDE_CFLAGS=$(GUI_CFLAGS_X) $(IDE_CFLAGS_X)
SUBDIR_GDBTK_ALL= all-gdbtk
SUBDIR_GDBTK_CLEAN= clean-gdbtk
SUBDIR_GDBTK_INSTALL= install-gdbtk
SUBDIR_GDBTK_UNINSTALL= 

CONFIG_OBS= @CONFIG_OBS@
CONFIG_SRCS= @CONFIG_SRCS@
CONFIG_DEPS= @CONFIG_DEPS@
CONFIG_INITS= @CONFIG_INITS@
CONFIG_LDFLAGS = @CONFIG_LDFLAGS@
ENABLE_CFLAGS= @ENABLE_CFLAGS@
CONFIG_ALL= @CONFIG_ALL@
CONFIG_CLEAN= @CONFIG_CLEAN@
CONFIG_CLEAN= @CONFIG_CLEAN@
CONFIG_INSTALL = @CONFIG_INSTALL@
CONFIG_UNINSTALL = @CONFIG_UNINSTALL@

# -I. for config files.
# -I$(srcdir) for gdb internal headers and possibly for gnu-regex.h also.
# -I$(srcdir)/config for more generic config files.

# It is also possible that you will need to add -I/usr/include/sys if
# your system doesn't have fcntl.h in /usr/include (which is where it
# should be according to Posix).
DEFS = @DEFS@
GDB_CFLAGS = -I. -I$(srcdir) -I$(srcdir)/config $(DEFS)

# M{H,T}_CFLAGS, if defined, have host- and target-dependent CFLAGS
# from the config directory.
GLOBAL_CFLAGS = $(MT_CFLAGS) $(MH_CFLAGS)
#PROFILE_CFLAGS = -pg

# CFLAGS is specifically reserved for setting from the command line
# when running make.  I.E.  "make CFLAGS=-Wmissing-prototypes".
CFLAGS = @CFLAGS@

# Need to pass this to testsuite for "make check".  Probably should be
# consistent with top-level Makefile.in and gdb/testsuite/Makefile.in
# so "make check" has the same result no matter where it is run.
CXXFLAGS = -g -O

# INTERNAL_CFLAGS is the aggregate of all other *CFLAGS macros.
INTERNAL_WARN_CFLAGS = \
	$(CFLAGS) $(GLOBAL_CFLAGS) $(PROFILE_CFLAGS) \
	$(GDB_CFLAGS) $(OPCODES_CFLAGS) $(READLINE_CFLAGS) \
	$(BFD_CFLAGS) $(MMALLOC_CFLAGS) $(INCLUDE_CFLAGS) \
	$(INTL_CFLAGS) $(ENABLE_CFLAGS) \
	$(GDB_WARN_CFLAGS)
INTERNAL_CFLAGS = $(INTERNAL_WARN_CFLAGS) $(GDB_WERROR_CFLAGS)

# LDFLAGS is specifically reserved for setting from the command line
# when running make.

# Profiling options need to go here to work.
# I think it's perfectly reasonable for a user to set -pg in CFLAGS
# and have it work; that's why CFLAGS is here.
INTERNAL_LDFLAGS = $(CFLAGS) $(GLOBAL_CFLAGS) $(PROFILE_CFLAGS) $(MH_LDFLAGS) $(LDFLAGS) $(CONFIG_LDFLAGS) @HLDFLAGS@
HLDENV = @HLDENV@

# If your system is missing alloca(), or, more likely, it's there but
# it doesn't work, then refer to libiberty.

# Libraries and corresponding dependencies for compiling gdb.
# {X,T}M_CLIBS, defined in *config files, have host- and target-dependent libs.
# TERMCAP comes after readline, since readline depends on it.
# MMALLOC comes after anything else that might want an allocation function.
# LIBIBERTY appears twice on purpose.
# If you have the Cygnus libraries installed,
# you can use 'CLIBS=$(INSTALLED_LIBS)' 'CDEPS='
INSTALLED_LIBS=-lbfd -lreadline -lopcodes -liberty \
	$(TERMCAP) $(XM_CLIBS) $(TM_CLIBS) $(NAT_CLIBS) $(GDBTKLIBS) @LIBS@ \
	-lmmalloc -lintl -liberty
CLIBS = $(SIM) $(BFD) $(READLINE) $(OPCODES) $(INTL) $(LIBIBERTY) \
	$(TERMCAP) $(XM_CLIBS) $(TM_CLIBS) $(NAT_CLIBS) $(GDBTKLIBS) @LIBS@ \
	$(MMALLOC) $(LIBIBERTY) $(WIN32LIBS)
CDEPS = $(XM_CDEPS) $(TM_CDEPS) $(NAT_CDEPS) $(SIM) $(BFD) $(READLINE) \
	$(OPCODES) $(MMALLOC) $(INTL_DEPS) $(LIBIBERTY) $(CONFIG_DEPS)

ADD_FILES = $(REGEX) $(XM_ADD_FILES) $(TM_ADD_FILES) $(NAT_ADD_FILES)
ADD_DEPS = $(REGEX) $(XM_ADD_FILES) $(TM_ADD_FILES) $(NAT_ADD_FILES)

VERSION = 5.0
DIST=gdb

LINT=/usr/5bin/lint
LINTFLAGS= $(BFD_CFLAGS)

RUNTEST = `if [ -f $${rootsrc}/../dejagnu/runtest ] ; then \
		echo $${rootsrc}/../dejagnu/runtest ; else echo runtest; \
	   fi`

RUNTESTFLAGS=

# This is ser-unix.o for any system which supports a v7/BSD/SYSV/POSIX
# interface to the serial port.  Hopefully if get ported to OS/2, VMS,
# etc., then there will be (as part of the C library or perhaps as
# part of libiberty) a POSIX interface.  But at least for now the
# host-dependent makefile fragment might need to use something else
# besides ser-unix.o
SER_HARDWIRE = @SER_HARDWIRE@

# The `remote' debugging target is supported for most architectures,
# but not all (e.g. 960)
REMOTE_OBS = remote.o dcache.o remote-utils.o tracepoint.o ax-general.o ax-gdb.o

# This is remote-sim.o if a simulator is to be linked in.
SIM_OBS =

ANNOTATE_OBS = annotate.o

# Host and target-dependent makefile fragments come in here.
@host_makefile_frag@
@target_makefile_frag@
# End of host and target-dependent makefile fragments

# Possibly ignore the simulator.  If the simulator is being ignored, 
# these expand into SIM= and SIM_OBJ=, overriding the entries from 
# target_makefile_frag
#
@IGNORE_SIM@
@IGNORE_SIM_OBS@

FLAGS_TO_PASS = \
	"prefix=$(prefix)" \
	"exec_prefix=$(exec_prefix)" \
	"infodir=$(infodir)" \
	"against=$(against)" \
	"AR=$(AR)" \
	"AR_FLAGS=$(AR_FLAGS)" \
	"CC=$(CC)" \
	"CFLAGS=$(CFLAGS)" \
	"CHILLFLAGS=$(CHILLFLAGS)" \
	"CHILL=$(CHILL)" \
	"CHILL_LIB=$(CHILL_LIB)" \
	"CXX=$(CXX)" \
	"CXXFLAGS=$(CXXFLAGS)" \
	"DLLTOOL=$(DLLTOOL)" \
	"RANLIB=$(RANLIB)" \
	"MAKEINFO=$(MAKEINFO)" \
	"MAKEHTML=$(MAKEHTML)" \
	"MAKEHTMLFLAGS=$(MAKEHTMLFLAGS)" \
	"INSTALL=$(INSTALL)" \
	"INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \
	"INSTALL_DATA=$(INSTALL_DATA)" \
	"RUNTEST=$(RUNTEST)" \
	"RUNTESTFLAGS=$(RUNTESTFLAGS)"

# Flags that we pass when building the testsuite.

# empty for native, $(target_alias)/ for cross
target_subdir = @target_subdir@

CC_FOR_TARGET = ` \
  if [ -f $${rootme}/../gcc/xgcc ] ; then \
    if [ -f $${rootme}/../$(target_subdir)newlib/Makefile ] ; then \
      echo $${rootme}/../gcc/xgcc -B$${rootme}/../gcc/ -idirafter $${rootme}/$(target_subdir)newlib/targ-include -idirafter $${rootsrc}/../$(target_subdir)newlib/libc/include -nostdinc -B$${rootme}/../$(target_subdir)newlib/; \
    else \
      echo $${rootme}/../gcc/xgcc -B$${rootme}/../gcc/; \
    fi; \
  else \
    if [ "$(host_canonical)" = "$(target_canonical)" ] ; then \
      echo $(CC); \
    else \
      t='$(program_transform_name)'; echo gcc | sed -e '' $$t; \
    fi; \
  fi`

CXX = gcc
CXX_FOR_TARGET = ` \
  if [ -f $${rootme}/../gcc/xgcc ] ; then \
    if [ -f $${rootme}/../$(target_subdir)newlib/Makefile ] ; then \
      echo $${rootme}/../gcc/xgcc -B$${rootme}/../gcc/ -idirafter $${rootme}/$(target_subdir)newlib/targ-include -idirafter $${rootsrc}/../$(target_subdir)newlib/libc/include -nostdinc -B$${rootme}/../$(target_subdir)newlib/; \
    else \
      echo $${rootme}/../gcc/xgcc -B$${rootme}/../gcc/; \
    fi; \
  else \
    if [ "$(host_canonical)" = "$(target_canonical)" ] ; then \
      echo $(CXX); \
    else \
      t='$(program_transform_name)'; echo gcc | sed -e '' $$t; \
    fi; \
  fi`

CHILLFLAGS = $(CFLAGS)
CHILL = gcc
CHILL_FOR_TARGET = ` \
  if [ -f $${rootme}/../gcc/Makefile ] ; then \
    echo $${rootme}/../gcc/xgcc -B$${rootme}/../gcc/ -L$${rootme}/../gcc/ch/runtime/; \
  else \
    if [ "$(host_canonical)" = "$(target_canonical)" ] ; then \
      echo $(CC); \
    else \
      t='$(program_transform_name)'; echo gcc | sed -e '' $$t; \
    fi; \
  fi`
CHILL_LIB = ` \
  if [ -f $${rootme}/../gcc/ch/runtime/libchill.a ] ; then \
    echo $${rootme}/../gcc/ch/runtime/chillrt0.o \
      $${rootme}/../gcc/ch/runtime/libchill.a; \
  else \
      echo -lchill; \
  fi`

# The use of $$(x_FOR_TARGET) reduces the command line length by not
# duplicating the lengthy definition.
TARGET_FLAGS_TO_PASS = \
	"prefix=$(prefix)" \
	"exec_prefix=$(exec_prefix)" \
	"against=$(against)" \
	'CC=$$(CC_FOR_TARGET)' \
	"CC_FOR_TARGET=$(CC_FOR_TARGET)" \
	"CFLAGS=$(CFLAGS)" \
	"CHILLFLAGS=$(CHILLFLAGS)" \
	'CHILL=$$(CHILL_FOR_TARGET)' \
	"CHILL_FOR_TARGET=$(CHILL_FOR_TARGET)" \
	"CHILL_LIB=$(CHILL_LIB)" \
	'CXX=$$(CXX_FOR_TARGET)' \
	"CXX_FOR_TARGET=$(CXX_FOR_TARGET)" \
	"CXXFLAGS=$(CXXFLAGS)" \
	"INSTALL=$(INSTALL)" \
	"INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \
	"INSTALL_DATA=$(INSTALL_DATA)" \
	"MAKEINFO=$(MAKEINFO)" \
	"MAKEHTML=$(MAKEHTML)" \
	"RUNTEST=$(RUNTEST)" \
	"RUNTESTFLAGS=$(RUNTESTFLAGS)"

# All source files that go into linking GDB.
# Links made at configuration time should not be specified here, since
# SFILES is used in building the distribution archive.

SFILES = ax-general.c ax-gdb.c bcache.c blockframe.c breakpoint.c \
	buildsym.c c-exp.y c-lang.c c-typeprint.c c-valprint.c \
	ch-exp.c ch-lang.c ch-typeprint.c ch-valprint.c coffread.c \
	command.c complaints.c corefile.c cp-valprint.c dbxread.c \
	demangle.c dwarfread.c dwarf2read.c elfread.c environ.c eval.c \
	event-loop.c event-top.c \
	expprint.c f-exp.y f-lang.c f-typeprint.c f-valprint.c \
	findvar.c gdbarch.c arch-utils.c gdbtypes.c \
	inf-loop.c infcmd.c inflow.c infrun.c language.c \
	kod.c kod-cisco.c \
	ui-out.c cli-out.c \
	varobj.c wrapper.c \
	jv-exp.y jv-lang.c jv-valprint.c jv-typeprint.c \
	m2-exp.y m2-lang.c m2-typeprint.c m2-valprint.c main.c maint.c \
	mem-break.c minsyms.c mipsread.c nlmread.c objfiles.c parse.c \
	printcmd.c remote.c remote-nrom.c scm-exp.c scm-lang.c \
	scm-valprint.c source.c stabsread.c stack.c symfile.c \
	symmisc.c symtab.c target.c thread.c top.c tracepoint.c \
	typeprint.c utils.c valarith.c valops.c valprint.c values.c \
	serial.c ser-unix.c mdebugread.c os9kread.c \
	tui/tui.c tui/tui.h tui/tuiCommand.c tui/tuiCommand.h \
	tui/tuiData.c tui/tuiData.h tui/tuiDataWin.c tui/tuiDataWin.h \
	tui/tuiDisassem.c tui/tuiDisassem.h tui/tuiGeneralWin.c \
	tui/tuiGeneralWin.h tui/tuiIO.c tui/tuiIO.h tui/tuiLayout.c \
	tui/tuiLayout.h tui/tuiRegs.c tui/tuiRegs.h tui/tuiSource.c \
	tui/tuiSource.h tui/tuiSourceWin.c tui/tuiSourceWin.h \
	tui/tuiStack.c tui/tuiStack.h tui/tuiWin.c tui/tuiWin.h \
	tui/tui-file.h tui/tui-file.c \
	ui-file.h ui-file.c

LINTFILES = $(SFILES) $(YYFILES) $(CONFIG_SRCS) init.c

# "system" headers.  Using these in dependencies is a rather personal
# choice. (-rich, summer 1993)
# (Why would we not want to depend on them?  If one of these changes in a 
# non-binary-compatible way, it is a real pain to remake the right stuff
# without these dependencies -kingdon, 13 Mar 1994)
getopt_h =	$(INCLUDE_DIR)/getopt.h
floatformat_h =	$(INCLUDE_DIR)/floatformat.h
bfd_h =		$(BFD_DIR)/bfd.h
dis-asm_h =	$(INCLUDE_DIR)/dis-asm.h 
remote-sim_h =	$(INCLUDE_DIR)/remote-sim.h

dcache_h = dcache.h
remote_utils_h = $(dcache_h) serial.h target.h remote-utils.h $(remote-sim_h)


readline_headers = \
	$(READLINE_SRC)/chardefs.h \
	$(READLINE_SRC)/history.h \
	$(READLINE_SRC)/keymaps.h \
	$(READLINE_SRC)/readline.h

udiheaders = \
	$(srcdir)/29k-share/udi/udiproc.h \
	$(srcdir)/29k-share/udi/udiphcfg.h \
	$(srcdir)/29k-share/udi/udiphunix.h \
	$(srcdir)/29k-share/udi/udiptcfg.h \
	$(srcdir)/29k-share/udi/udipt29k.h \
	$(srcdir)/29k-share/udi/udisoc.h

gdbcore_h =	gdbcore.h $(bfd_h)

frame_h =	frame.h
symtab_h =	symtab.h bcache.h
gdbtypes_h =	gdbtypes.h
expression_h =	expression.h
value_h =	value.h $(symtab_h) $(gdbtypes_h) $(expression_h)

breakpoint_h =	breakpoint.h $(frame_h) $(value_h)

command_h =	command.h
gdbcmd_h =	gdbcmd.h $(command_h)

call_cmds_h =	call-cmds.h
defs_h =	defs.h xm.h tm.h nm.h config.status config.h gdbarch.h ui-file.h

top_h =		top.h
inferior_h =	inferior.h $(breakpoint_h)
tracepoint_h =	tracepoint.h
ax_h = 		ax.h
event_loop_h =  event-loop.h
event_top_h = 	event-top.h
inf_loop_h =  	inf-loop.h
remote_h =	remote.h
version_h = 	version.h
ui_out_h =      ui-out.h
cli_out_h =	cli-out.h
arch_utils_h = arch-utils.h

# Header files that need to have srcdir added.  Note that in the cases
# where we use a macro like $(gdbcmd_h), things are carefully arranged
# so that each .h file is listed exactly once (M-x tags-search works
# wrong if TAGS has files twice).  Because this is tricky to get
# right, it is probably easiest just to list .h files here directly.

HFILES_NO_SRCDIR = bcache.h buildsym.h call-cmds.h coff-solib.h defs.h \
	dst.h environ.h $(gdbcmd_h) gdbcore.h \
	gdb-stabs.h hpread.h $(inferior_h) language.h minimon.h monitor.h \
	objfiles.h parser-defs.h partial-stab.h serial.h signals.h solib.h \
	symfile.h stabsread.h target.h terminal.h typeprint.h xcoffsolib.h \
	c-lang.h ch-lang.h f-lang.h \
	jv-lang.h \
	m2-lang.h \
	complaints.h valprint.h \
	29k-share/udi/udiids.h 29k-share/udi_soc nindy-share/b.out.h \
	nindy-share/block_io.h nindy-share/coff.h \
	nindy-share/env.h nindy-share/stop.h \
	vx-share/dbgRpcLib.h vx-share/ptrace.h vx-share/vxTypes.h \
	vx-share/vxWorks.h vx-share/wait.h vx-share/xdr_ld.h \
	vx-share/xdr_ptrace.h vx-share/xdr_rdb.h gdbthread.h \
	dcache.h remote-utils.h top.h somsolib.h

# Header files that already have srcdir in them, or which are in objdir.

HFILES_WITH_SRCDIR = $(udiheaders) ../bfd/bfd.h


# GDB "info" files, which should be included in their entirety
INFOFILES = gdb.info*

REMOTE_EXAMPLES = m68k-stub.c i386-stub.c sparc-stub.c rem-multi.shar

POSSLIBS = gnu-regex.c gnu-regex.h

# {X,T,NAT}DEPFILES are something of a pain in that it's hard to
# default their values the way we do for SER_HARDWIRE; in the future
# maybe much of the stuff now in {X,T,NAT}DEPFILES will go into other
# variables analogous to SER_HARDWIRE which get defaulted in this
# Makefile.in

DEPFILES = $(TDEPFILES) $(XDEPFILES) $(SER_HARDWIRE) $(NATDEPFILES) \
	   $(REMOTE_OBS) $(SIM_OBS) $(CONFIG_OBS)

SOURCES = $(SFILES) $(ALLDEPFILES) $(YYFILES) $(CONFIG_SRCS)
# Don't include YYFILES (*.tab.c) because we already include *.y in SFILES,
# and it's more useful to see it in the .y file.
TAGFILES_NO_SRCDIR = $(SFILES) $(HFILES_NO_SRCDIR) $(ALLDEPFILES) \
	$(POSSLIBS)
TAGFILES_WITH_SRCDIR = $(HFILES_WITH_SRCDIR)

COMMON_OBS = version.o blockframe.o breakpoint.o findvar.o stack.o thread.o \
	source.o values.o eval.o valops.o valarith.o valprint.o printcmd.o \
	symtab.o symfile.o symmisc.o infcmd.o infrun.o command.o \
	expprint.o environ.o \
	event-loop.o event-top.o inf-loop.o \
	gdbarch.o arch-utils.o gdbtypes.o copying.o $(DEPFILES) \
	mem-break.o target.o parse.o language.o $(YYOBJ) buildsym.o \
	kod.o kod-cisco.o \
	gdb-events.o \
	exec.o bcache.o objfiles.o minsyms.o maint.o demangle.o \
	dbxread.o coffread.o elfread.o \
	dwarfread.o dwarf2read.o mipsread.o stabsread.o corefile.o \
	c-lang.o ch-exp.o ch-lang.o f-lang.o \
	ui-out.o cli-out.o \
	varobj.o wrapper.o \
	jv-lang.o jv-valprint.o jv-typeprint.o \
	m2-lang.o \
	scm-exp.o scm-lang.o scm-valprint.o complaints.o typeprint.o \
	c-typeprint.o ch-typeprint.o f-typeprint.o m2-typeprint.o \
	c-valprint.o cp-valprint.o ch-valprint.o f-valprint.o m2-valprint.o \
	nlmread.o serial.o mdebugread.o os9kread.o top.o utils.o \
	ui-file.o tui-file.o

OBS = $(COMMON_OBS) $(ANNOTATE_OBS)

TSOBS = inflow.o

NTSOBS = standalone.o

NTSSTART = kdb-start.o

SUBDIRS = @SUBDIRS@

# For now, shortcut the "configure GDB for fewer languages" stuff.
YYFILES = c-exp.tab.c \
	jv-exp.tab.c \
	f-exp.tab.c m2-exp.tab.c
YYOBJ = c-exp.tab.o \
	jv-exp.tab.o \
	f-exp.tab.o m2-exp.tab.o

# Things which need to be built when making a distribution.

DISTSTUFF = $(YYFILES)

# Prevent Sun make from putting in the machine type.  Setting
# TARGET_ARCH to nothing works for SunOS 3, 4.0, but not for 4.1.
.c.o:
	$(CC) -c $(INTERNAL_CFLAGS) $<

all: gdb$(EXEEXT) $(CONFIG_ALL)
	@$(MAKE) $(FLAGS_TO_PASS) DO=all "DODIRS=`echo $(SUBDIRS) | sed 's/testsuite//'`" subdir_do

installcheck:

# The check target can not use subdir_do, because subdir_do does not
# use TARGET_FLAGS_TO_PASS.
check: force
	@if [ -f testsuite/Makefile ]; then \
	  rootme=`pwd`; export rootme; \
	  rootsrc=`cd $(srcdir); pwd`; export rootsrc; \
	  cd testsuite; \
	  $(MAKE) $(TARGET_FLAGS_TO_PASS) check; \
	else true; fi

info dvi install-info clean-info html install-html: force
	@$(MAKE) $(FLAGS_TO_PASS) DO=$@ "DODIRS=$(SUBDIRS)" subdir_do

gdb.z:gdb.1
	nroff -man $(srcdir)/gdb.1 | col -b > gdb.t 
	pack gdb.t ; rm -f gdb.t
	mv gdb.t.z gdb.z

# Traditionally "install" depends on "all".  But it may be useful
# not to; for example, if the user has made some trivial change to a 
# source file and doesn't care about rebuilding or just wants to save the
# time it takes for make to check that all is up to date.
# install-only is intended to address that need.
install: all install-only
install-only: $(CONFIG_INSTALL)
	transformed_name=`t='$(program_transform_name)'; \
			  echo gdb | sed -e $$t` ; \
		if test "x$$transformed_name" = x; then \
		  transformed_name=gdb ; \
		else \
		  true ; \
		fi ; \
		$(srcdir)/../mkinstalldirs $(bindir) ; \
		$(INSTALL_PROGRAM) gdb$(EXEEXT) $(bindir)/$$transformed_name$(EXEEXT) ; \
		$(srcdir)/../mkinstalldirs $(man1dir) ; \
		$(INSTALL_DATA) $(srcdir)/gdb.1 $(man1dir)/$$transformed_name.1
	@$(MAKE) DO=install "DODIRS=$(SUBDIRS)" $(FLAGS_TO_PASS) subdir_do 

uninstall: force $(CONFIG_UNINSTALL)
	transformed_name=`t='$(program_transform_name)'; \
			  echo gdb | sed -e $$t` ; \
		if test "x$$transformed_name" = x; then \
		  transformed_name=gdb ; \
		else \
		  true ; \
		fi ; \
		rm -f $(bindir)/$$transformed_name$(EXEEXT) $(man1dir)/$$transformed_name.1
	rm -rf $(datadir)/gdbtcl
	@$(MAKE) DO=uninstall "DODIRS=$(SUBDIRS)" $(FLAGS_TO_PASS) subdir_do 

# We do this by grepping through sources.  If that turns out to be too slow,
# maybe we could just require every .o file to have an initialization routine
# of a given name (remote-udi.o -> _initialize_remote_udi, etc.).
#
# Formatting conventions:  The name of the _initialize_* routines must start
# in column zero, and must not be inside #if.
#
# Note that the set of files with init functions might change, or the names
# of the functions might change, so this files needs to depend on all the
# object files that will be linked into gdb.
#
# FIXME: There are 2 problems with this approach. First, if the INIT_FILES
# list includes a file twice (because of some mistake somewhere else) 
# the _initialize_* function will be included twice in init.c. Second, 
# init.c may force unnecessary files to be linked in. Like for instance 
# tui-file.c.
#

INIT_FILES = $(OBS) $(TSOBS) $(CONFIG_INITS)
init.c: $(INIT_FILES)
	@echo Making init.c
	@rm -f init.c-tmp init.l-tmp
	@-echo $(INIT_FILES) | \
	tr ' ' '\012' | \
	sed -e '/^Onindy.o/d' \
	    -e '/^init.o/d' \
	    -e '/^nindy.o/d' \
	    -e '/ttyflush.o/d' \
	    -e '/xdr_ld.o/d' \
	    -e '/xdr_ptrace.o/d' \
	    -e '/xdr_rdb.o/d' \
	    -e '/udr.o/d' \
	    -e '/udip2soc.o/d' \
	    -e '/udi2go32.o/d' \
	    -e '/version.o/d' \
	    -e '/^[a-z0-9A-Z_]*_[SU].o/d' \
	    -e '/[a-z0-9A-Z_]*-exp.tab.o/d' \
	    -e 's/\.o/.c/' \
	    -e 's|\([^  ][^     ]*\)|$(srcdir)/\1|g' | \
	while read f; do grep '^_initialize_[a-z_0-9A-Z]* *(' $$f 2>/dev/null; done | \
	sed -e 's/^.*://' -e 's/^\([a-z_0-9A-Z]*\).*/\1/' > init.l-tmp
	@echo '/* Do not modify this file.  */' >>init.c-tmp
	@echo '/* It is created automatically by the Makefile.  */'>>init.c-tmp
	@echo '#include "defs.h"' >>init.c-tmp
	@echo '#include "call-cmds.h"' >>init.c-tmp
	@sed -e 's/\(.*\)/extern initialize_file_ftype \1;/' <init.l-tmp >>init.c-tmp
	@echo 'void' >>init.c-tmp
	@echo 'initialize_all_files (void)' >>init.c-tmp
	@echo '{' >>init.c-tmp
	@sed -e 's/\(.*\)/  \1 ();/' <init.l-tmp >>init.c-tmp
	@echo '}' >>init.c-tmp
	@rm init.l-tmp
	@mv init.c-tmp init.c

.PRECIOUS: init.c

init.o: init.c $(defs_h) $(call_cmds_h)

# Removing the old gdb first works better if it is running, at least on SunOS.
gdb$(EXEEXT): main.o libgdb.a $(ADD_DEPS) $(CDEPS) $(TDEPLIBS)
	rm -f gdb$(EXEEXT)
	$(HLDENV) $(CC_LD) $(INTERNAL_LDFLAGS) $(WIN32LDAPP) -o gdb$(EXEEXT) main.o libgdb.a $(TDEPLIBS) $(TUI_LIBRARY) $(CLIBS) $(LOADLIBES)

nlm:	force
	rootme=`pwd`; export rootme; $(MAKE) $(TARGET_FLAGS_TO_PASS) DO=all DODIRS=nlm subdir_do

# Create a library of the gdb object files and build GDB by linking
# against that.
#
# init.o is very important.  It pulls in the rest of GDB.
LIBGDB_OBS= $(OBS) $(TSOBS) $(ADD_FILES) init.o
libgdb.a: $(LIBGDB_OBS)
	-rm -f libgdb.a
	$(AR) q libgdb.a $(LIBGDB_OBS)
	$(RANLIB) libgdb.a

saber_gdb: $(SFILES) $(DEPFILES) copying.c version.c
	#setopt load_flags $(CFLAGS) $(BFD_CFLAGS) -DHOST_SYS=SUN4_SYS
	#load ./init.c $(SFILES)
	#unload $(srcdir)/c-exp.y
	#unload $(srcdir)/jv-exp.y
	#unload $(srcdir)/m2-exp.y
	#unload vx-share/*.h
	#unload nindy-share/[A-Z]*
	#load c-exp.tab.c
	#load jv-exp.tab.c
	#load m2-exp.tab.c
	#load copying.c version.c
	#load ../opcodes/libopcodes.a
	#load ../libiberty/libiberty.a
	#load ../bfd/libbfd.a
	#load ../readline/libreadline.a
	#load ../mmalloc/libmmalloc.a
	#load ../intl/libintl.a
	#load -ltermcap 
	#load `echo " "$(DEPFILES) | sed -e 's/\.o/.c/g' -e 's, , ../,g'`
	echo "Load .c corresponding to:" $(DEPFILES)


# A Mach 3.0 program to force gdb back to command level

stop-gdb: stop-gdb.o
	${CC_LD} $(GLOBAL_CFLAGS) $(LDFLAGS) -o stop-gdb \
	stop-gdb.o $(CLIBS) $(LOADLIBES)

# This is useful when debugging GDB, because some Unix's don't let you run GDB
# on itself without copying the executable.  So "make gdb1" will make
# gdb and put a copy in gdb1, and you can run it with "gdb gdb1".
# Removing gdb1 before the copy is the right thing if gdb1 is open
# in another process.
gdb1$(EXEEXT): gdb$(EXEEXT)
	rm -f gdb1$(EXEEXT)
	cp gdb$(EXEEXT) gdb1$(EXEEXT)

# FIXME. These are not generated by "make depend" because they only are there
# for some machines.
# But these rules don't do what we want; we want to hack the foo.o: tm.h
# dependency to do the right thing.
tm-isi.h tm-sun3.h tm-news.h tm-hp300bsd.h tm-altos.h: tm-m68k.h
tm-hp300hpux.h tm-sun2.h tm-3b1.h: tm-m68k.h
xm-news1000.h: xm-news.h
xm-i386-sv32.h: xm-i386.h
tm-i386gas.h: tm-i386.h
xm-sun4os4.h: xm-sparc.h
tm-sun4os4.h: tm-sparc.h
xm-vaxult.h: xm-vax.h
xm-vaxbsd.h: xm-vax.h

kdb:	$(NTSSTART) $(OBS) $(NTSOBS) $(ADD_DEPS) $(CDEPS)
	ld -o kdb $(NTSSTART) $(OBS) $(NTSOBS) init.o $(ADD_FILES) \
	  -lc $(CLIBS)

# Put the proper machine-specific files first, so M-. on a machine
# specific routine gets the one for the correct machine.  (FIXME: those
# files go in twice; we should be removing them from the main list).

# TAGS depends on all the files that go into it so you can rebuild TAGS
# with `make TAGS' and not have to say `rm TAGS' first.

TAGS: $(TAGFILES_NO_SRCDIR) $(TAGFILES_WITH_SRCDIR)
	@echo Making TAGS
	@etags $(srcdir)/$(TM_FILE) \
	  $(srcdir)/$(XM_FILE) \
	  $(srcdir)/$(NAT_FILE) \
	`(for i in $(DEPFILES) $(TAGFILES_NO_SRCDIR); do \
		echo $(srcdir)/$$i ; \
	done ; for i in $(TAGFILES_WITH_SRCDIR); do \
		echo $$i ; \
	done) | sed -e 's/\.o$$/\.c/'` \
	`find $(srcdir)/config -name '*.h' -print`

tags: TAGS

clean mostlyclean: $(CONFIG_CLEAN)
	@$(MAKE) $(FLAGS_TO_PASS) DO=clean "DODIRS=$(SUBDIRS)" subdir_do 
	rm -f *.o *.a $(ADD_FILES) *~ init.c-tmp init.l-tmp
	rm -f init.c version.c
	rm -f gdb$(EXEEXT) core make.log
	rm -f gdb[0-9]$(EXEEXT)

# This used to depend on c-exp.tab.c m2-exp.tab.c TAGS
# I believe this is wrong; the makefile standards for distclean just
# describe removing files; the only sort of "re-create a distribution"
# functionality described is if the distributed files are unmodified.
distclean: clean
	@$(MAKE) $(FLAGS_TO_PASS) DO=distclean "DODIRS=$(SUBDIRS)" subdir_do 
	rm -f nm.h tm.h xm.h config.status config.h stamp-h .gdbinit
	rm -f y.output yacc.acts yacc.tmp y.tab.h
	rm -f config.log config.cache
	rm -f Makefile

maintainer-clean: local-maintainer-clean do-maintainer-clean distclean
realclean: maintainer-clean

local-maintainer-clean:
	@echo "This command is intended for maintainers to use;"
	@echo "it deletes files that may require special tools to rebuild."
	rm -f c-exp.tab.c \
		jv-exp.tab \
		f-exp.tab.c m2-exp.tab.c
	rm -f TAGS $(INFOFILES)
	rm -f $(YYFILES)
	rm -f nm.h tm.h xm.h config.status

do-maintainer-clean:
	@$(MAKE) $(FLAGS_TO_PASS) DO=maintainer-clean "DODIRS=$(SUBDIRS)" \
		subdir_do

diststuff: $(DISTSTUFF)
	cd doc; $(MAKE) $(MFLAGS) diststuff

subdir_do: force
	@for i in $(DODIRS); do \
		if [ -f ./$$i/Makefile ] ; then \
			if (cd ./$$i; \
				$(MAKE) $(FLAGS_TO_PASS) $(DO)) ; then true ; \
			else exit 1 ; fi ; \
		else true ; fi ; \
	done

Makefile: Makefile.in config.status @frags@
	$(SHELL) config.status

config.h: stamp-h ; @true
stamp-h: config.in config.status
	CONFIG_HEADERS=config.h:config.in $(SHELL) config.status

config.status: configure
	$(SHELL) config.status --recheck

force:

# Documentation!
# GDB QUICK REFERENCE (TeX dvi file, CM fonts)
doc/refcard.dvi:
	cd doc; $(MAKE) refcard.dvi $(FLAGS_TO_PASS)

# GDB QUICK REFERENCE (PostScript output, common PS fonts)
doc/refcard.ps:
	cd doc; $(MAKE) refcard.ps $(FLAGS_TO_PASS)

# GDB MANUAL: TeX dvi file
doc/gdb.dvi:
	cd doc; $(MAKE) gdb.dvi $(FLAGS_TO_PASS)

# GDB MANUAL: info file
doc/gdb.info:
	cd doc; $(MAKE) gdb.info $(FLAGS_TO_PASS)

# Make copying.c from COPYING
$(srcdir)/copying.c: @MAINTAINER_MODE_TRUE@ \
		$(srcdir)/COPYING $(srcdir)/copying.awk
	awk -f $(srcdir)/copying.awk \
		< $(srcdir)/COPYING > $(srcdir)/copying.tmp
	mv $(srcdir)/copying.tmp $(srcdir)/copying.c

version.c: Makefile
	rm -f version.c
	echo '#include "version.h"' >> version.c
	echo 'const char version[] = "$(VERSION)";' >> version.c
	echo 'const char host_name[] = "$(host_alias)";' >> version.c
	echo 'const char target_name[] = "$(target_alias)";' >> version.c
version.o: version.c $(version_h)

# c-exp.tab.c is generated in objdir from c-exp.y if it doesn't exist
# in srcdir, then compiled in objdir to c-exp.tab.o.

# If we said c-exp.tab.c rather than ./c-exp.tab.c some makes
# would sometimes re-write it into $(srcdir)/c-exp.tab.c.

# Remove bogus decls for malloc/realloc/free which conflict with everything
# else.  Strictly speaking c-exp.tab.c should therefore depend on
# Makefile.in, but that was a pretty big annoyance.
c-exp.tab.o: c-exp.tab.c
c-exp.tab.c: c-exp.y
	$(SHELL) $(YLWRAP) "$(YACC)" $(srcdir)/c-exp.y  y.tab.c c-exp.tmp -- $(YFLAGS) 
	-sed -e '/extern.*malloc/d' \
	     -e '/extern.*realloc/d' \
	     -e '/extern.*free/d' \
	     -e '/include.*malloc.h/d' \
	     -e 's/malloc/xmalloc/g' \
	     -e 's/realloc/xrealloc/g' \
	     -e '/^#line.*y.tab.c/d' \
	  < c-exp.tmp > c-exp.new
	-rm c-exp.tmp
	mv c-exp.new ./c-exp.tab.c

jv-exp.tab.o: jv-exp.tab.c
jv-exp.tab.c: jv-exp.y
	$(SHELL) $(YLWRAP) "$(YACC)" $(srcdir)/jv-exp.y  y.tab.c jv-exp.tmp -- $(YFLAGS) 
	-sed -e '/extern.*malloc/d' \
	     -e '/extern.*realloc/d' \
	     -e '/extern.*free/d' \
	     -e '/include.*malloc.h/d' \
	     -e 's/malloc/xmalloc/g' \
	     -e 's/realloc/xrealloc/g' \
	     -e '/^#line.*y.tab.c/d' \
	  < jv-exp.tmp > jv-exp.new
	-rm jv-exp.tmp
	mv jv-exp.new ./jv-exp.tab.c

f-exp.tab.o: f-exp.tab.c
f-exp.tab.c: f-exp.y c-exp.tab.c
	$(SHELL) $(YLWRAP) "$(YACC)" $(srcdir)/f-exp.y  y.tab.c f-exp.tmp -- $(YFLAGS) 
	-sed -e '/extern.*malloc/d' \
	     -e '/extern.*realloc/d' \
	     -e '/extern.*free/d' \
	     -e '/include.*malloc.h/d' \
	     -e 's/malloc/xmalloc/g' \
	     -e 's/realloc/xrealloc/g' \
	     -e '/^#line.*y.tab.c/d' \
	  < f-exp.tmp > f-exp.new
	-rm f-exp.tmp
	mv f-exp.new ./f-exp.tab.c

# m2-exp.tab.c is generated in objdir from m2-exp.y if it doesn't exist
# in srcdir, then compiled in objdir to m2-exp.tab.o.
# Remove bogus decls for malloc/realloc/free which conflict with everything
# else.
m2-exp.tab.o: m2-exp.tab.c
m2-exp.tab.c: m2-exp.y
	$(SHELL) $(YLWRAP) "$(YACC)" $(srcdir)/m2-exp.y  y.tab.c m2-exp.tmp -- $(YFLAGS) 
	-sed -e '/extern.*malloc/d' \
	     -e '/extern.*realloc/d' \
	     -e '/extern.*free/d' \
	     -e '/include.*malloc.h/d' \
	     -e 's/malloc/xmalloc/g' \
	     -e 's/realloc/xrealloc/g' \
	     -e '/^#line.*y.tab.c/d' \
	  < m2-exp.tmp > m2-exp.new
	-rm m2-exp.tmp
	mv m2-exp.new ./m2-exp.tab.c

# These files are updated atomically, so make never has to remove them
.PRECIOUS: m2-exp.tab.c f-exp.tab.c c-exp.tab.c
.PRECIOUS: jv-exp.tab.c

lint: $(LINTFILES)
	$(LINT) $(INCLUDE_CFLAGS) $(LINTFLAGS) $(LINTFILES) \
	   `echo $(DEPFILES) | sed 's/\.o /\.c /g'`

gdb.cxref: $(SFILES)
	cxref -I. $(SFILES) >gdb.cxref

force_update:

# GNU Make has an annoying habit of putting *all* the Makefile variables
# into the environment, unless you include this target as a circumvention.
# Rumor is that this will be fixed (and this target can be removed)
# in GNU Make 4.0.
.NOEXPORT:

# GNU Make 3.63 has a different problem: it keeps tacking command line
# overrides onto the definition of $(MAKE).  This variable setting
# will remove them.
MAKEOVERRIDES=

## This is ugly, but I don't want GNU make to put these variables in
## the environment.  Older makes will see this as a set of targets
## with no dependencies and no actions.
unexport CHILLFLAGS CHILL_LIB CHILL_FOR_TARGET :

ALLDEPFILES = 29k-share/udi/udip2soc.c 29k-share/udi/udr.c \
	29k-share/udi/udi2go32.c \
	a29k-tdep.c a68v-nat.c alpha-nat.c alpha-tdep.c \
	altos-xdep.c arm-convert.s \
	arm-linux-nat.c arm-linux-tdep.c arm-tdep.c arm-xdep.c \
	coff-solib.c convex-tdep.c convex-xdep.c \
	core-sol2.c core-regset.c core-aout.c corelow.c \
	dcache.c delta68-nat.c dpx2-nat.c dstread.c exec.c fork-child.c \
	go32-nat.c h8300-tdep.c h8500-tdep.c \
	hp300ux-nat.c hppa-tdep.c hppab-nat.c hppah-nat.c \
        hp-psymtab-read.c hp-symtab-read.c \
	i386-tdep.c i386b-nat.c i386mach-nat.c i386v-nat.c i386-linux-nat.c \
	i386aix-nat.c i386m3-nat.c i386v4-nat.c i386ly-tdep.c \
	i387-tdep.c \
	i386-linux-tdep.c \
	i960-tdep.c \
	ia64-linux-nat.c ia64-linux-tdep.c ia64-tdep.c \
	infptrace.c inftarg.c irix4-nat.c irix5-nat.c isi-xdep.c \
	lynx-nat.c m3-nat.c \
	m68k-tdep.c \
	m88k-nat.c m88k-tdep.c mac-nat.c \
	mcore-tdep.c \
	mips-nat.c \
	mips-tdep.c mipsm3-nat.c mipsv4-nat.c news-xdep.c \
	nindy-share/Onindy.c nindy-share/nindy.c \
	nindy-share/ttyflush.c nindy-tdep.c \
	ns32k-tdep.c ns32km3-nat.c osfsolib.c \
	somread.c somsolib.c $(HPREAD_SOURCE) \
	ppc-linux-nat.c ppc-linux-tdep.c \
	procfs.c pyr-tdep.c pyr-xdep.c \
	remote-adapt.c remote-array.c remote-bug.c remote-e7000.c remote-eb.c \
	remote-es.c remote-hms.c remote-mips.c \
	remote-mm.c remote-nindy.c remote-os9k.c remote-rdp.c remote-sim.c \
	remote-st.c remote-utils.c dcache.c \
	remote-udi.c remote-vx.c remote-vx29k.c \
	rs6000-nat.c rs6000-tdep.c \
	ser-go32.c ser-pipe.c ser-ocd.c ser-tcp.c \
	sh-tdep.c solib.c sparc-nat.c \
	sparc-tdep.c sparcl-tdep.c sun3-nat.c sun386-nat.c \
	symm-tdep.c symm-nat.c \
	tahoe-tdep.c ultra3-nat.c ultra3-xdep.c umax-xdep.c \
	vax-tdep.c \
	vx-share/xdr_ld.c vx-share/xdr_ptrace.c vx-share/xdr_rdb.c \
	win32-nat.c \
	xcoffread.c xcoffsolib.c z8k-tdep.c

udip2soc.o: $(srcdir)/29k-share/udi/udip2soc.c $(udiheaders)
	$(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/29k-share/udi/udip2soc.c

udi2go32.o: $(srcdir)/29k-share/udi/udi2go32.c $(udiheaders)
	$(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/29k-share/udi/udi2go32.c

udr.o: $(srcdir)/29k-share/udi/udr.c $(udiheaders) 
	$(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/29k-share/udi/udr.c

a29k-tdep.o: a29k-tdep.c $(gdbcmd_h) $(gdbcore_h) $(inferior_h) $(defs_h)

a68v-nat.o: a68v-nat.c $(defs_h) $(gdbcore_h) $(inferior_h)

alpha-nat.o: alpha-nat.c $(defs_h) $(gdbcore_h) $(inferior_h) target.h

alpha-tdep.o: alpha-tdep.c $(defs_h) $(gdbcmd_h) $(gdbcore_h) \
	$(inferior_h) $(symtab_h) $(dis-asm.h) gdb_string.h

# OBSOLETE altos-xdep.o: altos-xdep.c $(defs_h) $(gdbcore_h) $(inferior_h)

annotate.o: annotate.c $(defs_h) annotate.h $(value_h) target.h $(gdbtypes_h)

arm-linux-nat.o: arm-linux-nat.c $(defs_h) $(inferior_h) $(gdbcore_h) \
	gdb_string.h

arm-linux-tdep.o: arm-linux-tdep.c $(defs_h) target.h $(value_h) \
		  $(gdbtypes_h) $(floatformat_h)

arm-tdep.o: arm-tdep.c $(gdbcmd_h) $(gdbcore_h) $(inferior_h) $(defs_h) \
	$(gdbcore_h)

bcache.o: bcache.c bcache.h $(defs_h)

blockframe.o: blockframe.c $(defs_h) $(gdbcore_h) $(inferior_h) \
	objfiles.h symfile.h target.h

breakpoint.o: breakpoint.c $(defs_h) $(gdbcmd_h) $(gdbcore_h) \
	$(inferior_h) language.h target.h gdbthread.h gdb_string.h \
	gdb-events.h

buildsym.o: buildsym.c $(bfd_h) buildsym.h complaints.h $(defs_h) \
	objfiles.h symfile.h $(symtab_h) gdb_string.h

c-lang.o: c-lang.c c-lang.h $(defs_h) $(expression_h) $(gdbtypes_h) \
	language.h parser-defs.h $(symtab_h)

c-typeprint.o: c-typeprint.c c-lang.h $(defs_h) $(expression_h) \
	$(gdbcmd_h) $(gdbcore_h) $(gdbtypes_h) language.h $(symtab_h) \
	target.h typeprint.h $(value_h) gdb_string.h

c-valprint.o: c-valprint.c $(defs_h) $(expression_h) $(gdbtypes_h) \
	language.h $(symtab_h) valprint.h $(value_h)

f-lang.o: f-lang.c f-lang.h $(defs_h) $(expression_h) $(gdbtypes_h) \
	language.h parser-defs.h $(symtab_h) gdb_string.h

f-typeprint.o: f-typeprint.c f-lang.h $(defs_h) $(expression_h) \
	$(gdbcmd_h) $(gdbcore_h) $(gdbtypes_h) language.h $(symtab_h) \
	target.h typeprint.h $(value_h) gdb_string.h

f-valprint.o: f-valprint.c $(defs_h) $(expression_h) $(gdbtypes_h) \
	language.h $(symtab_h) valprint.h $(value_h) gdb_string.h

ch-exp.o: ch-exp.c ch-lang.h $(defs_h) language.h parser-defs.h $(bfd_h) symfile.h objfiles.h $(value_h)

ch-lang.o: ch-lang.c ch-lang.h $(defs_h) $(expression_h) $(gdbtypes_h) \
	language.h parser-defs.h $(symtab_h)

ch-typeprint.o: ch-typeprint.c ch-lang.h $(defs_h) $(expression_h) \
	$(gdbcmd_h) $(gdbcore_h) $(gdbtypes_h) language.h $(symtab_h) \
	target.h $(value_h) typeprint.h gdb_string.h

ch-valprint.o: ch-valprint.c $(defs_h) $(expression_h) $(gdbtypes_h) \
	language.h $(symtab_h) valprint.h $(value_h) c-lang.h

coff-solib.o: coff-solib.c $(defs_h)

coffread.o: coffread.c $(bfd_h) $(breakpoint_h) buildsym.h \
	complaints.h $(defs_h) $(expression_h) $(gdbtypes_h) objfiles.h \
	symfile.h $(symtab_h) gdb-stabs.h stabsread.h target.h \
	gdb_string.h

command.o: command.c $(defs_h) $(expression_h) $(gdbcmd_h) \
	$(gdbtypes_h) $(symtab_h) $(value_h) gdb_string.h gdb_wait.h

complaints.o: complaints.c complaints.h $(defs_h) $(gdbcmd_h)

# OBSOLETE convex-tdep.o: convex-tdep.c gdb_wait.h $(defs_h) $(gdbcmd_h) \
# OBSOLETE	$(gdbcore_h) $(inferior_h)

# OBSOLETE convex-xdep.o: convex-xdep.c $(defs_h) $(gdbcmd_h) $(gdbcore_h) \
# OBSOLETE	$(inferior_h)

# Provide explicit rule/dependency - works for more makes.
copying.o: $(srcdir)/copying.c $(defs_h) $(gdbcmd_h)
	$(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/copying.c

core-aout.o: core-aout.c $(defs_h) $(gdbcore_h) $(value_h) $(inferior_h)

core-sol2.o: core-sol2.c $(command_h) $(defs_h) $(gdbcore_h) \
	$(inferior_h) target.h gdb_string.h

core-regset.o: core-regset.c $(command_h) $(defs_h) $(gdbcore_h) \
	$(inferior_h) target.h gdb_string.h

corefile.o: corefile.c $(dis-asm_h) $(defs_h) $(gdbcmd_h) $(gdbcore_h) \
	$(inferior_h) target.h language.h gdb_string.h

corelow.o: corelow.c $(command_h) $(defs_h) $(gdbcore_h) $(inferior_h) \
	target.h gdbthread.h gdb_string.h

cp-valprint.o: cp-valprint.c $(defs_h) $(expression_h) $(gdbcmd_h) \
	$(gdbtypes_h) $(symtab_h) $(value_h) gdb_string.h

dcache.o: dcache.c $(dcache_h) $(defs_h) $(gdbcmd_h) gdb_string.h $(gdbcore_h)

dbxread.o: dbxread.c $(breakpoint_h) buildsym.h $(command_h) \
	complaints.h $(defs_h) $(expression_h) gdb-stabs.h $(gdbcore_h) \
	$(gdbtypes_h) language.h objfiles.h partial-stab.h stabsread.h \
	symfile.h $(symtab_h) target.h gdb_string.h

delta68-nat.o: delta68-nat.c $(defs_h)

demangle.o: demangle.c $(defs_h) $(gdbcmd_h) gdb_string.h

dink32-rom.o: dink32-rom.c monitor.h $(bfd_h) gdb_wait.h $(defs_h) $(gdbcmd_h) \
	$(inferior_h) target.h serial.h terminal.h symfile.h

dpx2-nat.o: dpx2-nat.c $(defs_h) $(gdbcore_h) gdb_string.h

dstread.o: dstread.c gdb_string.h

dwarfread.o: dwarfread.c $(bfd_h) buildsym.h complaints.h $(defs_h) \
	$(expression_h) $(gdbtypes_h) language.h objfiles.h symfile.h \
	$(symtab_h) gdb_string.h

dwarf2read.o: dwarf2read.c $(bfd_h) buildsym.h $(defs_h) \
	$(expression_h) $(gdbtypes_h) language.h objfiles.h symfile.h \
	$(symtab_h) gdb_string.h

elfread.o: elfread.c $(bfd_h) buildsym.h complaints.h $(defs_h) \
	gdb-stabs.h objfiles.h symfile.h $(symtab_h) gdb_string.h \
	$(BFD_SRC)/elf-bfd.h $(INCLUDE_DIR)/elf/mips.h

environ.o: environ.c $(defs_h) environ.h $(gdbcore_h) gdb_string.h

eval.o: eval.c $(bfd_h) $(defs_h) $(expression_h) $(frame_h) \
	$(gdbtypes_h) language.h $(symtab_h) target.h $(value_h) \
	gdb_string.h

event-loop.o: event-loop.c $(defs_h) $(top_h) $(event_loop_h) $(event_top_h)

event-top.o: event-top.c top.h $(readline_headers) \
      $(defs_h) $(inferior_h) $(event_loop_h) $(event_top_h) terminal.h \
	$(gdbcmd_h) target.h

inf-loop.o: inf-loop.c $(defs_h) $(inferior_h) $(inf_loop_h) $(event_loop_h) \
	 $(event_top_h)

exec.o: exec.c $(defs_h) $(gdbcmd_h) $(gdbcore_h) $(inferior_h) \
	target.h language.h gdb_string.h

expprint.o: expprint.c $(defs_h) $(expression_h) $(gdbtypes_h) \
	language.h parser-defs.h $(symtab_h) $(value_h)

findvar.o: findvar.c $(defs_h) $(gdbcore_h) $(inferior_h) target.h \
	gdb_string.h

fork-child.o: fork-child.c gdb_wait.h $(defs_h) $(gdbcore_h) \
	$(inferior_h) target.h terminal.h gdbthread.h gdb_string.h

# FIXME: cagney/2000-03-27: Post 5.0 this link code can be removed.
# It should now be possible to run GDBtk from the build directory
# without the link in place.
all-gdbtk:
	@if test ! -d gdbtcl/images ; then \
	  if test "$(LN_S)" = "ln -s" ; then \
	    echo linking ${srcdir}/gdbtk/library to gdbtcl ; \
	    rm -f gdbtcl ; \
	    test ! -r gdbtcl || exit 1 ; \
	    $(LN_S) ${srcdir}/gdbtk/library gdbtcl ; \
	  else \
	    echo "Warning:" ; \
	    echo "Unable to link ${srcdir}/gdbtk/library to gdbtcl." ; \
	    echo "You will need to do a \`make install' before you are" ; \
	    echo "able to run the GUI." ; \
	  fi ; \
	else true ; fi

clean-gdbtk:
	rm -f gdbtcl

install-gdbtk:
	$(SHELL) $(srcdir)/../mkinstalldirs $(datadir)/gdbtcl ; \
	$(SHELL) $(srcdir)/../mkinstalldirs \
		$(datadir)/gdbtcl/images \
		$(datadir)/gdbtcl/images2 ; \
	$(SHELL) $(srcdir)/../mkinstalldirs $(datadir)/gdbtcl/help \
		$(datadir)/gdbtcl/help/images \
		$(datadir)/gdbtcl/help/trace ; \
	cd $(srcdir)/gdbtk/library ; \
	for i in *.tcl *.ith *.itb images/*.gif images2/*.gif images/icons.txt images2/icons.txt tclIndex help/*.html  help/trace/*.html help/trace/index.toc help/images/*.gif; \
	  do \
		$(INSTALL_DATA) $$i $(datadir)/gdbtcl/$$i ; \
	  done ;

gdbres.o: $(srcdir)/gdbtk/gdb.rc $(srcdir)/gdbtk/gdbtool.ico
	$(WINDRES) --include $(srcdir)/gdbtk $(srcdir)/gdbtk/gdb.rc gdbres.o

gdbtk.o: $(srcdir)/gdbtk/generic/gdbtk.c \
	$(srcdir)/gdbtk/generic/gdbtk.h $(defs_h) \
	$(symtab_h) $(inferior_h) $(command_h) \
	$(bfd_h) symfile.h objfiles.h target.h gdb_string.h $(tracepoint_h) \
	$(top_h) 
	$(CC) -c $(INTERNAL_CFLAGS) $(IDE_CFLAGS) $(ITCL_CFLAGS) \
        $(ITK_CFLAGS) $(TIX_CFLAGS) \
	$(TCL_CFLAGS) $(TK_CFLAGS) $(X11_CFLAGS) $(GDBTK_CFLAGS)\
		$(srcdir)/gdbtk/generic/gdbtk.c -DGDBTK_LIBRARY=\"$(datadir)/gdbtcl\"

gdbtk-cmds.o: $(srcdir)/gdbtk/generic/gdbtk-cmds.c \
	$(srcdir)/gdbtk/generic/gdbtk.h \
	$(defs_h) $(symtab_h) $(inferior_h)	\
	$(command_h) $(bfd_h) $(top_h) symfile.h objfiles.h target.h	\
	gdb_string.h $(tracepoint_h) $(frame_h) source.h
	$(CC) -c $(INTERNAL_CFLAGS) $(IDE_CFLAGS) $(ITCL_CFLAGS)	\
	$(TIX_CFLAGS) $(TCL_CFLAGS) $(TK_CFLAGS) $(X11_CFLAGS)		\
	$(GDBTK_CFLAGS) $(srcdir)/gdbtk/generic/gdbtk-cmds.c				\
	-DGDBTK_LIBRARY=\"$(datadir)/gdbtcl\"

gdbtk-hooks.o: $(srcdir)/gdbtk/generic/gdbtk-hooks.c \
	$(srcdir)/gdbtk/generic/gdbtk.h $(defs_h) \
	$(symtab_h) $(inferior_h) $(command_h) \
	$(bfd_h) symfile.h objfiles.h target.h gdb_string.h $(tracepoint_h)
	$(CC) -c $(INTERNAL_CFLAGS) $(IDE_CFLAGS) $(ITCL_CFLAGS) $(TIX_CFLAGS) \
	$(TCL_CFLAGS) $(TK_CFLAGS) $(X11_CFLAGS) $(GDBTK_CFLAGS)\
		$(srcdir)/gdbtk/generic/gdbtk-hooks.c -DGDBTK_LIBRARY=\"$(datadir)/gdbtcl\"

gdbtk-varobj.o: $(srcdir)/gdbtk/generic/gdbtk-varobj.c \
	$(srcdir)/gdbtk/generic/gdbtk.h \
	$(defs_h) $(value_h) varobj.h
	$(CC) -c $(INTERNAL_CFLAGS) $(IDE_CFLAGS) $(ITCL_CFLAGS) $(TIX_CFLAGS) \
	$(TCL_CFLAGS) $(TK_CFLAGS) $(X11_CFLAGS) $(GDBTK_CFLAGS)\
		$(srcdir)/gdbtk/generic/gdbtk-varobj.c

gdbtk-wrapper.o: $(srcdir)/gdbtk/generic/gdbtk-wrapper.c \
	$(srcdir)/gdbtk/generic/gdbtk-wrapper.h
	$(CC) -c $(INTERNAL_CFLAGS) $(IDE_CFLAGS) $(GDBTK_CFLAGS)\
		$(srcdir)/gdbtk/generic/gdbtk-wrapper.c

v850ice.o: v850ice.c $(defs_h) $(symtab_h) $(inferior_h) $(command_h) \
	$(frame_h) $(breakpoint_h) $(gdbcore_h) $(value_h) symfile.h \
	gdb_string.h target.h objfiles.h
	$(CC) -c $(INTERNAL_CFLAGS) $(IDE_CFLAGS) $(ITCL_CFLAGS) $(TIX_CFLAGS) \
	$(TCL_CFLAGS) $(TK_CFLAGS) $(X11_CFLAGS) $(GDBTK_CFLAGS)\
		$(srcdir)/v850ice.c

v850-tdep.o: v850-tdep.c $(defs_h) $(frame_h) $(inferior_h) $(obstack_h) \
	$(target_h) $(value_h) $(bfd_h) $(gdb_string_h) $(gdbcore_h) \
	$(symfile_h) $(arch_utils_h)

tracepoint.o: tracepoint.c $(defs_h) $(symtab_h) $(frame_h) $(tracepoint_h) \
	$(gdbtypes_h) $(expression_h) $(gdbcmd_h) $(value_h) target.h \
	language.h gdb_string.h $(readline_headers) $(remote_h)

gdbarch.o: gdbarch.c $(defs_h) $(bfd_h) $(gdbcmd_h)

arch-utils.o: arch-utils.c $(defs_h) $(bfd_h) $(gdbcmd_h) \
	$(arch_utils_h)

gdbtypes.o: gdbtypes.c $(bfd_h) complaints.h $(defs_h) $(expression_h) \
	$(gdbtypes_h) language.h objfiles.h symfile.h $(symtab_h) target.h \
	$(value_h) gdb_string.h wrapper.h

go32-nat.o: go32-nat.c $(defs_h) $(inferior_h) gdb_wait.h $(gdbcore_h) \
	$(command_h) $(floatformat_h) target.h

gnu-nat.o: process_reply_S.h exc_request_S.h notify_S.h msg_reply_S.h \
	exc_request_U.h msg_U.h gnu-nat.h

h8300-tdep.o: h8300-tdep.c $(defs_h) $(frame_h) $(symtab_h)

h8500-tdep.o: h8500-tdep.c $(bfd_h) $(dis-asm_h) $(defs_h) \
	$(expression_h) $(frame_h) $(gdbcmd_h) $(gdbtypes_h) $(symtab_h) \
	$(value_h)

hp300ux-nat.o: hp300ux-nat.c $(defs_h) $(gdbcore_h) $(inferior_h)

hppa-tdep.o: hppa-tdep.c gdb_wait.h $(defs_h) $(gdbcmd_h) $(gdbcore_h) \
	$(inferior_h) objfiles.h symfile.h target.h

hppab-nat.o: hppab-nat.c $(bfd_h) $(defs_h) $(inferior_h) target.h

hppah-nat.o: hppah-nat.c $(bfd_h) $(defs_h) $(inferior_h) target.h

i386gnu-nat.o: gnu-nat.h

i386-tdep.o: i386-tdep.c $(defs_h) gdb_string.h $(frame_h)	\
	$(inferior_h) $(gdbcore_h) target.h $(floatformat_h)	\
	$(symtab_h) $(gdbcmd_h) $(command_h) $(arch_utils_h)

i386aix-nat.o: i386aix-nat.c $(defs_h) $(frame_h) $(inferior_h) \
	language.h $(gdbcore_h) $(floatformat_h) target.h

i386b-nat.o: i386b-nat.c $(defs_h) 

i386ly-nat.o: i386ly-nat.c $(defs_h) $(frame_h) $(inferior_h) target.h

i386ly-tdep.o: i386ly-tdep.c $(defs_h) $(inferior_h) target.h $(gdbcore_h)

i386m3-nat.o: i386m3-nat.c $(defs_h) $(inferior_h) $(floatformat_h) target.h

i386mach-nat.o: i386mach-nat.c $(defs_h) $(gdbcore_h) $(inferior_h) 

i386v-nat.o: i386v-nat.c $(floatformat_h) $(defs_h) $(gdbcore_h) \
	$(inferior_h) language.h target.h

i386-linux-nat.o: i386-linux-nat.c $(defs_h) $(inferior_h) $(gdbcore_h) \
	$(symtab_h) symfile.h objfiles.h

i386-linux-tdep.o: i386-linux-tdep.c $(defs_h) $(gdbcore_h) $(frame_h) \
	$(value_h)

i386v4-nat.o: i386v4-nat.c $(defs_h)

i387-tdep.o: i387-tdep.c $(floatformat_h) $(defs_h) $(gdbcore_h) \
	$(inferior_h) language.h

i960-tdep.o: i960-tdep.c $(floatformat_h) $(defs_h) $(expression_h) \
	$(frame_h) $(gdbtypes_h) $(symtab_h) $(value_h) $(gdbcore_h)

ia64-linux-nat.o: ia64-linux-nat.c  $(defs_h) $(inferior_h) $(target_h) \
	$(gdbcore_h)

ia64-linux-tdep.o: ia64-linux-tdep.c $(defs_h) $(arch_utils_h)

ia64-tdep.o: ia64-tdep.c $(defs_h) $(inferior_h) symfile.h $(gdbcore_h) \
	$(arch_utils_h) $(floatformat_h) objfiles.h $(INCLUDE_DIR)/elf/common.h

infcmd.o: infcmd.c $(defs_h) environ.h $(gdbcmd_h) $(gdbcore_h) \
	$(inferior_h) target.h language.h gdb_string.h

inflow.o: inflow.c $(bfd_h) $(command_h) $(defs_h) $(inferior_h) \
	signals.h target.h terminal.h gdbthread.h gdb_string.h

infptrace.o: infptrace.c $(defs_h) $(gdbcore_h) $(inferior_h) target.h \
	gdb_string.h gdb_wait.h $(command_h)

infrun.o: infrun.c gdb_wait.h $(defs_h) $(gdbcmd_h) $(gdbcore_h) \
	$(inferior_h) target.h gdbthread.h gdb_string.h $(event_loop_h) \
	$(event_top_h) target.h

inftarg.o: inftarg.c gdb_wait.h $(defs_h) $(gdbcore_h) $(inferior_h) \
	target.h terminal.h $(command_h)

irix4-nat.o: irix4-nat.c $(defs_h) $(inferior_h) $(gdbcore_h)
irix5-nat.o: irix5-nat.c $(defs_h) $(inferior_h) $(gdbcore_h) target.h \
	$(symtab_h) symfile.h objfiles.h $(command_h) $(frame_h) gnu-regex.h \
	language.h gdb_string.h

isi-xdep.o: isi-xdep.c

jv-lang.o: jv-lang.c $(bfd_h) $(defs_h) $(symtab_h) $(gdbtypes_h) \
	$(expression_h) parser-defs.h language.h symfile.h objfiles.h \
	gdb_string.h $(value_h) c-lang.h jv-lang.h $(gdbcore_h)

jv-typeprint.o: jv-typeprint.c $(bfd_h) $(defs_h) $(symtab_h) $(gdbtypes_h) \
	$(value_h) $(INCLUDE_DIR)/demangle.h jv-lang.h gdb_string.h \
	typeprint.h c-lang.h

jv-valprint.o: jv-valprint.c $(bfd_h) $(defs_h) $(symtab_h) $(gdbtypes_h) \
	$(expression_h) $(value_h) $(INCLUDE_DIR)/demangle.h valprint.h \
	language.h jv-lang.h c-lang.h gdbcore.h annotate.h

kod.o: kod.c $(defs_h) $(command_h) $(gdbcmd_h) target.h gdb_string.h kod.h

kod-cisco.o: kod-cisco.c $(defs_h) gdb_string.h kod.h

language.o: language.c $(bfd_h) $(defs_h) $(expression_h) $(frame_h) \
	$(gdbcmd_h) $(gdbtypes_h) language.h parser-defs.h $(symtab_h) \
	target.h $(value_h) gdb_string.h

lynx-nat.o: lynx-nat.c $(defs_h) $(frame_h) $(inferior_h) $(gdbcore_h) \
	target.h

m2-lang.o: m2-lang.c $(defs_h) $(expression_h) $(gdbtypes_h) \
	language.h m2-lang.h parser-defs.h $(symtab_h)

m2-typeprint.o: m2-typeprint.c $(defs_h) $(expression_h) $(gdbcmd_h) \
	$(gdbcore_h) $(gdbtypes_h) language.h m2-lang.h $(symtab_h) target.h \
	$(value_h) gdb_string.h

m2-valprint.o: m2-valprint.c $(defs_h) $(gdbtypes_h) $(symtab_h) \
	valprint.h m2-lang.h

m3-nat.o: m3-nat.c $(defs_h) $(inferior_h) $(value_h) language.h target.h \
	gdb_wait.h $(gdbcmd_h) $(gdbcore_h)

m68k-tdep.o: m68k-tdep.c $(defs_h) $(frame_h) $(symtab_h) $(value_h) \
	$(gdbcore_h) gdb_string.h

m68kly-nat.o: m68kly-nat.c $(defs_h) $(frame_h) $(inferior_h) target.h

m68klinux-nat.o: m68klinux-nat.c $(defs_h) $(frame_h) $(inferior_h) \
	$(language_h) $(gdbcore_h) $(floatformat_h) target.h

m88k-nat.o: m88k-nat.c $(defs_h) $(gdbcore_h) $(inferior_h)

m88k-tdep.o: m88k-tdep.c $(defs_h) $(gdbcore_h) $(inferior_h)

mac-nat.o: mac-nat.c $(defs_h) gdb_string.h

main.o: main.c top.h $(defs_h) gdb_string.h $(event_loop_h) $(srcdir)/tui/tui-file.h

maint.o: maint.c $(defs_h) $(gdbcmd_h) $(gdbtypes_h) $(symtab_h) language.h \
	$(expression_h) objfiles.h symfile.h

mcore-tdep.o: mcore-tdep.c $(defs_h) $(frame_h) $(gdbcmd_h) $(value_h) $(symtab_h)

mcore-rom.o: mcore-rom.c $(defs_h) $(gdbcore_h) target.h monitor.h \
	gdb_string.h

mdebugread.o: mdebugread.c buildsym.h complaints.h $(bfd_h) $(defs_h) \
	$(expression_h) gdb-stabs.h $(gdbcore_h) $(gdbtypes_h) language.h \
	objfiles.h partial-stab.h stabsread.h symfile.h $(symtab_h) \
	gdb_string.h

mipsm3-nat.o: mipsm3-nat.c $(defs_h) $(inferior_h)

os9kread.o: os9kread.c buildsym.h complaints.h $(bfd_h) $(defs_h) \
        $(expression_h) gdb-stabs.h $(gdbcore_h) $(gdbtypes_h) language.h \
        objfiles.h stabsread.h symfile.h $(symtab_h) \
	target.h gdb_string.h

mem-break.o: mem-break.c $(defs_h) 

minsyms.o: minsyms.c $(bfd_h) $(defs_h) objfiles.h symfile.h \
	$(symtab_h) gdb_string.h

mips-nat.o: mips-nat.c $(defs_h) $(gdbcore_h) $(inferior_h) 

mips-tdep.o: mips-tdep.c $(defs_h) $(gdbcmd_h) $(gdbcore_h) \
	$(arch_utils_h) \
	$(inferior_h) language.h objfiles.h symfile.h gdb_string.h

mipsread.o: mipsread.c buildsym.h complaints.h $(bfd_h) $(defs_h) \
	$(expression_h) gdb-stabs.h $(gdbcore_h) $(gdbtypes_h) language.h \
	objfiles.h partial-stab.h stabsread.h symfile.h $(symtab_h) \
	gdb_string.h

mipsv4-nat.o: mipsv4-nat.c $(defs_h) $(gdbcore_h) $(inferior_h) target.h

monitor.o: monitor.c monitor.h $(bfd_h) gdb_wait.h $(defs_h) $(gdbcmd_h) \
	$(inferior_h) target.h serial.h terminal.h gdb_string.h

news-xdep.o: news-xdep.c

Onindy.o: nindy-share/Onindy.c gdb_wait.h nindy-share/block_io.h \
	nindy-share/env.h
	$(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/nindy-share/Onindy.c

nindy.o: nindy-share/nindy.c gdb_wait.h nindy-share/block_io.h \
	nindy-share/env.h
	$(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/nindy-share/nindy.c

nlmread.o: nlmread.c $(bfd_h) buildsym.h complaints.h $(defs_h) \
	gdb-stabs.h objfiles.h symfile.h $(symtab_h) stabsread.h \
	gdb_string.h

ns32km3-nat.o: ns32km3-nat.c $(defs_h) $(inferior_h)

ttyflush.o: nindy-share/ttyflush.c
	$(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/nindy-share/ttyflush.c

nindy-tdep.o: nindy-tdep.c $(defs_h) $(frame_h) $(symtab_h)  $(gdbcore_h)

ns32k-tdep.o: ns32k-tdep.c $(bfd_h) $(dis-asm_h) $(defs_h)

objfiles.o: objfiles.c $(bfd_h) $(defs_h) objfiles.h symfile.h \
	$(symtab_h) gdb_string.h $(breakpoint_h)

osfsolib.o: osfsolib.c $(command_h) $(defs_h) $(gdbcore_h) $(inferior_h) \
	objfiles.h gnu-regex.h symfile.h target.h language.h gdb_string.h

somread.o: somread.c $(bfd_h) buildsym.h complaints.h $(defs_h) \
	gdb-stabs.h objfiles.h symfile.h $(symtab_h) gdb_string.h

somsolib.o: somsolib.c $(defs_h)

pa64solib.o: pa64solib.c $(defs_h)

hpux-thread.o: hpux-thread.c $(defs_h) gdbthread.h target.h inferior.h
hpux-thread.o: hpux-thread.c $(defs_h) gdbthread.h target.h inferior.h
	$(CC) -c $(INTERNAL_CFLAGS) -I$(srcdir)/osf-share \
	  -I$(srcdir)/osf-share/HP800 -I/usr/include/dce $(srcdir)/hpux-thread.c

# FIXME!!!
hpread.o: hpread.c $(bfd_h) buildsym.h complaints.h $(defs_h) \
	gdb-stabs.h objfiles.h symfile.h $(symtab_h) gdb_string.h

hp-psymtab-read.o: hp-psymtab-read.c hpread.h $(bfd_h) buildsym.h complaints.h \
	$(defs_h) gdb-stabs.h objfiles.h symfile.h $(symtab_h) gdb_string.h
 
hp-symtab-read.o: hp-symtab-read.c hpread.h $(bfd_h) buildsym.h complaints.h \
	$(defs_h) gdb-stabs.h objfiles.h symfile.h $(symtab_h) gdb_string.h
# END FIXME!!!  

parse.o: parse.c $(command_h) $(defs_h) $(expression_h) $(frame_h) \
	$(gdbtypes_h) language.h parser-defs.h $(symtab_h) $(value_h) \
	gdb_string.h

ppc-bdm.o: ppc-bdm.c $(defs_h) $(gdbcore_h) gdb_string.h $(frame_h) \
	$(inferior_h) $(bfd_h) symfile.h target.h gdb_wait.h $(gdbcmd_h) \
	objfiles.h gdb-stabs.h serial.h ocd.h

ppc-linux-nat.o: ppc-linux-nat.c $(defs_h) $(gdbcore_h) $(frame_h) \
	$(inferior_h) target.h

ppc-linux-tdep.o: ppc-linux-tdep.c $(defs_h) $(gdbcore_h) $(inferior_h) \
	target.h

ppcbug-rom.o: ppcbug-rom.c monitor.h $(bfd_h) gdb_wait.h $(defs_h) $(gdbcmd_h) \
	$(inferior_h) target.h serial.h terminal.h

printcmd.o: printcmd.c $(breakpoint_h) $(defs_h) $(expression_h) \
	$(gdbcmd_h) $(gdbcore_h) $(gdbtypes_h) language.h objfiles.h \
	symfile.h $(symtab_h) target.h gdb_string.h

# FIXME: Procfs.o gets -Wformat errors because things like pid_t don't
# match output format strings.
procfs.o: procfs.c $(command_h) $(defs_h) $(gdbcore_h) $(inferior_h) \
	target.h gdb_string.h gdbthread.h proc-utils.h
	$(CC) -c $(INTERNAL_WARN_CFLAGS) $(NO_WERROR_CFLAGS) $<

proc-api.o: proc-api.c $(defs_h) $(gdbcmd_h) proc-utils.h

proc-events.o: proc-events.c $(defs_h)

proc-flags.o: proc-flags.c $(defs_h)

proc-why.o: proc-why.c $(defs_h) proc-utils.h

sol-thread.o: sol-thread.c $(defs_h) gdbthread.h target.h $(inferior_h) \
	$(gdbcmd_h)

linux-thread.o: linux-thread.c $(breakpoint_h) $(gdbcmd_h) gdb_wait.h \
	gdbthread.h $(gdbcore_h) $(inferior_h) target.h $(defs_h)

# OBSOLETE pyr-tdep.o: pyr-tdep.c $(defs_h) 

# OBSOLETE pyr-xdep.o: pyr-xdep.c $(defs_h) $(gdbcore_h) $(inferior_h) 

gnu-regex.o: gnu-regex.c gnu-regex.h $(defs_h) gdb_string.h

remote-adapt.o: remote-adapt.c gdb_wait.h $(defs_h) $(gdbcore_h) \
	$(inferior_h) target.h terminal.h gdb_string.h

remote-array.o: remote-array.c gdb_wait.h $(defs_h) $(gdbcore_h) target.h \
      gdb_string.h $(command_h) serial.h monitor.h $(remote_utils_h) \
	$(version_h)

remote-rdi.o: remote-rdi.c gdb_wait.h $(defs_h) $(gdbcore_h) \
	$(inferior_h) gdb_string.h

rdi-share/libangsd.a:	force
	@dir=rdi-share; \
	if [ -f ./$${dir}/Makefile ] ; then \
	  r=`pwd`; export r; \
	  srcroot=`cd $(srcdir); pwd`; export srcroot; \
	  (cd $${dir}; $(MAKE) $(FLAGS_TO_PASS) all); \
	else \
	  true; \
	fi

remote-d10v.o: remote-d10v.c $(bfd_h) gdb_wait.h $(defs_h) $(gdbcmd_h) \
	$(inferior_h) $(remote_utils_h) symfile.h terminal.h gdb_string.h

remote-rdp.o: remote-rdp.c gdb_wait.h $(defs_h) $(gdbcore_h) \
	$(inferior_h) gdb_string.h

remote-bug.o: remote-bug.c gdb_wait.h $(defs_h) $(gdbcore_h) \
	$(inferior_h) target.h terminal.h $(remote_utils_h) gdb_string.h

# FIXME: For the SH target, remote-e7000 contains numerous -Wformat
# warnings.  Since the fixes involve modifications to the code that
# handles the SH remote protocol the changes need to be tested against
# an SH board before they can be committed. cagney 1999-09-01.
remote-e7000.o: remote-e7000.c $(defs_h) $(gdbcore_h) target.h \
	gdb_wait.h serial.h gdb_string.h
	$(CC) -c $(INTERNAL_WARN_CFLAGS) $(NO_WERROR_CFLAGS) $<

remote-eb.o: remote-eb.c gdb_wait.h $(srcdir)/config/a29k/tm-a29k.h \
	$(defs_h) $(gdbcore_h) $(inferior_h) symfile.h target.h terminal.h \
	gdb_string.h

remote-es.o: remote-es.c $(bfd_h) gdb_wait.h $(command_h) $(defs_h) \
	$(inferior_h) $(remote_utils_h) terminal.h gdb_string.h

remote-hms.o: remote-hms.c gdb_wait.h $(defs_h) $(gdbcore_h) \
	$(inferior_h) serial.h target.h terminal.h gdb_string.h

remote-mips.o: remote-mips.c gdb_wait.h $(defs_h) $(gdbcmd_h) \
	$(gdbcore_h) $(inferior_h) serial.h symfile.h target.h

remote-mm.o: remote-mm.c $(bfd_h) gdb_wait.h $(defs_h) $(inferior_h) \
	minimon.h target.h terminal.h gdb_string.h

remote-nindy.o: remote-nindy.c $(floatformat_h) gdb_wait.h $(command_h) \
	$(defs_h) $(gdbcore_h) $(inferior_h) \
	nindy-share/env.h nindy-share/stop.h $(remote_utils_h) \
	symfile.h

remote-os9k.o: remote-os9k.c $(defs_h) $(gdbcore_h) gdb_wait.h \
	$(command_h) monitor.h $(remote_utils_h) $(symtab_h) symfile.h \
	objfiles.h gdb-stabs.h gdb_string.h

remote-sds.o: remote-sds.c $(bfd_h) gdb_wait.h $(defs_h) $(gdbcmd_h) \
	$(inferior_h) $(remote_utils_h) symfile.h terminal.h gdb_string.h

remote-sim.o: remote-sim.c gdb_wait.h $(defs_h) $(gdbcore_h) \
	$(inferior_h) target.h terminal.h gdb_string.h \
	$(INCLUDE_DIR)/callback.h

remote-st.o: remote-st.c gdb_wait.h $(defs_h) $(gdbcore_h) serial.h \
	target.h gdb_string.h

remote-udi.o: remote-udi.c $(bfd_h) gdb_wait.h $(defs_h) $(gdbcmd_h) \
	$(inferior_h) target.h terminal.h $(udiheaders) gdb_string.h

remote-vx.o: remote-vx.c gdb_wait.h complaints.h $(defs_h) $(gdbcmd_h) \
	$(gdbcore_h) $(inferior_h) target.h vx-share/dbgRpcLib.h \
	vx-share/ptrace.h vx-share/xdr_ld.h vx-share/xdr_ptrace.h \
	vx-share/xdr_rdb.h gdb-stabs.h objfiles.h symfile.h $(bfd_h) \
	gdb_string.h

remote-vx29k.o: remote-vx29k.c gdb_wait.h complaints.h $(defs_h) $(gdbcmd_h) \
        $(gdbcore_h) $(inferior_h) target.h vx-share/dbgRpcLib.h \
        vx-share/ptrace.h vx-share/xdr_ld.h vx-share/xdr_ptrace.h \
        vx-share/xdr_rdb.h gdb_string.h

ocd.o: ocd.c ocd.h $(gdbcore_h) gdb_string.h $(frame_h) $(inferior_h) \
	$(bfd_h) symfile.h target.h gdb_wait.h $(gdbcmd_h) objfiles.h \
	gdb-stabs.h $(dcache_h) serial.h

remote-utils.o: remote-utils.c $(defs_h) $(gdbcmd_h) $(gdbcore_h) \
	$(inferior_h) $(remote_utils_h) gdb_string.h

remote.o: remote.c $(bfd_h) gdb_wait.h $(defs_h) $(gdbcmd_h) \
	$(inferior_h) $(remote_utils_h) symfile.h terminal.h gdb_string.h \
	$(event_loop_h) $(event_top_h) $(remote_h) $(inf_loop_h)

remote-nrom.o: remote-nrom.c $(bfd_h) gdb_wait.h $(defs_h) $(gdbcmd_h) \
	$(inferior_h) $(remote_utils_h) symfile.h terminal.h

rom68k-rom.o: rom68k-rom.c monitor.h $(bfd_h) gdb_wait.h $(defs_h) $(gdbcmd_h) \
	$(inferior_h) target.h serial.h terminal.h

rs6000-nat.o: rs6000-nat.c $(bfd_h) $(defs_h) $(inferior_h) target.h \
	xcoffsolib.h

rs6000-tdep.o: rs6000-tdep.c $(defs_h) $(gdbcore_h) $(inferior_h) \
	target.h xcoffsolib.h

scm-exp.o: $(defs_h) $(value_h) parser-defs.h language.h c-lang.h \
	scm-lang.h scm-tags.h

scm-lang.o: $(defs_h) $(value_h) parser-defs.h language.h c-lang.h \
	scm-lang.h scm-tags.h gdb_string.h $(gdbcore_h)

scm-valprint.o: $(defs_h) $(value_h) parser-defs.h language.h  \
	scm-lang.h valprint.h $(gdbcore_h)

ser-go32.o: ser-go32.c $(defs_h) serial.h 

ser-mac.o: ser-mac.c $(defs_h) serial.h signals.h

ser-ocd.o: ser-ocd.c $(defs_h) serial.h signals.h gdb_string.h

ser-pipe.o: ser-pipe.c $(defs_h) serial.h signals.h gdb_string.h ser-unix.h

ser-tcp.o: ser-tcp.c $(defs_h) serial.h signals.h gdb_string.h ser-unix.h

ser-unix.o: ser-unix.c $(defs_h) serial.h ser-unix.h 

serial.o: serial.c $(defs_h) serial.h gdb_string.h

sh-tdep.o: sh-tdep.c $(bfd_h) $(dis-asm_h) \
	$(srcdir)/../opcodes/sh-opc.h $(defs_h) $(expression_h) $(frame_h) \
	$(gdbcmd_h) $(gdbtypes_h) $(symtab_h) $(value_h) $(arch_utils_h)

sh3-rom.o: sh3-rom.c monitor.h $(bfd_h) gdb_wait.h $(defs_h) $(gdbcmd_h) \
	$(inferior_h) target.h serial.h terminal.h $(arch_utils_h)

mon960-rom.o: mon960-rom.c monitor.h $(bfd_h) gdb_wait.h $(defs_h) $(gdbcmd_h) \
	$(inferior_h) target.h serial.h terminal.h

solib.o: solib.c $(command_h) $(defs_h) $(gdbcore_h) $(inferior_h) \
	objfiles.h gnu-regex.h symfile.h target.h gdb_string.h

source.o: source.c $(defs_h) $(expression_h) $(frame_h) $(gdbcmd_h) \
	$(gdbcore_h) language.h objfiles.h gnu-regex.h symfile.h $(symtab_h) \
	gdb_string.h source.h

sparc-nat.o: sparc-nat.c $(bfd_h) $(defs_h) $(inferior_h) $(gdbcore_h) \
	target.h

sparc-tdep.o: sparc-tdep.c $(floatformat_h) $(defs_h) $(gdbcore_h) \
	$(inferior_h) objfiles.h symfile.h target.h gdb_string.h \
	$(arch_utils_h)

sparcl-tdep.o: sparcl-tdep.c $(defs_h) $(gdbcore_h) target.h

dsrec.o: dsrec.c $(defs_h) srec.h

stabsread.o: stabsread.c $(bfd_h) $(INCLUDE_DIR)/aout/stab.def \
	$(INCLUDE_DIR)/aout/stab_gnu.h buildsym.h complaints.h $(defs_h) \
	$(gdbtypes_h) objfiles.h stabsread.h symfile.h $(symtab_h) \
	gdb_string.h

stack.o: stack.c $(defs_h) $(gdbcmd_h) $(gdbcore_h) $(inferior_h) \
	language.h target.h gdb_string.h

ui-file.o: ui-file.c $(defs_h) ui-file.h
tui-file.o: $(srcdir)/tui/tui-file.c $(defs_h) $(srcdir)/tui/tui-file.h
	$(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/tui/tui-file.c

ax-general.o: ax-general.c $(ax_h) $(defs_h) $(value_h)
ax-gdb.o: ax-gdb.c $(defs_h) $(symtab_h) symfile.h $(gdbtypes_h) \
	$(value_h) $(expression_h) $(command_h) $(ax_h) $(gdbcmd_h) ax-gdb.h

sun3-nat.o: sun3-nat.c $(defs_h) $(gdbcore_h) $(inferior_h)

sun386-nat.o: sun386-nat.c $(defs_h) $(inferior_h) $(gdbcore_h)

symfile.o: symfile.c $(breakpoint_h) complaints.h $(defs_h) \
	$(expression_h) $(gdbcmd_h) $(gdbcore_h) $(gdbtypes_h) \
	language.h objfiles.h symfile.h $(symtab_h) target.h \
	gdb_string.h

symm-tdep.o: symm-tdep.c $(defs_h) $(gdbcore_h) $(inferior_h)

symm-nat.o: symm-nat.c $(defs_h) $(gdbcore_h) $(inferior_h)

symmisc.o: symmisc.c $(bfd_h) $(breakpoint_h) $(command_h) $(defs_h) \
	$(expression_h) $(gdbtypes_h) language.h objfiles.h symfile.h \
	$(symtab_h) gdb_string.h

symtab.o: symtab.c call-cmds.h $(defs_h) $(expression_h) $(frame_h) \
	$(gdbcmd_h) $(gdbcore_h) $(gdbtypes_h) language.h objfiles.h \
	gnu-regex.h symfile.h $(symtab_h) target.h $(value_h) \
	gdb_string.h

# OBSOLETE tahoe-tdep.o: tahoe-tdep.c $(OP_INCLUDE)/tahoe.h $(defs_h) \
# OBSOLETE	$(symtab_h)

tic80-tdep.o: tic80-tdep.c $(defs_h)

target.o: target.c $(bfd_h) $(defs_h) $(gdbcmd_h) $(inferior_h) \
	objfiles.h symfile.h target.h gdb_string.h

thread.o: thread.c $(defs_h) gdbthread.h $(gdbcmd_h) target.h

top.o: top.c top.h $(bfd_h) $(getopt_h) $(readline_headers) call-cmds.h \
	$(defs_h) $(gdbcmd_h) $(inferior_h) language.h signals.h \
	$(remote_utils_h) gdb_string.h $(event_loop_h) $(event_top_h) $(version_h)

typeprint.o: typeprint.c $(defs_h) $(expression_h) $(gdbcmd_h) \
	$(gdbcore_h) $(gdbtypes_h) language.h $(symtab_h) target.h \
	$(value_h) gdb_string.h

ultra3-nat.o: ultra3-nat.c $(defs_h) $(gdbcore_h) $(inferior_h)

ultra3-xdep.o: ultra3-xdep.c $(defs_h) $(gdbcore_h) $(inferior_h)

umax-xdep.o: umax-xdep.c $(defs_h) $(gdbcore_h) $(inferior_h)

utils.o: utils.c $(bfd_h) $(defs_h) $(expression_h) $(gdbcmd_h) \
	language.h signals.h target.h terminal.h $(readline_headers) \
	gdb_string.h $(event_loop_h) $(event_top_h)

valarith.o: valarith.c $(bfd_h) $(defs_h) $(expression_h) \
	$(gdbtypes_h) language.h $(symtab_h) target.h $(value_h) \
	gdb_string.h

valops.o: valops.c $(defs_h) $(gdbcore_h) $(inferior_h) target.h \
	gdb_string.h

valprint.o: valprint.c $(defs_h) $(expression_h) $(gdbcmd_h) \
	$(gdbcore_h) $(gdbtypes_h) language.h $(symtab_h) target.h \
	$(value_h) gdb_string.h valprint.h

values.o: values.c $(defs_h) $(expression_h) $(frame_h) $(gdbcmd_h) \
	$(gdbcore_h) $(gdbtypes_h) $(symtab_h) target.h $(value_h) \
	gdb_string.h scm-lang.h

vax-tdep.o: vax-tdep.c $(OP_INCLUDE)/vax.h $(defs_h) $(symtab_h)

w65-tdep.o : w65-tdep.c $(gdbcore_h)

win32-nat.o: win32-nat.c $(gdbcmd_h) $(gdbcore_h) $(inferior_h) $(defs_h) \
	gdb_string.h

xdr_ld.o: vx-share/xdr_ld.c $(defs_h) vx-share/vxTypes.h \
	vx-share/vxWorks.h vx-share/xdr_ld.h
	$(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/vx-share/xdr_ld.c

xdr_ptrace.o: vx-share/xdr_ptrace.c $(defs_h) vx-share/vxTypes.h \
	vx-share/vxWorks.h vx-share/xdr_ptrace.h
	$(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/vx-share/xdr_ptrace.c

xdr_rdb.o: vx-share/xdr_rdb.c $(defs_h) vx-share/vxTypes.h \
	vx-share/vxWorks.h vx-share/xdr_rdb.h
	$(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/vx-share/xdr_rdb.c

xcoffread.o: xcoffread.c $(bfd_h) $(INCLUDE_DIR)/aout/stab.def \
	$(INCLUDE_DIR)/aout/stab_gnu.h $(INCLUDE_DIR)/coff/internal.h \
	$(INCLUDE_DIR)/coff/rs6000.h $(BFD_SRC)/libcoff.h buildsym.h \
	complaints.h $(defs_h) $(gdbtypes_h) objfiles.h stabsread.h symfile.h \
	$(symtab_h) partial-stab.h gdb_string.h

xcoffsolib.o: xcoffsolib.c $(bfd_h) $(defs_h) xcoffsolib.h

# FIXME: z8k-tdep.c calls _initialize_gdbtypes().  Since that isn't
# declared -Wimplicit fails. It should be using the GDBARCH framework.
# cagney 1999-09-02.
z8k-tdep.o: z8k-tdep.c $(bfd_h) $(dis-asm_h) $(defs_h) $(frame_h) \
	$(gdbcmd_h) $(gdbtypes_h) $(symtab_h) $(gdbcore_h) $(value_h)
	$(CC) -c $(INTERNAL_WARN_CFLAGS) $(NO_WERROR_CFLAGS) $<

c-exp.tab.o: c-exp.tab.c c-lang.h $(defs_h) $(expression_h) \
	$(gdbtypes_h) language.h parser-defs.h $(symtab_h) $(value_h) \
	$(bfd_h) objfiles.h symfile.h

jv-exp.tab.o: jv-exp.tab.c jv-lang.h $(defs_h) $(expression_h) \
	$(gdbtypes_h) language.h parser-defs.h $(symtab_h) $(value_h) \
	$(bfd_h) objfiles.h symfile.h

f-exp.tab.o: f-exp.tab.c f-lang.h $(defs_h) $(expression_h) \
	language.h parser-defs.h $(value_h) $(bfd_h) objfiles.h symfile.h

m2-exp.tab.o: m2-exp.tab.c $(defs_h) $(expression_h) $(gdbtypes_h) \
	language.h m2-lang.h parser-defs.h $(symtab_h) $(value_h) \
	$(bfd_h) objfiles.h symfile.h

gdb-events.o: gdb-events.c gdb-events.h $(defs_h) $(gdbcmd_h)

ui-out.o: ui-out.c $(defs_h) $(ui_out_h) expression.h language.h
cli-out.o: cli-out.c $(defs_h) $(ui_out_h) $(cli_out_h)
varobj.o: varobj.c $(defs_h) $(frame_h) $(value_h) \
	$(language_h) valprint.h varobj.h wrapper.h
	$(CC) -c $(INTERNAL_WARN_CFLAGS) $(NO_WERROR_CFLAGS) $<
wrapper.o: wrapper.c $(defs_h) $(frame_h) $(value_h) wrapper.h

#
# MI dependencies
#
# Need to explicitly specify the compile rule as make will do nothing
# or try to compile the object file into the mi directory.

mi_cmds_h =	$(srcdir)/mi/mi-cmds.h
mi_out_h =	$(srcdir)/mi/mi-out.h
mi_parse_h =	$(srcdir)/mi/mi-parse.h
mi_getopt_h =	$(srcdir)/mi/mi-getopt.h
mi_console_h =	$(srcdir)/mi/mi-console.h

mi-cmds.o: $(srcdir)/mi/mi-cmds.c $(defs_h) $(top_h) $(mi_cmds_h) $(ui_out_h)
	$(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/mi/mi-cmds.c
mi-cmd-var.o: $(srcdir)/mi/mi-cmd-var.c $(defs_h) $(top_h) $(mi_cmds_h) \
		$(ui_out_h)
	$(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/mi/mi-cmd-var.c
mi-cmd-stack.o: $(srcdir)/mi/mi-cmd-stack.c $(defs_h) $(top_h) $(mi_cmds_h) \
		$(ui_out_h) $(frame_h) $(value_h) $(target_h)
	$(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/mi/mi-cmd-stack.c
mi-cmd-break.o: $(srcdir)/mi/mi-cmd-break.c $(defs_h) $(mi_cmds_h) \
		$(ui_out_h) $(mi_getopt_h)
	$(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/mi/mi-cmd-break.c
mi-cmd-disas.o: $(srcdir)/mi/mi-cmd-disas.c $(defs_h) $(mi_cmds_h) \
		$(ui_out_h) $(value_h) $(target_h)
	$(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/mi/mi-cmd-disas.c
mi-main.o: $(srcdir)/mi/mi-main.c $(defs_h) $(top_h) $(mi_cmds_h) $(ui_out_h) \
		$(mi_console_h) $(mi_getopt_h) $(event_loop_h) $(event_top_h) \
		$(mi_getopt_h)
	$(CC) -c $(INTERNAL_WARN_CFLAGS) $(srcdir)/mi/mi-main.c
mi-out.o: $(srcdir)/mi/mi-out.c $(defs_h) $(mi_out_h) $(ui_out_h)
	$(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/mi/mi-out.c
mi-console.o: $(srcdir)/mi/mi-console.c $(mi_out_h) $(defs_h)
	$(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/mi/mi-console.c
mi-parse.o: $(srcdir)/mi/mi-parse.c $(defs_h) $(mi_parse_h) $(mi_cmds_h)
	$(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/mi/mi-parse.c
mi-getopt.o: $(srcdir)/mi/mi-getopt.c $(mi_getopt_h) $(defs_h)
	$(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/mi/mi-getopt.c

#
# TUI dependencies
#
# Need to explicitly specify the compile rule as make will do nothing
# or try to compile the object file into the mi directory.

tui.o: $(srcdir)/tui/tui.c \
		$(srcdir)/tui/tui.h $(srcdir)/tui/tuiData.h \
		$(srcdir)/tui/tuiLayout.h $(srcdir)/tui/tuiIO.h \
		$(srcdir)/tui/tuiRegs.h $(srcdir)/tui/tuiWin.h
	$(CC) -c $(INTERNAL_WARN_CFLAGS) $(srcdir)/tui/tui.c
tuiCommand.o: $(srcdir)/tui/tuiCommand.c \
		$(srcdir)/tui/tui.h $(srcdir)/tui/tuiData.h \
		$(srcdir)/tui/tuiWin.h $(srcdir)/tui/tuiIO.h
	$(CC) -c $(INTERNAL_WARN_CFLAGS) $(srcdir)/tui/tuiCommand.c
tuiData.o: $(srcdir)/tui/tuiData.c \
		$(srcdir)/tui/tui.h $(srcdir)/tui/tuiData.h
	$(CC) -c $(INTERNAL_WARN_CFLAGS) $(srcdir)/tui/tuiData.c
tuiDataWin.o: $(srcdir)/tui/tuiDataWin.c \
		$(srcdir)/tui/tui.h $(srcdir)/tui/tuiData.h \
		$(srcdir)/tui/tuiRegs.h
	$(CC) -c $(INTERNAL_WARN_CFLAGS) $(srcdir)/tui/tuiDataWin.c
tuiDisassem.o: $(srcdir)/tui/tuiDisassem.c \
		$(srcdir)/tui/tui.h $(srcdir)/tui/tuiData.h \
		$(srcdir)/tui/tuiLayout.h $(srcdir)/tui/tuiSourceWin.h \
		$(srcdir)/tui/tuiStack.h
	$(CC) -c $(INTERNAL_WARN_CFLAGS) $(srcdir)/tui/tuiDisassem.c
tuiGeneralWin.o: $(srcdir)/tui/tuiGeneralWin.c \
		$(srcdir)/tui/tui.h $(srcdir)/tui/tuiData.h \
		$(srcdir)/tui/tuiGeneralWin.h
	$(CC) -c $(INTERNAL_WARN_CFLAGS) $(srcdir)/tui/tuiGeneralWin.c
tuiIO.o: $(srcdir)/tui/tuiIO.c \
		$(srcdir)/tui/tui.h $(srcdir)/tui/tuiData.h \
		$(srcdir)/tui/tuiIO.h $(srcdir)/tui/tuiCommand.h \
		$(srcdir)/tui/tuiWin.h
	$(CC) -c $(INTERNAL_WARN_CFLAGS) $(srcdir)/tui/tuiIO.c
tuiLayout.o: $(srcdir)/tui/tuiLayout.c \
		$(srcdir)/tui/tui.h $(srcdir)/tui/tuiData.h \
		$(srcdir)/tui/tuiGeneralWin.h $(srcdir)/tui/tuiStack.h \
		$(srcdir)/tui/tuiRegs.h $(srcdir)/tui/tuiDisassem.h
	$(CC) -c $(INTERNAL_WARN_CFLAGS) $(srcdir)/tui/tuiLayout.c
tuiRegs.o: $(srcdir)/tui/tuiRegs.c \
		$(srcdir)/tui/tui.h $(srcdir)/tui/tuiData.h \
		$(srcdir)/tui/tuiLayout.h $(srcdir)/tui/tuiWin.h
	$(CC) -c $(INTERNAL_WARN_CFLAGS) $(srcdir)/tui/tuiRegs.c
tuiSource.o: $(srcdir)/tui/tuiSource.c \
		$(srcdir)/tui/tui.h $(srcdir)/tui/tuiData.h \
		$(srcdir)/tui/tuiStack.h $(srcdir)/tui/tuiSourceWin.h \
		$(srcdir)/tui/tuiSource.h
	$(CC) -c $(INTERNAL_WARN_CFLAGS) $(srcdir)/tui/tuiSource.c
tuiSourceWin.o: $(srcdir)/tui/tuiSourceWin.c \
		$(srcdir)/tui/tui.h $(srcdir)/tui/tuiData.h \
		$(srcdir)/tui/tuiStack.h $(srcdir)/tui/tuiSourceWin.h \
		$(srcdir)/tui/tuiSource.h $(srcdir)/tui/tuiDisassem.h
	$(CC) -c $(INTERNAL_WARN_CFLAGS) $(srcdir)/tui/tuiSourceWin.c
tuiStack.o: $(srcdir)/tui/tuiStack.c \
		$(srcdir)/tui/tui.h $(srcdir)/tui/tuiData.h \
		$(srcdir)/tui/tuiStack.h $(srcdir)/tui/tuiSourceWin.h
	$(CC) -c $(INTERNAL_WARN_CFLAGS) $(srcdir)/tui/tuiStack.c
tuiWin.o: $(srcdir)/tui/tuiWin.c \
		$(srcdir)/tui/tui.h $(srcdir)/tui/tuiData.h \
		$(srcdir)/tui/tuiGeneralWin.h $(srcdir)/tui/tuiStack.h \
		$(srcdir)/tui/tuiSourceWin.h $(srcdir)/tui/tuiDataWin.h
	$(CC) -c $(INTERNAL_WARN_CFLAGS) $(srcdir)/tui/tuiWin.c

### end of the gdb Makefile.in.
