# Copyright 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999
# 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@

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

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

# If the user configured GDB to include the TUI, the name of the tui
# library goes here.
TUI_LIBRARY = @TUI_LIBRARY@

# If the user configured GDB to include the TUI, the all-tui 
# target goes here.
BUILD_TUI = @BUILD_TUI@

# 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@

# 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)

# Where is the TUI library?  Typically in tui/.
TUI_DIR=tui
TUI_SRC = $(srcdir)/$(TUI_DIR)
TUI_CFLAGS= -I$(TUI_SRC)

# 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@


ENABLE_CFLAGS= @ENABLE_CFLAGS@

# -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 = -g

# 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) $(TUI_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) $(LDFLAGS) @CONFIG_LDFLAGS@ @HLDFLAGS@
HLDENV = @HLDENV@

# We are using our own version of REGEX now to be consistent across
# machines.
REGEX = gnu-regex.o
REGEX1 = gnu-regex.o

# 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 = $(REGEX1) $(XM_ADD_FILES) $(TM_ADD_FILES) $(NAT_ADD_FILES)

VERSION = 19991206
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-unix.o ser-pipe.o

# 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)" \
	"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 gdbtypes.c \
	inf-loop.c infcmd.c inflow.c infrun.c language.c \
	kod.c kod-cisco.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

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
elf_bfd_h =     $(BFD_DIR)/elf-bfd.h
wait_h =	$(INCLUDE_DIR)/wait.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

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

# 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 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 \
	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

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)
	@$(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:
	transformed_name=`t='$(program_transform_name)'; \
			  echo gdb | sed -e $$t` ; \
		if test "x$$transformed_name" = x; then \
		  transformed_name=gdb ; \
		else \
		  true ; \
		fi ; \
		$(INSTALL_PROGRAM) gdb$(EXEEXT) $(bindir)/$$transformed_name$(EXEEXT) ; \
		$(INSTALL_DATA) $(srcdir)/gdb.1 $(man1dir)/$$transformed_name.1
	@$(MAKE) DO=install "DODIRS=$(SUBDIRS)" $(FLAGS_TO_PASS) subdir_do 

uninstall: force
	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
	@$(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.

INIT_FILES = $(OBS) $(TSOBS) $(SUBDIR_INIT_FILES)
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)

# Have the TUI library depend on a phony target, so we'll always
# recurse and make sure it's up to date.  If it is, then the file will
# be unchanged, and we won't rebuild it.
# .PHONY: check-tui
all-tui: 
	@(cd tui; ${MAKE} ${FLAGS_TO_PASS} all)

# 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:
	@$(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) all-doc

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
copying.c: COPYING copying.awk
	awk -f $(srcdir)/copying.awk < $(srcdir)/COPYING > 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-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 \
	gould-tdep.c gould-xdep.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 \
	i960-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) \
	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-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 $(wait_h)

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

# OBSOLETE convex-tdep.o: convex-tdep.c $(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)

copying.o: copying.c $(defs_h) $(gdbcmd_h)

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) $(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) $(elf_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 $(wait_h) $(defs_h) $(gdbcore_h) \
	$(inferior_h) target.h terminal.h gdbthread.h gdb_string.h

# Due to several ``enum enabled'' declaration clashes it is difficult
# to fix breakpoint.c's compiler warnings.
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)
	$(CC) -c $(INTERNAL_WARN_CFLAGS) $(NO_WERROR_CFLAGS) $<

gdbarch.o: gdbarch.c $(defs_h) $(bfd_h) $(gdbcmd_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

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

# OBSOLETE gould-tdep.o: gould-tdep.c $(OP_INCLUDE)/np1.h $(defs_h) $(frame_h) \
# OBSOLETE	$(gdbcore_h) $(symtab_h)

# OBSOLETE gould-xdep.o: gould-xdep.c $(defs_h) $(gdbcore_h) $(inferior_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 $(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)

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) $(frame_h) symfile.h objfiles.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)

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 $(wait_h) $(command_h)

infrun.o: infrun.c $(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 $(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 \
	$(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)

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) \
	$(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) $(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 $(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 $(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 $(wait_h) $(gdbcmd_h) \
	objfiles.h gdb-stabs.h serial.h ocd.h

ppcbug-rom.o: ppcbug-rom.c monitor.h $(bfd_h) $(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
	$(CC) -c $(INTERNAL_WARN_CFLAGS) $(NO_WERROR_CFLAGS) $<

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) $(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 $(wait_h) $(defs_h) $(gdbcore_h) \
	$(inferior_h) target.h terminal.h gdb_string.h

remote-array.o: remote-array.c $(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 $(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) $(wait_h) $(defs_h) $(gdbcmd_h) \
	$(inferior_h) $(remote_utils_h) symfile.h terminal.h gdb_string.h

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

remote-bug.o: remote-bug.c $(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 \
	$(wait_h) serial.h gdb_string.h
	$(CC) -c $(INTERNAL_WARN_CFLAGS) $(NO_WERROR_CFLAGS) $<

remote-eb.o: remote-eb.c $(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) $(wait_h) $(command_h) $(defs_h) \
	$(inferior_h) $(remote_utils_h) terminal.h gdb_string.h

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

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

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

remote-nindy.o: remote-nindy.c $(floatformat_h) $(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) $(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) $(wait_h) $(defs_h) $(gdbcmd_h) \
	$(inferior_h) $(remote_utils_h) symfile.h terminal.h gdb_string.h

remote-sim.o: remote-sim.c $(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 $(wait_h) $(defs_h) $(gdbcore_h) serial.h \
	target.h gdb_string.h

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

remote-vx.o: remote-vx.c $(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 $(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 $(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) $(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) $(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) $(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)

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

mon960-rom.o: mon960-rom.c monitor.h $(bfd_h) $(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

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

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)

### end of the gdb Makefile.in.
