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

#
# 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-regs.o \
	tui-source.o \
	tui-stack.o \
	tui-win.o \
	tui-windata.o \
	tui-wingeneral.o \
	tui-winsource.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

#
# python sub directory definitons
#
SUBDIR_PYTHON_OBS = \
	python.o \
	py-auto-load.o \
	py-block.o \
	py-breakpoint.o \
	py-cmd.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-symbol.o \
	py-symtab.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-breakpoint.c \
	python/py-cmd.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-symbol.c \
	python/py-symtab.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.
INTERNAL_CPPFLAGS = @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.
# {X,T}M_CLIBS, defined in *config files, have host- and target-dependent libs.
# LIBIBERTY appears twice on purpose.
# If you have the Cygnus libraries installed,
# you can use 'CLIBS=$(INSTALLED_LIBS)' 'CDEPS='
INSTALLED_LIBS=-lbfd -lreadline -lopcodes -liberty -ldecnumber \
	$(XM_CLIBS) $(NAT_CLIBS) $(GDBTKLIBS) @LIBS@ \
	-lintl -liberty $(LIBGNU)
CLIBS = $(SIM) $(READLINE) $(OPCODES) $(BFD) $(INTL) $(LIBIBERTY) $(LIBDECNUMBER) \
	$(XM_CLIBS) $(NAT_CLIBS) $(GDBTKLIBS) @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

# 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-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 \
	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 \
	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 \
	dbug-rom.o dink32-rom.o ppcbug-rom.o m32r-rom.o dsrec.o monitor.o \
	remote-m32r-sdi.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 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 \
	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 \

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 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-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 gdbserver/win32-low.h \
gdbserver/i387-fp.h gdbserver/server.h gdbserver/terminal.h \
gdbserver/mem-break.h gdbserver/wincecompat.h gdbserver/target.h \
gdbserver/linux-low.h gdbserver/gdb_proc_service.h \
gdbserver/regcache.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_thread_db.h gdb_stat.h memory-map.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 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 \
gdb_locale.h 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 ada-operator.inc microblaze-tdep.h \
psymtab.h psympriv.h progspace.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 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 xml-support.o xml-syscall.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

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: $(DEPFILES) $(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
	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
aclocal_m4_deps = \
	configure.ac \
	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/memcmp.m4 \
	gnulib/m4/memmem.m4 \
	gnulib/m4/onceonly_2_57.m4 \
	gnulib/m4/stdint.m4 \
	gnulib/m4/string_h.m4 \
	gnulib/m4/wchar.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 \
	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-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.

hpux-thread.o: $(srcdir)/hpux-thread.c
	$(COMPILE) -I$(srcdir)/osf-share -I$(srcdir)/osf-share/HP800 \
		-I/usr/include/dce $(srcdir)/hpux-thread.c
	$(POSTCOMPILE)

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


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

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