# Copyright (C) 1989-2024 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/>.

# Please keep lists in this file sorted alphabetically, with one item per line.
# Here are the general guidelines for ordering files and directories:
#
#   - Files come before directories.
#   - The extensions are not taken into account when comparing filenames, except
#     if the filenames are otherwise equal.
#   - A filename that is a prefix of another one comes before.
#   - Underscores and dashes are treated equally, and come before alphanumeric
#     characters.
#
# For example:
#
# SOME_FILES = \
# 	foo.c \
# 	foo.h \
# 	foo-bar.c \
# 	foobar.c \
# 	foo/bar.c

prefix = @prefix@
exec_prefix = @exec_prefix@

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

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

install_sh = @install_sh@

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

SHELL = @SHELL@
EXEEXT = @EXEEXT@

AWK = @AWK@
LN_S = @LN_S@

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

DESTDIR =

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

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

PACKAGE = @PACKAGE@
CATALOGS = @CATALOGS@

CC = @CC@
CXX = @CXX@
CXX_DIALECT = @CXX_DIALECT@

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

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

include $(srcdir)/silent-rules.mk

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

# CXXFLAGS is at the very end on purpose, so that user-supplied flags can
# override internal flags.
COMPILE = $(ECHO_CXX) $(COMPILE.pre) $(INTERNAL_CFLAGS) $(CXXFLAGS) \
	$(COMPILE.post)

YACC = @YACC@

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

YLWRAP = $(srcdir)/../ylwrap

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

MAKEHTML = $(MAKEINFO_CMD) --html
MAKEHTMLFLAGS =

LIBTOOL = @LIBTOOL@

# Set this up with gcc if you have gnu ld and the loader will print out
# line numbers for undefined references.
#CC_LD = g++ -static
CC_LD = $(LIBTOOL) $(SILENT_FLAG) --mode=link $(CXX) $(CXX_DIALECT)

# 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 CTF library?  Typically in ../libctf.
LIBCTF = @LIBCTF@
CTF_DEPS = @CTF_DEPS@

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

# This is where we get zlib from.  zlibdir is -L../zlib and zlibinc is
# -I../zlib, unless we were configured with --with-system-zlib, in which
# case both are empty.
ZLIB = @zlibdir@ -lz
ZLIBINC = @zlibinc@

ZSTD_CFLAGS = @ZSTD_CFLAGS@
ZSTD_LIBS = @ZSTD_LIBS@

# 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.
READLINE_DIR = ../readline/readline
READLINE_SRC = $(srcdir)/$(READLINE_DIR)
READLINE = @READLINE@
READLINE_DEPS = @READLINE_DEPS@
READLINE_CFLAGS = @READLINE_CFLAGS@

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

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

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

# Where is libxxhash? This will be empty if libxxhash was not
# available.
LIBXXHASH = @LIBXXHASH@

# Where is libipt?  This will be empty if libipt was not available.
LIBIPT = @LIBIPT@

# How to find GMP and MPFR
GMPLIBS = @GMPLIBS@
GMPINC = @GMPINC@

# GNU source highlight library.
SRCHIGH_LIBS = @SRCHIGH_LIBS@
SRCHIGH_CFLAGS = @SRCHIGH_CFLAGS@

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

PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
PTHREAD_LIBS = @PTHREAD_LIBS@

DEBUGINFOD_CFLAGS = @DEBUGINFOD_CFLAGS@
DEBUGINFOD_LIBS = @DEBUGINFOD_LIBS@

AMD_DBGAPI_CFLAGS = @AMD_DBGAPI_CFLAGS@
AMD_DBGAPI_LIBS = @AMD_DBGAPI_LIBS@

RDYNAMIC = @RDYNAMIC@

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

# Where is the ICONV library?  This will be empty if in libc or not available.
LIBICONV = @LIBICONV@

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

# Code signing.
CODESIGN = codesign
CODESIGN_CERT = @CODESIGN_CERT@

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

# Helper code from gnulib.
GNULIB_PARENT_DIR = ..
include $(GNULIB_PARENT_DIR)/gnulib/Makefile.gnulib.inc

# For libbacktrace.
LIBBACKTRACE_INC=@LIBBACKTRACE_INC@
LIBBACKTRACE_LIB=@LIBBACKTRACE_LIB@

SUPPORT = ../gdbsupport
LIBSUPPORT = $(SUPPORT)/libgdbsupport.a
INCSUPPORT = -I$(srcdir)/.. -I..

#
# CLI sub directory definitons
#
SUBDIR_CLI_SRCS = \
	cli/cli-cmds.c \
	cli/cli-decode.c \
	cli/cli-dump.c \
	cli/cli-interp.c \
	cli/cli-logging.c \
	cli/cli-option.c \
	cli/cli-script.c \
	cli/cli-setshow.c \
	cli/cli-style.c \
	cli/cli-utils.c

SUBDIR_CLI_OBS = $(patsubst %.c,%.o,$(SUBDIR_CLI_SRCS))

#
# MI sub directory definitons
#
SUBDIR_MI_SRCS = \
	mi/mi-cmd-break.c \
	mi/mi-cmd-catch.c \
	mi/mi-cmd-disas.c \
	mi/mi-cmd-env.c \
	mi/mi-cmd-file.c \
	mi/mi-cmd-info.c \
	mi/mi-cmd-stack.c \
	mi/mi-cmd-target.c \
	mi/mi-cmd-var.c \
	mi/mi-cmds.c \
	mi/mi-common.c \
	mi/mi-console.c \
	mi/mi-getopt.c \
	mi/mi-interp.c \
	mi/mi-main.c \
	mi/mi-out.c \
	mi/mi-parse.c \
	mi/mi-symbol-cmds.c

SUBDIR_MI_OBS = $(patsubst %.c,%.o,$(SUBDIR_MI_SRCS))

#
# TUI sub directory definitions
#
SUBDIR_TUI_SRCS = \
	tui/tui.c \
	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-location.c \
	tui/tui-regs.c \
	tui/tui-source.c \
	tui/tui-status.c \
	tui/tui-win.c \
	tui/tui-wingeneral.c \
	tui/tui-winsource.c

SUBDIR_TUI_OBS = $(patsubst %.c,%.o,$(SUBDIR_TUI_SRCS))

SUBDIR_TUI_DEPS =
SUBDIR_TUI_LDFLAGS =
SUBDIR_TUI_CFLAGS = -DTUI=1

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

SUBDIR_GCC_COMPILE_OBS = $(patsubst %.c,%.o,$(filter %.c,$(SUBDIR_GCC_COMPILE_SRCS)))

#
# Guile sub directory definitons for guile support.
#
SUBDIR_GUILE_SRCS = \
	guile/guile.c \
	guile/scm-arch.c \
	guile/scm-auto-load.c \
	guile/scm-block.c \
	guile/scm-breakpoint.c \
	guile/scm-cmd.c \
	guile/scm-disasm.c \
	guile/scm-exception.c \
	guile/scm-frame.c \
	guile/scm-gsmob.c \
	guile/scm-iterator.c \
	guile/scm-lazy-string.c \
	guile/scm-math.c \
	guile/scm-objfile.c \
	guile/scm-param.c \
	guile/scm-ports.c \
	guile/scm-pretty-print.c \
	guile/scm-progspace.c \
	guile/scm-safe-call.c \
	guile/scm-string.c \
	guile/scm-symbol.c \
	guile/scm-symtab.c \
	guile/scm-type.c \
	guile/scm-utils.c \
	guile/scm-value.c

SUBDIR_GUILE_OBS = $(patsubst %.c,%.o,$(SUBDIR_GUILE_SRCS))

SUBDIR_GUILE_DEPS =
SUBDIR_GUILE_LDFLAGS =
SUBDIR_GUILE_CFLAGS =

#
# python sub directory definitons
#
SUBDIR_PYTHON_SRCS = \
	python/py-arch.c \
	python/py-auto-load.c \
	python/py-block.c \
	python/py-bpevent.c \
	python/py-breakpoint.c \
	python/py-cmd.c \
	python/py-connection.c \
	python/py-continueevent.c \
	python/py-dap.c \
	python/py-disasm.c \
	python/py-event.c \
	python/py-evtregistry.c \
	python/py-evts.c \
	python/py-exitedevent.c \
	python/py-finishbreakpoint.c \
	python/py-frame.c \
	python/py-framefilter.c \
	python/py-function.c \
	python/py-gdb-readline.c \
	python/py-inferior.c \
	python/py-infevents.c \
	python/py-infthread.c \
	python/py-instruction.c \
	python/py-lazy-string.c \
	python/py-linetable.c \
	python/py-membuf.c \
	python/py-mi.c \
	python/py-micmd.c \
	python/py-newobjfileevent.c \
	python/py-objfile.c \
	python/py-param.c \
	python/py-prettyprint.c \
	python/py-progspace.c \
	python/py-record.c \
	python/py-record-btrace.c \
	python/py-record-full.c \
	python/py-registers.c \
	python/py-signalevent.c \
	python/py-stopevent.c \
	python/py-symbol.c \
	python/py-symtab.c \
	python/py-threadevent.c \
	python/py-tui.c \
	python/py-type.c \
	python/py-unwind.c \
	python/py-utils.c \
	python/py-value.c \
	python/py-varobj.c \
	python/py-xmethods.c \
	python/python.c

SUBDIR_PYTHON_OBS = $(patsubst %.c,%.o,$(SUBDIR_PYTHON_SRCS))

SUBDIR_PYTHON_DEPS =
SUBDIR_PYTHON_LDFLAGS =
SUBDIR_PYTHON_CFLAGS =

SELFTESTS_SRCS = \
	disasm-selftests.c \
	gdbarch-selftests.c \
	selftest-arch.c \
	unittests/array-view-selftests.c \
	unittests/child-path-selftests.c \
	unittests/cli-utils-selftests.c \
	unittests/command-def-selftests.c \
	unittests/common-utils-selftests.c \
	unittests/copy_bitwise-selftests.c \
	unittests/enum-flags-selftests.c \
	unittests/environ-selftests.c \
	unittests/filtered_iterator-selftests.c \
	unittests/format_pieces-selftests.c \
	unittests/frame_info_ptr-selftests.c \
	unittests/function-view-selftests.c \
	unittests/gdb_tilde_expand-selftests.c \
	unittests/gmp-utils-selftests.c \
	unittests/intrusive_list-selftests.c \
	unittests/lookup_name_info-selftests.c \
	unittests/memory-map-selftests.c \
	unittests/memrange-selftests.c \
	unittests/offset-type-selftests.c \
	unittests/observable-selftests.c \
	unittests/packed-selftests.c \
	unittests/parallel-for-selftests.c \
	unittests/parse-connection-spec-selftests.c \
	unittests/path-join-selftests.c \
	unittests/ptid-selftests.c \
	unittests/main-thread-selftests.c \
	unittests/mkdir-recursive-selftests.c \
	unittests/rsp-low-selftests.c \
	unittests/scoped_fd-selftests.c \
	unittests/scoped_ignore_signal-selftests.c \
	unittests/scoped_mmap-selftests.c \
	unittests/scoped_restore-selftests.c \
	unittests/search-memory-selftests.c \
	unittests/style-selftests.c \
	unittests/tracepoint-selftests.c \
	unittests/tui-selftests.c \
	unittests/ui-file-selftests.c \
	unittests/unique_xmalloc_ptr_char.c \
	unittests/unpack-selftests.c \
	unittests/utils-selftests.c \
	unittests/vec-utils-selftests.c \
	unittests/xml-utils-selftests.c

SELFTESTS_OBS = $(patsubst %.c,%.o,$(SELFTESTS_SRCS))

SUBDIR_TARGET_SRCS = target/target.c target/waitstatus.c
SUBDIR_TARGET_OBS = $(patsubst %.c,%.o,$(SUBDIR_TARGET_SRCS))


# 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.la
# Where are the other opcode tables which only have header file
# versions?
OP_INCLUDE = $(INCLUDE_DIR)/opcode
# See TOP_CFLAGS as well.
OPCODES_CFLAGS = -I$(OP_INCLUDE)

# Allow includes like "opcodes/mumble.h".
TOP_CFLAGS = -I$(top_srcdir)/..

# 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-main.c \
	gdbtk/generic/gdbtk-register.c \
	gdbtk/generic/gdbtk-stack.c \
	gdbtk/generic/gdbtk-varobj.c \
	gdbtk/generic/gdbtk-wrapper.c

SUBDIR_GDBTK_DEPS = $(LIBGUI) $(TCL_DEPS) $(TK_DEPS)
SUBDIR_GDBTK_LDFLAGS =
SUBDIR_GDBTK_CFLAGS = -DGDBTK

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

CONFIG_SRC_SUBDIR = arch cli dwarf2 mi compile tui unittests guile python \
	target nat
CONFIG_DEP_SUBDIR = $(addsuffix /$(DEPDIR),$(CONFIG_SRC_SUBDIR))

# -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)/config \
	-DLOCALEDIR="\"$(localedir)\"" $(DEFS)

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

PROFILE_CFLAGS = @PROFILE_CFLAGS@

# These are specifically reserved for setting from the command line
# when running make.  I.E.: "make CFLAGS=-Wmissing-prototypes".
CFLAGS = @CFLAGS@
CXXFLAGS = @CXXFLAGS@
CPPFLAGS = @CPPFLAGS@

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

# INTERNAL_CFLAGS is the aggregate of all other *CFLAGS macros.
INTERNAL_CFLAGS_BASE = \
	$(GLOBAL_CFLAGS) $(PROFILE_CFLAGS) \
	$(GDB_CFLAGS) $(OPCODES_CFLAGS) $(BFD_CFLAGS) $(INCLUDE_CFLAGS) \
	$(READLINE_CFLAGS) $(ZLIBINC) $(ZSTD_CFLAGS) $(LIBDECNUMBER_CFLAGS) \
	$(INTL_CFLAGS) $(INCGNU) $(INCSUPPORT) $(LIBBACKTRACE_INC) \
	$(ENABLE_CFLAGS) $(INTERNAL_CPPFLAGS) $(SRCHIGH_CFLAGS) \
	$(TOP_CFLAGS) $(PTHREAD_CFLAGS) $(DEBUGINFOD_CFLAGS) $(GMPINC) \
	$(AMD_DBGAPI_CFLAGS)
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 = \
	$(CXXFLAGS) $(GLOBAL_CFLAGS) $(MH_LDFLAGS) \
	$(LDFLAGS) $(CONFIG_LDFLAGS) $(PTHREAD_CFLAGS)

# 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) $(LIBCTF) $(BFD) $(ZLIB) $(ZSTD_LIBS) \
        $(LIBSUPPORT) $(INTL) $(LIBIBERTY) $(LIBDECNUMBER) \
	$(XM_CLIBS) $(GDBTKLIBS)  $(LIBBACKTRACE_LIB) \
	@LIBS@ @GUILE_LIBS@ @PYTHON_LIBS@ $(AMD_DBGAPI_LIBS) \
	$(LIBEXPAT) $(LIBLZMA) $(LIBBABELTRACE) $(LIBIPT) \
	$(WIN32LIBS) $(LIBGNU) $(LIBGNU_EXTRA_LIBS) $(LIBICONV) \
	$(GMPLIBS) $(SRCHIGH_LIBS) $(LIBXXHASH) $(PTHREAD_LIBS) \
	$(DEBUGINFOD_LIBS) $(LIBBABELTRACE_LIB)
CDEPS = $(NAT_CDEPS) $(SIM) $(BFD) $(READLINE_DEPS) $(CTF_DEPS) \
	$(OPCODES) $(INTL_DEPS) $(LIBIBERTY) $(CONFIG_DEPS) $(LIBGNU) \
	$(LIBSUPPORT)

DIST = gdb

RUNTEST = runtest
RUNTESTFLAGS =

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

# Build the ser-*.o files the host supports.  This includes ser-unix.o
# for any system that supports a POSIX interface to the serial port.
# See configure.ac.
SER_HARDWIRE = @SER_HARDWIRE@

# 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 object files that require the amd-dbgapi
# target to be available (used with --enable-targets=all).
ALL_AMD_DBGAPI_TARGET_OBS = \
	amdgpu-tdep.o \
	solib-rocm.o

# All target-dependent objects files that require 64-bit CORE_ADDR
# (used with --enable-targets=all --enable-64-bit-bfd).
ALL_64_TARGET_OBS = \
	aarch64-fbsd-tdep.o \
	aarch64-linux-tdep.o \
	aarch64-newlib-tdep.o \
	aarch64-ravenscar-thread.o \
	aarch64-tdep.o \
	alpha-bsd-tdep.o \
	alpha-linux-tdep.o \
	alpha-mdebug-tdep.o \
	alpha-netbsd-tdep.o \
	alpha-obsd-tdep.o \
	alpha-tdep.o \
	amd64-darwin-tdep.o \
	amd64-dicos-tdep.o \
	amd64-fbsd-tdep.o \
	amd64-linux-tdep.o \
	amd64-netbsd-tdep.o \
	amd64-obsd-tdep.o \
	amd64-ravenscar-thread.o \
	amd64-sol2-tdep.o \
	amd64-tdep.o \
	amd64-windows-tdep.o \
	arch/aarch64.o \
	arch/aarch64-insn.o \
	arch/aarch64-mte-linux.o \
	arch/aarch64-scalable-linux.o \
	arch/amd64.o \
	arch/riscv.o \
	bpf-tdep.o \
	ia64-linux-tdep.o \
	ia64-tdep.o \
	ia64-vms-tdep.o \
	loongarch-linux-tdep.o \
	loongarch-tdep.o \
	mips-fbsd-tdep.o \
	mips-linux-tdep.o \
	mips-netbsd-tdep.o \
	mips-sde-tdep.o \
	mips-tdep.o \
	mips64-obsd-tdep.o \
	riscv-fbsd-tdep.o \
	riscv-linux-tdep.o \
	riscv-none-tdep.o \
	riscv-ravenscar-thread.o \
	riscv-tdep.o \
	sparc64-fbsd-tdep.o \
	sparc64-linux-tdep.o \
	sparc64-netbsd-tdep.o \
	sparc64-obsd-tdep.o \
	sparc64-sol2-tdep.o \
	sparc64-tdep.o \
	tilegx-linux-tdep.o \
	tilegx-tdep.o


# All other target-dependent objects files (used with --enable-targets=all).
ALL_TARGET_OBS = \
	aarch32-tdep.o \
	arc-linux-tdep.o \
	arc-newlib-tdep.o \
	arc-tdep.o \
	arch/aarch32.o \
	arch/arc.o \
	arch/arm.o \
	arch/arm-get-next-pcs.o \
	arch/arm-linux.o \
	arch/i386.o \
	arch/loongarch.o \
	arch/ppc-linux-common.o \
	arm-bsd-tdep.o \
	arm-fbsd-tdep.o \
	arm-linux-tdep.o \
	arm-netbsd-tdep.o \
	arm-none-tdep.o \
	arm-obsd-tdep.o \
	arm-pikeos-tdep.o \
	arm-tdep.o \
	arm-wince-tdep.o \
	avr-tdep.o \
	bfin-linux-tdep.o \
	bfin-tdep.o \
	bsd-uthread.o \
	cris-linux-tdep.o \
	cris-tdep.o \
	csky-linux-tdep.o \
	csky-tdep.o \
	dicos-tdep.o \
	fbsd-tdep.o \
	frv-linux-tdep.o \
	frv-tdep.o \
	ft32-tdep.o \
	glibc-tdep.o \
	h8300-tdep.o \
	hppa-bsd-tdep.o \
	hppa-linux-tdep.o \
	hppa-netbsd-tdep.o \
	hppa-obsd-tdep.o \
	hppa-tdep.o \
	i386-bsd-tdep.o \
	i386-darwin-tdep.o \
	i386-dicos-tdep.o \
	i386-fbsd-tdep.o \
	i386-gnu-tdep.o \
	i386-go32-tdep.o \
	i386-linux-tdep.o \
	i386-netbsd-tdep.o \
	i386-nto-tdep.o \
	i386-obsd-tdep.o \
	i386-sol2-tdep.o \
	i386-tdep.o \
	i386-windows-tdep.o \
	i387-tdep.o \
	iq2000-tdep.o \
	linux-record.o \
	linux-tdep.o \
	lm32-tdep.o \
	m32c-tdep.o \
	m32r-linux-tdep.o \
	m32r-tdep.o \
	m68hc11-tdep.o \
	m68k-bsd-tdep.o \
	m68k-linux-tdep.o \
	m68k-tdep.o \
	mep-tdep.o \
	microblaze-linux-tdep.o \
	microblaze-tdep.o \
	mn10300-linux-tdep.o \
	mn10300-tdep.o \
	moxie-tdep.o \
	msp430-tdep.o \
	netbsd-tdep.o \
	nds32-tdep.o \
	nios2-linux-tdep.o \
	nios2-tdep.o \
	nto-tdep.o \
	obsd-tdep.o \
	or1k-linux-tdep.o \
	or1k-tdep.o \
	ppc-fbsd-tdep.o \
	ppc-linux-tdep.o \
	ppc-netbsd-tdep.o \
	ppc-obsd-tdep.o \
	ppc-ravenscar-thread.o \
	ppc-sysv-tdep.o \
	ppc64-tdep.o \
	ravenscar-thread.o \
	rl78-tdep.o \
	rs6000-aix-tdep.o \
	rs6000-lynx178-tdep.o \
	rs6000-tdep.o \
	rx-tdep.o \
	s12z-tdep.o \
	s390-linux-tdep.o \
	s390-tdep.o \
	sh-linux-tdep.o \
	sh-netbsd-tdep.o \
	sh-tdep.o \
	sol2-tdep.o \
	solib-aix.o \
	solib-darwin.o \
	solib-dsbt.o \
	solib-frv.o \
	solib-svr4.o \
	sparc-linux-tdep.o \
	sparc-netbsd-tdep.o \
	sparc-obsd-tdep.o \
	sparc-ravenscar-thread.o \
	sparc-sol2-tdep.o \
	sparc-tdep.o \
	symfile-mem.o \
	tic6x-linux-tdep.o \
	tic6x-tdep.o \
	v850-tdep.o \
	vax-netbsd-tdep.o \
	vax-tdep.o \
	windows-tdep.o \
	x86-tdep.o \
	xcoffread.o \
	xstormy16-tdep.o \
	xtensa-config.o \
	xtensa-linux-tdep.o \
	xtensa-tdep.o \
	z80-tdep.o

# The following native-target dependent variables are defined on
# configure.nat.
NAT_FILE = @NAT_FILE@
NATDEPFILES = @NATDEPFILES@
NAT_CDEPS = @NAT_CDEPS@
LOADLIBES = @LOADLIBES@
MH_CFLAGS = @MH_CFLAGS@
XM_CLIBS = @XM_CLIBS@
NAT_GENERATED_FILES = @NAT_GENERATED_FILES@
NM_H = @NM_H@
HAVE_NATIVE_GCORE_HOST = @HAVE_NATIVE_GCORE_HOST@

# Native-target dependent makefile fragment comes in here.
@nat_makefile_frag@

# End of native-target dependent variables.

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)" \
	"CXX_DIALECT=$(CXX_DIALECT)" \
	"CXXFLAGS=$(CXXFLAGS)" \
	"DLLTOOL=$(DLLTOOL)" \
	"LDFLAGS=$(LDFLAGS)" \
	"RANLIB=$(RANLIB)" \
	"MAKEINFO=$(MAKEINFO)" \
	"MAKEINFOFLAGS=$(MAKEINFOFLAGS)" \
	"MAKEINFO_EXTRA_FLAGS=$(MAKEINFO_EXTRA_FLAGS)" \
	"MAKEHTML=$(MAKEHTML)" \
	"MAKEHTMLFLAGS=$(MAKEHTMLFLAGS)" \
	"INSTALL=$(INSTALL)" \
	"INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \
	"INSTALL_SCRIPT=$(INSTALL_SCRIPT)" \
	"INSTALL_DATA=$(INSTALL_DATA)" \
	"RUNTEST=$(RUNTEST)" \
	"RUNTESTFLAGS=$(RUNTESTFLAGS)"

# Flags that we pass when building the testsuite.

# empty for native, $(target_alias)/ for cross
target_subdir = @target_subdir@

CC_FOR_TARGET = ` \
  if [ -f $${rootme}/../gcc/xgcc ] ; then \
    if [ -f $${rootme}/../$(target_subdir)newlib/Makefile ] ; then \
      echo $${rootme}/../gcc/xgcc -B$${rootme}/../gcc/ -idirafter $${rootme}/$(target_subdir)newlib/targ-include -idirafter $${rootsrc}/../$(target_subdir)newlib/libc/include -nostdinc -B$${rootme}/../$(target_subdir)newlib/; \
    else \
      echo $${rootme}/../gcc/xgcc -B$${rootme}/../gcc/; \
    fi; \
  else \
    if [ "$(host_canonical)" = "$(target_canonical)" ] ; then \
      echo $(CC); \
    else \
      t='$(program_transform_name)'; echo gcc | sed -e '' $$t; \
    fi; \
  fi`

CXX_FOR_TARGET = ` \
  if [ -f $${rootme}/../gcc/xg++ ] ; then \
    if [ -f $${rootme}/../$(target_subdir)newlib/Makefile ] ; then \
      echo $${rootme}/../gcc/xg++ -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/xg++ -B$${rootme}/../gcc/; \
    fi; \
  else \
    if [ "$(host_canonical)" = "$(target_canonical)" ] ; then \
      echo $(CXX); \
    else \
      t='$(program_transform_name)'; echo g++ | sed -e '' $$t; \
    fi; \
  fi`

# The use of $$(x_FOR_TARGET) reduces the command line length by not
# duplicating the lengthy definition.
TARGET_FLAGS_TO_PASS = \
	"prefix=$(prefix)" \
	"exec_prefix=$(exec_prefix)" \
	"against=$(against)" \
	'CC=$$(CC_FOR_TARGET)' \
	"CC_FOR_TARGET=$(CC_FOR_TARGET)" \
	"CFLAGS=$(CFLAGS)" \
	'CXX=$$(CXX_FOR_TARGET)' \
	"CXX_FOR_TARGET=$(CXX_FOR_TARGET)" \
	"CXXFLAGS=$(CXXFLAGS)" \
	"INSTALL=$(INSTALL)" \
	"INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \
	"INSTALL_DATA=$(INSTALL_DATA)" \
	"MAKEINFO=$(MAKEINFO)" \
	"MAKEHTML=$(MAKEHTML)" \
	"RUNTEST=$(RUNTEST)" \
	"RUNTESTFLAGS=$(RUNTESTFLAGS)" \
	"FORCE_PARALLEL=$(FORCE_PARALLEL)" \
	"TESTS=$(TESTS)" \
	"GDB_DEBUG=$(GDB_DEBUG)" \
	"GDBSERVER_DEBUG=$(GDBSERVER_DEBUG)" \


# All source files that go into linking GDB.

# Files that should wind up in SFILES and whose corresponding .o
# should be in COMMON_OBS.
COMMON_SFILES = \
	ada-lang.c \
	ada-tasks.c \
	ada-typeprint.c \
	ada-valprint.c \
	ada-varobj.c \
	addrmap.c \
	agent.c \
	alloc.c \
	annotate.c \
	arch-utils.c \
	async-event.c \
	auto-load.c \
	auxv.c \
	ax-gdb.c \
	ax-general.c \
	bcache.c \
	bfd-target.c \
	block.c \
	blockframe.c \
	break-catch-exec.c \
	break-catch-fork.c \
	break-catch-load.c \
	break-catch-sig.c \
	break-catch-syscall.c \
	break-catch-throw.c \
	breakpoint.c \
	bt-utils.c \
	btrace.c \
	build-id.c \
	buildsym-legacy.c \
	buildsym.c \
	c-lang.c \
	c-typeprint.c \
	c-valprint.c \
	c-varobj.c \
	charset.c \
	cli-out.c \
	coff-pe-read.c \
	coffread.c \
	complaints.c \
	completer.c \
	copying.c \
	corefile.c \
	corelow.c \
	cp-abi.c \
	cp-namespace.c \
	cp-support.c \
	cp-valprint.c \
	ctfread.c \
	d-lang.c \
	d-namespace.c \
	d-valprint.c \
	dbxread.c \
	dcache.c \
	debug.c \
	debuginfod-support.c \
	dictionary.c \
	disasm.c \
	displaced-stepping.c \
	dummy-frame.c \
	dwarf2/abbrev.c \
	dwarf2/abbrev-cache.c \
	dwarf2/ada-imported.c \
	dwarf2/aranges.c \
	dwarf2/attribute.c \
	dwarf2/comp-unit-head.c \
	dwarf2/cooked-index.c \
	dwarf2/cu.c \
	dwarf2/die.c \
	dwarf2/dwz.c \
	dwarf2/expr.c \
	dwarf2/frame-tailcall.c \
	dwarf2/frame.c \
	dwarf2/index-cache.c \
	dwarf2/index-common.c \
	dwarf2/index-write.c \
	dwarf2/leb.c \
	dwarf2/line-header.c \
	dwarf2/loc.c \
	dwarf2/macro.c \
	dwarf2/read.c \
	dwarf2/read-debug-names.c \
	dwarf2/read-gdb-index.c \
	dwarf2/section.c \
	dwarf2/stringify.c \
	eval.c \
	event-top.c \
	exceptions.c \
	exec.c \
	expprint.c \
	extension.c \
	f-lang.c \
	f-typeprint.c \
	f-valprint.c \
	filename-seen-cache.c \
	filesystem.c \
	findcmd.c \
	findvar.c \
	frame.c \
	frame-base.c \
	frame-unwind.c \
	gcore.c \
	gdb-demangle.c \
	gdb_bfd.c \
	gdbtypes.c \
	gmp-utils.c \
	gnu-v2-abi.c \
	gnu-v3-abi.c \
	go-lang.c \
	go-typeprint.c \
	go-valprint.c \
	inf-child.c \
	inf-loop.c \
	infcall.c \
	infcmd.c \
	inferior.c \
	inflow.c \
	infrun.c \
	inline-frame.c \
	interps.c \
	jit.c \
	language.c \
	linespec.c \
	location.c \
	m2-lang.c \
	m2-typeprint.c \
	m2-valprint.c \
	macrocmd.c \
	macroexp.c \
	macroscope.c \
	macrotab.c \
	main.c \
	maint.c \
	maint-test-options.c \
	maint-test-settings.c \
	mdebugread.c \
	mem-break.c \
	memattr.c \
	memory-map.c \
	memrange.c \
	memtag.c \
	minidebug.c \
	minsyms.c \
	mipsread.c \
	namespace.c \
	objc-lang.c \
	objfiles.c \
	observable.c \
	opencl-lang.c \
	osabi.c \
	osdata.c \
	p-lang.c \
	p-typeprint.c \
	p-valprint.c \
	parse.c \
	printcmd.c \
	probe.c \
	process-stratum-target.c \
	producer.c \
	progspace.c \
	progspace-and-thread.c \
	prologue-value.c \
	psymtab.c \
	record.c \
	record-btrace.c \
	record-full.c \
	regcache.c \
	regcache-dump.c \
	reggroups.c \
	remote.c \
	remote-fileio.c \
	remote-notif.c \
	reverse.c \
	run-on-main-thread.c \
	rust-lang.c \
	rust-parse.c \
	sentinel-frame.c \
	ser-event.c \
	serial.c \
	skip.c \
	solib.c \
	solib-target.c \
	source.c \
	source-cache.c \
	split-name.c \
	stabsread.c \
	stack.c \
	std-regs.c \
	symfile.c \
	symfile-debug.c \
	symmisc.c \
	symtab.c \
	target.c \
	target-connection.c \
	target-dcache.c \
	target-descriptions.c \
	target-memory.c \
	test-target.c \
	thread.c \
	thread-iter.c \
	tid-parse.c \
	top.c \
	tracectf.c \
	tracefile.c \
	tracefile-tfile.c \
	tracepoint.c \
	trad-frame.c \
	tramp-frame.c \
	target-float.c \
	type-stack.c \
	typeprint.c \
	ui.c \
	ui-file.c \
	ui-out.c \
	ui-style.c \
	user-regs.c \
	utils.c \
	valarith.c \
	valops.c \
	valprint.c \
	value.c \
	varobj.c \
	xml-support.c \
	xml-syscall.c \
	xml-tdesc.c

# Links made at configuration time should not be specified here, since
# SFILES is used in building the distribution archive.
SFILES = \
	ada-exp.y \
	arch/i386.c \
	c-exp.y \
	cp-name-parser.y \
	d-exp.y \
	dtrace-probe.c \
	elf-none-tdep.c \
	elfread.c \
	f-exp.y \
	gcore-elf.c \
	gdb.c \
	go-exp.y \
	m2-exp.y \
	p-exp.y \
	proc-service.list \
	ser-base.c \
	ser-unix.c \
	sol-thread.c \
	stap-probe.c \
	stub-termcap.c \
	symfile-mem.c \
	ui-file.h \
	$(SUBDIR_CLI_SRCS) \
	$(SUBDIR_MI_SRCS) \
	$(SUBDIR_TARGET_SRCS) \
	$(COMMON_SFILES) \
	$(SUBDIR_GCC_COMPILE_SRCS)

# 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 = \
	aarch32-tdep.h \
	aarch64-ravenscar-thread.h \
	aarch64-tdep.h \
	ada-lang.h \
	addrmap.h \
	alpha-bsd-tdep.h \
	alpha-tdep.h \
	amd-dbgapi-target.h \
	amd64-darwin-tdep.h \
	amd64-linux-tdep.h \
	amd64-nat.h \
	amd64-ravenscar-thread.h \
	amd64-tdep.h \
	amdgpu-tdep.h \
	annotate.h \
	arc-tdep.h \
	arch-utils.h \
	arm-linux-tdep.h \
	arm-netbsd-tdep.h \
	arm-tdep.h \
	async-event.h \
	auto-load.h \
	auxv.h \
	ax.h \
	ax-gdb.h \
	bcache.h \
	bfd-target.h \
	bfin-tdep.h \
	block.h \
	breakpoint.h \
	bsd-kvm.h \
	bsd-uthread.h \
	bt-utils.h \
	build-id.h \
	buildsym-legacy.h \
	buildsym.h \
	c-lang.h \
	charset.h \
	charset-list.h \
	cli-out.h \
	coff-pe-read.h \
	command.h \
	complaints.h \
	completer.h \
	cp-abi.h \
	cp-support.h \
	csky-tdep.h \
	d-lang.h \
	darwin-nat.h \
	dcache.h \
	defs.h \
	dicos-tdep.h \
	dictionary.h \
	disasm-flags.h \
	disasm.h \
	dummy-frame.h \
	dwarf2/aranges.h \
	dwarf2/cooked-index.h \
	dwarf2/cu.h \
	dwarf2/frame-tailcall.h \
	dwarf2/frame.h \
	dwarf2/expr.h \
	dwarf2/index-cache.h \
	dwarf2/index-common.h \
	dwarf2/loc.h \
	dwarf2/read.h \
	dwarf2/read-debug-names.h \
	dwarf2/read-gdb-index.h \
	event-top.h \
	exceptions.h \
	exec.h \
	expression.h \
	extension.h \
	extension-priv.h \
	f-array-walker.h \
	f-lang.h \
	fbsd-nat.h \
	fbsd-tdep.h \
	filesystem.h \
	frame.h \
	frame-base.h \
	frame-unwind.h \
	frv-tdep.h \
	ft32-tdep.h \
	gcore-elf.h \
	gcore.h \
	gdb_bfd.h \
	gdb_curses.h \
	gdb_expat.h \
	gdb_proc_service.h \
	gdb-stabs.h \
	gdb_vfork.h \
	gdb_wchar.h \
	gdbarch.h \
	gdbcmd.h \
	gdbcore.h \
	gdbthread.h \
	gdbtypes.h \
	glibc-tdep.h \
	gmp-utils.h \
	gnu-nat.h \
	go-lang.h \
	gregset.h \
	hppa-bsd-tdep.h \
	hppa-linux-offsets.h \
	hppa-tdep.h \
	i386-bsd-nat.h \
	i386-darwin-tdep.h \
	i386-linux-nat.h \
	i386-linux-tdep.h \
	i386-tdep.h \
	i387-tdep.h \
	ia64-libunwind-tdep.h \
	ia64-tdep.h \
	inf-child.h \
	inf-loop.h \
	inf-ptrace.h \
	infcall.h \
	inferior.h \
	inline-frame.h \
	interps.h \
	jit.h \
	language.h \
	linespec.h \
	linux-fork.h \
	linux-nat.h \
	linux-record.h \
	linux-tdep.h \
	location.h \
	loongarch-tdep.h \
	m2-lang.h \
	m32r-tdep.h \
	m68k-tdep.h \
	macroexp.h \
	macroscope.h \
	macrotab.h \
	main.h \
	mdebugread.h \
	memattr.h \
	memory-map.h \
	memrange.h \
	microblaze-tdep.h \
	mips-linux-tdep.h \
	mips-netbsd-tdep.h \
	mips-tdep.h \
	mn10300-tdep.h \
	moxie-tdep.h \
	netbsd-nat.h \
	netbsd-tdep.h \
	nds32-tdep.h \
	nios2-tdep.h \
	elf-none-tdep.h \
	nto-tdep.h \
	objc-lang.h \
	objfiles.h \
	obsd-nat.h \
	obsd-tdep.h \
	or1k-linux-tdep.h \
	osabi.h \
	osdata.h \
	p-lang.h \
	parser-defs.h \
	ppc-fbsd-tdep.h \
	ppc-linux-tdep.h \
	ppc-netbsd-tdep.h \
	ppc-obsd-tdep.h \
	ppc-ravenscar-thread.h \
	ppc-tdep.h \
	ppc64-tdep.h \
	probe.h \
	proc-utils.h \
	procfs.h \
	progspace.h \
	progspace-and-thread.h \
	prologue-value.h \
	psymtab.h \
	ravenscar-thread.h \
	record.h \
	record-full.h \
	regcache.h \
	reggroups.h \
	regset.h \
	remote.h \
	remote-fileio.h \
	remote-notif.h \
	riscv-fbsd-tdep.h \
	riscv-ravenscar-thread.h \
	riscv-tdep.h \
	rs6000-aix-tdep.h \
	run-on-main-thread.h \
	s390-linux-tdep.h \
	s390-tdep.h \
	selftest-arch.h \
	sentinel-frame.h \
	ser-base.h \
	ser-event.h \
	ser-tcp.h \
	ser-unix.h \
	serial.h \
	sh-tdep.h \
	sim-regno.h \
	skip.h \
	sol2-tdep.h \
	solib.h \
	solib-aix.h \
	solib-darwin.h \
	solib-svr4.h \
	solib-target.h \
	solist.h \
	source.h \
	source-cache.h \
	sparc-nat.h \
	sparc-ravenscar-thread.h \
	sparc-tdep.h \
	sparc64-tdep.h \
	split-name.h \
	stabsread.h \
	stack.h \
	stap-probe.h \
	symfile.h \
	symtab.h \
	target.h \
	target-dcache.h \
	target-descriptions.h \
	terminal.h \
	tid-parse.h \
	top.h \
	tracectf.h \
	tracefile.h \
	tracepoint.h \
	trad-frame.h \
	target-float.h \
	tramp-frame.h \
	type-stack.h \
	typeprint.h \
	ui.h \
	ui-file.h \
	ui-out.h \
	ui-style.h \
	user-regs.h \
	utils.h \
	valprint.h \
	value.h \
	varobj.h \
	varobj-iter.h \
	vax-tdep.h \
	windows-nat.h \
	windows-tdep.h \
	x86-bsd-nat.h \
	x86-linux-nat.h \
	x86-nat.h \
	xcoffread.h \
	xml-builtin.h \
	xml-support.h \
	xml-syscall.h \
	xml-tdesc.h \
	xtensa-tdep.h \
	arch/aarch32.h \
	arch/aarch64.h \
	arch/aarch64-insn.h \
	arch/aarch64-mte-linux.h \
	arch/aarch64-scalable-linux.h \
	arch/arc.h \
	arch/arm.h \
	arch/i386.h \
	arch/loongarch.h \
	arch/ppc-linux-common.h \
	arch/ppc-linux-tdesc.h \
	arch/riscv.h \
	cli/cli-cmds.h \
	cli/cli-decode.h \
	cli/cli-script.h \
	cli/cli-setshow.h \
	cli/cli-style.h \
	cli/cli-utils.h \
	compile/compile.h \
	compile/compile-c.h \
	compile/compile-cplus.h \
	compile/compile-internal.h \
	compile/compile-object-load.h \
	compile/compile-object-run.h \
	compile/gcc-c-plugin.h \
	compile/gcc-cp-plugin.h \
	config/nm-linux.h \
	config/nm-nto.h \
	config/djgpp/langinfo.h \
	config/djgpp/nl_types.h \
	config/i386/nm-i386gnu.h \
	config/sparc/nm-sol2.h \
	mi/mi-cmds.h \
	mi/mi-common.h \
	mi/mi-console.h \
	mi/mi-getopt.h \
	mi/mi-main.h \
	mi/mi-out.h \
	mi/mi-parse.h \
	nat/aarch64-linux.h \
	nat/aarch64-linux-hw-point.h \
	nat/aarch64-mte-linux-ptrace.h \
	nat/aarch64-scalable-linux-ptrace.h \
	nat/aarch64-scalable-linux-sigcontext.h \
	nat/amd64-linux-siginfo.h \
	nat/gdb_ptrace.h \
	nat/gdb_thread_db.h \
	nat/fork-inferior.h \
	nat/linux-btrace.h \
	nat/linux-namespaces.h \
	nat/linux-nat.h \
	nat/linux-osdata.h \
	nat/linux-personality.h \
	nat/linux-ptrace.h \
	nat/linux-waitpid.h \
	nat/mips-linux-watch.h \
	nat/ppc-linux.h \
	nat/x86-cpuid.h \
	nat/x86-dregs.h \
	nat/x86-gcc-cpuid.h \
	nat/x86-linux.h \
	nat/x86-linux-dregs.h \
	python/py-event.h \
	python/py-events.h \
	python/py-stopevent.h \
	python/python.h \
	python/python-internal.h \
	regformats/regdef.h \
	target/resume.h \
	target/target.h \
	target/wait.h \
	target/waitstatus.h \
	tui/tui.h \
	tui/tui-command.h \
	tui/tui-data.h \
	tui/tui-disasm.h \
	tui/tui-file.h \
	tui/tui-hooks.h \
	tui/tui-io.h \
	tui/tui-layout.h \
	tui/tui-location.h \
	tui/tui-regs.h \
	tui/tui-source.h \
	tui/tui-status.h \
	tui/tui-win.h \
	tui/tui-wingeneral.h \
	tui/tui-winsource.h \
	x86-tdep.h

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

HFILES_WITH_SRCDIR = \
	../bfd/bfd.h \
	jit-reader.h

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

DEPFILES = $(TARGET_OBS) $(SER_HARDWIRE) $(NATDEPFILES) $(SIM_OBS)

ALLDEPFILES = \
	arch/aarch32.c \
	arch/aarch64.c \
	arch/aarch64-insn.c \
	arch/aarch64-mte-linux.c \
	arch/aarch64-scalable-linux.c \
	arch/amd64.c \
	arch/arc.c \
	arch/arm.c \
	arch/arm-get-next-pcs.c \
	arch/arm-linux.c \
	arch/i386.c \
	arch/loongarch.c \
	arch/ppc-linux-common.c \
	arch/riscv.c \
	arch/tic6x.c \
	aarch32-tdep.c \
	aarch64-fbsd-nat.c \
	aarch64-fbsd-tdep.c \
	aarch64-linux-nat.c \
	aarch64-linux-tdep.c \
	aarch64-newlib-tdep.c \
	aarch64-ravenscar-thread.c \
	aarch64-tdep.c \
	aix-thread.c \
	alpha-bsd-nat.c \
	alpha-bsd-tdep.c \
	alpha-linux-nat.c \
	alpha-linux-tdep.c \
	alpha-mdebug-tdep.c \
	alpha-netbsd-tdep.c \
	alpha-obsd-tdep.c \
	alpha-tdep.c \
	amd-dbgapi-target.c \
	amd64-bsd-nat.c \
	amd64-darwin-tdep.c \
	amd64-dicos-tdep.c \
	amd64-fbsd-nat.c \
	amd64-fbsd-tdep.c \
	amd64-linux-nat.c \
	amd64-linux-tdep.c \
	amd64-nat.c \
	amd64-netbsd-nat.c \
	amd64-netbsd-tdep.c \
	amd64-obsd-nat.c \
	amd64-obsd-tdep.c \
	amd64-ravenscar-thread.c \
	amd64-sol2-tdep.c \
	amd64-tdep.c \
	amdgpu-tdep.c \
	arc-linux-nat.c \
	arc-tdep.c \
	arm-bsd-tdep.c \
	arm-fbsd-nat.c \
	arm-fbsd-tdep.c \
	arm-linux-nat.c \
	arm-linux-tdep.c \
	arm-netbsd-nat.c \
	arm-netbsd-tdep.c \
	arm-none-tdep.c \
	arm-obsd-tdep.c \
	arm-tdep.c \
	avr-tdep.c \
	bfin-linux-tdep.c \
	bfin-tdep.c \
	bpf-tdep.c \
	bsd-kvm.c \
	bsd-uthread.c \
	csky-linux-tdep.c \
	csky-tdep.c \
	darwin-nat.c \
	dicos-tdep.c \
	fbsd-nat.c \
	fbsd-tdep.c \
	fork-child.c \
	ft32-tdep.c \
	glibc-tdep.c \
	go32-nat.c \
	h8300-tdep.c \
	hppa-bsd-tdep.c \
	hppa-linux-nat.c \
	hppa-linux-tdep.c \
	hppa-netbsd-nat.c \
	hppa-netbsd-tdep.c \
	hppa-obsd-nat.c \
	hppa-obsd-tdep.c \
	hppa-tdep.c \
	i386-bsd-nat.c \
	i386-bsd-tdep.c \
	i386-darwin-nat.c \
	i386-darwin-tdep.c \
	i386-dicos-tdep.c \
	i386-fbsd-nat.c \
	i386-fbsd-tdep.c \
	i386-gnu-nat.c \
	i386-gnu-tdep.c \
	i386-linux-nat.c \
	i386-linux-tdep.c \
	i386-netbsd-nat.c \
	i386-netbsd-tdep.c \
	i386-obsd-nat.c \
	i386-obsd-tdep.c \
	i386-sol2-nat.c \
	i386-sol2-tdep.c \
	i386-tdep.c \
	i386-windows-tdep.c \
	i387-tdep.c \
	ia64-libunwind-tdep.c \
	ia64-linux-nat.c \
	ia64-linux-tdep.c \
	ia64-tdep.c \
	ia64-vms-tdep.c \
	inf-ptrace.c \
	linux-fork.c \
	linux-record.c \
	linux-tdep.c \
	lm32-tdep.c \
	loongarch-linux-nat.c \
	loongarch-linux-tdep.c \
	loongarch-tdep.c \
	m32r-linux-nat.c \
	m32r-linux-tdep.c \
	m32r-tdep.c \
	m68hc11-tdep.c \
	m68k-bsd-nat.c \
	m68k-bsd-tdep.c \
	m68k-linux-nat.c \
	m68k-linux-tdep.c \
	m68k-tdep.c \
	microblaze-linux-tdep.c \
	microblaze-tdep.c \
	mingw-hdep.c \
	mips-fbsd-nat.c \
	mips-fbsd-tdep.c \
	mips-linux-nat.c \
	mips-linux-tdep.c \
	mips-netbsd-nat.c \
	mips-netbsd-tdep.c \
	mips-sde-tdep.c \
	mips-tdep.c \
	mips64-obsd-nat.c \
	mips64-obsd-tdep.c \
	msp430-tdep.c \
	netbsd-nat.c \
	netbsd-tdep.c \
	nds32-tdep.c \
	nios2-linux-tdep.c \
	nios2-tdep.c \
	obsd-nat.c \
	obsd-tdep.c \
	or1k-linux-nat.c \
	posix-hdep.c \
	ppc-fbsd-nat.c \
	ppc-fbsd-tdep.c \
	ppc-linux-nat.c \
	ppc-linux-tdep.c \
	ppc-netbsd-nat.c \
	ppc-netbsd-tdep.c \
	ppc-obsd-nat.c \
	ppc-obsd-tdep.c \
	ppc-ravenscar-thread.c \
	ppc-sysv-tdep.c \
	ppc64-tdep.c \
	procfs.c \
	ravenscar-thread.c \
	remote-sim.c \
	riscv-fbsd-nat.c \
	riscv-fbsd-tdep.c \
	riscv-linux-nat.c \
	riscv-linux-tdep.c \
	riscv-none-tdep.c \
	riscv-ravenscar-thread.c \
	riscv-tdep.c \
	rl78-tdep.c \
	rs6000-aix-nat.c \
	rs6000-lynx178-tdep.c \
	rs6000-tdep.c \
	rx-tdep.c \
	s390-linux-nat.c \
	s390-linux-tdep.c \
	s390-tdep.c \
	ser-go32.c \
	ser-mingw.c \
	ser-pipe.c \
	ser-tcp.c \
	ser-uds.c \
	sh-netbsd-nat.c \
	sh-netbsd-tdep.c \
	sh-tdep.c \
	sol2-tdep.c \
	solib-aix.c \
	solib-rocm.c \
	solib-svr4.c \
	sparc-linux-nat.c \
	sparc-linux-tdep.c \
	sparc-nat.c \
	sparc-netbsd-nat.c \
	sparc-netbsd-tdep.c \
	sparc-obsd-tdep.c \
	sparc-ravenscar-thread.c \
	sparc-sol2-nat.c \
	sparc-sol2-tdep.c \
	sparc-tdep.c \
	sparc64-fbsd-nat.c \
	sparc64-fbsd-tdep.c \
	sparc64-linux-nat.c \
	sparc64-linux-tdep.c \
	sparc64-nat.c \
	sparc64-netbsd-nat.c \
	sparc64-netbsd-tdep.c \
	sparc64-obsd-nat.c \
	sparc64-obsd-tdep.c \
	sparc64-sol2-tdep.c \
	sparc64-tdep.c \
	tilegx-linux-nat.c \
	tilegx-linux-tdep.c \
	tilegx-tdep.c \
	v850-tdep.c \
	vax-bsd-nat.c \
	vax-netbsd-tdep.c \
	vax-tdep.c \
	windows-nat.c \
	windows-tdep.c \
	x86-nat.c \
	x86-tdep.c \
	xcoffread.c \
	xstormy16-tdep.c \
	xtensa-config.c \
	xtensa-linux-nat.c \
	xtensa-linux-tdep.c \
	xtensa-tdep.c \
	xtensa-xtregs.c

# 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) \
	mi/mi-common.o \
	version.o \
	xml-builtin.o \
	$(patsubst %.c,%.o,$(COMMON_SFILES)) \
	$(SUBDIR_CLI_OBS) \
	$(SUBDIR_MI_OBS) \
	$(SUBDIR_TARGET_OBS) \
	$(SUBDIR_GCC_COMPILE_OBS)

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

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

# Parser intermediate files.
YYFILES = \
	ada-exp.c \
	ada-lex.c \
	c-exp.c \
	cp-name-parser.c \
	d-exp.c \
	f-exp.c \
	go-exp.c \
	m2-exp.c \
	p-exp.c

# ada-lex.c is included by another file, so it shouldn't wind up as a
# .o itself.
YYOBJ = $(filter-out ada-lex.o,$(patsubst %.c,%.o,$(YYFILES)))

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

DISTSTUFF = $(YYFILES)


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

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

all: gdb$(EXEEXT) $(CONFIG_ALL) gdb-gdb.py gdb-gdb.gdb
	@$(MAKE) $(FLAGS_TO_PASS) DO=all "DODIRS=$(SUBDIRS)" subdir_do

# Rule for compiling .c files in the top-level gdb directory.
# The order-only dependencies ensure that we create the build subdirectories.
%.o: %.c | $(CONFIG_DEP_SUBDIR)
	$(COMPILE) $<
	$(POSTCOMPILE)

$(CONFIG_DEP_SUBDIR):
	$(SHELL) $(srcdir)/../mkinstalldirs $@

# Python files need special flags.
python/%.o: INTERNAL_CFLAGS += $(PYTHON_CFLAGS)

# Rules for compiling .c files in the various source subdirectories.
%.o: $(srcdir)/gdbtk/generic/%.c
	$(COMPILE) $(all_gdbtk_cflags) $<
	$(POSTCOMPILE)

installcheck:

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

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

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

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

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

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

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

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

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

# Traditionally "install" depends on "all".  But it may be useful
# not to; for example, if the user has made some trivial change to a
# source file and doesn't care about rebuilding or just wants to save the
# time it takes for make to check that all is up to date.
# install-only is intended to address that need.
install: all
	@$(MAKE) $(FLAGS_TO_PASS) install-only

install-only: $(CONFIG_INSTALL)
	transformed_name=`t='$(program_transform_name)'; \
			  echo gdb | sed -e "$$t"` ; \
		if test "x$$transformed_name" = x; then \
		  transformed_name=gdb ; \
		else \
		  true ; \
		fi ; \
		$(SHELL) $(srcdir)/../mkinstalldirs $(DESTDIR)$(bindir) ; \
		$(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) \
			gdb$(EXEEXT) \
			$(DESTDIR)$(bindir)/$$transformed_name$(EXEEXT) ; \
		$(SHELL) $(srcdir)/../mkinstalldirs $(DESTDIR)$(includedir)/gdb ; \
		$(INSTALL_DATA) jit-reader.h $(DESTDIR)$(includedir)/gdb/jit-reader.h
	if test "x$(HAVE_NATIVE_GCORE_TARGET)$(HAVE_NATIVE_GCORE_HOST)" != x; \
	then \
	  transformed_name=`t='$(program_transform_name)'; \
			    echo gcore | sed -e "$$t"` ; \
		  if test "x$$transformed_name" = x; then \
		    transformed_name=gcore ; \
		  else \
		    true ; \
		  fi ; \
		  $(SHELL) $(srcdir)/../mkinstalldirs $(DESTDIR)$(bindir) ; \
		  $(INSTALL_SCRIPT) gcore \
			  $(DESTDIR)$(bindir)/$$transformed_name; \
	fi
	transformed_name=`t='$(program_transform_name)'; \
			  echo gdb-add-index | sed -e "$$t"` ; \
	if test "x$$transformed_name" = x; then \
	  transformed_name=gdb-add-index ; \
	else \
	  true ; \
	fi ; \
	$(INSTALL_SCRIPT) $(srcdir)/contrib/gdb-add-index.sh \
		$(DESTDIR)$(bindir)/$$transformed_name
	@$(MAKE) DO=install "DODIRS=$(SUBDIRS)" $(FLAGS_TO_PASS) subdir_do

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

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

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

uninstall: force $(CONFIG_UNINSTALL)
	transformed_name=`t='$(program_transform_name)'; \
			  echo gdb | sed -e $$t` ; \
		if test "x$$transformed_name" = x; then \
		  transformed_name=gdb ; \
		else \
		  true ; \
		fi ; \
		rm -f $(DESTDIR)$(bindir)/$$transformed_name$(EXEEXT)
		rm -f $(DESTDIR)$(includedir)/gdb/jit-reader.h
	if test "x$(HAVE_NATIVE_GCORE_TARGET)$(HAVE_NATIVE_GCORE_HOST)" != x; \
	then \
	  transformed_name=`t='$(program_transform_name)'; \
			    echo gcore | sed -e "$$t"` ; \
		  if test "x$$transformed_name" = x; then \
		    transformed_name=gcore ; \
		  else \
		    true ; \
		  fi ; \
		  rm -f $(DESTDIR)$(bindir)/$$transformed_name; \
	fi
	transformed_name=`t='$(program_transform_name)'; \
			  echo gdb-add-index | sed -e "$$t"` ; \
	if test "x$$transformed_name" = x; then \
	  transformed_name=gdb-add-index ; \
	else \
	  true ; \
	fi ; \
	rm -f $(DESTDIR)$(bindir)/$$transformed_name
	@$(MAKE) DO=uninstall "DODIRS=$(SUBDIRS)" $(FLAGS_TO_PASS) subdir_do

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

test-cp-name-parser$(EXEEXT): test-cp-name-parser.o $(LIBIBERTY)
	$(ECHO_CXXLD) $(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.).
#
# 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
# source files that will be linked into gdb.  However, due to the way
# this Makefile has generally been written, we do this indirectly, by
# computing the list of source files from the list of object files.

INIT_FILES_FILTER_OUT = \
	cp-name-parser.o \
	init.o \
	version.o \
	xml-builtin.o \
	%_S.o \
	%_U.o

INIT_FILES = \
	$(patsubst %.o,%.c, \
	  $(patsubst %-exp.o,%-exp.y, \
	    $(filter-out $(INIT_FILES_FILTER_OUT), $(COMMON_OBS))))

init.c: stamp-init; @true
stamp-init: $(INIT_FILES) config.status $(srcdir)/make-init-c
	$(ECHO_INIT_C)
	$(SILENCE) $(srcdir)/make-init-c $(addprefix $(srcdir)/,$(INIT_FILES)) > init.c-tmp
	$(SILENCE) $(SHELL) $(srcdir)/../move-if-change init.c-tmp init.c
	$(SILENCE) echo stamp > stamp-init

.PRECIOUS: init.c

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

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

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

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

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

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

tags: TAGS

clean mostlyclean: $(CONFIG_CLEAN)
	@$(MAKE) $(FLAGS_TO_PASS) DO=clean "DODIRS=$(CLEANDIRS)" subdir_do
	rm -f *.o *.a *~ init.c-tmp init.l-tmp version.c-tmp
	rm -f init.c stamp-init version.c stamp-version
	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)/*
	for i in $(CONFIG_SRC_SUBDIR); do \
		rm -f $$i/*.o;	\
		rm -f $$i/$(DEPDIR)/*; \
	done

# 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.
distclean: clean
	@$(MAKE) $(FLAGS_TO_PASS) DO=distclean "DODIRS=$(CLEANDIRS)" subdir_do
	rm -f nm.h config.status config.h stamp-h b jit-reader.h gcore stamp-nmh
	rm -f gdb-gdb.py gdb-gdb.gdb
	rm -f y.output yacc.acts yacc.tmp y.tab.h
	rm -f config.log config.cache
	rm -f config.lt libtool
	rm -f Makefile
	rm -rf $(DEPDIR)
	for i in $(CONFIG_SRC_SUBDIR); do \
		if test -d $$i/$(DEPDIR); then rmdir $$i/$(DEPDIR); fi \
	done

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 \
		d-exp.c f-exp.c go-exp.c m2-exp.c p-exp.c
	rm -f TAGS
	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
	$(SHELL) config.status $@

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

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

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

gdb-gdb.py: $(srcdir)/gdb-gdb.py.in
	$(SHELL) config.status $@

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

config.h: stamp-h ; @true
stamp-h: $(srcdir)/config.in config.status
	$(SHELL) config.status config.h

nm.h: stamp-nmh ; @true
stamp-nmh: config.status
	$(SHELL) config.status nm.h

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

ACLOCAL = aclocal

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

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

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: stamp-version; @true
# Note that the obvious names for the temp file are taken by
# create-version.sh.
stamp-version: Makefile version.in $(srcdir)/../bfd/version.h $(srcdir)/../gdbsupport/create-version.sh
	$(ECHO_GEN) $(SHELL) $(srcdir)/../gdbsupport/create-version.sh $(srcdir) \
	    $(host_alias) $(target_alias) version-t.t
	@$(SHELL) $(srcdir)/../move-if-change version-t.t version.c
	@echo stamp > stamp-version


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 =

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

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

ada-exp.o: ada-exp.c
	$(COMPILE) $(ADA_EXP_C)
	$(POSTCOMPILE)

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

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

.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.
%.gmo: %.po
	-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.
%.pox: %.po
	-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.

%.c: %.y
	$(ECHO_YACC) $(SHELL) $(YLWRAP) $< y.tab.c $@.tmp -- \
		$(YACC) $(YFLAGS) || (rm -f $@.tmp; 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/YY_NULL/YY_NULLPTR/g' \
	     -e "s/YYSTYPE/$(subst -,_,$*)_YYSTYPE/g" \
	     -e "s/yyalloc/$(subst -,_,$*)_yyalloc/g" \
	     -e "s/yysymbol_kind_t/$(subst -,_,$*)_yysymbol_kind_t/g" \
	  < $@.tmp > $@.new && \
	  rm -f $@.tmp && \
	  mv $@.new $@
%.c: %.l
	$(ECHO_LEX) $(FLEX) -t $< > $@.tmp || (rm -f $@.tmp; 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 's/yy_flex_xrealloc/yyxrealloc/g' \
	     < $@.tmp > $@.new && \
	     rm -f $@.tmp && \
	     mv $@.new $@

# XML rules

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

.PRECIOUS: xml-builtin.c

#
# GDBTK sub-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_ENV) $(LIBTOOL) --mode=install $(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 $(CDEPS) $(TDEPLIBS)
	rm -f insight$(EXEEXT)
	$(ECHO_CXXLD) $(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)\"

#
# Dependency tracking.
#

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.
override COMPILE.post = -c -o $@ -MT $@ -MMD -MP \
	-MF $(@D)/$(DEPDIR)/$(basename $(@F)).Tpo
override POSTCOMPILE = @mv $(@D)/$(DEPDIR)/$(basename $(@F)).Tpo \
	$(@D)/$(DEPDIR)/$(basename $(@F)).Po
else
override COMPILE.pre = source='$<' object='$@' libtool=no \
	DEPDIR=$(DEPDIR) $(DEPMODE) $(depcomp) \
	$(CXX) -x c++ $(CXX_DIALECT)
# depcomp handles atomicity for us, so we don't need a postcompile
# step.
override POSTCOMPILE =
endif

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

# All the .deps files to include.
all_deps_files = $(foreach dep,$(patsubst %.o,%.Po,$(all_object_files)),\
    $(dir $(dep))/$(DEPDIR)/$(notdir $(dep)))

# 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.
ifdef .VARIABLES
$(all_object_files): | $(generated_files)
else
$(all_object_files) : $(generated_files)
endif

# Dependencies.
-include $(all_deps_files)

# Disable implicit make rules.
include $(srcdir)/disable-implicit-rules.mk

### end of the gdb Makefile.in.
