# Copyright (C) 1989-2020 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 $@
COMPILE = $(ECHO_CXX) $(COMPILE.pre) $(INTERNAL_CFLAGS) $(COMPILE.post)
POSTCOMPILE = @true

YACC = @YACC@

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

YLWRAP = $(srcdir)/../ylwrap

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

MAKEHTML = $(MAKEINFO_CMD) --html
MAKEHTMLFLAGS =

# Set this up with gcc if you have gnu ld and the loader will print out
# line numbers for undefined references.
#CC_LD = g++ -static
CC_LD = $(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.a
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@

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

# Where is libmpfr?  This will be empty if libmpfr was not available.
LIBMPFR = @LIBMPFR@

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

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_BUILDDIR = ../gnulib
LIBGNU = $(GNULIB_BUILDDIR)/import/libgnu.a
INCGNU = -I$(srcdir)/../gnulib/import -I$(GNULIB_BUILDDIR)/import

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

SUBDIR_MI_DEPS =
SUBDIR_MI_LDFLAGS =
SUBDIR_MI_CFLAGS =

#
# 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-out.c \
	tui/tui-regs.c \
	tui/tui-source.c \
	tui/tui-stack.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-continueevent.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-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/function-view-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/optional-selftests.c \
	unittests/parse-connection-spec-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_mmap-selftests.c \
	unittests/scoped_restore-selftests.c \
	unittests/string_view-selftests.c \
	unittests/style-selftests.c \
	unittests/tracepoint-selftests.c \
	unittests/tui-selftests.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/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.a
# 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 = \
	$(CXXFLAGS) $(GLOBAL_CFLAGS) $(PROFILE_CFLAGS) \
	$(GDB_CFLAGS) $(OPCODES_CFLAGS) $(READLINE_CFLAGS) $(ZLIBINC) \
	$(BFD_CFLAGS) $(INCLUDE_CFLAGS) $(LIBDECNUMBER_CFLAGS) \
	$(INTL_CFLAGS) $(INCGNU) $(INCSUPPORT) $(ENABLE_CFLAGS) \
	$(INTERNAL_CPPFLAGS) $(SRCHIGH_CFLAGS) $(TOP_CFLAGS) $(PTHREAD_CFLAGS) \
	$(DEBUGINFOD_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) \
        $(LIBSUPPORT) $(INTL) $(LIBIBERTY) $(LIBDECNUMBER) \
	$(XM_CLIBS) $(GDBTKLIBS) \
	@LIBS@ @GUILE_LIBS@ @PYTHON_LIBS@ \
	$(LIBEXPAT) $(LIBLZMA) $(LIBBABELTRACE) $(LIBIPT) \
	$(WIN32LIBS) $(LIBGNU) $(LIBICONV) \
	$(LIBMPFR) $(SRCHIGH_LIBS) $(LIBXXHASH) $(PTHREAD_LIBS) \
	$(DEBUGINFOD_LIBS)
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 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-nbsd-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-nbsd-tdep.o \
	amd64-obsd-tdep.o \
	amd64-sol2-tdep.o \
	amd64-tdep.o \
	amd64-windows-tdep.o \
	arch/aarch64.o \
	arch/aarch64-insn.o \
	arch/amd64.o \
	ia64-linux-tdep.o \
	ia64-tdep.o \
	ia64-vms-tdep.o \
	mips64-obsd-tdep.o \
	sparc64-fbsd-tdep.o \
	sparc64-linux-tdep.o \
	sparc64-nbsd-tdep.o \
	sparc64-obsd-tdep.o \
	sparc64-sol2-tdep.o \
	sparc64-tdep.o

# All other target-dependent objects files (used with --enable-targets=all).
ALL_TARGET_OBS = \
	aarch32-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/ppc-linux-common.o \
	arch/riscv.o \
	arm-bsd-tdep.o \
	arm-fbsd-tdep.o \
	arm-linux-tdep.o \
	arm-nbsd-tdep.o \
	arm-obsd-tdep.o \
	arm-pikeos-tdep.o \
	arm-symbian-tdep.o \
	arm-tdep.o \
	arm-wince-tdep.o \
	avr-tdep.o \
	bfin-linux-tdep.o \
	bfin-tdep.o \
	bpf-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-nbsd-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-nbsd-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 \
	mips-fbsd-tdep.o \
	mips-linux-tdep.o \
	mips-nbsd-tdep.o \
	mips-sde-tdep.o \
	mips-tdep.o \
	mn10300-linux-tdep.o \
	mn10300-tdep.o \
	moxie-tdep.o \
	msp430-tdep.o \
	nbsd-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-nbsd-tdep.o \
	ppc-obsd-tdep.o \
	ppc-ravenscar-thread.o \
	ppc-sysv-tdep.o \
	ppc64-tdep.o \
	ravenscar-thread.o \
	riscv-fbsd-tdep.o \
	riscv-linux-tdep.o \
	riscv-ravenscar-thread.o \
	riscv-tdep.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 \
	score-tdep.o \
	sh-linux-tdep.o \
	sh-nbsd-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-nbsd-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 \
	tilegx-linux-tdep.o \
	tilegx-tdep.o \
	v850-tdep.o \
	vax-nbsd-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

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

# 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-sig.c \
	break-catch-syscall.c \
	break-catch-throw.c \
	breakpoint.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 \
	continuations.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 \
	dummy-frame.c \
	dwarf2/abbrev.c \
	dwarf2/attribute.c \
	dwarf2/comp-unit.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/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 \
	gdb_obstack.c \
	gdb_regex.c \
	gdbarch.c \
	gdbtypes.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 \
	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 \
	registry.c \
	remote.c \
	remote-fileio.c \
	remote-notif.c \
	reverse.c \
	run-on-main-thread.c \
	rust-lang.c \
	sentinel-frame.c \
	ser-event.c \
	serial.c \
	skip.c \
	solib.c \
	solib-target.c \
	source.c \
	source-cache.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-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 \
	elfread.c \
	f-exp.y \
	gdb.c \
	go-exp.y \
	m2-exp.y \
	p-exp.y \
	proc-service.list \
	rust-exp.y \
	ser-base.c \
	ser-unix.c \
	sol-thread.c \
	stap-probe.c \
	stub-termcap.c \
	symfile-mem.c \
	ui-file.h \
	mi/mi-common.c \
	$(SUBDIR_CLI_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 \
	amd64-darwin-tdep.h \
	amd64-linux-tdep.h \
	amd64-nat.h \
	amd64-tdep.h \
	annotate.h \
	arc-tdep.h \
	arch-utils.h \
	arm-linux-tdep.h \
	arm-nbsd-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 \
	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.h \
	dummy-frame.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 \
	event-top.h \
	exceptions.h \
	exec.h \
	expression.h \
	extension.h \
	extension-priv.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.h \
	gdb_bfd.h \
	gdb_curses.h \
	gdb_expat.h \
	gdb_obstack.h \
	gdb_proc_service.h \
	gdb_regex.h \
	gdb_select.h \
	gdb-stabs.h \
	gdb_vfork.h \
	gdb_wchar.h \
	gdbarch.h \
	gdbcmd.h \
	gdbcore.h \
	gdbthread.h \
	gdbtypes.h \
	glibc-tdep.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 \
	inflow.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 \
	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-nbsd-tdep.h \
	mips-tdep.h \
	mn10300-tdep.h \
	moxie-tdep.h \
	nbsd-nat.h \
	nbsd-tdep.h \
	nds32-tdep.h \
	nios2-tdep.h \
	nto-tdep.h \
	objc-lang.h \
	objfiles.h \
	obsd-nat.h \
	obsd-tdep.h \
	osabi.h \
	osdata.h \
	p-lang.h \
	parser-defs.h \
	ppc-fbsd-tdep.h \
	ppc-linux-tdep.h \
	ppc-nbsd-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 \
	psympriv.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 \
	rs6000-tdep.h \
	run-on-main-thread.h \
	s390-linux-tdep.h \
	s390-tdep.h \
	score-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 \
	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-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/arc.h \
	arch/arm.h \
	arch/i386.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-sve-linux-ptrace.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-regs.h \
	tui/tui-source.h \
	tui/tui-stack.h \
	tui/tui-win.h \
	tui/tui-windata.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)

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) \
	mi/mi-common.o \
	version.o \
	xml-builtin.o \
	$(patsubst %.c,%.o,$(COMMON_SFILES)) \
	$(SUBDIR_CLI_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 \
	rust-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=`echo $(SUBDIRS) | sed 's/testsuite//'`" 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: force
	@if [ -f testsuite/Makefile ]; then \
	  rootme=`pwd`; export rootme; \
	  rootsrc=`cd $(srcdir); pwd`; export rootsrc; \
	  cd testsuite; \
	  $(MAKE) $(TARGET_FLAGS_TO_PASS) check-read1; \
	else true; fi

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

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

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

test-cp-name-parser$(EXEEXT): test-cp-name-parser.o $(LIBIBERTY)
	$(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.).
#
# 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
# 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 = \
	$(patsubst %.o,%.c, \
	  $(patsubst %-exp.o,%-exp.y, \
	    $(filter-out init.o version.o %_S.o %_U.o,\
	      $(COMMON_OBS))))

init.c: stamp-init; @true
stamp-init: $(INIT_FILES)
	@$(ECHO_INIT_C) echo "Making init.c"
	@rm -f init.c-tmp init.l-tmp
	@touch init.c-tmp
	@-for f in $(INIT_FILES); do \
	    sed -n -e 's/^_initialize_\([a-z_0-9A-Z]*\).*/\1/p' \
	        $(srcdir)/$$f 2>/dev/null; \
	done > init.l-tmp
	@echo '/* Do not modify this file.  */' >>init.c-tmp
	@echo '/* It is created automatically by the Makefile.  */'>>init.c-tmp
	@echo '#include "defs.h"      /* For initialize_file_ftype.  */' >>init.c-tmp
	@echo 'extern void initialize_all_files(void);' >>init.c-tmp
	@sed -e 's/\(.*\)/extern initialize_file_ftype _initialize_\1;/' <init.l-tmp >>init.c-tmp
	@echo 'void' >>init.c-tmp
	@echo 'initialize_all_files (void)' >>init.c-tmp
	@echo '{' >>init.c-tmp
	@sed -e 's/\(.*\)/  _initialize_\1 ();/' <init.l-tmp >>init.c-tmp
	@echo '}' >>init.c-tmp
	@$(SHELL) $(srcdir)/../move-if-change init.c-tmp init.c
	@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

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

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

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

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

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

tags: TAGS

clean mostlyclean: $(CONFIG_CLEAN)
	@$(MAKE) $(FLAGS_TO_PASS) DO=clean "DODIRS=$(CLEANDIRS)" subdir_do
	rm -f *.o *.a *~ 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
	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 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 rust-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 $@

data-directory/Makefile: data-directory/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
ACLOCAL_AMFLAGS = -I ../config

# 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/ax_pthread.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: 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 =

ALLDEPFILES = \
	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-nbsd-tdep.c \
	alpha-obsd-tdep.c \
	alpha-tdep.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-nbsd-nat.c \
	amd64-nbsd-tdep.c \
	amd64-obsd-nat.c \
	amd64-obsd-tdep.c \
	amd64-sol2-tdep.c \
	amd64-tdep.c \
	arc-tdep.c \
	arm.c \
	arm-bsd-tdep.c \
	arm-fbsd-nat.c \
	arm-fbsd-tdep.c \
	arm-get-next-pcs.c \
	arm-linux.c \
	arm-linux-nat.c \
	arm-linux-tdep.c \
	arm-nbsd-nat.c \
	arm-nbsd-tdep.c \
	arm-obsd-tdep.c \
	arm-symbian-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-nbsd-nat.c \
	hppa-nbsd-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-nbsd-nat.c \
	i386-nbsd-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 \
	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-nbsd-nat.c \
	mips-nbsd-tdep.c \
	mips-sde-tdep.c \
	mips-tdep.c \
	mips64-obsd-nat.c \
	mips64-obsd-tdep.c \
	msp430-tdep.c \
	nbsd-nat.c \
	nbsd-tdep.c \
	nds32-tdep.c \
	nios2-linux-tdep.c \
	nios2-tdep.c \
	obsd-nat.c \
	obsd-tdep.c \
	posix-hdep.c \
	ppc-fbsd-nat.c \
	ppc-fbsd-tdep.c \
	ppc-linux-nat.c \
	ppc-linux-tdep.c \
	ppc-nbsd-nat.c \
	ppc-nbsd-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-ravenscar-thread.c \
	riscv-tdep.c \
	rl78-tdep.c \
	rs6000-lynx178-tdep.c \
	rs6000-nat.c \
	rs6000-tdep.c \
	rx-tdep.c \
	s390-linux-nat.c \
	s390-linux-tdep.c \
	s390-tdep.c \
	score-tdep.c \
	ser-go32.c \
	ser-mingw.c \
	ser-pipe.c \
	ser-tcp.c \
	ser-uds.c \
	sh-nbsd-nat.c \
	sh-nbsd-tdep.c \
	sh-tdep.c \
	sol2-tdep.c \
	solib-aix.c \
	solib-svr4.c \
	sparc-linux-nat.c \
	sparc-linux-tdep.c \
	sparc-nat.c \
	sparc-nbsd-nat.c \
	sparc-nbsd-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-nbsd-nat.c \
	sparc64-nbsd-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-nbsd-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

# 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' \
	  < $@.tmp > $@.new && \
	  rm -f $@.tmp && \
	  mv $@.new $@
%.c: %.l
	$(ECHO_LEX) $(FLEX) -t $<  \
	    | 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 && \
	    mv $@.new $@

.PRECIOUS: ada-lex.c

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