# Copyright (C) 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
# 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
# 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@

# 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_DATA = @INSTALL_DATA@

DESTDIR =

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

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

MAKEHTML = $(MAKEINFO) --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@

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"`

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-sysroot option?
TARGET_SYSTEM_ROOT = @TARGET_SYSTEM_ROOT@
TARGET_SYSTEM_ROOT_DEFINE = @TARGET_SYSTEM_ROOT_DEFINE@

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

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

# Generated headers in the gnulib directory.  These must be listed
# so that they are generated before other files are compiled.
GNULIB_H = gnulib/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-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-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-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-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
#

# Name of the TUI program
TUI=gdbtui

SUBDIR_TUI_OBS = \
	tui-command.o \
	tui-data.o \
	tui-disasm.o \
	tui-file.o tui.o \
	tui-hooks.o \
	tui-interp.o \
	tui-io.o \
	tui-layout.o \
	tui-out.o \
	tui-main.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-main.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

#
# python sub directory definitons
#
SUBDIR_PYTHON_OBS = \
	python.o \
	py-auto-load.o \
	py-block.o \
	py-bpevent.o \
	py-breakpoint.o \
	py-cmd.o \
	py-continueevent.o \
	py-event.o \
	py-evtregistry.o \
	py-evts.o \
	py-exitedevent.o \
	py-frame.o \
	py-function.o \
	py-inferior.o \
	py-infthread.o \
	py-lazy-string.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

SUBDIR_PYTHON_SRCS = \
	python/python.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-event.c \
	python/py-evtregistry.c \
	python/py-evts.c \
	python/py-exitedevent.c \
	python/py-frame.c \
	python/py-function.c \
	python/py-inferior.c \
	python/py-infthread.c \
	python/py-lazy-string.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
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@

# -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@ @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@ @PYTHON_LIBS@ \
	$(LIBEXPAT) \
	$(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/osdata.dtd \
	$(srcdir)/features/threads.dtd $(srcdir)/features/traceframe-info.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

# 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 = \
	alphabsd-tdep.o alphafbsd-tdep.o alpha-linux-tdep.o alpha-mdebug-tdep.o \
	alphanbsd-tdep.o alphaobsd-tdep.o alpha-osf1-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-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-tdep.o \
	dicos-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-irix-tdep.o mips-linux-tdep.o \
	mipsnbsd-tdep.o mips-tdep.o \
	mn10300-linux-tdep.o mn10300-tdep.o \
	moxie-tdep.o \
	mt-tdep.o \
	nto-tdep.o \
	ppc-linux-tdep.o ppcnbsd-tdep.o ppcobsd-tdep.o ppc-sysv-tdep.o \
	rs6000-aix-tdep.o rs6000-tdep.o \
	s390-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 \
	spu-tdep.o spu-multiarch.o solib-spu.o \
	tic6x-tdep.o tic6x-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-irix.o solib-svr4.o solib-target.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 \
	corelow.o \
	windows-tdep.o \
	linux-record.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)" \
	"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`

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

# 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 \
	addrmap.c \
	auxv.c ax-general.c ax-gdb.c \
	bcache.c \
	bfd-target.c \
	block.c blockframe.c breakpoint.c buildsym.c \
	c-exp.y c-lang.c c-typeprint.c c-valprint.c \
	charset.c cli-out.c coffread.c coff-pe-read.c \
	complaints.c completer.c continuations.c corefile.c \
	cp-abi.c cp-support.c cp-namespace.c cp-valprint.c \
	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 \
	elfread.c environ.c eval.c event-loop.c event-top.c \
	exceptions.c expprint.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 gdbtypes.c gnu-v2-abi.c gnu-v3-abi.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 \
	language.c linespec.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-exp.y 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 reverse.c \
	sentinel-frame.c \
	serial.c ser-base.c ser-unix.c \
	solib.c solib-target.c source.c \
	stabsread.c stack.c std-regs.c symfile.c symfile-mem.c symmisc.c \
	symtab.c \
	target.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 vec.c \
	wrapper.c \
	xml-tdesc.c xml-support.c \
	inferior.c gdb_usleep.c \
	record.c gcore.c \
	jit.c \
	xml-syscall.c \
	annotate.c common/signals.c copying.c dfp.c gdb.c inf-child.c \
	regset.c sol-thread.c windows-termcap.c \
	common/common-utils.c common/xml-utils.c \
	common/ptid.c common/buffer.c

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 = osf-share/cma_debug_client.h	\
osf-share/HP800/cma_thread_io.h osf-share/cma_sequence.h \
osf-share/cma_mutex.h osf-share/cma_semaphore_defs.h \
osf-share/cma_list.h osf-share/cma_handle.h osf-share/cma_stack.h \
osf-share/cma_util.h osf-share/RIOS/cma_thread_io.h \
osf-share/cma_errors.h osf-share/cma_tcb_defs.h osf-share/cma_attr.h \
osf-share/cma_stack_int.h osf-share/cma_init.h \
osf-share/cma_deb_core.h osf-share/AT386/cma_thread_io.h \
osf-share/cma_sched.h \
common/gdb_signals.h common/gdb_thread_db.h common/i386-xstate.h \
common/linux-ptrace.h \
proc-utils.h arm-tdep.h ax-gdb.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 \
i386bsd-nat.h xml-support.h xml-tdesc.h alphabsd-tdep.h gdb_obstack.h \
ia64-tdep.h ada-lang.h varobj.h frv-tdep.h nto-tdep.h serial.h \
c-lang.h d-lang.h frame.h event-loop.h block.h cli/cli-setshow.h	\
cli/cli-decode.h cli/cli-cmds.h cli/cli-dump.h cli/cli-utils.h \
cli/cli-script.h macrotab.h symtab.h version.h gnulib/wchar.in.h \
gnulib/string.in.h gnulib/str-two-way.h \
gnulib/stdint.in.h remote.h gdb.h sparc-nat.h \
gdbthread.h dwarf2-frame.h nbsd-nat.h dcache.h \
amd64-nat.h s390-tdep.h arm-linux-tdep.h exceptions.h macroscope.h \
gdbarch.h bsd-uthread.h gdb_stat.h memory-map.h	memrange.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 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 libunwind-frame.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 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 xcoffsolib.h sol2-tdep.h gregset.h sh-tdep.h \
expression.h score-tdep.h gdb_select.h ser-tcp.h buildsym.h valprint.h \
call-cmds.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 \
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 solib-irix.h amd64-tdep.h \
doublest.h regset.h hppa-tdep.h ppc-linux-tdep.h rs6000-tdep.h \
common/gdb_locale.h common/gdb_dirent.h arch-utils.h trad-frame.h gnu-nat.h \
language.h nbsd-tdep.h wrapper.h solib-svr4.h \
macroexp.h ui-file.h regcache.h gdb_string.h tracepoint.h i386-tdep.h \
inf-child.h p-lang.h event-top.h gdbtypes.h user-regs.h \
regformats/regdef.h config/alpha/nm-osf3.h  config/i386/nm-i386gnu.h \
config/i386/nm-fbsd.h \
config/nm-nto.h config/sparc/nm-sol2.h config/nm-linux.h \
config/rs6000/nm-rs6000.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 i386-nat.h linux-record.h moxie-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 \
solib-darwin.h solib-ia64-hpux.h solib-spu.h windows-nat.h xcoffread.h \
gnulib/extra/arg-nonnull.h gnulib/extra/c++defs.h gnulib/extra/warn-on-use.h \
gnulib/stddef.in.h inline-frame.h \
common/common-utils.h common/xml-utils.h common/buffer.h common/ptid.h \
common/linux-osdata.h

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

HFILES_WITH_SRCDIR = ../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

# {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 \
	auxv.o \
	bfd-target.o \
	blockframe.o breakpoint.o findvar.o regcache.o \
	charset.o continuations.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 symmisc.o linespec.o dictionary.o \
	infcall.o \
	infcmd.o infrun.o \
	expprint.o environ.o stack.o thread.o \
	exceptions.o \
	filesystem.o \
	inf-child.o \
	interps.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 osabi.o copying.o \
	memattr.o mem-break.o target.o parse.o language.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 \
	ada-lang.o c-lang.o d-lang.o f-lang.o objc-lang.o \
	ada-tasks.o \
	ui-out.o cli-out.o \
	varobj.o vec.o wrapper.o \
	jv-lang.o jv-valprint.o jv-typeprint.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 regset.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 gcore.o \
	jit.o progspace.o \
	common-utils.o buffer.o ptid.o

TSOBS = inflow.o

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

# 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 | data-directory

# For now, shortcut the "configure GDB for fewer languages" stuff.
YYFILES = c-exp.c \
	cp-name-parser.c \
	objc-exp.c \
	ada-lex.c \
	ada-exp.c \
	jv-exp.c \
	f-exp.c m2-exp.c p-exp.c
YYOBJ = c-exp.o \
	cp-name-parser.o \
	objc-exp.o \
	ada-exp.o \
	jv-exp.o \
	f-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 \
	$(GNULIB_H) $(NAT_GENERATED_FILES)

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

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

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

# 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

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

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

# 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)
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 '#include "call-cmds.h" /* For initialize_all_files.  */' >>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

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

$(TUI)$(EXEEXT): tui-main.o libgdb.a $(ADD_DEPS) $(CDEPS) $(TDEPLIBS)
	rm -f $(TUI)$(EXEEXT)
	$(CC_LD) $(INTERNAL_LDFLAGS) $(WIN32LDAPP) \
		-o $(TUI)$(EXEEXT) tui-main.o libgdb.a \
		$(TDEPLIBS) $(TUI_LIBRARY) $(CLIBS) $(LOADLIBES)

# Convenience rule to handle recursion.
$(LIBGNU) $(GNULIB_H): all-lib
all-lib: gnulib/Makefile
	@$(MAKE) $(FLAGS_TO_PASS) DO=all DODIRS=gnulib 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

# 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

# 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 $(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)/*

.PHONY: clean-tui
clean-tui:
	rm -f $(TUI)$(EXEEXT)

# 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 -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 .gdbinit
	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 \
	        objc-exp.c \
		jv-exp.tab \
		f-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/Makefile: gnulib/Makefile.in gnulib/Makefile.in config.status @frags@
	CONFIG_FILES="gnulib/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

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

ACLOCAL = aclocal
ACLOCAL_AMFLAGS = -I gnulib/m4 -I ../config
aclocal_m4_deps = \
	configure.ac \
	gnulib/m4/00gnulib.m4 \
	gnulib/m4/extensions.m4 \
	gnulib/m4/gnulib-common.m4 \
	gnulib/m4/gnulib-comp.m4 \
	gnulib/m4/include_next.m4 \
	gnulib/m4/longlong.m4 \
	gnulib/m4/memchr.m4 \
	gnulib/m4/memmem.m4 \
	gnulib/m4/mmap-anon.m4 \
	gnulib/m4/multiarch.m4 \
	gnulib/m4/onceonly.m4 \
	gnulib/m4/stddef_h.m4 \
	gnulib/m4/stdint.m4 \
	gnulib/m4/string_h.m4 \
	gnulib/m4/warn-on-use.m4 \
	gnulib/m4/wchar_h.m4 \
	gnulib/m4/wchar_t.m4 \
	gnulib/m4/wint_t.m4 \
	../config/extensions.m4 \
	../config/lead-dot.m4 \
	../config/proginstall.m4 \
	../bfd/bfd.m4 \
	../config/acinclude.m4 \
	../config/override.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

$(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
	rm -f version.c-tmp version.c
	echo '#include "version.h"' >> version.c-tmp
	echo 'const char version[] = "'"`sed q ${srcdir}/version.in`"'";' >> version.c-tmp
	echo 'const char host_name[] = "$(host_alias)";' >> version.c-tmp
	echo 'const char target_name[] = "$(target_alias)";' >> version.c-tmp
	mv version.c-tmp 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 = \
	aix-thread.c \
	alpha-nat.c alphabsd-nat.c alpha-linux-nat.c \
	alpha-tdep.c alpha-mdebug-tdep.c \
	alpha-linux-tdep.c alpha-osf1-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 corelow.c \
	dcache.c dicos-tdep.c darwin-nat.c \
	exec.c \
	fbsd-nat.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 i386-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 \
	inf-ptrace.c inf-ttrace.c \
	irix5-nat.c \
	libunwind-frame.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 \
	mips-linux-nat.c mips-linux-tdep.c \
	mips-irix-tdep.c \
	mips-tdep.c \
	mipsnbsd-nat.c mipsnbsd-tdep.c \
	mips64obsd-nat.c mips64obsd-tdep.c \
	nbsd-nat.c nbsd-tdep.c obsd-tdep.c \
	solib-osf.c \
	somread.c solib-som.c \
	posix-hdep.c \
	ppc-sysv-tdep.c ppc-linux-nat.c ppc-linux-tdep.c \
	ppcnbsd-nat.c ppcnbsd-tdep.c \
	ppcobsd-nat.c ppcobsd-tdep.c \
	procfs.c \
	remote-m32r-sdi.c remote-mips.c \
	remote-sim.c \
	dcache.c \
	rs6000-nat.c rs6000-tdep.c \
	s390-tdep.c s390-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-irix.c solib-svr4.c solib-sunos.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-tdep.c \
	sparcnbsd-nat.c sparcnbsd-tdep.c sparcobsd-tdep.c \
	spu-linux-nat.c spu-tdep.c spu-multiarch.c solib-spu.c \
	v850-tdep.c \
	vax-nat.c vax-tdep.c vaxbsd-nat.c vaxnbsd-tdep.c \
	windows-nat.c windows-tdep.c \
	xcoffread.c xcoffsolib.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.

# main.o needs an explicit build rule to get TARGET_SYSTEM_ROOT and BINDIR.
main.o: $(srcdir)/main.c
	$(COMPILE) $(TARGET_SYSTEM_ROOT_DEFINE) -DBINDIR=\"$(bindir)\" $(srcdir)/main.c
	$(POSTCOMPILE)

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

# 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' \
	     -e "s/^\(#line.*\)`basename $<`/\1`echo $<|sed 's/\//\\\\\//g'`/" \
	  < $@.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)


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

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)

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

linux-procfs.o: $(srcdir)/common/linux-procfs.c
	$(COMPILE) $(srcdir)/common/linux-procfs.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-main.o: $(srcdir)/tui/tui-main.c
	$(COMPILE) $(srcdir)/tui/tui-main.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/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-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-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-frame.o: $(srcdir)/python/py-frame.c
	$(COMPILE) $(PYTHON_CFLAGS) $(srcdir)/python/py-frame.c
	$(POSTCOMPILE)

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

py-inferior.o: $(srcdir)/python/py-inferior.c
	$(COMPILE) $(PYTHON_CFLAGS) $(srcdir)/python/py-inferior.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-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)

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