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

# This file is part of GDB.

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

prefix = @prefix@
exec_prefix = @exec_prefix@

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

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

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

SHELL = @SHELL@
EXEEXT = @EXEEXT@

AWK = @AWK@
LN_S = @LN_S@

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

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

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

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

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

YACC=@YACC@

YLWRAP = $(srcdir)/../ylwrap

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

MAKEHTML = texi2html

MAKEHTMLFLAGS = -glossary -menu -split_chapter

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

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

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

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

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

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

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

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

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

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

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



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

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

WIN32LIBS = @WIN32LIBS@

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

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

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

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

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

X11_CFLAGS = @TK_XINCLUDES@
X11_LDFLAGS =
X11_LIBS =

WIN32LDAPP = @WIN32LDAPP@

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

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

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

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

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

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

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

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

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

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

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

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

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

VERSION = 5.0
DIST=gdb

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

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

RUNTESTFLAGS=

# This is ser-unix.o for any system which supports a v7/BSD/SYSV/POSIX
# interface to the serial port.  Hopefully if get ported to OS/2, VMS,
# etc., then there will be (as part of the C library or perhaps as
# part of libiberty) a POSIX interface.  But at least for now the
# host-dependent makefile fragment might need to use something else
# besides ser-unix.o
SER_HARDWIRE = ser-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 arch-utils.c gdbtypes.c \
	inf-loop.c infcmd.c inflow.c infrun.c language.c \
	kod.c kod-cisco.c \
	ui-out.c cli-out.c \
	varobj.c wrapper.c \
	jv-exp.y jv-lang.c jv-valprint.c jv-typeprint.c \
	m2-exp.y m2-lang.c m2-typeprint.c m2-valprint.c main.c maint.c \
	mem-break.c minsyms.c mipsread.c nlmread.c objfiles.c parse.c \
	printcmd.c remote.c remote-nrom.c scm-exp.c scm-lang.c \
	scm-valprint.c source.c stabsread.c stack.c symfile.c \
	symmisc.c symtab.c target.c thread.c top.c tracepoint.c \
	typeprint.c utils.c valarith.c valops.c valprint.c values.c \
	serial.c ser-unix.c mdebugread.c os9kread.c \
	tui/tui.c tui/tui.h tui/tuiCommand.c tui/tuiCommand.h \
	tui/tuiData.c tui/tuiData.h tui/tuiDataWin.c tui/tuiDataWin.h \
	tui/tuiDisassem.c tui/tuiDisassem.h tui/tuiGeneralWin.c \
	tui/tuiGeneralWin.h tui/tuiIO.c tui/tuiIO.h tui/tuiLayout.c \
	tui/tuiLayout.h tui/tuiRegs.c tui/tuiRegs.h tui/tuiSource.c \
	tui/tuiSource.h tui/tuiSourceWin.c tui/tuiSourceWin.h \
	tui/tuiStack.c tui/tuiStack.h tui/tuiWin.c tui/tuiWin.h \
	tui/tui-file.h tui/tui-file.c \
	ui-file.h ui-file.c

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

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

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


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

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

gdbcore_h =	gdbcore.h $(bfd_h)

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

OBS = $(COMMON_OBS) $(ANNOTATE_OBS)

TSOBS = inflow.o

NTSOBS = standalone.o

NTSSTART = kdb-start.o

SUBDIRS = @SUBDIRS@

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

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

DISTSTUFF = $(YYFILES)

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

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

installcheck:

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

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

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

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

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

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

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

.PRECIOUS: init.c

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

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

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

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

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


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

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

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

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

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

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

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

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

tags: TAGS

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

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

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

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

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

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

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

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

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

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

force:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

force_update:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

dstread.o: dstread.c gdb_string.h

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

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

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

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

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

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

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

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

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

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

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

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

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

clean-gdbtk:
	rm -f gdbtcl

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

i386gnu-nat.o: gnu-nat.h

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

isi-xdep.o: isi-xdep.c

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

news-xdep.o: news-xdep.c

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

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

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

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

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

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

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

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

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

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

somsolib.o: somsolib.c $(defs_h)

pa64solib.o: pa64solib.c $(defs_h)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

### end of the gdb Makefile.in.
