#Copyright 1989, 1990, 1991, 1992, 1993 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., 675 Mass Ave, Cambridge, MA 02139, USA.

prefix = /usr/local

program_transform_name =
exec_prefix = $(prefix)
bindir = $(exec_prefix)/bin
libdir = $(exec_prefix)/lib
tooldir = $(libdir)/$(target_alias)

datadir = $(prefix)/lib
mandir = $(prefix)/man
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 = $(prefix)/info
includedir = $(prefix)/include
docdir = $(datadir)/doc

SHELL = /bin/sh

INSTALL = `cd $(srcdir)/..;pwd`/install.sh -c
INSTALL_PROGRAM = $(INSTALL)
INSTALL_DATA = $(INSTALL)
INSTALL_XFORM = $(INSTALL) -t='$(program_transform_name)'
INSTALL_XFORM1 = $(INSTALL_XFORM) -b=.1

AR = ar
AR_FLAGS = qv
RANLIB = ranlib

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

# System V: If you compile gdb with a compiler which uses the coff
# encapsulation feature (this is a function of the compiler used, NOT
# of the m-?.h file selected by config.gdb), you must make sure that
# the GNU nm is the one that is used by munch.

# 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
#CC=gcc -traditional
GCC=gcc

# Directory containing source files.  Don't clean up the spacing,
# this exact string is matched for by the "configure" script.
srcdir = .

# If you use bison instead of yacc, it needs to include the "-y" argument.
#BISON=bison -y
BISON=yacc
YACC=$(BISON)

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

# 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, containing getopt and obstack?
LIBIBERTY = ../libiberty/libiberty.a

# Where is the MMALLOC library?  Typically ../mmalloc.
# Note that mmalloc can still be used on systems without mmap().
# To use your system malloc, comment out the following defines.
MMALLOC = ../mmalloc/libmmalloc.a
# To use your system malloc, uncomment MMALLOC_DISABLE.
#MMALLOC_DISABLE = -DNO_MMALLOC
# To use mmalloc but disable corruption checking, uncomment MMALLOC_CHECK
#MMALLOC_CHECK = -DNO_MMALLOC_CHECK
MMALLOC_CFLAGS = $(MMALLOC_CHECK) $(MMALLOC_DISABLE)

# Where are the BFD library?
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)

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

# All the includes used for CFLAGS and for lint.
# -I. for config files.
# -I$(srcdir) for gdb internal headers and possibly for 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).
GDB_CFLAGS = -I. -I$(srcdir) -I$(srcdir)/config

# 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

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

# The config/mh-* file must define REGEX and REGEX1 on USG machines.
# 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.
# If you have the Cygnus libraries installed,
# you can use 'CLIBS=$(INSTALLED_LIBS)' 'CDEPS='
INSTALLED_LIBS=-lbfd -lreadline $(TERMCAP) -lopcodes -lmmalloc \
	-liberty $(XM_CLIBS) $(TM_CLIBS) $(NAT_CLIBS)
CLIBS = $(BFD) $(READLINE) $(TERMCAP) $(OPCODES) $(MMALLOC) \
	$(LIBIBERTY) $(XM_CLIBS) $(TM_CLIBS) $(NAT_CLIBS)
CDEPS = $(XM_CDEPS) $(TM_CDEPS) $(NAT_CDEPS) \
	$(BFD) $(READLINE) $(OPCODES) $(MMALLOC) $(LIBIBERTY)

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 = 4.9.3
DIST=gdb

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

RUNTEST=runtest
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

# The `remote' debugging target is supported for most architectures,
# but not all (e.g. 960)
REMOTE_O=remote.o

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

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)" \
	"RANLIB=$(RANLIB)" \
	"MAKEINFO=$(MAKEINFO)" \
	"INSTALL=$(INSTALL)" \
	"INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \
	"INSTALL_DATA=$(INSTALL_DATA)" \
	"RUNTEST=$(RUNTEST)" \
	"RUNTESTFLAGS=$(RUNTESTFLAGS)" \
	"BISON=$(BISON)"

# Flags that we pass when building the testsuite.

CC_FOR_TARGET = ` \
  if [ -f $${rootme}/../gcc/Makefile ] ; then \
    echo $${rootme}/../gcc/xgcc -B$${rootme}/../gcc/; \
  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/Makefile ] ; then \
    echo $${rootme}/../gcc/xgcc -B$${rootme}/../gcc/; \
  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}/../chillrt/; \
  else \
    if [ "$(host_canonical)" = "$(target_canonical)" ] ; then \
      echo $(CC); \
    else \
      t='$(program_transform_name)'; echo gcc | sed -e '' $$t; \
    fi; \
  fi`
CHILL_LIB = -lchill

# 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)" \
	"MAKEINFO=$(MAKEINFO)" \
	"INSTALL=$(INSTALL)" \
	"INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \
	"INSTALL_DATA=$(INSTALL_DATA)" \
	"RUNTEST=$(RUNTEST)" \
	"RUNTESTFLAGS=$(RUNTESTFLAGS)" \
	"BISON=$(BISON)"

# 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 = blockframe.c breakpoint.c buildsym.c c-exp.y c-lang.c \
	c-typeprint.c c-valprint.c ch-exp.y ch-lang.c ch-typeprint.c \
	ch-valprint.c coffread.c command.c complaints.c core.c cp-valprint.c \
	dbxread.c demangle.c dwarfread.c elfread.c environ.c eval.c expprint.c \
	findvar.c gdbtypes.c infcmd.c inflow.c infrun.c language.c putenv.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 source.c stabsread.c stack.c symfile.c symmisc.c \
	symtab.c target.c typeprint.c utils.c valarith.c valops.c valprint.c \
	values.c serial.c ser-unix.c

# Files that are not source code, but need to go into
# gdb-$(VERSION).tar.Z.

NONSRC = Makefile.in munch configure.in ChangeLog ChangeLog-9091 \
	ChangeLog-92 ChangeLog-3.x gdb.1 refcard.ps README TODO TAGS NEWS \
	Projects .gdbinit COPYING $(YYFILES) copying.c copying.awk \
	saber.suppress standalone.c stuff.c kdb-start.c gcc.patch \
	nindy-share/Makefile nindy-share/VERSION nindy-share/README \
	vx-share/README 29k-share/udi/README config/convex/Convex.notes

# All source files that lint should look at
LINTFILES = $(SFILES) $(YYFILES) init.c

# Any additional files specified on these lines should also be added to
# the NONSRC definition, so they go in the tar files.
SFILES_STAND = $(SFILES) standalone.c
SFILES_KGDB  = $(SFILES) stuff.c kdb-start.c

# "system" headers.  Using these in dependencies is a rather personal
# choice.  By default, we do not depend on these files.
#getopt_h =	$(INCLUDE_DIR)/getopt.h
#ieee-float_h =	$(INCLUDE_DIR)/ieee-float.h
#bfd_h =		$(BFD_DIR)/bfd.h
#wait_h =	$(INCLUDE_DIR)/wait.h
#dis-asm_h =	$(INCLUDE_DIR)/dis-asm.h 

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

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


gdbcore_h =	gdbcore.h $(bfd_h)

frame_h =	frame.h
symtab_h =	symtab.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)

defs_h =	defs.h xm.h tm.h nm.h config.status

inferior_h =	inferior.h $(breakpoint_h)

# Header files that are not named in config/*/* Makefile fragments go
# into HFILES.

HFILES = buildsym.h call-cmds.h defs.h environ.h $(gdbcmd_h) \
	$(gdbcore_h) gdb-stabs.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 m2-lang.h complaints.h ns32k-opcode.h valprint.h \
	config/m68k/tm-m68k.h config/pa/tm-hppa.h config/i960/tm-i960.h \
	config/sparc/tm-sparc.h config/tm-sunos.h config/tm-sysv4.h \
	config/m68k/xm-m68k.h config/sparc/xm-sparc.h config/xm-sysv4.h \
	config/vax/xm-vax.h config/nm-trash.h $(udiheaders) \
	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/demux.h \
	nindy-share/env.h nindy-share/stop.h nindy-share/ttycntl.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

# 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 = regex.c regex.h

# Subdirectories of gdb, which should be included in their entirety in
# gdb-xxx.tar.Z:
TARDIRS = doc sparclite

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

SOURCES = $(SFILES) $(ALLDEPFILES) $(YYFILES)
# 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 = $(SFILES) $(HFILES) $(ALLDEPFILES) $(ALLPARAM) $(POSSLIBS) 

TARFILES = $(SFILES) $(HFILES) $(NONSRC) $(ALLDEPFILES) $(ALLCONFIG) \
	$(ALLPARAM) $(INFOFILES) $(POSSLIBS) $(REMOTE_EXAMPLES)


OBS =	version.o main.o blockframe.o breakpoint.o findvar.o stack.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 remote.o command.o \
	utils.o expprint.o environ.o gdbtypes.o copying.o $(DEPFILES) \
	mem-break.o target.o putenv.o parse.o language.o $(YYOBJ) buildsym.o \
	objfiles.o minsyms.o maint.o demangle.o dbxread.o coffread.o elfread.o \
	dwarfread.o mipsread.o stabsread.o core.o c-lang.o ch-lang.o m2-lang.o \
	complaints.o typeprint.o c-typeprint.o ch-typeprint.o m2-typeprint.o \
	c-valprint.o cp-valprint.o ch-valprint.o m2-valprint.o nlmread.o \
	serial.o

RAPP_OBS = rgdb.o rudp.o rserial.o serial.o udp.o $(XDEPFILES)

TSOBS = inflow.o

NTSOBS = standalone.o

TSSTART = /lib/crt0.o

NTSSTART = kdb-start.o

SUBDIRS = doc testsuite

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

# 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
	@$(MAKE) $(FLAGS_TO_PASS) DO=all "DODIRS=`echo $(SUBDIRS) | sed 's/testsuite//'`" subdir_do

installcheck:
check: force
	@rootme=`pwd`; export rootme; $(MAKE) $(TARGET_FLAGS_TO_PASS) DO=check DODIRS=testsuite subdir_do
info dvi install-info clean-info: 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: 
	$(INSTALL_XFORM) gdb $(bindir)/gdb
	$(INSTALL_XFORM1) $(srcdir)/gdb.1 $(man1dir)/gdb.1
	$(INSTALL_DATA) $(srcdir)/gdb.1 $(man1dir)/$$n.1
	$(M_INSTALL)
	@$(MAKE) DO=install "DODIRS=$(SUBDIRS)" $(FLAGS_TO_PASS) subdir_do 

uninstall: force
	rm -f $(bindir)/gdb $(man1dir)/gdb.1 $(man1dir)/$$n.1
	$(M_UNINSTALL)
	@$(MAKE) DO=uninstall "DODIRS=$(SUBDIRS)" $(FLAGS_TO_PASS) subdir_do 

init.c: munch $(OBS) $(TSOBS)
	$(srcdir)/munch $(MUNCH_DEFINE) $(OBS) $(TSOBS) > init.c-new
	mv init.c-new init.c

.PRECIOUS: init.c

# Removing the old gdb first works better if it is running, at least on SunOS.
gdb: $(OBS) $(TSOBS) $(ADD_DEPS) $(CDEPS) init.o
	rm -f gdb
	$(CC-LD) $(GLOBAL_CFLAGS) $(LDFLAGS) -o gdb \
	  init.o $(OBS) $(TSOBS) $(ADD_FILES) $(CLIBS) $(LOADLIBES)

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 $(srcdir)/m2-exp.y $(srcdir)/ch-exp.y
	#unload vx-share/*.h
	#unload nindy-share/[A-Z]*
	#load c-exp.tab.c m2-exp.tab.c ch-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 -ltermcap 
	#load `echo " "$(DEPFILES) | sed -e 's/\.o/.c/g' -e 's, , ../,g'`
	echo "Load .c corresponding to:" $(DEPFILES)


# 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: gdb
	rm -f gdb1
	cp gdb gdb1

# This is a remote stub which runs under unix and starts up an
# inferior process.  This is at least useful for debugging GDB's
# remote support.
rapp: $(RAPP_OBS)
	rm -f rapp_init.c
	$(srcdir)/munch $(MUNCH_DEFINE) $(RAPP_OBS) > rapp_init.c
	$(CC-LD) $(LDFLAGS) -o $@ rapp_init.c $(RAPP_OBS)

config.status:
	@echo "You must configure gdb.  Look at the README file for details."
	@false

### fixme - this can't be right.
# This checks the configure.in file versus the config/ directory.
config-check: config-check-hosts config-check-targets
config-check-hosts:
	grep gdb_host= $(srcdir)/configure.in | \
		sed -e 's/.*gdb_host=//' -e 's/ ;;$$/.mh/' | sort -u >HOSTconf.o
	(cd $(srcdir)/config; ls *.mh) >HOSTdir.o
	diff -u HOSTconf.o HOSTdir.o

### fixme - nor can this.
config-check-targets:
	grep gdb_target= $(srcdir)/configure.in | \
		sed -e 's/.*gdb_target=//' -e 's/ ;;$$/.mh/' | sort -u >TARGconf.o
	(cd $(srcdir)/config; ls *.mt) >TARGdir.o
	diff -u HOSTconf.o HOSTdir.o

# 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)
	rm -f init.c
	$(srcdir)/munch $(MUNCH_DEFINE) $(OBS) $(NTSOBS) > init.c
	$(CC) $(LDFLAGS) -c init.c $(CLIBS) 
	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.
# The xyzzy stuff below deals with empty DEPFILES
TAGS:	
	etags `find $(srcdir)/config \( -name $(TM_FILE) \
		-o -name $(XM_FILE) \
		-o -name $(NAT_FILE) \) -print` \
	`(for i in $(DEPFILES) $(TAGFILES); do \
		echo $(srcdir)/$$i ; \
	done) | sed -e 's/\.o$$/\.c/'` \

tags: TAGS

# Making distributions of GDB and friends.

# Make a tar file containing the GDB directory of the distribution.
gdb.tar.Z: force_update
	$(MAKE) $(MFLAGS) -f Makefile.in setup-to-dist
	$(MAKE) $(MFLAGS) -f Makefile.in gdb-$(VERSION).tar.Z

# Make a directory `proto-gdb.dir' that contains an image of the GDB
# directory of the distribution, built up with symlinks.  Note that this
# make target is not directly referenced by any other rules in this makefile,
# it is referenced by the makefile in the parent directory.
make-proto-gdb.dir: force_update 
	$(MAKE) $(MFLAGS) -f Makefile.in setup-to-dist
	$(MAKE) $(MFLAGS) -f Makefile make-proto-gdb-1

# Set up the GDB source directory for distribution, by building all files that
# are products of other files.
setup-to-dist: force_update
	../configure none
	(cd doc; $(MAKE) $(MFLAGS) GDBvn.texi)
	$(MAKE) $(MFLAGS) gdb.info
	$(MAKE) $(MFLAGS) refcard.ps

# Build a tar file from a proto-gdb.dir.
gdb-$(VERSION).tar.Z: force_update
	rm -f gdb.tar gdb-$(VERSION).tar.Z
	$(MAKE) $(MFLAGS) -f Makefile make-proto-gdb-1
	ln -s proto-gdb.dir $(DIST)
	tar chf - $(DIST) | compress >gdb-$(VERSION).tar.Z
	rm -rf $(DIST) proto-gdb.dir

# Build a proto-gdb.dir after GDB has been set up for distribution.
# This stuff must be run in `Makefile', not `Makefile.in`; we use the makefile
# built in the setup-to-dist process, since it defines things like ALLCONFIG
# and ALLDEPFILES, that we need.
make-proto-gdb-1: $(TARFILES) $(TARDIRS) gdb.info
	rm -rf proto-gdb.dir
	mkdir proto-gdb.dir
	rootme=`pwd`/ ; export rootme ; \
	  for i in `echo $(TARDIRS)`; do \
	    (cd proto-gdb.dir ; \
	    mkdir -p $$i; \
	    cd $$i; \
	    ln -s $${rootme}/$$i/* .; \
	    rm -rf SCCS CVS CVS.adm RCS config.status; \
	    if test -f Makefile.in; then rm Makefile; else true; fi;); \
	  done ; \
	  for i in `echo $(TARFILES)`; do \
	    (cd proto-gdb.dir ; \
	    dir=`dirname $$i`; \
	    if test -d $$dir; then true; else mkdir -p $$dir; fi; \
	    ln -s $${rootme}/$$i $$i;); \
	  done
	chmod og=u `find . -print`

# Build a proto-testsuite.dir.
make-proto-testsuite.dir: force_update
	rm -rf proto-testsuite.dir
	mkdir proto-testsuite.dir
	rootme=`pwd`/ ; export rootme ; \
	  for i in `find testsuite -type f -print`; do \
	    (cd proto-testsuite.dir ; \
	    dir=`dirname $$i`; \
	    if test -d $$dir; then true; else mkdir -p $$dir; fi; \
	    ln -s $${rootme}/$$i $$i;); \
	  done
	find proto-testsuite.dir -name Makefile -exec rm {} \;
	find proto-testsuite.dir -name config.status -exec rm {} \;

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

# This used to depend on c-exp.tab.c m2-exp.tab.c ch-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
	rm -f y.output yacc.acts yacc.tmp y.tab.h
	rm -f Makefile

realclean: clean
	@$(MAKE) $(FLAGS_TO_PASS) DO=realclean "DODIRS=$(SUBDIRS)" subdir_do
	rm -f c-exp.tab.c m2-exp.tab.c ch-exp.tab.c TAGS
	rm -f nm.h tm.h xm.h config.status
	rm -f y.output yacc.acts yacc.tmp
	rm -f Makefile

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 $(host_makefile_frag) $(target_makefile_frag)
	$(SHELL) config.status

force:

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

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

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

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

# Make copying.c from COPYING
copying.c: COPYING copying.awk
	awk -f $(srcdir)/copying.awk < $(srcdir)/COPYING > copying.c

version.c: Makefile
	echo 'char *version = "$(VERSION)";' >version.c
	echo 'char *host_canonical = "$(host_canonical)";' >> version.c
	echo 'char *target_canonical = "$(target_canonical)";' >> version.c

# 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.
c-exp.tab.o: c-exp.tab.c
c-exp.tab.c: c-exp.y Makefile.in
	@echo 'Expect 4 shift/reduce conflicts.'
	$(YACC) $(YFLAGS) $(srcdir)/c-exp.y
	-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' \
	  < y.tab.c > c-exp.new
	-rm y.tab.c
	mv c-exp.new ./c-exp.tab.c

# ch-exp.tab.c is generated in objdir from ch-exp.y if it doesn't exist
# in srcdir, then compiled in objdir to ch-exp.tab.o.
# Remove bogus decls for malloc/realloc/free which conflict with everything
# else.
ch-exp.tab.o: ch-exp.tab.c
# the dependency here on c-exp.tab.c is artificial.  Without this
# dependency, a parallel make will attempt to build both at the same
# time and the second yacc will pollute the first y.tab.c file.
ch-exp.tab.c: ch-exp.y Makefile.in c-exp.tab.c
	$(YACC) $(YFLAGS) $(srcdir)/ch-exp.y
	-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' \
	  < y.tab.c > ch-exp.new
	-rm y.tab.c
	mv ch-exp.new ./ch-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
# the dependency here on ch-exp.tab.c is artificial.  Without this
# dependency, a parallel make will attempt to build both at the same
# time and the second yacc will pollute the first y.tab.c file.
m2-exp.tab.c: m2-exp.y Makefile.in ch-exp.tab.c
	$(YACC) $(YFLAGS) $(srcdir)/m2-exp.y
	-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' \
	  < y.tab.c > m2-exp.new
	-rm y.tab.c
	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 ch-exp.tab.c c-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 :

# These are things from config/*/*.m? fragments.  There is no good reason
# why they are separate from the lists of files above.

ALLDEPFILES = 29k-share/udi/udip2soc.c 29k-share/udi/udr.c \
	a29k-pinsn.c a29k-tdep.c a68v-nat.c altos-xdep.c arm-convert.s \
	arm-pinsn.c arm-tdep.c arm-xdep.c convex-pinsn.c convex-tdep.c \
	convex-xdep.c core-svr4.c coredep.c corelow.c exec.c fork-child.c \
	go32-xdep.c gould-pinsn.c gould-xdep.c h8300-tdep.c h8500-tdep.c \
	hp300ux-nat.c hppa-pinsn.c hppa-tdep.c hppab-nat.c hppah-nat.c \
	i386-pinsn.c i386-tdep.c i386b-nat.c i386mach-nat.c i386v-nat.c \
	i386aix-nat.c i386v4-nat.c i387-tdep.c i960-pinsn.c i960-tdep.c \
	infptrace.c inftarg.c irix4-nat.c isi-xdep.c m68k-pinsn.c m68k-tdep.c \
	m88k-nat.c m88k-pinsn.c m88k-tdep.c mips-nat.c mips-pinsn.c \
	mips-tdep.c news-xdep.c nindy-share/Onindy.c nindy-share/nindy.c \
	nindy-share/ttybreak.c nindy-share/ttyflush.c nindy-tdep.c \
	ns32k-pinsn.c paread.c procfs.c pyr-pinsn.c pyr-tdep.c pyr-xdep.c \
	remote-adapt.c remote-eb.c remote-es.c remote-hms.c remote-mips.c \
	remote-mm.c remote-monitor.c remote-nindy.c remote-sim.c remote-st.c \
	remote-udi.c remote-vx.c remote-z8k.c rs6000-nat.c rs6000-pinsn.c \
	rs6000-tdep.c ser-go32.c ser-tcp.c sh-tdep.c solib.c sparc-nat.c \
	sparc-pinsn.c sparc-tdep.c sun3-nat.c sun386-nat.c symm-tdep.c \
	symm-nat.c tahoe-pinsn.c ultra3-nat.c ultra3-xdep.c umax-xdep.c \
	vax-pinsn.c vx-share/xdr_ld.c vx-share/xdr_ptrace.c vx-share/xdr_rdb.c \
	xcoffexec.c xcoffread.c xcoffsolib.c z8k-tdep.c

ALLPARAM = config/a29k/nm-ultra3.h config/a29k/tm-a29k.h \
	config/a29k/tm-ultra3.h config/a29k/xm-ultra3.h \
	config/alpha/xm-alpha.h config/arm/tm-arm.h \
	config/arm/xm-arm.h config/convex/tm-convex.h \
	config/convex/xm-convex.h config/gould/tm-np1.h config/gould/tm-pn.h \
	config/gould/xm-np1.h config/gould/xm-pn.h config/h8300/tm-h8300.h \
	config/h8500/tm-h8500.h config/i386/nm-i386aix.h \
	config/i386/nm-i386bsd.h config/i386/nm-i386lynx.h \
	config/i386/nm-i386mach.h config/i386/nm-i386sco.h \
	config/i386/nm-i386sco4.h config/i386/nm-i386v.h \
	config/i386/nm-i386v4.h config/i386/nm-linux.h config/i386/nm-sun386.h \
	config/i386/tm-i386aix.h config/i386/tm-i386bsd.h \
	config/i386/tm-i386lynx.h config/i386/tm-i386v.h \
	config/i386/tm-i386v4.h config/i386/tm-linux.h config/i386/tm-sun386.h \
	config/i386/tm-symmetry.h config/i386/xm-go32.h \
	config/i386/xm-i386aix.h config/i386/xm-i386bsd.h \
	config/i386/xm-i386lynx.h config/i386/xm-i386mach.h \
	config/i386/xm-i386sco.h config/i386/xm-i386v.h \
	config/i386/xm-i386v32.h config/i386/xm-i386v4.h \
	config/i386/xm-linux.h config/i386/xm-sun386.h \
	config/i386/xm-symmetry.h config/i960/tm-nindy960.h \
	config/i960/tm-vx960.h config/m68k/nm-apollo68b.h \
	config/m68k/nm-apollo68v.h config/m68k/nm-hp300bsd.h \
	config/m68k/nm-hp300hpux.h config/m68k/nm-news.h config/m68k/nm-sun2.h \
	config/m68k/nm-sun3.h config/m68k/tm-3b1.h config/m68k/tm-altos.h \
	config/m68k/tm-amix.h config/m68k/tm-es1800.h \
	config/m68k/tm-hp300bsd.h config/m68k/tm-hp300hpux.h \
	config/m68k/tm-isi.h config/m68k/tm-m68k-fp.h \
	config/m68k/tm-m68k-nofp.h config/m68k/tm-monitor.h \
	config/m68k/tm-news.h config/m68k/tm-os68k.h config/m68k/tm-st2000.h \
	config/m68k/tm-sun2.h config/m68k/tm-sun2os4.h config/m68k/tm-sun3.h \
	config/m68k/tm-sun3os4.h config/m68k/tm-vx68.h config/m68k/xm-3b1.h \
	config/m68k/xm-altos.h config/m68k/xm-amix.h \
	config/m68k/xm-apollo68b.h config/m68k/xm-apollo68v.h \
	config/m68k/xm-hp300bsd.h config/m68k/xm-hp300hpux.h \
	config/m68k/xm-isi.h config/m68k/xm-news.h config/m68k/xm-news1000.h \
	config/m68k/xm-sun2.h config/m68k/xm-sun3.h config/m68k/xm-sun3os4.h \
	config/m88k/nm-m88k.h config/m88k/tm-delta88.h config/m88k/tm-m88k.h \
	config/m88k/xm-delta88.h config/m88k/xm-m88k.h config/mips/nm-irix3.h \
	config/mips/nm-irix4.h config/mips/nm-mips.h config/mips/nm-riscos.h \
	config/mips/nm-news-mips.h config/mips/tm-bigmips.h \
	config/mips/tm-irix3.h config/mips/tm-mips.h config/mips/xm-irix3.h \
	config/mips/xm-irix4.h config/mips/xm-mips.h config/mips/xm-riscos.h \
	config/mips/xm-news-mips.h \
	config/nm-sysv4.h \
	config/none/nm-none.h config/none/tm-none.h config/none/xm-none.h \
	config/ns32k/nm-umax.h config/ns32k/tm-merlin.h config/ns32k/tm-umax.h \
	config/ns32k/xm-merlin.h config/ns32k/xm-umax.h config/pa/nm-hppab.h \
	config/pa/nm-hppah.h config/pa/tm-hppab.h config/pa/tm-hppah.h \
	config/pa/xm-hppab.h config/pa/xm-hppah.h config/pa/xm-pa.h \
	config/pyr/tm-pyr.h \
	config/pyr/xm-pyr.h config/romp/xm-rtbsd.h config/rs6000/nm-rs6000.h \
	config/rs6000/tm-rs6000.h config/rs6000/xm-rs6000.h config/sh/tm-sh.h \
	config/sparc/nm-sun4os4.h config/sparc/tm-sparclite.h \
	config/sparc/tm-spc-em.h config/sparc/tm-sun4os4.h \
	config/sparc/tm-sun4sol2.h config/sparc/tm-vxsparc.h \
	config/sparc/xm-sun4os4.h config/sparc/xm-sun4sol2.h \
	config/tahoe/tm-tahoe.h config/tahoe/xm-tahoe.h config/vax/nm-vax.h \
	config/vax/tm-vax.h config/vax/xm-vaxbsd.h config/vax/xm-vaxult.h \
	config/vax/xm-vaxult2.h config/z8k/tm-z8k.h

ALLCONFIG = config/a29k/a29k-kern.mt config/a29k/a29k-udi.mt \
	config/a29k/a29k.mt config/a29k/ultra3.mh config/a29k/ultra3.mt \
	config/alpha/alpha-osf1.mh \
	config/arm/arm.mh config/arm/arm.mt config/convex/convex.mh \
	config/convex/convex.mt config/gould/np1.mh config/gould/np1.mt \
	config/gould/pn.mh config/gould/pn.mt config/h8300/h8300hms.mt \
	config/h8500/h8500hms.mt config/i386/go32.mh config/i386/i386aix.mh \
	config/i386/i386aix.mt config/i386/i386aout.mt config/i386/i386bsd.mh \
	config/i386/i386bsd.mt config/i386/i386lynx.mh config/i386/i386lynx.mt \
	config/i386/i386mach.mh config/i386/i386sco.mh config/i386/i386sco4.mh \
	config/i386/i386sol2.mh config/i386/i386sol2.mt config/i386/i386v.mh \
	config/i386/i386v.mt config/i386/i386v32.mh config/i386/i386v4.mh \
	config/i386/i386v4.mt config/i386/linux.mh config/i386/linux.mt \
	config/i386/ncr3000.mh config/i386/ncr3000.mt config/i386/sun386.mh \
	config/i386/sun386.mt config/i386/symmetry.mh config/i386/symmetry.mt \
	config/i960/nindy960.mt config/i960/vxworks960.mt config/m68k/3b1.mh \
	config/m68k/3b1.mt config/m68k/altos.mh config/m68k/altos.mt \
	config/m68k/amix.mh config/m68k/amix.mt config/m68k/apollo68b.mh \
	config/m68k/apollo68v.mh config/m68k/es1800.mt config/m68k/hp300bsd.mh \
	config/m68k/hp300bsd.mt config/m68k/hp300hpux.mh \
	config/m68k/hp300hpux.mt config/m68k/isi.mh config/m68k/isi.mt \
	config/m68k/m68k-fp.mt config/m68k/m68k-nofp.mt config/m68k/monitor.mt \
	config/m68k/news.mh config/m68k/news.mt config/m68k/news1000.mh \
	config/m68k/os68k.mt config/m68k/st2000.mt config/m68k/sun2os3.mh \
	config/m68k/sun2os3.mt config/m68k/sun2os4.mh config/m68k/sun2os4.mt \
	config/m68k/sun3os3.mh config/m68k/sun3os3.mt config/m68k/sun3os4.mh \
	config/m68k/sun3os4.mt config/m68k/vxworks68.mt config/m88k/delta88.mh \
	config/m88k/delta88.mt config/m88k/m88k.mh config/m88k/m88k.mt \
	config/mips/bigmips.mt config/mips/decstation.mh \
	config/mips/decstation.mt config/mips/idt.mt config/mips/idtl.mt \
	config/mips/irix3.mh config/mips/irix3.mt config/mips/irix4.mh \
	config/mips/littlemips.mh config/mips/littlemips.mt \
	config/none/none.mh config/none/none.mt config/ns32k/merlin.mh \
	config/ns32k/merlin.mt config/ns32k/umax.mh config/ns32k/umax.mt \
	config/pa/hppabsd.mh config/pa/hppabsd.mt config/pa/hppahpux.mh \
	config/pa/hppahpux.mt config/pyr/pyramid.mh config/pyr/pyramid.mt \
	config/romp/rtbsd.mh config/rs6000/rs6000.mh config/rs6000/rs6000.mt \
	config/sh/sh.mt config/sparc/sparc-em.mt config/sparc/sparclite.mt \
	config/sparc/sun4os4.mh config/sparc/sun4os4.mt \
	config/sparc/sun4sol2.mh config/sparc/sun4sol2.mt \
	config/sparc/vxsparc.mt config/tahoe/tahoe.mh config/tahoe/tahoe.mt \
	config/vax/vax.mt config/vax/vaxbsd.mh config/vax/vaxult.mh \
	config/vax/vaxult2.mh config/z8k/z8ksim.mt


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

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

a29k-pinsn.o: a29k-pinsn.c $(bfd_h) $(dis-asm_h)
a29k-tdep.o: a29k-tdep.c $(gdbcmd_h) $(gdbcore_h) $(inferior_h)
a68v-nat.o: a68v-nat.c $(defs_h) $(gdbcore_h) $(inferior_h)
altos-xdep.o: altos-xdep.c $(defs_h) $(gdbcore_h) $(inferior_h)
arm-pinsn.o: arm-pinsn.c $(OP_INCLUDE)/arm.h $(defs_h) $(symtab_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

buildsym.o: buildsym.c $(bfd_h) buildsym.h complaints.h $(defs_h) \
	objfiles.h symfile.h $(symtab_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)

c-valprint.o: c-valprint.c $(defs_h) $(expression_h) $(gdbtypes_h) \
	language.h $(symtab_h) valprint.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)

ch-valprint.o: ch-valprint.c $(defs_h) $(expression_h) $(gdbtypes_h) \
	language.h $(symtab_h) valprint.h $(value_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)

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

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

convex-pinsn.o: convex-pinsn.c $(OP_INCLUDE)/convex.h $(defs_h) \
	$(symtab_h)

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

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

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

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

coredep.o: coredep.c $(defs_h) $(gdbcore_h)

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

cp-valprint.o: cp-valprint.c $(defs_h) $(expression_h) $(gdbcmd_h) \
	$(gdbtypes_h) $(symtab_h) $(value_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

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

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

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

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

exec.o: exec.c $(defs_h) $(gdbcmd_h) $(gdbcore_h) $(inferior_h) \
	target.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

fork-child.o: fork-child.c $(wait_h) $(defs_h) $(gdbcore_h) \
	$(inferior_h) target.h terminal.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)

go32-xdep.o: go32-xdep.c

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

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-pinsn.o: hppa-pinsn.c $(bfd_h) $(dis-asm_h) $(defs_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
i386-pinsn.o: i386-pinsn.c $(bfd_h) $(dis-asm_h) $(defs_h)
i386-tdep.o: i386-tdep.c $(defs_h) $(gdbcore_h) $(inferior_h) target.h
i386b-nat.o: i386b-nat.c $(defs_h) 
i386mach-nat.o: i386mach-nat.c $(defs_h) $(gdbcore_h) $(inferior_h) 

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

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

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

i960-pinsn.o: i960-pinsn.c $(bfd_h) $(dis-asm_h) $(defs_h)

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

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

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

infptrace.o: infptrace.c $(defs_h) $(gdbcore_h) $(inferior_h) target.h

infrun.o: infrun.c $(wait_h) $(defs_h) $(gdbcmd_h) $(gdbcore_h) \
	$(inferior_h) target.h

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

irix4-nat.o: irix4-nat.c $(defs_h) $(inferior_h)
isi-xdep.o: isi-xdep.c

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)

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)

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

m68k-pinsn.o: m68k-pinsn.c $(bfd_h) $(dis-asm_h) $(defs_h) 
m68k-tdep.o: m68k-tdep.c $(defs_h) $(frame_h) $(symtab_h) 
m88k-nat.o: m88k-nat.c $(defs_h) $(gdbcore_h) $(inferior_h)
m88k-pinsn.o: m88k-pinsn.c $(defs_h) $(symtab_h) 
m88k-tdep.o: m88k-tdep.c $(defs_h) $(gdbcore_h) $(inferior_h)

main.o: main.c $(bfd_h) $(getopt_h) $(readline_headers) call-cmds.h \
	$(defs_h) $(gdbcmd_h) $(inferior_h) language.h signals.h target.h
	$(CC) -c $(INTERNAL_CFLAGS) $(READLINE_CFLAGS) $(srcdir)/main.c

maint.o: maint.c $(defs_h) $(gdbcmd_h) $(gdbtypes_h) $(symtab_h) 
mem-break.o: mem-break.c $(defs_h) 

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

mips-nat.o: mips-nat.c $(defs_h) $(gdbcore_h) $(inferior_h) 
mips-pinsn.o: mips-pinsn.c $(bfd_h) $(dis-asm_h) $(defs_h) 

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

mipsread.o: mipsread.c buildsym.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)

news-xdep.o: news-xdep.c

Onindy.o: nindy-share/Onindy.c $(wait_h) nindy-share/block_io.h \
	nindy-share/env.h nindy-share/ttycntl.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 nindy-share/ttycntl.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)

ttybreak.o: nindy-share/ttybreak.c nindy-share/ttycntl.h 
	$(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/nindy-share/ttybreak.c

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

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

ns32k-pinsn.o: ns32k-pinsn.c $(defs_h) $(gdbcore_h) ns32k-opcode.h \
	$(symtab_h)

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

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

parse.o: parse.c $(command_h) $(defs_h) $(expression_h) $(frame_h) \
	$(gdbtypes_h) language.h parser-defs.h $(symtab_h) $(value_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

procfs.o: procfs.c $(command_h) $(defs_h) $(gdbcore_h) $(inferior_h) \
	target.h

putenv.o: putenv.c

pyr-pinsn.o: pyr-pinsn.c $(OP_INCLUDE)/pyr.h $(defs_h) $(gdbcore_h) \
	$(symtab_h)

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

regex.o: regex.c regex.h

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

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

remote-es.o: remote-es.c $(bfd_h) $(wait_h) $(command_h) $(defs_h) \
	$(inferior_h) target.h terminal.h

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

remote-monitor.o: remote-monitor.c $(wait_h) $(command_h) $(defs_h) \
	$(gdbcore_h) monitor.h serial.h target.h

remote-nindy.o: remote-nindy.c $(ieee-float_h) $(wait_h) $(command_h) \
	$(defs_h) $(gdbcore_h) $(inferior_h) nindy-share/demux.h \
	nindy-share/env.h nindy-share/stop.h nindy-share/ttycntl.h \
	symfile.h target.h

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

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

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

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

remote-z8k.o: remote-z8k.c $(wait_h) $(srcdir)/../sim/z8k/sim.h \
	$(defs_h) $(gdbcore_h) $(inferior_h) target.h terminal.h

remote.o: remote.c $(bfd_h) $(wait_h) $(defs_h) $(gdbcmd_h) \
	$(inferior_h) serial.h symfile.h target.h terminal.h

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

rs6000-pinsn.o: rs6000-pinsn.c $(OP_INCLUDE)/rs6k.h $(defs_h)

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

ser-go32.o: ser-go32.c $(defs_h) serial.h 
ser-tcp.o: ser-tcp.c $(defs_h) serial.h signals.h
ser-unix.o: ser-unix.c $(defs_h) serial.h 
serial.o: serial.c $(defs_h) serial.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)

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

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

sparc-nat.o: sparc-nat.c $(bfd_h) $(defs_h) $(inferior_h) target.h
sparc-pinsn.o: sparc-pinsn.c $(bfd_h) $(dis-asm_h) $(defs_h)

sparc-tdep.o: sparc-tdep.c $(ieee-float_h) $(defs_h) $(gdbcore_h) \
	$(inferior_h) objfiles.h symfile.h target.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)

stack.o: stack.c $(defs_h) $(gdbcmd_h) $(gdbcore_h) $(inferior_h) \
	language.h target.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

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) 

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

tahoe-pinsn.o: tahoe-pinsn.c $(OP_INCLUDE)/tahoe.h $(defs_h) \
	$(symtab_h)

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

typeprint.o: typeprint.c $(defs_h) $(expression_h) $(gdbcmd_h) \
	$(gdbcore_h) $(gdbtypes_h) language.h $(symtab_h) target.h \
	$(value_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

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

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

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

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

vax-pinsn.o: vax-pinsn.c $(OP_INCLUDE)/vax.h $(defs_h) $(symtab_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

xcoffexec.o: xcoffexec.c $(BFD_SRC)/libbfd.h $(defs_h) $(gdbcmd_h) \
	$(gdbcore_h) $(inferior_h) objfiles.h symfile.h target.h xcoffsolib.h

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)

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

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

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)

ch-exp.tab.o: ch-exp.tab.c ch-lang.h $(defs_h) $(expression_h) \
	$(gdbtypes_h) language.h parser-defs.h $(symtab_h) $(value_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)

### end of the gdb Makefile.in.