# Copyright (C) 1989-2015 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 3 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, see <http://www.gnu.org/licenses/>.

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@
localedir = @localedir@
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@
datarootdir = @datarootdir@
docdir = @docdir@
htmldir = @htmldir@
pdfdir = @pdfdir@
includedir = @includedir@

install_sh = @install_sh@

# This can be referenced by `LIBINTL' as computed by
# ZW_GNU_GETTEXT_SISTER_DIR.
top_builddir = .

SHELL = @SHELL@
EXEEXT = @EXEEXT@

AWK = @AWK@
LN_S = @LN_S@

INSTALL = @INSTALL@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
INSTALL_DATA = @INSTALL_DATA@

DESTDIR =

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

XGETTEXT = @XGETTEXT@
GMSGFMT = @GMSGFMT@
MSGMERGE = msgmerge

PACKAGE = @PACKAGE@
CATALOGS = @CATALOGS@

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

# Dependency tracking information.
DEPMODE = @CCDEPMODE@
DEPDIR = @DEPDIR@
depcomp = $(SHELL) $(srcdir)/../depcomp

# Note that these are overridden by GNU make-specific code below if
# GNU make is used.  The overrides implement dependency tracking.
COMPILE.pre = $(CC)
COMPILE.post = -c -o $@
COMPILE = $(COMPILE.pre) $(INTERNAL_CFLAGS) $(COMPILE.post)
POSTCOMPILE = @true

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

YACC=@YACC@

# This is used to rebuild ada-lex.c from ada-lex.l.  If the program is
# not defined, but ada-lex.c is present, compilation will continue,
# possibly with a warning.
FLEX = flex

YLWRAP = $(srcdir)/../ylwrap

# where to find makeinfo, preferably one designed for texinfo-2
MAKEINFO = @MAKEINFO@
MAKEINFOFLAGS = @MAKEINFOFLAGS@
MAKEINFO_EXTRA_FLAGS = @MAKEINFO_EXTRA_FLAGS@
MAKEINFO_CMD = $(MAKEINFO) $(MAKEINFOFLAGS) $(MAKEINFO_EXTRA_FLAGS)

MAKEHTML = $(MAKEINFO_CMD) --html
MAKEHTMLFLAGS =

# 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

# 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 decnumber library?  Typically in ../libdecnumber.
LIBDECNUMBER_DIR = ../libdecnumber
LIBDECNUMBER = $(LIBDECNUMBER_DIR)/libdecnumber.a
LIBDECNUMBER_SRC = $(srcdir)/$(LIBDECNUMBER_DIR)
LIBDECNUMBER_CFLAGS = -I$(LIBDECNUMBER_DIR) -I$(LIBDECNUMBER_SRC)

# Where is the READLINE library?  Typically in ../readline.
READLINE_DIR = ../readline
READLINE_SRC = $(srcdir)/$(READLINE_DIR)
READLINE = @READLINE@
READLINE_DEPS = @READLINE_DEPS@
READLINE_CFLAGS = @READLINE_CFLAGS@

# Where is expat?  This will be empty if expat was not available.
LIBEXPAT = @LIBEXPAT@

# Where is lzma?  This will be empty if lzma was not available.
LIBLZMA = @LIBLZMA@

# Where is libbabeltrace? This will be empty if lbabeltrace was not
# available.
LIBBABELTRACE = @LIBBABELTRACE@

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

GDB_WARN_CFLAGS_NO_FORMAT = `echo " $(GDB_WARN_CFLAGS) " \
		   | sed "s/ -Wformat-nonliteral / -Wno-format-nonliteral /g"`
GDB_WARN_CFLAGS_NO_DEFS = `echo " $(GDB_WARN_CFLAGS) " \
		   | sed "s/ -Wold-style-definition / -Wno-old-style-definition /g"`

RDYNAMIC = @RDYNAMIC@

# Where is the INTL library?  Typically in ../intl.
INTL = @LIBINTL@
INTL_DEPS = @LIBINTL_DEP@
INTL_CFLAGS = @INCINTL@

# Did the user give us a --with-gdb-datadir option?
GDB_DATADIR = @GDB_DATADIR@

# Flags to pass to gdb when invoked with "make run".
GDBFLAGS =

# Helper code from gnulib.
GNULIB_BUILDDIR = build-gnulib
LIBGNU = $(GNULIB_BUILDDIR)/import/libgnu.a
INCGNU = -I$(srcdir)/gnulib/import -I$(GNULIB_BUILDDIR)/import

# Generated headers in the gnulib directory.  These must be listed
# so that they are generated before other files are compiled.
GNULIB_H = $(GNULIB_BUILDDIR)/import/string.h @GNULIB_STDINT_H@

#
# CLI sub directory definitons
#
SUBDIR_CLI_OBS = \
	cli-dump.o \
	cli-decode.o cli-script.o cli-cmds.o cli-setshow.o \
	cli-logging.o \
	cli-interp.o cli-utils.o
SUBDIR_CLI_SRCS = \
	cli/cli-dump.c \
	cli/cli-decode.c cli/cli-script.c cli/cli-cmds.c cli/cli-setshow.c \
	cli/cli-logging.c \
	cli/cli-interp.c cli/cli-utils.c
SUBDIR_CLI_DEPS =
SUBDIR_CLI_LDFLAGS=
SUBDIR_CLI_CFLAGS=

#
# MI sub directory definitons
#
SUBDIR_MI_OBS = \
	mi-out.o mi-console.o \
	mi-cmds.o mi-cmd-catch.o mi-cmd-env.o \
	mi-cmd-var.o mi-cmd-break.o mi-cmd-stack.o \
	mi-cmd-file.o mi-cmd-disas.o mi-symbol-cmds.o mi-cmd-target.o \
	mi-cmd-info.o mi-interp.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-catch.c mi/mi-cmd-env.c \
	mi/mi-cmd-var.c mi/mi-cmd-break.c mi/mi-cmd-stack.c \
	mi/mi-cmd-file.c mi/mi-cmd-disas.c mi/mi-symbol-cmds.c \
	mi/mi-cmd-target.c mi/mi-cmd-info.c mi/mi-interp.c \
	mi/mi-main.c mi/mi-parse.c mi/mi-getopt.c
SUBDIR_MI_DEPS =
SUBDIR_MI_LDFLAGS=
SUBDIR_MI_CFLAGS=

#
# TUI sub directory definitions
#

SUBDIR_TUI_OBS = \
	tui-command.o \
	tui-data.o \
	tui-disasm.o \
	tui-file.o \
	tui-hooks.o \
	tui-interp.o \
	tui-io.o \
	tui-layout.o \
	tui-out.o \
	tui-regs.o \
	tui-source.o \
	tui-stack.o \
	tui-win.o \
	tui-windata.o \
	tui-wingeneral.o \
	tui-winsource.o \
	tui.o

SUBDIR_TUI_SRCS = \
	tui/tui-command.c \
	tui/tui-data.c \
	tui/tui-disasm.c \
	tui/tui-file.c \
	tui/tui-hooks.c \
	tui/tui-interp.c \
	tui/tui-io.c \
	tui/tui-layout.c \
	tui/tui-out.c \
	tui/tui-regs.c \
	tui/tui-source.c \
	tui/tui-stack.c \
	tui/tui-win.c \
	tui/tui-windata.c \
	tui/tui-wingeneral.c \
	tui/tui-winsource.c \
	tui/tui.c

SUBDIR_TUI_DEPS =
SUBDIR_TUI_LDFLAGS=
SUBDIR_TUI_CFLAGS= \
	-DTUI=1

#
# GCC Compile support sub-directory definitions
#
SUBDIR_GCC_COMPILE_OBS = \
	compile.o compile-c-symbols.o compile-c-types.o \
	compile-object-load.o compile-object-run.o \
	compile-loc2c.o compile-c-support.o
SUBDIR_GCC_COMPILE_SRCS = \
	compile/compile.c \
	compile/compile-c-symbols.c \
	compile/compile-c-types.c \
	compile/compile-object-load.c \
	compile/compile-object-load.h \
	compile/compile-object-run.c \
	compile/compile-object-run.h \
	compile/compile-loc2c.c \
	compile/compile-c-support.c

# Guile sub directory definitons for guile support.

SUBDIR_GUILE_OBS = \
	guile.o \
	scm-arch.o \
	scm-auto-load.o \
	scm-block.o \
	scm-breakpoint.o \
	scm-cmd.o \
	scm-disasm.o \
	scm-exception.o \
	scm-frame.o \
	scm-gsmob.o \
	scm-iterator.o \
	scm-lazy-string.o \
	scm-objfile.o \
	scm-math.o \
	scm-param.o \
	scm-ports.o \
	scm-pretty-print.o \
	scm-progspace.o \
	scm-safe-call.o \
	scm-string.o \
	scm-symbol.o \
	scm-symtab.o \
	scm-type.o \
	scm-utils.o \
	scm-value.o
SUBDIR_GUILE_SRCS = \
	guile/guile.c \
	guile/scm-arch.c \
	guile/scm-auto-load.c \
	guile/scm-block.c \
	guile/scm-breakpoint.c \
	guile/scm-cmd.c \
	guile/scm-disasm.c \
	guile/scm-exception.c \
	guile/scm-frame.c \
	guile/scm-gsmob.c \
	guile/scm-iterator.c \
	guile/scm-lazy-string.c \
	guile/scm-objfile.c \
	guile/scm-math.c \
	guile/scm-param.c \
	guile/scm-ports.c \
	guile/scm-pretty-print.c \
	guile/scm-progspace.c \
	guile/scm-safe-call.c \
	guile/scm-string.c \
	guile/scm-symbol.c \
	guile/scm-symtab.c \
	guile/scm-type.c \
	guile/scm-utils.c \
	guile/scm-value.c
SUBDIR_GUILE_DEPS =
SUBDIR_GUILE_LDFLAGS=
SUBDIR_GUILE_CFLAGS=

#
# python sub directory definitons
#
SUBDIR_PYTHON_OBS = \
	python.o \
	py-arch.o \
	py-auto-load.o \
	py-block.o \
	py-bpevent.o \
	py-breakpoint.o \
	py-cmd.o \
	py-continueevent.o \
	py-xmethods.o \
	py-event.o \
	py-evtregistry.o \
	py-evts.o \
	py-exitedevent.o \
	py-finishbreakpoint.o \
	py-frame.o \
	py-framefilter.o \
	py-function.o \
	py-gdb-readline.o \
	py-inferior.o \
	py-infevents.o \
	py-infthread.o \
	py-lazy-string.o \
	py-linetable.o \
	py-newobjfileevent.o \
	py-objfile.o \
	py-param.o \
	py-prettyprint.o \
	py-progspace.o \
	py-signalevent.o \
	py-stopevent.o \
	py-symbol.o \
	py-symtab.o \
	py-threadevent.o \
	py-type.o \
	py-utils.o \
	py-value.o \
	py-varobj.o

SUBDIR_PYTHON_SRCS = \
	python/python.c \
	python/py-arch.c \
	python/py-auto-load.c \
	python/py-block.c \
	python/py-bpevent.c \
	python/py-breakpoint.c \
	python/py-cmd.c \
	python/py-continueevent.c \
	python/py-xmethods.c \
	python/py-event.c \
	python/py-evtregistry.c \
	python/py-evts.c \
	python/py-exitedevent.c \
	python/py-finishbreakpoint.c \
	python/py-frame.c \
	python/py-framefilter.c \
	python/py-function.c \
	python/py-gdb-readline.c \
	python/py-inferior.c \
	python/py-infevents.c \
	python/py-infthread.c \
	python/py-lazy-string.c \
	python/py-linetable.c \
	python/py-newobjfileevent.c \
	python/py-objfile.c \
	python/py-param.c \
	python/py-prettyprint.c \
	python/py-progspace.c \
	python/py-signalevent.c \
	python/py-stopevent.c \
	python/py-symbol.c \
	python/py-symtab.c \
	python/py-threadevent.c \
	python/py-type.c \
	python/py-utils.c \
	python/py-value.c \
	python/py-varobj.c
SUBDIR_PYTHON_DEPS =
SUBDIR_PYTHON_LDFLAGS=
SUBDIR_PYTHON_CFLAGS=

# 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_DIR = ../opcodes
OPCODES_SRC = $(srcdir)/$(OPCODES_DIR)
OPCODES = $(OPCODES_DIR)/libopcodes.a
# Where are the other opcode tables which only have header file
# versions?
OP_INCLUDE = $(INCLUDE_DIR)/opcode
# Some source files like to use #include "opcodes/file.h"
OPCODES_CFLAGS = -I$(OP_INCLUDE) -I$(OPCODES_SRC)/..

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

WIN32LIBS = @WIN32LIBS@

# Tcl et al cflags and libraries
TCL = @TCL_LIBRARY@
TCL_CFLAGS = @TCL_INCLUDE@
GDBTKLIBS = @GDBTKLIBS@
# Extra flags that the GDBTK files need:
GDBTK_CFLAGS = @GDBTK_CFLAGS@

TK = @TK_LIBRARY@
TK_CFLAGS = @TK_INCLUDE@

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)

ALL_TCL_CFLAGS = $(TCL_CFLAGS) $(TK_CFLAGS)

# The version of gdbtk we're building. This should be kept
# in sync with GDBTK_VERSION and friends in gdbtk.h.
GDBTK_VERSION = 1.0
GDBTK_LIBRARY = $(datadir)/insight$(GDBTK_VERSION)

# Gdbtk requires an absolute path to the source directory or
# the testsuite won't run properly.
GDBTK_SRC_DIR = @GDBTK_SRC_DIR@

SUBDIR_GDBTK_OBS = \
	gdbtk.o gdbtk-bp.o gdbtk-cmds.o gdbtk-hooks.o gdbtk-interp.o \
	gdbtk-register.o gdbtk-stack.o gdbtk-varobj.o gdbtk-wrapper.o
SUBDIR_GDBTK_SRCS = \
	gdbtk/generic/gdbtk.c gdbtk/generic/gdbtk-bp.c \
	gdbtk/generic/gdbtk-cmds.c gdbtk/generic/gdbtk-hooks.c \
	gdbtk/generic/gdbtk-interp.c \
	gdbtk/generic/gdbtk-register.c gdbtk/generic/gdbtk-stack.c \
	gdbtk/generic/gdbtk-varobj.c gdbtk/generic/gdbtk-wrapper.c \
	gdbtk/generic/gdbtk-main.c
SUBDIR_GDBTK_DEPS = $(LIBGUI) $(TCL_DEPS) $(TK_DEPS)
SUBDIR_GDBTK_LDFLAGS=
SUBDIR_GDBTK_CFLAGS= -DGDBTK

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

# -I. for config files.
# -I$(srcdir) for gdb internal headers.
# -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)/common -I$(srcdir)/config \
	-DLOCALEDIR="\"$(localedir)\"" $(DEFS)

# MH_CFLAGS, if defined, has host-dependent CFLAGS from the config directory.
GLOBAL_CFLAGS = $(MH_CFLAGS)

PROFILE_CFLAGS = @PROFILE_CFLAGS@

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

# Set by configure, for e.g. expat.  Python installations are such that
# C headers are included using their basename (for example, we #include
# <Python.h> rather than, say, <python/Python.h>).  Since the file names
# are sometimes a little generic, we think that the risk of collision
# with other header files is high.  If that happens, we try to mitigate
# a bit the consequences by putting the Python includes last in the list.
INTERNAL_CPPFLAGS = @CPPFLAGS@ @GUILE_CPPFLAGS@ @PYTHON_CPPFLAGS@

# 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_CFLAGS_BASE = \
	$(CFLAGS) $(GLOBAL_CFLAGS) $(PROFILE_CFLAGS) \
	$(GDB_CFLAGS) $(OPCODES_CFLAGS) $(READLINE_CFLAGS) \
	$(BFD_CFLAGS) $(INCLUDE_CFLAGS) $(LIBDECNUMBER_CFLAGS) \
	$(INTL_CFLAGS) $(INCGNU) $(ENABLE_CFLAGS) $(INTERNAL_CPPFLAGS)
INTERNAL_WARN_CFLAGS = $(INTERNAL_CFLAGS_BASE) $(GDB_WARN_CFLAGS)
INTERNAL_CFLAGS = $(INTERNAL_WARN_CFLAGS) $(GDB_WERROR_CFLAGS)

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

# 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.
# PROFILE_CFLAGS is _not_ included, however, because we use monstartup.
INTERNAL_LDFLAGS = $(CFLAGS) $(GLOBAL_CFLAGS) $(MH_LDFLAGS) $(LDFLAGS) $(CONFIG_LDFLAGS)

# 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.
# XM_CLIBS, defined in *config files, have host-dependent libs.
# LIBIBERTY appears twice on purpose.
CLIBS = $(SIM) $(READLINE) $(OPCODES) $(BFD) $(INTL) $(LIBIBERTY) $(LIBDECNUMBER) \
	$(XM_CLIBS) $(NAT_CLIBS) $(GDBTKLIBS) \
	@LIBS@ @GUILE_LIBS@ @PYTHON_LIBS@ \
	$(LIBEXPAT) $(LIBLZMA) $(LIBBABELTRACE) \
	$(LIBIBERTY) $(WIN32LIBS) $(LIBGNU)
CDEPS = $(XM_CDEPS) $(NAT_CDEPS) $(SIM) $(BFD) $(READLINE_DEPS) \
	$(OPCODES) $(INTL_DEPS) $(LIBIBERTY) $(CONFIG_DEPS) $(LIBGNU)

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

DIST=gdb

LINT=/usr/5bin/lint
LINTFLAGS= $(GDB_CFLAGS) $(OPCODES_CFLAGS) $(READLINE_CFLAGS) \
	$(BFD_CFLAGS) $(INCLUDE_CFLAGS) \
	$(INTL_CFLAGS)

RUNTEST = runtest
RUNTESTFLAGS=

# XML files to build in to GDB.
XMLFILES = $(srcdir)/features/gdb-target.dtd $(srcdir)/features/xinclude.dtd \
	$(srcdir)/features/library-list.dtd \
	$(srcdir)/features/library-list-aix.dtd \
	$(srcdir)/features/library-list-svr4.dtd $(srcdir)/features/osdata.dtd \
	$(srcdir)/features/threads.dtd $(srcdir)/features/traceframe-info.dtd \
	$(srcdir)/features/btrace.dtd

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

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

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

# Target-dependent object files.
TARGET_OBS = @TARGET_OBS@

# All target-dependent objects files that require 64-bit CORE_ADDR
# (used with --enable-targets=all --enable-64-bit-bfd).
ALL_64_TARGET_OBS = \
	aarch64-tdep.o aarch64-linux-tdep.o aarch64-newlib-tdep.o \
	alphabsd-tdep.o alphafbsd-tdep.o alpha-linux-tdep.o alpha-mdebug-tdep.o \
	alphanbsd-tdep.o alphaobsd-tdep.o alpha-tdep.o \
	amd64fbsd-tdep.o amd64-darwin-tdep.o amd64-dicos-tdep.o \
	amd64-linux-tdep.o amd64nbsd-tdep.o \
	amd64obsd-tdep.o amd64-sol2-tdep.o amd64-tdep.o amd64-windows-tdep.o \
	ia64-hpux-tdep.o ia64-linux-tdep.o ia64-vms-tdep.o ia64-tdep.o \
	mips64obsd-tdep.o \
	sparc64fbsd-tdep.o sparc64-linux-tdep.o sparc64nbsd-tdep.o \
	sparc64obsd-tdep.o sparc64-sol2-tdep.o sparc64-tdep.o

# All other target-dependent objects files (used with --enable-targets=all).
ALL_TARGET_OBS = \
	armbsd-tdep.o arm-linux-tdep.o arm-symbian-tdep.o \
	armnbsd-tdep.o armobsd-tdep.o \
	arm-tdep.o arm-wince-tdep.o \
	avr-tdep.o \
	bfin-linux-tdep.o bfin-tdep.o \
	cris-linux-tdep.o cris-tdep.o \
	dicos-tdep.o \
	fbsd-tdep.o \
	frv-linux-tdep.o frv-tdep.o \
	h8300-tdep.o \
	hppabsd-tdep.o hppanbsd-tdep.o hppaobsd-tdep.o \
	hppa-hpux-tdep.o hppa-linux-tdep.o hppa-tdep.o \
	i386bsd-tdep.o i386-cygwin-tdep.o i386fbsd-tdep.o i386gnu-tdep.o \
	i386-linux-tdep.o i386nbsd-tdep.o i386-nto-tdep.o i386obsd-tdep.o \
	i386-sol2-tdep.o i386-tdep.o i387-tdep.o \
	i386-dicos-tdep.o i386-darwin-tdep.o \
	iq2000-tdep.o \
	linux-tdep.o \
	lm32-tdep.o \
	m32c-tdep.o \
	m32r-linux-tdep.o m32r-tdep.o \
	m68hc11-tdep.o \
	m68kbsd-tdep.o m68klinux-tdep.o m68k-tdep.o \
	m88k-tdep.o \
	mep-tdep.o \
	microblaze-tdep.o microblaze-linux-tdep.o \
	mips-linux-tdep.o mips-sde-tdep.o \
	mipsnbsd-tdep.o mips-tdep.o \
	mn10300-linux-tdep.o mn10300-tdep.o \
	moxie-tdep.o \
	msp430-tdep.o \
	mt-tdep.o \
	nios2-tdep.o nios2-linux-tdep.o \
	nto-tdep.o \
	ppc-linux-tdep.o ppcfbsd-tdep.o ppcnbsd-tdep.o ppcobsd-tdep.o  \
	ppc-sysv-tdep.o ppc64-tdep.o rl78-tdep.o \
	rs6000-aix-tdep.o rs6000-tdep.o solib-aix.o ppc-ravenscar-thread.o \
	rs6000-lynx178-tdep.o \
	rx-tdep.o \
	s390-linux-tdep.o \
	score-tdep.o \
	sh64-tdep.o sh-linux-tdep.o shnbsd-tdep.o sh-tdep.o \
	sparc-linux-tdep.o sparcnbsd-tdep.o sparcobsd-tdep.o \
	sparc-sol2-tdep.o sparc-tdep.o sparc-ravenscar-thread.o \
	spu-tdep.o spu-multiarch.o solib-spu.o \
	tic6x-tdep.o tic6x-linux-tdep.o \
	tilegx-tdep.o tilegx-linux-tdep.o \
	v850-tdep.o \
	vaxnbsd-tdep.o vaxobsd-tdep.o vax-tdep.o \
	xstormy16-tdep.o \
	xtensa-config.o xtensa-tdep.o xtensa-linux-tdep.o \
	glibc-tdep.o \
	bsd-uthread.o \
	nbsd-tdep.o obsd-tdep.o \
	sol2-tdep.o \
	solib-frv.o solib-svr4.o \
	solib-som.o solib-pa64.o solib-darwin.o solib-dsbt.o \
	dbug-rom.o dink32-rom.o ppcbug-rom.o m32r-rom.o dsrec.o monitor.o \
	remote-m32r-sdi.o remote-mips.o \
	xcoffread.o \
	symfile-mem.o \
	windows-tdep.o \
	linux-record.o \
	ravenscar-thread.o

# Host-dependent makefile fragment comes in here.
@host_makefile_frag@
# End of host-dependent makefile fragment

FLAGS_TO_PASS = \
	"prefix=$(prefix)" \
	"exec_prefix=$(exec_prefix)" \
	"infodir=$(infodir)" \
	"datarootdir=$(datarootdir)" \
	"docdir=$(docdir)" \
	"htmldir=$(htmldir)" \
	"pdfdir=$(pdfdir)" \
	"libdir=$(libdir)" \
	"mandir=$(mandir)" \
	"datadir=$(datadir)" \
	"includedir=$(includedir)" \
	"against=$(against)" \
	"DESTDIR=$(DESTDIR)" \
	"AR=$(AR)" \
	"AR_FLAGS=$(AR_FLAGS)" \
	"CC=$(CC)" \
	"CFLAGS=$(CFLAGS)" \
	"CXX=$(CXX)" \
	"CXXFLAGS=$(CXXFLAGS)" \
	"DLLTOOL=$(DLLTOOL)" \
	"LDFLAGS=$(LDFLAGS)" \
	"RANLIB=$(RANLIB)" \
	"MAKEINFO=$(MAKEINFO)" \
	"MAKEINFOFLAGS=$(MAKEINFOFLAGS)" \
	"MAKEINFO_EXTRA_FLAGS=$(MAKEINFO_EXTRA_FLAGS)" \
	"MAKEHTML=$(MAKEHTML)" \
	"MAKEHTMLFLAGS=$(MAKEHTMLFLAGS)" \
	"INSTALL=$(INSTALL)" \
	"INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \
	"INSTALL_SCRIPT=$(INSTALL_SCRIPT)" \
	"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`

# 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)" \
	'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)" \
	"FORCE_PARALLEL=$(FORCE_PARALLEL)" \
	"TESTS=$(TESTS)"

# 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 = ada-exp.y ada-lang.c ada-typeprint.c ada-valprint.c ada-tasks.c \
	ada-varobj.c \
	addrmap.c auto-load.c \
	auxv.c ax-general.c ax-gdb.c \
	agent.c \
	bcache.c \
	bfd-target.c \
	block.c blockframe.c \
	breakpoint.c break-catch-sig.c break-catch-throw.c \
	build-id.c buildsym.c \
	c-exp.y c-lang.c c-typeprint.c c-valprint.c c-varobj.c \
	charset.c common/cleanups.c cli-out.c coffread.c coff-pe-read.c \
	complaints.c completer.c continuations.c corefile.c corelow.c \
	cp-abi.c cp-support.c cp-namespace.c cp-valprint.c \
	d-exp.y d-lang.c d-valprint.c \
	cp-name-parser.y \
	dbxread.c demangle.c dictionary.c disasm.c doublest.c dummy-frame.c \
	dwarf2expr.c dwarf2loc.c dwarf2read.c dwarf2-frame.c \
	dwarf2-frame-tailcall.c \
	elfread.c environ.c eval.c event-loop.c event-top.c \
	exceptions.c expprint.c extension.c \
	f-exp.y f-lang.c f-typeprint.c f-valprint.c filesystem.c \
	findcmd.c findvar.c frame.c frame-base.c frame-unwind.c \
	gdbarch.c arch-utils.c gdb_bfd.c gdb_obstack.c \
	gdbtypes.c gnu-v2-abi.c gnu-v3-abi.c \
	go-exp.y go-lang.c go-typeprint.c go-valprint.c \
	inf-loop.c \
	infcall.c \
	infcmd.c inflow.c infrun.c \
	inline-frame.c \
	interps.c \
	jv-exp.y jv-lang.c jv-valprint.c jv-typeprint.c jv-varobj.c \
	language.c linespec.c minidebug.c \
	m2-exp.y m2-lang.c m2-typeprint.c m2-valprint.c \
	macrotab.c macroexp.c macrocmd.c macroscope.c main.c maint.c \
	mdebugread.c memattr.c mem-break.c minsyms.c mipsread.c memory-map.c \
	memrange.c mi/mi-common.c \
	objc-lang.c \
	objfiles.c osabi.c observer.c osdata.c \
	opencl-lang.c \
	p-exp.y p-lang.c p-typeprint.c p-valprint.c parse.c printcmd.c \
	proc-service.list progspace.c \
	prologue-value.c psymtab.c \
	regcache.c reggroups.c remote.c remote-fileio.c remote-notif.c reverse.c \
	sentinel-frame.c \
	serial.c ser-base.c ser-unix.c skip.c \
	solib.c solib-target.c source.c \
	stabsread.c stack.c probe.c stap-probe.c std-regs.c \
	symfile.c symfile-debug.c symfile-mem.c symmisc.c symtab.c \
	target.c target-dcache.c target-descriptions.c target-memory.c \
	thread.c top.c tracepoint.c \
	trad-frame.c \
	tramp-frame.c \
	typeprint.c \
	ui-out.c utils.c ui-file.h ui-file.c \
	user-regs.c \
	valarith.c valops.c valprint.c value.c varobj.c common/vec.c \
	xml-tdesc.c xml-support.c \
	inferior.c gdb_usleep.c \
	record.c record-full.c gcore.c \
	jit.c \
	xml-syscall.c \
	annotate.c common/signals.c copying.c dfp.c gdb.c inf-child.c \
	sol-thread.c windows-termcap.c \
	common/gdb_vecs.c common/common-utils.c common/xml-utils.c \
	common/ptid.c common/buffer.c gdb-dlfcn.c common/agent.c \
	common/format.c common/filestuff.c btrace.c record-btrace.c ctf.c \
	target/waitstatus.c common/print-utils.c common/rsp-low.c \
	common/errors.c common/common-debug.c common/common-exceptions.c \
	$(SUBDIR_GCC_COMPILE_SRCS)

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

# 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 = \
common/gdb_signals.h nat/gdb_thread_db.h common/gdb_vecs.h \
common/x86-xstate.h nat/linux-ptrace.h nat/mips-linux-watch.h \
proc-utils.h aarch64-tdep.h arm-tdep.h ax-gdb.h ppcfbsd-tdep.h \
ppcnbsd-tdep.h cli-out.h gdb_expat.h breakpoint.h infcall.h obsd-tdep.h \
exec.h m32r-tdep.h osabi.h gdbcore.h solib-som.h amd64bsd-nat.h \
i386bsd-nat.h xml-support.h xml-tdesc.h alphabsd-tdep.h gdb_obstack.h \
ia64-tdep.h ada-lang.h varobj.h varobj-iter.h frv-tdep.h \
nto-tdep.h serial.h \
c-lang.h d-lang.h go-lang.h frame.h event-loop.h block.h cli/cli-setshow.h \
cli/cli-decode.h cli/cli-cmds.h cli/cli-utils.h \
cli/cli-script.h macrotab.h symtab.h common/version.h \
compile/compile.h gnulib/import/string.in.h gnulib/import/str-two-way.h \
gnulib/import/stdint.in.h remote.h remote-notif.h gdb.h sparc-nat.h \
gdbthread.h dwarf2-frame.h dwarf2-frame-tailcall.h nbsd-nat.h dcache.h \
amd64-nat.h s390-linux-tdep.h arm-linux-tdep.h exceptions.h macroscope.h \
gdbarch.h bsd-uthread.h memory-map.h memrange.h obsd-nat.h \
mdebugread.h m88k-tdep.h stabsread.h hppa-linux-offsets.h linux-fork.h \
ser-unix.h inf-ptrace.h terminal.h ui-out.h frame-base.h \
f-lang.h dwarf2loc.h value.h sparc-tdep.h defs.h target-descriptions.h \
objfiles.h common/vec.h disasm.h mips-tdep.h ser-base.h \
gdb_curses.h bfd-target.h memattr.h inferior.h ax.h dummy-frame.h \
inflow.h fbsd-nat.h ia64-libunwind-tdep.h completer.h inf-ttrace.h \
solib-target.h gdb_vfork.h alpha-tdep.h dwarf2expr.h \
m2-lang.h stack.h charset.h addrmap.h command.h solist.h source.h \
target.h target-dcache.h prologue-value.h cp-abi.h tui/tui-hooks.h tui/tui.h \
tui/tui-file.h tui/tui-command.h tui/tui-disasm.h tui/tui-wingeneral.h \
tui/tui-windata.h tui/tui-data.h tui/tui-win.h tui/tui-stack.h \
tui/tui-winsource.h tui/tui-regs.h tui/tui-io.h tui/tui-layout.h \
tui/tui-source.h sol2-tdep.h gregset.h sh-tdep.h sh64-tdep.h \
expression.h score-tdep.h gdb_select.h ser-tcp.h \
extension.h extension-priv.h \
build-id.h buildsym.h valprint.h \
typeprint.h mi/mi-getopt.h mi/mi-parse.h mi/mi-console.h \
mi/mi-out.h mi/mi-main.h mi/mi-common.h mi/mi-cmds.h linux-nat.h \
complaints.h gdb_proc_service.h gdb_regex.h xtensa-tdep.h inf-loop.h \
common/gdb_wait.h common/gdb_assert.h solib.h ppc-tdep.h cp-support.h glibc-tdep.h \
interps.h auxv.h gdbcmd.h tramp-frame.h mipsnbsd-tdep.h	\
amd64-linux-tdep.h linespec.h i387-tdep.h mn10300-tdep.h \
sparc64-tdep.h monitor.h ppcobsd-tdep.h srec.h solib-pa64.h \
coff-pe-read.h parser-defs.h gdb_ptrace.h mips-linux-tdep.h \
m68k-tdep.h spu-tdep.h jv-lang.h environ.h amd64-tdep.h \
doublest.h regset.h hppa-tdep.h ppc-linux-tdep.h ppc64-tdep.h \
rs6000-tdep.h rs6000-aix-tdep.h \
common/gdb_locale.h arch-utils.h trad-frame.h gnu-nat.h \
language.h nbsd-tdep.h solib-svr4.h \
macroexp.h ui-file.h regcache.h tracepoint.h tracefile.h i386-tdep.h \
inf-child.h p-lang.h event-top.h gdbtypes.h user-regs.h \
regformats/regdef.h config/i386/nm-i386gnu.h \
config/i386/nm-fbsd.h \
config/nm-nto.h config/sparc/nm-sol2.h config/nm-linux.h \
top.h bsd-kvm.h gdb-stabs.h reggroups.h \
annotate.h sim-regno.h dictionary.h dfp.h main.h frame-unwind.h	\
remote-fileio.h i386-linux-tdep.h vax-tdep.h objc-lang.h \
sentinel-frame.h bcache.h symfile.h windows-tdep.h linux-tdep.h \
gdb_usleep.h jit.h xml-syscall.h microblaze-tdep.h \
psymtab.h psympriv.h progspace.h bfin-tdep.h ia64-hpux-tdep.h \
amd64-darwin-tdep.h charset-list.h \
config/djgpp/langinfo.h config/djgpp/nl_types.h darwin-nat.h \
dicos-tdep.h filesystem.h gcore.h gdb_wchar.h hppabsd-tdep.h \
i386-darwin-tdep.h x86-nat.h linux-record.h moxie-tdep.h nios2-tdep.h \
osdata.h procfs.h python/py-event.h python/py-events.h python/py-stopevent.h \
python/python-internal.h python/python.h ravenscar-thread.h record.h \
record-full.h solib-aix.h \
solib-darwin.h solib-ia64-hpux.h solib-spu.h windows-nat.h xcoffread.h \
gnulib/import/extra/snippet/arg-nonnull.h gnulib/import/extra/snippet/c++defs.h \
gnulib/import/extra/snippet/warn-on-use.h \
gnulib/import/stddef.in.h gnulib/import/inttypes.in.h inline-frame.h skip.h \
common/common-utils.h common/xml-utils.h common/buffer.h common/ptid.h \
common/format.h common/host-defs.h utils.h common/queue.h \
nat/linux-osdata.h gdb-dlfcn.h auto-load.h probe.h stap-probe.h \
gdb_bfd.h sparc-ravenscar-thread.h ppc-ravenscar-thread.h nat/linux-btrace.h \
nat/ppc-linux.h ctf.h nat/x86-cpuid.h nat/x86-gcc-cpuid.h target/resume.h \
target/wait.h target/waitstatus.h nat/linux-nat.h nat/linux-waitpid.h \
common/print-utils.h common/rsp-low.h nat/x86-dregs.h x86-linux-nat.h \
i386-linux-nat.h common/common-defs.h common/errors.h common/common-types.h \
common/common-debug.h common/cleanups.h common/gdb_setjmp.h \
common/common-exceptions.h target/target.h common/symbol.h \
common/common-regcache.h fbsd-tdep.h nat/linux-personality.h

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

HFILES_WITH_SRCDIR = ../bfd/bfd.h jit-reader.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

# {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 = $(TARGET_OBS) $(SER_HARDWIRE) $(NATDEPFILES) \
	   $(REMOTE_OBS) $(SIM_OBS)

SOURCES = $(SFILES) $(ALLDEPFILES) $(YYFILES) $(CONFIG_SRCS)
# Don't include YYFILES (*.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) \
	$(CONFIG_SRCS)
TAGFILES_WITH_SRCDIR = $(HFILES_WITH_SRCDIR)

COMMON_OBS = $(DEPFILES) $(CONFIG_OBS) $(YYOBJ) \
	version.o \
	annotate.o \
	addrmap.o \
	auto-load.o auxv.o \
	agent.o \
	bfd-target.o \
	blockframe.o breakpoint.o break-catch-sig.o break-catch-throw.o \
	findvar.o regcache.o cleanups.o \
	charset.o continuations.o corelow.o disasm.o dummy-frame.o dfp.o \
	source.o value.o eval.o valops.o valarith.o valprint.o printcmd.o \
	block.o symtab.o psymtab.o symfile.o symfile-debug.o symmisc.o \
	linespec.o dictionary.o \
	infcall.o \
	infcmd.o infrun.o \
	expprint.o environ.o stack.o thread.o \
	exceptions.o \
	extension.o \
	filesystem.o \
	filestuff.o \
	inf-child.o \
	interps.o \
	minidebug.o \
	main.o \
	macrotab.o macrocmd.o macroexp.o macroscope.o \
	mi-common.o \
	event-loop.o event-top.o inf-loop.o completer.o \
	gdbarch.o arch-utils.o gdbtypes.o gdb_bfd.o gdb_obstack.o \
	osabi.o copying.o \
	memattr.o mem-break.o target.o target-dcache.o parse.o language.o \
	build-id.o buildsym.o \
	findcmd.o \
	std-regs.o \
	signals.o \
	exec.o reverse.o \
	bcache.o objfiles.o observer.o minsyms.o maint.o demangle.o \
	dbxread.o coffread.o coff-pe-read.o \
	dwarf2read.o mipsread.o stabsread.o corefile.o \
	dwarf2expr.o dwarf2loc.o dwarf2-frame.o dwarf2-frame-tailcall.o \
	ada-lang.o c-lang.o d-lang.o f-lang.o objc-lang.o \
	ada-tasks.o ada-varobj.o c-varobj.o \
	ui-out.o cli-out.o \
	varobj.o vec.o \
	go-lang.o go-valprint.o go-typeprint.o \
	jv-lang.o jv-valprint.o jv-typeprint.o jv-varobj.o \
	m2-lang.o opencl-lang.o p-lang.o p-typeprint.o p-valprint.o \
	sentinel-frame.o \
	complaints.o typeprint.o \
	ada-typeprint.o c-typeprint.o f-typeprint.o m2-typeprint.o \
	ada-valprint.o c-valprint.o cp-valprint.o d-valprint.o f-valprint.o \
	m2-valprint.o \
	serial.o mdebugread.o top.o utils.o \
	ui-file.o \
	user-regs.o \
	frame.o frame-unwind.o doublest.o \
	frame-base.o \
	inline-frame.o \
	gnu-v2-abi.o gnu-v3-abi.o cp-abi.o cp-support.o \
	cp-namespace.o \
	reggroups.o \
	trad-frame.o \
	tramp-frame.o \
	solib.o solib-target.o \
	prologue-value.o memory-map.o memrange.o \
	xml-support.o xml-syscall.o xml-utils.o \
	target-descriptions.o target-memory.o xml-tdesc.o xml-builtin.o \
	inferior.o osdata.o gdb_usleep.o record.o record-full.o gcore.o \
	gdb_vecs.o jit.o progspace.o skip.o probe.o \
	common-utils.o buffer.o ptid.o gdb-dlfcn.o common-agent.o \
	format.o registry.o btrace.o record-btrace.o waitstatus.o \
	print-utils.o rsp-low.o errors.o common-debug.o debug.o \
	common-exceptions.o \
	$(SUBDIR_GCC_COMPILE_OBS)

TSOBS = inflow.o

SUBDIRS = doc @subdirs@ data-directory $(GNULIB_BUILDDIR)
CLEANDIRS = $(SUBDIRS)

# List of subdirectories in the build tree that must exist.
# This is used to force build failures in existing trees when
# a new directory is added.
# The format here is for the `case' shell command.
REQUIRED_SUBDIRS = doc | testsuite | $(GNULIB_BUILDDIR) | data-directory

# For now, shortcut the "configure GDB for fewer languages" stuff.
YYFILES = c-exp.c \
	cp-name-parser.c \
	ada-lex.c \
	ada-exp.c \
	jv-exp.c \
	d-exp.c f-exp.c go-exp.c m2-exp.c p-exp.c
YYOBJ = c-exp.o \
	cp-name-parser.o \
	ada-exp.o \
	jv-exp.o \
	d-exp.o f-exp.o go-exp.o m2-exp.o p-exp.o

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

DISTSTUFF = $(YYFILES)


# All generated files which can be included by another file.
generated_files = config.h observer.h observer.inc ada-lex.c jit-reader.h \
	$(GNULIB_H) $(NAT_GENERATED_FILES) gcore

.c.o:
	$(COMPILE) $<
	$(POSTCOMPILE)

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

check-perf: force
	@if [ -f testsuite/Makefile ]; then \
	  rootme=`pwd`; export rootme; \
	  rootsrc=`cd $(srcdir); pwd`; export rootsrc; \
	  cd testsuite; \
	  $(MAKE) $(TARGET_FLAGS_TO_PASS) check-perf; \
	else true; fi

check-read1: force
	@if [ -f testsuite/Makefile ]; then \
	  rootme=`pwd`; export rootme; \
	  rootsrc=`cd $(srcdir); pwd`; export rootsrc; \
	  cd testsuite; \
	  $(MAKE) $(TARGET_FLAGS_TO_PASS) check-read1; \
	else true; fi

# The idea is to parallelize testing of multilibs, for example:
#   make -j3 check//sh-hms-sim/{-m1,-m2,-m3,-m3e,-m4}/{,-nofpu}
# will run 3 concurrent sessions of check, eventually testing all 10
# combinations.  GNU make is required for the % pattern to work, as is
# a shell that expands alternations within braces.  If GNU make is not
# used, this rule will harmlessly fail to match.  Used FORCE_PARALLEL to
# prevent serialized checking due to the passed RUNTESTFLAGS.
# FIXME: use config.status --config not --version, when available.
check//%: force
	@if [ -f testsuite/config.status ]; then \
	  rootme=`pwd`; export rootme; \
	  rootsrc=`cd $(srcdir); pwd`; export rootsrc; \
	  target=`echo "$@" | sed 's,//.*,,'`; \
	  variant=`echo "$@" | sed 's,^[^/]*//,,'`; \
	  vardots=`echo "$$variant" | sed 's,/,.,g'`; \
	  testdir=testsuite.$$vardots; \
	  if [ ! -f $$testdir/Makefile ] && [ -f testsuite/config.status ]; then \
	    configargs=`cd testsuite && ./config.status --version | \
	      sed -n -e 's,"$$,,' -e 's,^ *with options ",,p'`; \
	    $(SHELL) $(srcdir)/../mkinstalldirs $$testdir && \
	    (cd $$testdir && \
	     eval $(SHELL) "\"\$$rootsrc/testsuite/configure\" $$configargs" \
			   "\"--srcdir=\$$rootsrc/testsuite\"" \
	     ); \
	  else :; fi && cd $$testdir && \
	  $(MAKE) $(TARGET_FLAGS_TO_PASS) \
	    RUNTESTFLAGS="--target_board=$$variant $(RUNTESTFLAGS)" \
	    FORCE_PARALLEL=$(if $(FORCE_PARALLEL),1,$(if $(RUNTESTFLAGS),,1)) \
	    "$$target"; \
	else true; fi

# The set of headers checked by 'check-headers' by default.
CHECK_HEADERS = $(HFILES_NO_SRCDIR)

# Try to compile each header in isolation, thus ensuring headers are
# self-contained.
#
# Defaults to checking all $HFILES_NO_SRCDIR headers.
#
# Do:
#
#    make check-headers CHECK_HEADERS="header.h list.h"
#
# to check specific headers.
#
check-headers:
	@echo Checking headers.
	for i in $(CHECK_HEADERS) ; do \
		$(CC) -x c -c -fsyntax-only $(INTERNAL_CFLAGS) \
			-include defs.h $(srcdir)/$$i ; \
	done
.PHONY: check-headers

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

# 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
	@$(MAKE) $(FLAGS_TO_PASS) 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 ; \
		$(SHELL) $(srcdir)/../mkinstalldirs $(DESTDIR)$(bindir) ; \
		$(INSTALL_PROGRAM) gdb$(EXEEXT) \
			$(DESTDIR)$(bindir)/$$transformed_name$(EXEEXT) ; \
		$(SHELL) $(srcdir)/../mkinstalldirs $(DESTDIR)$(includedir)/gdb ; \
		$(INSTALL_DATA) jit-reader.h $(DESTDIR)$(includedir)/gdb/jit-reader.h
	if test "x$(HAVE_NATIVE_GCORE_TARGET)$(HAVE_NATIVE_GCORE_HOST)" != x; \
	then \
	  transformed_name=`t='$(program_transform_name)'; \
			    echo gcore | sed -e "$$t"` ; \
		  if test "x$$transformed_name" = x; then \
		    transformed_name=gcore ; \
		  else \
		    true ; \
		  fi ; \
		  $(SHELL) $(srcdir)/../mkinstalldirs $(DESTDIR)$(bindir) ; \
		  $(INSTALL_SCRIPT) gcore \
			  $(DESTDIR)$(bindir)/$$transformed_name; \
	fi
	@$(MAKE) DO=install "DODIRS=$(SUBDIRS)" $(FLAGS_TO_PASS) subdir_do

install-strip:
	$(MAKE) $(FLAGS_TO_PASS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
	  `test -z '$(STRIP)' || \
	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install-only

install-guile:
	$(SHELL) $(srcdir)/../mkinstalldirs $(DESTDIR)$(GDB_DATADIR)/guile/gdb

install-python:
	$(SHELL) $(srcdir)/../mkinstalldirs $(DESTDIR)$(GDB_DATADIR)/python/gdb

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 $(DESTDIR)$(bindir)/$$transformed_name$(EXEEXT) \
		      $(DESTDIR)$(man1dir)/$$transformed_name.1
	if test "x$(HAVE_NATIVE_GCORE_TARGET)$(HAVE_NATIVE_GCORE_HOST)" != x; \
	then \
	  transformed_name=`t='$(program_transform_name)'; \
			    echo gcore | sed -e "$$t"` ; \
		  if test "x$$transformed_name" = x; then \
		    transformed_name=gcore ; \
		  else \
		    true ; \
		  fi ; \
		  rm -f $(DESTDIR)$(bindir)/$$transformed_name; \
	fi
	@$(MAKE) DO=uninstall "DODIRS=$(SUBDIRS)" $(FLAGS_TO_PASS) subdir_do

# The C++ name parser can be built standalone for testing.
test-cp-name-parser.o: cp-name-parser.c
	$(COMPILE) -DTEST_CPNAMES cp-name-parser.c
	$(POSTCOMPILE)

test-cp-name-parser$(EXEEXT): test-cp-name-parser.o $(LIBIBERTY)
	$(CC_LD) $(INTERNAL_LDFLAGS) -o test-cp-name-parser$(EXEEXT) \
		test-cp-name-parser.o $(LIBIBERTY)

# 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 (top.o -> _initialize_top, 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 is a problem with this approach - init.c may force
# unnecessary files to be linked in.

# FIXME: cagney/2002-06-09: gdb/564: gdb/563: Force the order so that
# the first call is to _initialize_gdbtypes (implemented by explicitly
# putting that function's name first in the init.l-tmp file).  This is
# a hack to ensure that all the architecture dependant global
# builtin_type_* variables are initialized before anything else
# (per-architecture code is called in the same order that it is
# registered).  The ``correct fix'' is to have all the builtin types
# made part of the architecture and initialize them on-demand (using
# gdbarch_data) just like everything else.  The catch is that other
# modules still take the address of these builtin types forcing them
# to be variables, sigh!

# NOTE: cagney/2003-03-18: The sed pattern ``s|^\([^ /]...'' is
# anchored on the first column and excludes the ``/'' character so
# that it doesn't add the $(srcdir) prefix to any file that already
# has an absolute path.  It turns out that $(DEC)'s True64 make
# automatically adds the $(srcdir) prefixes when it encounters files
# in sub-directories such as cli/ and mi/.

# NOTE: cagney/2004-02-08: The ``case "$$fs" in'' eliminates
# duplicates.  Files in the gdb/ directory can end up appearing in
# COMMON_OBS (as a .o file) and CONFIG_SRCS (as a .c file).

INIT_FILES = $(COMMON_OBS) $(TSOBS) $(CONFIG_SRCS) $(SUBDIR_GCC_COMPILE_SRCS)
init.c: $(INIT_FILES)
	@echo Making init.c
	@rm -f init.c-tmp init.l-tmp
	@touch init.c-tmp
	@echo gdbtypes > init.l-tmp
	@-LANG=C ; export LANG ; \
	LC_ALL=C ; export LC_ALL ; \
	echo $(INIT_FILES) | \
	tr ' ' '\012' | \
	sed \
	    -e '/^gdbtypes.[co]$$/d' \
	    -e '/^init.[co]$$/d' \
	    -e '/xdr_ld.[co]$$/d' \
	    -e '/xdr_ptrace.[co]$$/d' \
	    -e '/xdr_rdb.[co]$$/d' \
	    -e '/udr.[co]$$/d' \
	    -e '/udip2soc.[co]$$/d' \
	    -e '/udi2go32.[co]$$/d' \
	    -e '/version.[co]$$/d' \
	    -e '/^[a-z0-9A-Z_]*_[SU].[co]$$/d' \
	    -e '/[a-z0-9A-Z_]*-exp.tab.[co]$$/d' \
	    -e 's/\.[co]$$/.c/' \
	    -e 's,signals\.c,common/signals\.c,' \
	    -e 's|^\([^  /][^     ]*\)|$(srcdir)/\1|g' | \
	while read f; do \
	    sed -n -e 's/^_initialize_\([a-z_0-9A-Z]*\).*/\1/p' $$f 2>/dev/null; \
	done | \
	while read f; do \
	    case " $$fs " in \
	        *" $$f "* ) ;; \
	        * ) echo $$f ; fs="$$fs $$f";; \
            esac; \
	done >> 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"      /* For initialize_file_ftype.  */' >>init.c-tmp
	@echo 'extern void initialize_all_files(void);' >>init.c-tmp
	@sed -e 's/\(.*\)/extern initialize_file_ftype _initialize_\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/\(.*\)/  _initialize_\1 ();/' <init.l-tmp >>init.c-tmp
	@echo '}' >>init.c-tmp
	@rm init.l-tmp
	@mv init.c-tmp init.c

.PRECIOUS: init.c

# 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= $(COMMON_OBS) $(TSOBS) $(ADD_FILES) init.o
libgdb.a: $(LIBGDB_OBS)
	-rm -f libgdb.a
	$(AR) q libgdb.a $(LIBGDB_OBS)
	$(RANLIB) libgdb.a

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

# Convenience rule to handle recursion.
$(LIBGNU) $(GNULIB_H): all-lib
all-lib: $(GNULIB_BUILDDIR)/Makefile
	@$(MAKE) $(FLAGS_TO_PASS) DO=all DODIRS=$(GNULIB_BUILDDIR) subdir_do
.PHONY: all-lib

# Convenience rule to handle recursion.
.PHONY: all-data-directory
all-data-directory: data-directory/Makefile
	@$(MAKE) $(FLAGS_TO_PASS) DO=all DODIRS=data-directory subdir_do

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

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

GDB_NM_FILE = @GDB_NM_FILE@
TAGS: $(TAGFILES_NO_SRCDIR) $(TAGFILES_WITH_SRCDIR)
	@echo Making TAGS
	etags `(test -n "$(GDB_NM_FILE)" && echo "$(srcdir)/$(GDB_NM_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=$(CLEANDIRS)" subdir_do
	rm -f *.o *.a $(ADD_FILES) *~ init.c-tmp init.l-tmp version.c-tmp
	rm -f init.c version.c observer.h observer.inc
	rm -f gdb$(EXEEXT) core make.log
	rm -f gdb[0-9]$(EXEEXT)
	rm -f test-cp-name-parser$(EXEEXT)
	rm -f xml-builtin.c stamp-xml
	rm -f $(DEPDIR)/*

# This used to depend on c-exp.c m2-exp.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.
# NB: While GDBSERVER might be configured on native systems, it isn't
# always included in SUBDIRS.  Remove the gdbserver files explicitly.
distclean: clean
	@$(MAKE) $(FLAGS_TO_PASS) DO=distclean "DODIRS=$(CLEANDIRS)" subdir_do
	rm -rf $(GNULIB_BUILDDIR)
	rm -f gdbserver/config.status gdbserver/config.log
	rm -f gdbserver/tm.h gdbserver/xm.h gdbserver/nm.h
	rm -f gdbserver/Makefile gdbserver/config.cache
	rm -f nm.h config.status config.h stamp-h gdb-gdb.gdb jit-reader.h
	rm -f y.output yacc.acts yacc.tmp y.tab.h
	rm -f config.log config.cache
	rm -f Makefile
	rm -rf $(DEPDIR)

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.c \
		cp-name-parser.c \
		ada-lex.c ada-exp.c \
		jv-exp.tab \
		d-exp.c f-exp.c go-exp.c m2-exp.c p-exp.c
	rm -f TAGS $(INFOFILES)
	rm -f $(YYFILES)
	rm -f nm.h config.status

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

diststuff: $(DISTSTUFF) $(PACKAGE).pot $(CATALOGS)
	cd doc; $(MAKE) $(MFLAGS) diststuff

subdir_do: force
	@for i in $(DODIRS); do \
		case $$i in \
		$(REQUIRED_SUBDIRS)) \
			if [ ! -f ./$$i/Makefile ] ; then \
				echo "Missing $$i/Makefile" >&2 ; \
				exit 1 ; \
			fi ;; \
		esac ; \
		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@
	# Regenerate the Makefile and the tm.h / nm.h links.
	CONFIG_FILES="Makefile" \
	  CONFIG_COMMANDS= \
	  CONFIG_HEADERS= \
	  $(SHELL) config.status

$(GNULIB_BUILDDIR)/Makefile: gnulib/Makefile.in config.status @frags@
	@cd $(GNULIB_BUILDDIR); CONFIG_FILES="Makefile" \
	  CONFIG_COMMANDS="depfiles" \
	  CONFIG_HEADERS= \
	  CONFIG_LINKS= \
	  $(SHELL) config.status

data-directory/Makefile: data-directory/Makefile.in config.status @frags@
	CONFIG_FILES="data-directory/Makefile" \
	  CONFIG_COMMANDS="depfiles" \
	  CONFIG_HEADERS= \
	  CONFIG_LINKS= \
	  $(SHELL) config.status

.PHONY: run
run: Makefile
	./gdb$(EXEEXT) --data-directory=`pwd`/data-directory $(GDBFLAGS)

jit-reader.h: $(srcdir)/jit-reader.in
	$(SHELL) config.status $@

gcore: $(srcdir)/gcore.in
	$(SHELL) config.status $@

config.h: stamp-h ; @true
stamp-h: $(srcdir)/config.in config.status
	CONFIG_HEADERS=config.h:config.in \
	  CONFIG_COMMANDS="default depdir" \
	  CONFIG_FILES= \
	  CONFIG_LINKS= \
	  $(SHELL) config.status

config.status: $(srcdir)/configure configure.tgt configure.host ../bfd/development.sh
	$(SHELL) config.status --recheck

ACLOCAL = aclocal
ACLOCAL_AMFLAGS = -I ../config

# Keep these in sync with the includes in acinclude.m4.
aclocal_m4_deps = \
	configure.ac \
	acx_configure_dir.m4 \
	libmcheck.m4 \
	../bfd/bfd.m4 \
	../config/acinclude.m4 \
	../config/plugins.m4 \
	../config/lead-dot.m4 \
	../config/override.m4 \
	../config/largefile.m4 \
	../config/gettext-sister.m4 \
	../config/lib-ld.m4 \
	../config/lib-prefix.m4 \
	../config/lib-link.m4 \
	../config/acx.m4 \
	../config/tcl.m4 \
	../config/depstand.m4 \
	../config/lcmessage.m4 \
	../config/codeset.m4 \
	../config/zlib.m4

$(srcdir)/aclocal.m4: @MAINTAINER_MODE_TRUE@ $(aclocal_m4_deps)
	cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)

AUTOCONF = autoconf
configure_deps = $(srcdir)/configure.ac $(srcdir)/aclocal.m4
$(srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(configure_deps)
	cd $(srcdir) && $(AUTOCONF)

AUTOHEADER = autoheader
$(srcdir)/config.in: @MAINTAINER_MODE_TRUE@ $(configure_deps)
	cd $(srcdir) && $(AUTOHEADER)
	rm -f stamp-h
	touch $@

# automatic rebuilding in automake-generated Makefiles requires
# this rule in the toplevel Makefile, which, with GNU make, causes
# the desired updates through the implicit regeneration of the Makefile
# and all of its prerequisites.
am--refresh:
	@:

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)/../COPYING3 $(srcdir)/copying.awk
	awk -f $(srcdir)/copying.awk \
		< $(srcdir)/../COPYING3 > $(srcdir)/copying.tmp
	mv $(srcdir)/copying.tmp $(srcdir)/copying.c

version.c: Makefile version.in $(srcdir)/../bfd/version.h $(srcdir)/common/create-version.sh
	$(SHELL) $(srcdir)/common/create-version.sh $(srcdir) \
	    $(host_alias) $(target_alias) version.c

observer.h: observer.sh doc/observer.texi
	${srcdir}/observer.sh h ${srcdir}/doc/observer.texi observer.h

observer.inc: observer.sh doc/observer.texi
	${srcdir}/observer.sh inc ${srcdir}/doc/observer.texi observer.inc

lint: $(LINTFILES)
	$(LINT) $(INCLUDE_CFLAGS) $(LINTFLAGS) $(LINTFILES) \
	   `echo $(DEPFILES) $(CONFIG_OBS) | 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=

ALLDEPFILES = \
	aarch64-tdep.c aarch64-linux-tdep.c aarch64-newlib-tdep.c \
	aarch64-linux-nat.c \
	aix-thread.c \
	alphabsd-nat.c alpha-linux-nat.c \
	alpha-tdep.c alpha-mdebug-tdep.c \
	alpha-linux-tdep.c \
	alphabsd-tdep.c alphafbsd-tdep.c alphanbsd-tdep.c alphaobsd-tdep.c \
	amd64-nat.c amd64-tdep.c \
	amd64bsd-nat.c amd64fbsd-nat.c amd64fbsd-tdep.c \
	amd64nbsd-nat.c amd64nbsd-tdep.c \
	amd64obsd-nat.c amd64obsd-tdep.c \
	amd64-darwin-tdep.c \
	amd64-dicos-tdep.c \
	amd64-linux-nat.c amd64-linux-tdep.c \
	amd64-sol2-tdep.c \
	arm-linux-nat.c arm-linux-tdep.c arm-symbian-tdep.c arm-tdep.c \
	armnbsd-nat.c armbsd-tdep.c armnbsd-tdep.c armobsd-tdep.c \
	avr-tdep.c \
	bfin-linux-tdep.c bfin-tdep.c \
	bsd-uthread.c bsd-kvm.c \
	core-regset.c \
	dcache.c dicos-tdep.c darwin-nat.c \
	exec.c \
	fbsd-nat.c \
	fbsd-tdep.c \
	fork-child.c \
	glibc-tdep.c \
	go32-nat.c h8300-tdep.c \
	hppa-tdep.c hppa-hpux-tdep.c hppa-hpux-nat.c \
	hppa-linux-tdep.c hppa-linux-nat.c \
	hppabsd-nat.c hppabsd-tdep.c \
	hppaobsd-tdep.c \
	hppanbsd-nat.c hppanbsd-tdep.c \
	i386-tdep.c i386-linux-nat.c \
	i386v4-nat.c i386-cygwin-tdep.c \
	i386bsd-nat.c i386bsd-tdep.c i386fbsd-nat.c i386fbsd-tdep.c \
	i386nbsd-nat.c i386nbsd-tdep.c i386obsd-nat.c i386obsd-tdep.c \
	i387-tdep.c \
	i386-darwin-tdep.c i386-darwin-nat.c \
	i386-dicos-tdep.c \
	i386-linux-tdep.c x86-nat.c \
	i386-sol2-nat.c i386-sol2-tdep.c \
	i386gnu-nat.c i386gnu-tdep.c \
	ia64-hpux-nat.c ia64-hpux-tdep.c \
	ia64-linux-nat.c ia64-linux-tdep.c ia64-tdep.c ia64-vms-tdep.c \
	inf-ptrace.c inf-ttrace.c \
	ia64-libunwind-tdep.c \
	linux-fork.c \
	linux-tdep.c \
	linux-record.c \
	lm32-tdep.c \
	m68hc11-tdep.c \
	m32r-tdep.c \
	m32r-linux-nat.c m32r-linux-tdep.c \
	m68k-tdep.c \
	m68kbsd-nat.c m68kbsd-tdep.c \
	m68klinux-nat.c m68klinux-tdep.c \
	m88k-tdep.c m88kbsd-nat.c \
	microblaze-tdep.c microblaze-linux-tdep.c \
	mingw-hdep.c common/mingw-strerror.c \
	mips-linux-nat.c mips-linux-tdep.c \
	mips-sde-tdep.c \
	mips-tdep.c \
	mipsnbsd-nat.c mipsnbsd-tdep.c \
	mips64obsd-nat.c mips64obsd-tdep.c \
	msp430-tdep.c \
	nios2-tdep.c nios2-linux-tdep.c \
	nbsd-nat.c nbsd-tdep.c obsd-nat.c obsd-tdep.c \
	somread.c solib-som.c \
	posix-hdep.c common/posix-strerror.c \
	ppc-sysv-tdep.c ppc-linux-nat.c ppc-linux-tdep.c ppc64-tdep.c \
	ppcfbsd-nat.c ppcfbsd-tdep.c \
	ppcnbsd-nat.c ppcnbsd-tdep.c \
	ppcobsd-nat.c ppcobsd-tdep.c \
	procfs.c \
	ravenscar-thread.c \
	remote-m32r-sdi.c remote-mips.c \
	remote-sim.c \
	dcache.c \
	rl78-tdep.c \
	rs6000-nat.c rs6000-tdep.c solib-aix.c ppc-ravenscar-thread.c \
	rs6000-lynx178-tdep.c \
	rx-tdep.c \
	s390-linux-tdep.c s390-linux-nat.c \
	score-tdep.c \
	ser-go32.c ser-pipe.c ser-tcp.c ser-mingw.c \
	sh-tdep.c sh64-tdep.c shnbsd-tdep.c shnbsd-nat.c \
	sol2-tdep.c \
	solib-svr4.c \
	sparc-linux-nat.c sparc-linux-tdep.c \
	sparc-sol2-nat.c sparc-sol2-tdep.c sparc64-sol2-tdep.c \
	sparc-nat.c sparc-tdep.c sparc64-linux-nat.c sparc64-linux-tdep.c \
	sparc64-nat.c sparc64-tdep.c sparc64fbsd-nat.c sparc64fbsd-tdep.c \
	sparc64nbsd-nat.c sparc64nbsd-tdep.c \
	sparc64obsd-nat.c sparc64obsd-tdep.c \
	sparcnbsd-nat.c sparcnbsd-tdep.c sparcobsd-tdep.c \
	sparc-ravenscar-thread.c \
	spu-linux-nat.c spu-tdep.c spu-multiarch.c solib-spu.c \
	tilegx-linux-nat.c tilegx-tdep.c tilegx-linux-tdep.c \
	v850-tdep.c \
	vax-tdep.c vaxbsd-nat.c vaxnbsd-tdep.c \
	windows-nat.c windows-tdep.c \
	xcoffread.c \
	xstormy16-tdep.c \
	xtensa-tdep.c xtensa-config.c \
	xtensa-linux-tdep.c xtensa-linux-nat.c xtensa-xtregs.c

# Some files need explicit build rules (due to -Werror problems) or due
# to sub-directory fun 'n' games.

# FIXME: cagney/2003-08-10: "monitor.c" gets -Wformat-nonliteral
# errors.  It turns out that that is the least of monitor.c's
# problems.  The function print_vsprintf appears to be using
# va_arg(long) to extract CORE_ADDR parameters - something that
# definitly will not work.  "monitor.c" needs to be rewritten so that
# it doesn't use format strings and instead uses callbacks.
monitor.o: $(srcdir)/monitor.c
	$(COMPILE.pre) $(INTERNAL_CFLAGS) $(GDB_WARN_CFLAGS_NO_FORMAT) \
		$(COMPILE.post) $(srcdir)/monitor.c
	$(POSTCOMPILE)

# Do not try to build "printcmd.c" with -Wformat-nonliteral.  It manually
# checks format strings.
printcmd.o: $(srcdir)/printcmd.c
	$(COMPILE.pre) $(INTERNAL_CFLAGS) $(GDB_WARN_CFLAGS_NO_FORMAT) \
		$(COMPILE.post) $(srcdir)/printcmd.c
	$(POSTCOMPILE)

# ada-exp.c can appear in srcdir, for releases; or in ., for
# development builds.
ADA_EXP_C = `if test -f ada-exp.c; then echo ada-exp.c; else echo $(srcdir)/ada-exp.c; fi`

# Some versions of flex give output that triggers
# -Wold-style-definition.
ada-exp.o: ada-exp.c
	$(COMPILE.pre) $(INTERNAL_CFLAGS) $(GDB_WARN_CFLAGS_NO_DEFS) \
		$(COMPILE.post) $(ADA_EXP_C)
	$(POSTCOMPILE)

# Message files.  Based on code in gcc/Makefile.in.

# Rules for generating translated message descriptions.  Disabled by
# autoconf if the tools are not available.

.SUFFIXES: .po .gmo .pox .pot
.PHONY: all-po install-po uninstall-po clean-po update-po $(PACKAGE).pot

all-po: $(CATALOGS)

# This notation should be acceptable to all Make implementations used
# by people who are interested in updating .po files.
update-po: $(CATALOGS:.gmo=.pox)

# N.B. We do not attempt to copy these into $(srcdir).  The snapshot
# script does that.
.po.gmo:
	-test -d po || mkdir po
	$(GMSGFMT) --statistics -o $@ $<

# The new .po has to be gone over by hand, so we deposit it into
# build/po with a different extension.  If build/po/$(PACKAGE).pot
# exists, use it (it was just created), else use the one in srcdir.
.po.pox:
	-test -d po || mkdir po
	$(MSGMERGE) $< `if test -f po/$(PACKAGE).pot; \
			then echo po/$(PACKAGE).pot; \
			else echo $(srcdir)/po/$(PACKAGE).pot; fi` -o $@

# This rule has to look for .gmo modules in both srcdir and the cwd,
# and has to check that we actually have a catalog for each language,
# in case they weren't built or included with the distribution.
install-po:
	$(SHELL) $(srcdir)/../mkinstalldirs $(DESTDIR)$(datadir)
	cats="$(CATALOGS)"; for cat in $$cats; do \
	  lang=`basename $$cat | sed 's/\.gmo$$//'`; \
	  if [ -f $$cat ]; then :; \
	  elif [ -f $(srcdir)/$$cat ]; then cat=$(srcdir)/$$cat; \
	  else continue; \
	  fi; \
	  dir=$(localedir)/$$lang/LC_MESSAGES; \
	  echo $(SHELL) $(srcdir)/../mkinstalldirs $(DESTDIR)$$dir; \
	  $(SHELL) $(srcdir)/../mkinstalldirs $(DESTDIR)$$dir || exit 1; \
	  echo $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/$(PACKAGE).mo; \
	  $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/$(PACKAGE).mo; \
	done
uninstall-po:
	cats="$(CATALOGS)"; for cat in $$cats; do \
	  lang=`basename $$cat | sed 's/\.gmo$$//'`; \
	  if [ -f $$cat ]; then :; \
	  elif [ -f $(srcdir)/$$cat ]; then cat=$(srcdir)/$$cat; \
	  else continue; \
	  fi; \
	  dir=$(localedir)/$$lang/LC_MESSAGES; \
	  rm -f $(DESTDIR)$$dir/$(PACKAGE).mo; \
	done
# Delete po/*.gmo only if we are not building in the source directory.
clean-po:
	-if [ ! -f Makefile.in ]; then rm -f po/*.gmo; fi

# Rule for regenerating the message template (gdb.pot).  Instead of
# forcing everyone to edit POTFILES.in, which proved impractical, this
# rule has no dependencies and always regenerates gdb.pot.  This is
# relatively harmless since the .po files do not directly depend on
# it.  The .pot file is left in the build directory.  Since GDB's
# Makefile lacks a cannonical list of sources (missing xm, tm and nm
# files) force this rule.
$(PACKAGE).pot: po/$(PACKAGE).pot
po/$(PACKAGE).pot: force
	-test -d po || mkdir po
	sh -e $(srcdir)/po/gdbtext $(XGETTEXT) $(PACKAGE) . $(srcdir)


#
# YACC/LEX dependencies
#
# LANG-exp.c is generated in objdir from LANG-exp.y if it doesn't
# exist in srcdir, then compiled in objdir to LANG-exp.o.  If we
# said LANG-exp.c rather than ./c-exp.c some makes would
# sometimes re-write it into $(srcdir)/c-exp.c.  Remove bogus
# decls for malloc/realloc/free which conflict with everything else.
# Strictly speaking c-exp.c should therefore depend on
# Makefile.in, but that was a pretty big annoyance.

.SUFFIXES: .y .l
.y.c:
	rm -f $@ $@.tmp
	$(SHELL) $(YLWRAP) $< y.tab.c $@ -- $(YACC) $(YFLAGS) && mv $@ $@.tmp \
		|| (rm -f $@; false)
	sed -e '/extern.*malloc/d' \
	     -e '/extern.*realloc/d' \
	     -e '/extern.*free/d' \
	     -e '/include.*malloc.h/d' \
	     -e 's/\([^x]\)malloc/\1xmalloc/g' \
	     -e 's/\([^x]\)realloc/\1xrealloc/g' \
	     -e 's/\([ \t;,(]\)free\([ \t]*[&(),]\)/\1xfree\2/g' \
	     -e 's/\([ \t;,(]\)free$$/\1xfree/g' \
	     -e '/^#line.*y.tab.c/d' \
	  < $@.tmp > $@
	rm -f $@.tmp
.l.c:
	if [ "$(FLEX)" ] && $(FLEX) --version >/dev/null 2>&1; then \
	    $(FLEX) -o$@ $< && \
	    rm -f $@.new && \
	    sed -e '/extern.*malloc/d' \
	        -e '/extern.*realloc/d' \
	        -e '/extern.*free/d' \
	        -e '/include.*malloc.h/d' \
	        -e 's/\([^x]\)malloc/\1xmalloc/g' \
	        -e 's/\([^x]\)realloc/\1xrealloc/g' \
	        -e 's/\([ \t;,(]\)free\([ \t]*[&(),]\)/\1xfree\2/g' \
	        -e 's/\([ \t;,(]\)free$$/\1xfree/g' \
		-e 's/yy_flex_xrealloc/yyxrealloc/g' \
	      < $@ > $@.new && \
	    rm -f $@ && \
	    mv $@.new $@; \
	elif [ -f $@ ]; then \
	    echo "Warning: $*.c older than $*.l and flex not available."; \
	else \
	    echo "$@ missing and flex not available."; \
	    false; \
	fi

.PRECIOUS: ada-lex.c

# XML rules

xml-builtin.c: stamp-xml; @true
stamp-xml: $(srcdir)/features/feature_to_c.sh Makefile $(XMLFILES)
	rm -f xml-builtin.tmp
	AWK="$(AWK)" \
	  $(SHELL) $(srcdir)/features/feature_to_c.sh \
	  xml-builtin.tmp $(XMLFILES)
	$(SHELL) $(srcdir)/../move-if-change xml-builtin.tmp xml-builtin.c
	echo stamp > stamp-xml

.PRECIOUS: xml-builtin.c

#
# gdb/cli/ dependencies
#
# Need to explicitly specify the compile rule as make will do nothing
# or try to compile the object file into the sub-directory.

cli-cmds.o: $(srcdir)/cli/cli-cmds.c
	$(COMPILE) $(srcdir)/cli/cli-cmds.c
	$(POSTCOMPILE)

cli-decode.o: $(srcdir)/cli/cli-decode.c
	$(COMPILE) $(srcdir)/cli/cli-decode.c
	$(POSTCOMPILE)

cli-dump.o: $(srcdir)/cli/cli-dump.c
	$(COMPILE) $(srcdir)/cli/cli-dump.c
	$(POSTCOMPILE)

cli-interp.o: $(srcdir)/cli/cli-interp.c
	$(COMPILE) $(srcdir)/cli/cli-interp.c
	$(POSTCOMPILE)

cli-logging.o: $(srcdir)/cli/cli-logging.c
	$(COMPILE) $(srcdir)/cli/cli-logging.c
	$(POSTCOMPILE)

cli-script.o: $(srcdir)/cli/cli-script.c
	$(COMPILE) $(srcdir)/cli/cli-script.c
	$(POSTCOMPILE)

cli-setshow.o: $(srcdir)/cli/cli-setshow.c
	$(COMPILE) $(srcdir)/cli/cli-setshow.c
	$(POSTCOMPILE)

cli-utils.o: $(srcdir)/cli/cli-utils.c
	$(COMPILE) $(srcdir)/cli/cli-utils.c
	$(POSTCOMPILE)

# GCC Compile support dependencies
#
# Need to explicitly specify the compile rule as make will do nothing
# or try to compile the object file into the sub-directory.

compile.o: $(srcdir)/compile/compile.c
	$(COMPILE) $(srcdir)/compile/compile.c
	$(POSTCOMPILE)

compile-c-types.o: $(srcdir)/compile/compile-c-types.c
	$(COMPILE) $(srcdir)/compile/compile-c-types.c
	$(POSTCOMPILE)

compile-c-symbols.o: $(srcdir)/compile/compile-c-symbols.c
	$(COMPILE) $(srcdir)/compile/compile-c-symbols.c
	$(POSTCOMPILE)

compile-object-load.o: $(srcdir)/compile/compile-object-load.c
	$(COMPILE) $(srcdir)/compile/compile-object-load.c
	$(POSTCOMPILE)

compile-object-run.o: $(srcdir)/compile/compile-object-run.c
	$(COMPILE) $(srcdir)/compile/compile-object-run.c
	$(POSTCOMPILE)

compile-loc2c.o: $(srcdir)/compile/compile-loc2c.c
	$(COMPILE) $(srcdir)/compile/compile-loc2c.c
	$(POSTCOMPILE)

compile-c-support.o: $(srcdir)/compile/compile-c-support.c
	$(COMPILE) $(srcdir)/compile/compile-c-support.c
	$(POSTCOMPILE)


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

all-gdbtk: insight$(EXEEXT)

install-gdbtk:
	transformed_name=`t='$(program_transform_name)'; \
		  echo insight | sed -e $$t` ; \
	if test "x$$transformed_name" = x; then \
	  transformed_name=insight ; \
	else \
	  true ; \
	fi ; \
	$(SHELL) $(srcdir)/../mkinstalldirs $(DESTDIR)$(bindir); \
	$(INSTALL_PROGRAM) insight$(EXEEXT) \
		$(DESTDIR)$(bindir)/$$transformed_name$(EXEEXT) ; \
	$(SHELL) $(srcdir)/../mkinstalldirs \
		$(DESTDIR)$(GDBTK_LIBRARY) ; \
	$(SHELL) $(srcdir)/../mkinstalldirs \
		$(DESTDIR)$(libdir)/insight$(GDBTK_VERSION) ; \
	$(INSTALL_DATA) $(srcdir)/gdbtk/plugins/plugins.tcl \
		$(DESTDIR)$(libdir)/insight$(GDBTK_VERSION)/plugins.tcl ; \
	$(SHELL) $(srcdir)/../mkinstalldirs \
		$(DESTDIR)$(GDBTK_LIBRARY)/images \
		$(DESTDIR)$(GDBTK_LIBRARY)/images2 ; \
	$(SHELL) $(srcdir)/../mkinstalldirs \
		$(DESTDIR)$(GDBTK_LIBRARY)/help \
		$(DESTDIR)$(GDBTK_LIBRARY)/help/images \
		$(DESTDIR)$(GDBTK_LIBRARY)/help/trace ; \
	cd $(srcdir)/gdbtk/library ; \
	for i in *.tcl *.itcl *.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 help/images/*.png; \
	  do \
		$(INSTALL_DATA) $$i $(DESTDIR)$(GDBTK_LIBRARY)/$$i ; \
	  done ;

uninstall-gdbtk:
	transformed_name=`t='$(program_transform_name)'; \
		  echo insight | sed -e $$t` ; \
	if test "x$$transformed_name" = x; then \
		transformed_name=insight ; \
	else \
		true ; \
	fi ; \
	rm -f $(DESTDIR)$(bindir)/$$transformed_name$(EXEEXT) ; \
	rm -rf $(DESTDIR)$(GDBTK_LIBRARY)

clean-gdbtk:
	rm -f insight$(EXEEXT)

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

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

all_gdbtk_cflags = $(IDE_CFLAGS) $(ITCL_CFLAGS) \
		$(ITK_CFLAGS) $(TCL_CFLAGS) $(TK_CFLAGS) $(X11_CFLAGS) \
		$(GDBTK_CFLAGS) \
		-DGDBTK_LIBRARY=\"$(GDBTK_LIBRARY)\" \
		-DSRC_DIR=\"$(GDBTK_SRC_DIR)\"

gdbtk.o: $(srcdir)/gdbtk/generic/gdbtk.c
	$(COMPILE) $(all_gdbtk_cflags) $(srcdir)/gdbtk/generic/gdbtk.c
	$(POSTCOMPILE)

gdbtk-bp.o: $(srcdir)/gdbtk/generic/gdbtk-bp.c
	$(COMPILE) $(all_gdbtk_cflags) $(srcdir)/gdbtk/generic/gdbtk-bp.c
	$(POSTCOMPILE)

gdbtk-cmds.o: $(srcdir)/gdbtk/generic/gdbtk-cmds.c
	$(COMPILE) $(all_gdbtk_cflags) $(srcdir)/gdbtk/generic/gdbtk-cmds.c
	$(POSTCOMPILE)

gdbtk-hooks.o: $(srcdir)/gdbtk/generic/gdbtk-hooks.c
	$(COMPILE) $(all_gdbtk_cflags) $(srcdir)/gdbtk/generic/gdbtk-hooks.c
	$(POSTCOMPILE)

gdbtk-interp.o: $(srcdir)/gdbtk/generic/gdbtk-interp.c
	$(COMPILE) $(all_gdbtk_cflags) $(srcdir)/gdbtk/generic/gdbtk-interp.c
	$(POSTCOMPILE)

gdbtk-main.o: $(srcdir)/gdbtk/generic/gdbtk-main.c
	$(COMPILE) $(all_gdbtk_cflags) $(srcdir)/gdbtk/generic/gdbtk-main.c
	$(POSTCOMPILE)

gdbtk-register.o: $(srcdir)/gdbtk/generic/gdbtk-register.c
	$(COMPILE) $(all_gdbtk_cflags) $(srcdir)/gdbtk/generic/gdbtk-register.c
	$(POSTCOMPILE)

gdbtk-stack.o: $(srcdir)/gdbtk/generic/gdbtk-stack.c
	$(COMPILE) $(all_gdbtk_cflags) $(srcdir)/gdbtk/generic/gdbtk-stack.c
	$(POSTCOMPILE)

gdbtk-varobj.o: $(srcdir)/gdbtk/generic/gdbtk-varobj.c
	$(COMPILE) $(all_gdbtk_cflags) $(srcdir)/gdbtk/generic/gdbtk-varobj.c
	$(POSTCOMPILE)

gdbtk-wrapper.o: $(srcdir)/gdbtk/generic/gdbtk-wrapper.c
	$(COMPILE) $(all_gdbtk_cflags) $(srcdir)/gdbtk/generic/gdbtk-wrapper.c
	$(POSTCOMPILE)


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

mi-cmd-break.o: $(srcdir)/mi/mi-cmd-break.c
	$(COMPILE) $(srcdir)/mi/mi-cmd-break.c
	$(POSTCOMPILE)

mi-cmd-catch.o: $(srcdir)/mi/mi-cmd-catch.c
	$(COMPILE) $(srcdir)/mi/mi-cmd-catch.c
	$(POSTCOMPILE)

mi-cmd-disas.o: $(srcdir)/mi/mi-cmd-disas.c
	$(COMPILE) $(srcdir)/mi/mi-cmd-disas.c
	$(POSTCOMPILE)

mi-cmd-env.o: $(srcdir)/mi/mi-cmd-env.c
	$(COMPILE) $(srcdir)/mi/mi-cmd-env.c
	$(POSTCOMPILE)

mi-cmd-file.o: $(srcdir)/mi/mi-cmd-file.c
	$(COMPILE) $(srcdir)/mi/mi-cmd-file.c
	$(POSTCOMPILE)

mi-cmd-info.o: $(srcdir)/mi/mi-cmd-info.c
	$(COMPILE) $(srcdir)/mi/mi-cmd-info.c
	$(POSTCOMPILE)

mi-cmds.o: $(srcdir)/mi/mi-cmds.c
	$(COMPILE) $(srcdir)/mi/mi-cmds.c
	$(POSTCOMPILE)

mi-cmd-stack.o: $(srcdir)/mi/mi-cmd-stack.c
	$(COMPILE) $(srcdir)/mi/mi-cmd-stack.c
	$(POSTCOMPILE)

mi-cmd-target.o: $(srcdir)/mi/mi-cmd-target.c
	$(COMPILE) $(srcdir)/mi/mi-cmd-target.c
	$(POSTCOMPILE)

mi-cmd-var.o: $(srcdir)/mi/mi-cmd-var.c
	$(COMPILE) $(srcdir)/mi/mi-cmd-var.c
	$(POSTCOMPILE)

mi-console.o: $(srcdir)/mi/mi-console.c
	$(COMPILE) $(srcdir)/mi/mi-console.c
	$(POSTCOMPILE)

mi-getopt.o: $(srcdir)/mi/mi-getopt.c
	$(COMPILE) $(srcdir)/mi/mi-getopt.c
	$(POSTCOMPILE)

mi-interp.o: $(srcdir)/mi/mi-interp.c
	$(COMPILE) $(srcdir)/mi/mi-interp.c
	$(POSTCOMPILE)

mi-main.o: $(srcdir)/mi/mi-main.c
	$(COMPILE) $(srcdir)/mi/mi-main.c
	$(POSTCOMPILE)

mi-out.o: $(srcdir)/mi/mi-out.c
	$(COMPILE) $(srcdir)/mi/mi-out.c
	$(POSTCOMPILE)

mi-parse.o: $(srcdir)/mi/mi-parse.c
	$(COMPILE) $(srcdir)/mi/mi-parse.c
	$(POSTCOMPILE)

mi-symbol-cmds.o: $(srcdir)/mi/mi-symbol-cmds.c
	$(COMPILE) $(srcdir)/mi/mi-symbol-cmds.c
	$(POSTCOMPILE)

mi-common.o: $(srcdir)/mi/mi-common.c
	$(COMPILE) $(srcdir)/mi/mi-common.c
	$(POSTCOMPILE)

# gdb/common/ dependencies
#
# Need to explicitly specify the compile rule as make will do nothing
# or try to compile the object file into the sub-directory.

signals.o: $(srcdir)/common/signals.c
	$(COMPILE) $(srcdir)/common/signals.c
	$(POSTCOMPILE)

common-utils.o: ${srcdir}/common/common-utils.c
	$(COMPILE) $(srcdir)/common/common-utils.c
	$(POSTCOMPILE)

gdb_vecs.o: ${srcdir}/common/gdb_vecs.c
	$(COMPILE) $(srcdir)/common/gdb_vecs.c
	$(POSTCOMPILE)

xml-utils.o: ${srcdir}/common/xml-utils.c
	$(COMPILE) $(srcdir)/common/xml-utils.c
	$(POSTCOMPILE)

ptid.o: ${srcdir}/common/ptid.c
	$(COMPILE) $(srcdir)/common/ptid.c
	$(POSTCOMPILE)

buffer.o: ${srcdir}/common/buffer.c
	$(COMPILE) $(srcdir)/common/buffer.c
	$(POSTCOMPILE)

filestuff.o: $(srcdir)/common/filestuff.c
	$(COMPILE) $(srcdir)/common/filestuff.c
	$(POSTCOMPILE)

format.o: ${srcdir}/common/format.c
	$(COMPILE) $(srcdir)/common/format.c
	$(POSTCOMPILE)

common-agent.o: $(srcdir)/common/agent.c
	$(COMPILE) $(srcdir)/common/agent.c
	$(POSTCOMPILE)

vec.o: ${srcdir}/common/vec.c
	$(COMPILE) $(srcdir)/common/vec.c
	$(POSTCOMPILE)

print-utils.o: ${srcdir}/common/print-utils.c
	$(COMPILE) $(srcdir)/common/print-utils.c
	$(POSTCOMPILE)

rsp-low.o: ${srcdir}/common/rsp-low.c
	$(COMPILE) $(srcdir)/common/rsp-low.c
	$(POSTCOMPILE)

errors.o: ${srcdir}/common/errors.c
	$(COMPILE) $(srcdir)/common/errors.c
	$(POSTCOMPILE)

common-debug.o: ${srcdir}/common/common-debug.c
	$(COMPILE) $(srcdir)/common/common-debug.c
	$(POSTCOMPILE)

cleanups.o: ${srcdir}/common/cleanups.c
	$(COMPILE) $(srcdir)/common/cleanups.c
	$(POSTCOMPILE)

common-exceptions.o: ${srcdir}/common/common-exceptions.c
	$(COMPILE) $(srcdir)/common/common-exceptions.c
	$(POSTCOMPILE)

posix-strerror.o: ${srcdir}/common/posix-strerror.c
	$(COMPILE) $(srcdir)/common/posix-strerror.c
	$(POSTCOMPILE)

mingw-strerror.o: ${srcdir}/common/mingw-strerror.c
	$(COMPILE) $(srcdir)/common/mingw-strerror.c
	$(POSTCOMPILE)

#
# gdb/target/ dependencies
#
# Need to explicitly specify the compile rule as make will do nothing
# or try to compile the object file into the sub-directory.

waitstatus.o: ${srcdir}/target/waitstatus.c
	$(COMPILE) $(srcdir)/target/waitstatus.c
	$(POSTCOMPILE)

# gdb/nat/ dependencies
#
# Need to explicitly specify the compile rule as make will do nothing
# or try to compile the object file into the sub-directory.

x86-dregs.o: ${srcdir}/nat/x86-dregs.c
	$(COMPILE) $(srcdir)/nat/x86-dregs.c
	$(POSTCOMPILE)

linux-btrace.o: ${srcdir}/nat/linux-btrace.c
	$(COMPILE) $(srcdir)/nat/linux-btrace.c
	$(POSTCOMPILE)

linux-osdata.o: ${srcdir}/nat/linux-osdata.c
	$(COMPILE) $(srcdir)/nat/linux-osdata.c
	$(POSTCOMPILE)

linux-procfs.o: $(srcdir)/nat/linux-procfs.c
	$(COMPILE) $(srcdir)/nat/linux-procfs.c
	$(POSTCOMPILE)

linux-ptrace.o: $(srcdir)/nat/linux-ptrace.c
	$(COMPILE) $(srcdir)/nat/linux-ptrace.c
	$(POSTCOMPILE)

linux-waitpid.o: ${srcdir}/nat/linux-waitpid.c
	$(COMPILE) $(srcdir)/nat/linux-waitpid.c
	$(POSTCOMPILE)

mips-linux-watch.o: ${srcdir}/nat/mips-linux-watch.c
	$(COMPILE) $(srcdir)/nat/mips-linux-watch.c
	$(POSTCOMPILE)

ppc-linux.o: ${srcdir}/nat/ppc-linux.c
	$(COMPILE) $(srcdir)/nat/ppc-linux.c
	$(POSTCOMPILE)

linux-personality.o: ${srcdir}/nat/linux-personality.c
	$(COMPILE) $(srcdir)/nat/linux-personality.c
	$(POSTCOMPILE)

#
# gdb/tui/ dependencies
#
# Need to explicitly specify the compile rule as make will do nothing
# or try to compile the object file into the sub-directory.

tui.o: $(srcdir)/tui/tui.c
	$(COMPILE) $(srcdir)/tui/tui.c
	$(POSTCOMPILE)

tui-command.o: $(srcdir)/tui/tui-command.c
	$(COMPILE) $(srcdir)/tui/tui-command.c
	$(POSTCOMPILE)

tui-data.o: $(srcdir)/tui/tui-data.c
	$(COMPILE) $(srcdir)/tui/tui-data.c
	$(POSTCOMPILE)

tui-disasm.o: $(srcdir)/tui/tui-disasm.c
	$(COMPILE) $(srcdir)/tui/tui-disasm.c
	$(POSTCOMPILE)

tui-file.o: $(srcdir)/tui/tui-file.c
	$(COMPILE) $(srcdir)/tui/tui-file.c
	$(POSTCOMPILE)

tui-hooks.o: $(srcdir)/tui/tui-hooks.c
	$(COMPILE) $(srcdir)/tui/tui-hooks.c
	$(POSTCOMPILE)

tui-interp.o: $(srcdir)/tui/tui-interp.c
	$(COMPILE) $(srcdir)/tui/tui-interp.c
	$(POSTCOMPILE)

tui-io.o: $(srcdir)/tui/tui-io.c
	$(COMPILE) $(srcdir)/tui/tui-io.c
	$(POSTCOMPILE)

tui-layout.o: $(srcdir)/tui/tui-layout.c
	$(COMPILE) $(srcdir)/tui/tui-layout.c
	$(POSTCOMPILE)

tui-out.o: $(srcdir)/tui/tui-out.c
	$(COMPILE) $(srcdir)/tui/tui-out.c
	$(POSTCOMPILE)

tui-regs.o: $(srcdir)/tui/tui-regs.c
	$(COMPILE) $(srcdir)/tui/tui-regs.c
	$(POSTCOMPILE)

tui-source.o: $(srcdir)/tui/tui-source.c
	$(COMPILE) $(srcdir)/tui/tui-source.c
	$(POSTCOMPILE)

tui-stack.o: $(srcdir)/tui/tui-stack.c
	$(COMPILE) $(srcdir)/tui/tui-stack.c
	$(POSTCOMPILE)

tui-win.o: $(srcdir)/tui/tui-win.c
	$(COMPILE) $(srcdir)/tui/tui-win.c
	$(POSTCOMPILE)

tui-windata.o: $(srcdir)/tui/tui-windata.c
	$(COMPILE) $(srcdir)/tui/tui-windata.c
	$(POSTCOMPILE)

tui-wingeneral.o: $(srcdir)/tui/tui-wingeneral.c
	$(COMPILE) $(srcdir)/tui/tui-wingeneral.c
	$(POSTCOMPILE)

tui-winsource.o: $(srcdir)/tui/tui-winsource.c
	$(COMPILE) $(srcdir)/tui/tui-winsource.c
	$(POSTCOMPILE)

# gdb/guile dependencies
#
# Need to explicitly specify the compile rule as make will do nothing
# or try to compile the object file into the sub-directory.

guile.o: $(srcdir)/guile/guile.c
	$(COMPILE) $(srcdir)/guile/guile.c
	$(POSTCOMPILE)

scm-arch.o: $(srcdir)/guile/scm-arch.c
	$(COMPILE) $(srcdir)/guile/scm-arch.c
	$(POSTCOMPILE)

scm-auto-load.o: $(srcdir)/guile/scm-auto-load.c
	$(COMPILE) $(srcdir)/guile/scm-auto-load.c
	$(POSTCOMPILE)

scm-block.o: $(srcdir)/guile/scm-block.c
	$(COMPILE) $(srcdir)/guile/scm-block.c
	$(POSTCOMPILE)

scm-breakpoint.o: $(srcdir)/guile/scm-breakpoint.c
	$(COMPILE) $(srcdir)/guile/scm-breakpoint.c
	$(POSTCOMPILE)

scm-cmd.o: $(srcdir)/guile/scm-cmd.c
	$(COMPILE) $(srcdir)/guile/scm-cmd.c
	$(POSTCOMPILE)

scm-disasm.o: $(srcdir)/guile/scm-disasm.c
	$(COMPILE) $(srcdir)/guile/scm-disasm.c
	$(POSTCOMPILE)

scm-exception.o: $(srcdir)/guile/scm-exception.c
	$(COMPILE) $(srcdir)/guile/scm-exception.c
	$(POSTCOMPILE)

scm-frame.o: $(srcdir)/guile/scm-frame.c
	$(COMPILE) $(srcdir)/guile/scm-frame.c
	$(POSTCOMPILE)

scm-gsmob.o: $(srcdir)/guile/scm-gsmob.c
	$(COMPILE) $(srcdir)/guile/scm-gsmob.c
	$(POSTCOMPILE)

scm-iterator.o: $(srcdir)/guile/scm-iterator.c
	$(COMPILE) $(srcdir)/guile/scm-iterator.c
	$(POSTCOMPILE)

scm-lazy-string.o: $(srcdir)/guile/scm-lazy-string.c
	$(COMPILE) $(srcdir)/guile/scm-lazy-string.c
	$(POSTCOMPILE)

scm-math.o: $(srcdir)/guile/scm-math.c
	$(COMPILE) $(srcdir)/guile/scm-math.c
	$(POSTCOMPILE)

scm-objfile.o: $(srcdir)/guile/scm-objfile.c
	$(COMPILE) $(srcdir)/guile/scm-objfile.c
	$(POSTCOMPILE)

scm-param.o: $(srcdir)/guile/scm-param.c
	$(COMPILE) $(srcdir)/guile/scm-param.c
	$(POSTCOMPILE)

scm-ports.o: $(srcdir)/guile/scm-ports.c
	$(COMPILE) $(srcdir)/guile/scm-ports.c
	$(POSTCOMPILE)

scm-pretty-print.o: $(srcdir)/guile/scm-pretty-print.c
	$(COMPILE) $(srcdir)/guile/scm-pretty-print.c
	$(POSTCOMPILE)

scm-progspace.o: $(srcdir)/guile/scm-progspace.c
	$(COMPILE) $(srcdir)/guile/scm-progspace.c
	$(POSTCOMPILE)

scm-safe-call.o: $(srcdir)/guile/scm-safe-call.c
	$(COMPILE) $(srcdir)/guile/scm-safe-call.c
	$(POSTCOMPILE)

scm-string.o: $(srcdir)/guile/scm-string.c
	$(COMPILE) $(srcdir)/guile/scm-string.c
	$(POSTCOMPILE)

scm-symbol.o: $(srcdir)/guile/scm-symbol.c
	$(COMPILE) $(srcdir)/guile/scm-symbol.c
	$(POSTCOMPILE)

scm-symtab.o: $(srcdir)/guile/scm-symtab.c
	$(COMPILE) $(srcdir)/guile/scm-symtab.c
	$(POSTCOMPILE)

scm-type.o: $(srcdir)/guile/scm-type.c
	$(COMPILE) $(srcdir)/guile/scm-type.c
	$(POSTCOMPILE)

scm-utils.o: $(srcdir)/guile/scm-utils.c
	$(COMPILE) $(srcdir)/guile/scm-utils.c
	$(POSTCOMPILE)

scm-value.o: $(srcdir)/guile/scm-value.c
	$(COMPILE) $(srcdir)/guile/scm-value.c
	$(POSTCOMPILE)

# gdb/python/ dependencies
#
# Need to explicitly specify the compile rule as make will do nothing
# or try to compile the object file into the sub-directory.

# Flags needed to compile Python code
PYTHON_CFLAGS=@PYTHON_CFLAGS@

python.o: $(srcdir)/python/python.c
	$(COMPILE) $(PYTHON_CFLAGS) $(srcdir)/python/python.c
	$(POSTCOMPILE)

py-arch.o: $(srcdir)/python/py-arch.c
	$(COMPILE) $(PYTHON_CFLAGS) $(srcdir)/python/py-arch.c
	$(POSTCOMPILE)

py-auto-load.o: $(srcdir)/python/py-auto-load.c
	$(COMPILE) $(PYTHON_CFLAGS) $(srcdir)/python/py-auto-load.c
	$(POSTCOMPILE)

py-block.o: $(srcdir)/python/py-block.c
	$(COMPILE) $(PYTHON_CFLAGS) $(srcdir)/python/py-block.c
	$(POSTCOMPILE)

py-bpevent.o: $(srcdir)/python/py-bpevent.c
	$(COMPILE) $(PYTHON_CFLAGS) $(srcdir)/python/py-bpevent.c
	$(POSTCOMPILE)

py-breakpoint.o: $(srcdir)/python/py-breakpoint.c
	$(COMPILE) $(PYTHON_CFLAGS) $(srcdir)/python/py-breakpoint.c
	$(POSTCOMPILE)

py-cmd.o: $(srcdir)/python/py-cmd.c
	$(COMPILE) $(PYTHON_CFLAGS) $(srcdir)/python/py-cmd.c
	$(POSTCOMPILE)

py-continueevent.o: $(srcdir)/python/py-continueevent.c
	$(COMPILE) $(PYTHON_CFLAGS) $(srcdir)/python/py-continueevent.c
	$(POSTCOMPILE)

py-xmethods.o: $(srcdir)/python/py-xmethods.c
	$(COMPILE) $(PYTHON_CFLAGS) $(srcdir)/python/py-xmethods.c
	$(POSTCOMPILE)

py-event.o: $(srcdir)/python/py-event.c
	$(COMPILE) $(PYTHON_CFLAGS) $(srcdir)/python/py-event.c
	$(POSTCOMPILE)

py-evtregistry.o: $(srcdir)/python/py-evtregistry.c
	$(COMPILE) $(PYTHON_CFLAGS) $(srcdir)/python/py-evtregistry.c
	$(POSTCOMPILE)

py-evts.o: $(srcdir)/python/py-evts.c
	$(COMPILE) $(PYTHON_CFLAGS) $(srcdir)/python/py-evts.c
	$(POSTCOMPILE)

py-exitedevent.o: $(srcdir)/python/py-exitedevent.c
	$(COMPILE) $(PYTHON_CFLAGS) $(srcdir)/python/py-exitedevent.c
	$(POSTCOMPILE)

py-finishbreakpoint.o: $(srcdir)/python/py-finishbreakpoint.c
	$(COMPILE) $(PYTHON_CFLAGS) $(srcdir)/python/py-finishbreakpoint.c
	$(POSTCOMPILE)

py-frame.o: $(srcdir)/python/py-frame.c
	$(COMPILE) $(PYTHON_CFLAGS) $(srcdir)/python/py-frame.c
	$(POSTCOMPILE)

py-framefilter.o: $(srcdir)/python/py-framefilter.c
	$(COMPILE) $(PYTHON_CFLAGS) $(srcdir)/python/py-framefilter.c
	$(POSTCOMPILE)

py-function.o: $(srcdir)/python/py-function.c
	$(COMPILE) $(PYTHON_CFLAGS) $(srcdir)/python/py-function.c
	$(POSTCOMPILE)

py-gdb-readline.o: $(srcdir)/python/py-gdb-readline.c
	$(COMPILE) $(PYTHON_CFLAGS) $(srcdir)/python/py-gdb-readline.c
	$(POSTCOMPILE)

py-inferior.o: $(srcdir)/python/py-inferior.c
	$(COMPILE) $(PYTHON_CFLAGS) $(srcdir)/python/py-inferior.c
	$(POSTCOMPILE)

py-infevents.o: $(srcdir)/python/py-infevents.c
	$(COMPILE) $(PYTHON_CFLAGS) $(srcdir)/python/py-infevents.c
	$(POSTCOMPILE)

py-infthread.o: $(srcdir)/python/py-infthread.c
	$(COMPILE) $(PYTHON_CFLAGS) $(srcdir)/python/py-infthread.c
	$(POSTCOMPILE)

py-lazy-string.o: $(srcdir)/python/py-lazy-string.c
	$(COMPILE) $(PYTHON_CFLAGS) $(srcdir)/python/py-lazy-string.c
	$(POSTCOMPILE)

py-linetable.o: $(srcdir)/python/py-linetable.c
	$(COMPILE) $(PYTHON_CFLAGS) $(srcdir)/python/py-linetable.c
	$(POSTCOMPILE)

py-newobjfileevent.o: $(srcdir)/python/py-newobjfileevent.c
	$(COMPILE) $(PYTHON_CFLAGS) $(srcdir)/python/py-newobjfileevent.c
	$(POSTCOMPILE)

py-objfile.o: $(srcdir)/python/py-objfile.c
	$(COMPILE) $(PYTHON_CFLAGS) $(srcdir)/python/py-objfile.c
	$(POSTCOMPILE)

py-param.o: $(srcdir)/python/py-param.c
	$(COMPILE) $(PYTHON_CFLAGS) $(srcdir)/python/py-param.c
	$(POSTCOMPILE)

py-prettyprint.o: $(srcdir)/python/py-prettyprint.c
	$(COMPILE) $(PYTHON_CFLAGS) $(srcdir)/python/py-prettyprint.c
	$(POSTCOMPILE)

py-progspace.o: $(srcdir)/python/py-progspace.c
	$(COMPILE) $(PYTHON_CFLAGS) $(srcdir)/python/py-progspace.c
	$(POSTCOMPILE)

py-signalevent.o: $(srcdir)/python/py-signalevent.c
	$(COMPILE) $(PYTHON_CFLAGS) $(srcdir)/python/py-signalevent.c
	$(POSTCOMPILE)

py-stopevent.o: $(srcdir)/python/py-stopevent.c
	$(COMPILE) $(PYTHON_CFLAGS) $(srcdir)/python/py-stopevent.c
	$(POSTCOMPILE)

py-symbol.o: $(srcdir)/python/py-symbol.c
	$(COMPILE) $(PYTHON_CFLAGS) $(srcdir)/python/py-symbol.c
	$(POSTCOMPILE)

py-symtab.o: $(srcdir)/python/py-symtab.c
	$(COMPILE) $(PYTHON_CFLAGS) $(srcdir)/python/py-symtab.c
	$(POSTCOMPILE)

py-threadevent.o: $(srcdir)/python/py-threadevent.c
	$(COMPILE) $(PYTHON_CFLAGS) $(srcdir)/python/py-threadevent.c
	$(POSTCOMPILE)

py-type.o: $(srcdir)/python/py-type.c
	$(COMPILE) $(PYTHON_CFLAGS) $(srcdir)/python/py-type.c
	$(POSTCOMPILE)

py-utils.o: $(srcdir)/python/py-utils.c
	$(COMPILE) $(PYTHON_CFLAGS) $(srcdir)/python/py-utils.c
	$(POSTCOMPILE)

py-value.o: $(srcdir)/python/py-value.c
	$(COMPILE) $(PYTHON_CFLAGS) $(srcdir)/python/py-value.c
	$(POSTCOMPILE)

py-varobj.o: $(srcdir)/python/py-varobj.c
	$(COMPILE) $(PYTHON_CFLAGS) $(srcdir)/python/py-varobj.c
	$(POSTCOMPILE)

#
# Dependency tracking.  Most of this is conditional on GNU Make being
# found by configure; if GNU Make is not found, we fall back to a
# simpler scheme.
#

@GMAKE_TRUE@ifeq ($(DEPMODE),depmode=gcc3)
# Note that we put the dependencies into a .Tpo file, then move them
# into place if the compile succeeds.  We need this because gcc does
# not atomically write the dependency output file.
@GMAKE_TRUE@override COMPILE.post = -c -o $@ -MT $@ -MMD -MP \
@GMAKE_TRUE@	-MF $(DEPDIR)/$(basename $(@F)).Tpo
@GMAKE_TRUE@override POSTCOMPILE = @mv $(DEPDIR)/$(basename $(@F)).Tpo \
@GMAKE_TRUE@	$(DEPDIR)/$(basename $(@F)).Po
@GMAKE_TRUE@else
@GMAKE_TRUE@override COMPILE.pre = source='$<' object='$@' libtool=no \
@GMAKE_TRUE@	DEPDIR=$(DEPDIR) $(DEPMODE) $(depcomp) $(CC)
# depcomp handles atomicity for us, so we don't need a postcompile
# step.
@GMAKE_TRUE@override POSTCOMPILE =
@GMAKE_TRUE@endif

# A list of all the objects we might care about in this build, for
# dependency tracking.
all_object_files = gdb.o $(LIBGDB_OBS) gdbtk-main.o \
	test-cp-name-parser.o

# Ensure that generated files are created early.  Use order-only
# dependencies if available.  They require GNU make 3.80 or newer,
# and the .VARIABLES variable was introduced at the same time.
@GMAKE_TRUE@ifdef .VARIABLES
@GMAKE_TRUE@$(all_object_files): | $(generated_files)
@GMAKE_TRUE@else
$(all_object_files) : $(generated_files)
@GMAKE_TRUE@endif

# Dependencies.
@GMAKE_TRUE@-include $(patsubst %.o, $(DEPDIR)/%.Po, $(all_object_files))

### end of the gdb Makefile.in.
