mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-14 21:03:31 +08:00
361cb21935
An issue was reported here related to building GDB on MinGW: https://sourceware.org/pipermail/gdb/2020-September/048927.html It was suggested here: https://sourceware.org/pipermail/gdb/2020-September/048931.html that the solution might be to make use of $(LIB_GETRANDOM), a variable defined in the gnulib makefile, when linking GDB. In fact I think the issue is bigger than just LIB_GETRANDOM. When using the script binutils-gdb/gnulib/update-gnulib.sh to reimport gnulib there is a lot of output from gnulib's gnulib-tool. Part of that output is this: You may need to use the following makefile variables when linking. Use them in <program>_LDADD when linking a program, or in <library>_a_LDFLAGS or <library>_la_LDFLAGS when linking a library. $(FREXPL_LIBM) $(FREXP_LIBM) $(INET_NTOP_LIB) $(LIBTHREAD) $(LIB_GETLOGIN) $(LIB_GETRANDOM) $(LIB_HARD_LOCALE) $(LIB_MBRTOWC) $(LIB_SETLOCALE_NULL) $(LTLIBINTL) when linking with libtool, $(LIBINTL) otherwise What I think this is telling us is that we should be including the value of all these variables on the link line for gdb and gdbserver. The problem though is that these variables are define in gnulib's makefile, but are not (necessarily) defined in GDB's makefile. One solution would be to recreate the checks that gnulib performs in order to recreate these variables in both gdb's and gdbserver's makefile. Though this shouldn't be too hard, most (if not all) of these checks are in the form macros defined in m4 files in the gnulib tree, so we could just reference these as needed. However, in this commit I propose a different solution. Currently, in the top level makefile, we give gdb and gdbserver a dependency on gnulib. Once gnulib has finished building gdb and gdbserver can start, these projects then have a hard coded (relative) path to the compiled gnulib library in their makefiles. In this commit I extend the gnulib configure script to install a new makefile fragment in the gnulib build directory. This new file will have the usual variable substitutions applied to it, and so can include the complete list (see above) of all the extra libraries that are needed when linking against gnulib. In fact the new makefile fragment defines three variables, these are: LIBGNU: The path to the archive containing gnulib. Can be used as a dependency as when this file changes gdb/gdbserver should be relinked. LIBGNU_EXTRA_LIBS: A list of linker -l.... flags that should be included in the link line of gdb/gdbserver. These are libraries that $(LIBGNU) depends on. This list is taken from the output of gnulib-tool, which is run by our gnulib/update-gnulib.sh script. INCGNU: A list of -I.... include paths that should be passed to the compiler, these are where the gnulib headers can be found. Now both gdb and gdbserver can include the makefile fragment and make use of these variables. The makefile fragment relies on the variable GNULIB_BUILDDIR being defined. This is checked for in the fragment, and was already defined in the makefiles of gdb and gdbserver. gdb/ChangeLog: * Makefile.in: Include Makefile.gnulib.inc. Don't define LIBGNU or INCGNU. Make use of LIBGNU_EXTRA_LIBS when linking. gdbserver/ChangeLog: * Makefile.in: Include Makefile.gnulib.inc. Don't define LIBGNU or INCGNU. Make use of LIBGNU_EXTRA_LIBS when linking. gnulib/ChangeLog: * Makefile.gnulib.inc.in: New file. * Makefile.in: Regenerate. * configure: Regenerate. * configure.ac: Install the new file.
623 lines
18 KiB
Makefile
623 lines
18 KiB
Makefile
# 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.
|
|
# See gdb/Makefile.in for guidelines on ordering files and directories.
|
|
|
|
prefix = @prefix@
|
|
exec_prefix = @exec_prefix@
|
|
|
|
host_alias = @host_noncanonical@
|
|
target_alias = @target_noncanonical@
|
|
program_transform_name = @program_transform_name@
|
|
bindir = @bindir@
|
|
libdir = @libdir@
|
|
tooldir = $(libdir)/$(target_alias)
|
|
|
|
datarootdir = @datarootdir@
|
|
datadir = @datadir@
|
|
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@
|
|
htmldir = $(prefix)/html
|
|
includedir = @includedir@
|
|
CONFIG_SRC_SUBDIR = @CONFIG_SRC_SUBDIR@
|
|
|
|
install_sh = @install_sh@
|
|
|
|
SHELL = @SHELL@
|
|
EXEEXT = @EXEEXT@
|
|
|
|
INSTALL = @INSTALL@
|
|
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
|
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
|
INSTALL_DATA = @INSTALL_DATA@
|
|
RANLIB = @RANLIB@
|
|
|
|
CC = @CC@
|
|
CXX = @CXX@
|
|
CXX_DIALECT = @CXX_DIALECT@
|
|
AR = @AR@
|
|
AR_FLAGS = rc
|
|
STRIP = @STRIP@
|
|
|
|
# Dependency tracking information.
|
|
DEPMODE = @CCDEPMODE@
|
|
DEPDIR = @DEPDIR@
|
|
depcomp = $(SHELL) $(srcdir)/../depcomp
|
|
|
|
# Directory containing source files. Don't clean up the spacing,
|
|
# this exact string is matched for by the "configure" script.
|
|
srcdir = @srcdir@
|
|
abs_top_srcdir = @abs_top_srcdir@
|
|
abs_srcdir = @abs_srcdir@
|
|
VPATH = @srcdir@
|
|
|
|
top_builddir = .
|
|
|
|
include $(srcdir)/../gdb/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) $(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)
|
|
|
|
# It is also possible that you will need to add -I/usr/include/sys to the
|
|
# CFLAGS section if your system doesn't have fcntl.h in /usr/include (which
|
|
# is where it should be according to Posix).
|
|
|
|
# Set this up with gcc if you have gnu ld and the loader will print out
|
|
# line numbers for undefinded refs.
|
|
#CC_LD = g++ -static
|
|
CC_LD = $(CXX) $(CXX_DIALECT)
|
|
|
|
# Where is the "include" directory? Traditionally ../include or ./include
|
|
INCLUDE_DIR = ${srcdir}/../include
|
|
INCLUDE_DEP = $$(INCLUDE_DIR)
|
|
|
|
LIBIBERTY_BUILDDIR = ../libiberty
|
|
LIBIBERTY = $(LIBIBERTY_BUILDDIR)/libiberty.a
|
|
|
|
GDBSUPPORT_BUILDDIR = ../gdbsupport
|
|
GDBSUPPORT = $(GDBSUPPORT_BUILDDIR)/libgdbsupport.a
|
|
|
|
# Where is ust? These will be empty if ust was not available.
|
|
ustlibs = @ustlibs@
|
|
ustinc = @ustinc@
|
|
|
|
# gnulib
|
|
GNULIB_BUILDDIR = ../gnulib
|
|
include $(GNULIB_BUILDDIR)/Makefile.gnulib.inc
|
|
|
|
# Where is the INTL library? Typically in ../intl.
|
|
INTL = @LIBINTL@
|
|
INTL_DEPS = @LIBINTL_DEP@
|
|
INTL_CFLAGS = @INCINTL@
|
|
|
|
INCSUPPORT = -I$(srcdir)/.. -I..
|
|
|
|
# All the includes used for CFLAGS and for lint.
|
|
# -I. for config files.
|
|
# -I${srcdir} for our headers.
|
|
# -I$(srcdir)/../gdb/regformats for regdef.h.
|
|
#
|
|
# We do not include ../target or ../nat in here because headers
|
|
# in those directories should be included with the subdirectory.
|
|
# e.g.: "target/wait.h".
|
|
#
|
|
INCLUDE_CFLAGS = -I. -I${srcdir} \
|
|
-I$(srcdir)/../gdb/regformats -I$(srcdir)/.. -I$(INCLUDE_DIR) \
|
|
-I$(srcdir)/../gdb $(INCGNU) $(INCSUPPORT) \
|
|
$(INTL_CFLAGS)
|
|
|
|
# M{H,T}_CFLAGS, if defined, has host- and target-dependent CFLAGS
|
|
# from the config/ directory.
|
|
GLOBAL_CFLAGS = ${MT_CFLAGS} ${MH_CFLAGS}
|
|
#PROFILE_CFLAGS = -pg
|
|
|
|
WARN_CFLAGS = @WARN_CFLAGS@
|
|
WERROR_CFLAGS = @WERROR_CFLAGS@
|
|
|
|
WARN_CFLAGS_NO_FORMAT = `echo " $(WARN_CFLAGS) " \
|
|
| sed "s/ -Wformat-nonliteral / -Wno-format-nonliteral /g"`
|
|
|
|
# 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@
|
|
|
|
PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
|
|
PTHREAD_LIBS = @PTHREAD_LIBS@
|
|
|
|
WIN32APILIBS = @WIN32APILIBS@
|
|
|
|
# INTERNAL_CFLAGS is the aggregate of all other *CFLAGS macros.
|
|
INTERNAL_CFLAGS_BASE = ${GLOBAL_CFLAGS} \
|
|
${PROFILE_CFLAGS} ${INCLUDE_CFLAGS} ${CPPFLAGS} $(PTHREAD_CFLAGS)
|
|
INTERNAL_WARN_CFLAGS = ${INTERNAL_CFLAGS_BASE} $(WARN_CFLAGS)
|
|
INTERNAL_CFLAGS = ${INTERNAL_WARN_CFLAGS} $(WERROR_CFLAGS) -DGDBSERVER
|
|
|
|
# LDFLAGS is specifically reserved for setting from the command line
|
|
# when running make.
|
|
LDFLAGS = @LDFLAGS@
|
|
INTERNAL_LDFLAGS = $(LDFLAGS) @RDYNAMIC@
|
|
|
|
# All source files that go into linking GDB remote server.
|
|
|
|
SFILES = \
|
|
$(srcdir)/debug.cc \
|
|
$(srcdir)/dll.cc \
|
|
$(srcdir)/gdbreplay.cc \
|
|
$(srcdir)/hostio.cc \
|
|
$(srcdir)/hostio-errno.cc \
|
|
$(srcdir)/i387-fp.cc \
|
|
$(srcdir)/inferiors.cc \
|
|
$(srcdir)/linux-aarch64-low.cc \
|
|
$(srcdir)/linux-arc-low.cc \
|
|
$(srcdir)/linux-arm-low.cc \
|
|
$(srcdir)/linux-ia64-low.cc \
|
|
$(srcdir)/linux-low.cc \
|
|
$(srcdir)/linux-m68k-low.cc \
|
|
$(srcdir)/linux-mips-low.cc \
|
|
$(srcdir)/linux-nios2-low.cc \
|
|
$(srcdir)/linux-ppc-low.cc \
|
|
$(srcdir)/linux-riscv-low.cc \
|
|
$(srcdir)/linux-s390-low.cc \
|
|
$(srcdir)/linux-sh-low.cc \
|
|
$(srcdir)/linux-sparc-low.cc \
|
|
$(srcdir)/linux-x86-low.cc \
|
|
$(srcdir)/linux-xtensa-low.cc \
|
|
$(srcdir)/mem-break.cc \
|
|
$(srcdir)/netbsd-aarch64-low.cc \
|
|
$(srcdir)/netbsd-amd64-low.cc \
|
|
$(srcdir)/netbsd-i386-low.cc \
|
|
$(srcdir)/netbsd-low.cc \
|
|
$(srcdir)/netbsd-low.h \
|
|
$(srcdir)/proc-service.cc \
|
|
$(srcdir)/proc-service.list \
|
|
$(srcdir)/regcache.cc \
|
|
$(srcdir)/remote-utils.cc \
|
|
$(srcdir)/server.cc \
|
|
$(srcdir)/symbol.cc \
|
|
$(srcdir)/target.cc \
|
|
$(srcdir)/thread-db.cc \
|
|
$(srcdir)/utils.cc \
|
|
$(srcdir)/win32-i386-low.cc \
|
|
$(srcdir)/win32-low.cc \
|
|
$(srcdir)/x86-low.cc \
|
|
$(srcdir)/../gdb/alloc.c \
|
|
$(srcdir)/../gdb/arch/arc.c \
|
|
$(srcdir)/../gdb/arch/arm.c \
|
|
$(srcdir)/../gdb/arch/arm-get-next-pcs.c \
|
|
$(srcdir)/../gdb/arch/arm-linux.c \
|
|
$(srcdir)/../gdb/arch/ppc-linux-common.c \
|
|
$(srcdir)/../gdb/arch/riscv.c \
|
|
$(srcdir)/../gdb/nat/aarch64-sve-linux-ptrace.c \
|
|
$(srcdir)/../gdb/nat/linux-btrace.c \
|
|
$(srcdir)/../gdb/nat/linux-namespaces.c \
|
|
$(srcdir)/../gdb/nat/linux-osdata.c \
|
|
$(srcdir)/../gdb/nat/linux-personality.c \
|
|
$(srcdir)/../gdb/nat/mips-linux-watch.c \
|
|
$(srcdir)/../gdb/nat/ppc-linux.c \
|
|
$(srcdir)/../gdb/nat/riscv-linux-tdesc.c \
|
|
$(srcdir)/../gdb/nat/fork-inferior.c \
|
|
$(srcdir)/../gdb/target/waitstatus.c
|
|
|
|
DEPFILES = @GDBSERVER_DEPFILES@
|
|
|
|
LIBOBJS = @LIBOBJS@
|
|
|
|
SOURCES = $(SFILES)
|
|
TAGFILES = $(SOURCES) ${HFILES} ${ALLPARAM} ${POSSLIBS}
|
|
|
|
OBS = \
|
|
alloc.o \
|
|
ax.o \
|
|
debug.o \
|
|
dll.o \
|
|
hostio.o \
|
|
inferiors.o \
|
|
mem-break.o \
|
|
notif.o \
|
|
regcache.o \
|
|
remote-utils.o \
|
|
server.o \
|
|
symbol.o \
|
|
target.o \
|
|
tdesc.o \
|
|
tracepoint.o \
|
|
utils.o \
|
|
version.o \
|
|
target/waitstatus.o \
|
|
$(DEPFILES) \
|
|
$(LIBOBJS) \
|
|
$(XML_BUILTIN)
|
|
|
|
GDBREPLAY_OBS = \
|
|
gdbreplay.o \
|
|
utils.o \
|
|
version.o
|
|
|
|
GDBSERVER_LIBS = @GDBSERVER_LIBS@ $(PTHREAD_LIBS)
|
|
XM_CLIBS = @LIBS@
|
|
CDEPS = $(srcdir)/proc-service.list
|
|
|
|
# XML files to compile in to gdbserver, if any.
|
|
XML_DIR = $(srcdir)/../gdb/features
|
|
XML_FILES = @srv_xmlfiles@
|
|
XML_BUILTIN = @srv_xmlbuiltin@
|
|
|
|
IPA_DEPFILES = @IPA_DEPFILES@
|
|
extra_libraries = @extra_libraries@
|
|
|
|
FLAGS_TO_PASS = \
|
|
"prefix=$(prefix)" \
|
|
"exec_prefix=$(exec_prefix)" \
|
|
"infodir=$(infodir)" \
|
|
"datarootdir=$(datarootdir)" \
|
|
"docdir=$(docdir)" \
|
|
"htmldir=$(htmldir)" \
|
|
"pdfdir=$(pdfdir)" \
|
|
"libdir=$(libdir)" \
|
|
"mandir=$(mandir)" \
|
|
"datadir=$(datadir)" \
|
|
"includedir=$(includedir)" \
|
|
"against=$(against)" \
|
|
"DESTDIR=$(DESTDIR)" \
|
|
"AR=$(AR)" \
|
|
"AR_FLAGS=$(AR_FLAGS)" \
|
|
"CC=$(CC)" \
|
|
"CFLAGS=$(CFLAGS)" \
|
|
"CXX=$(CXX)" \
|
|
"CXXFLAGS=$(CXXFLAGS)" \
|
|
"DLLTOOL=$(DLLTOOL)" \
|
|
"LDFLAGS=$(LDFLAGS)" \
|
|
"RANLIB=$(RANLIB)" \
|
|
"MAKEINFO=$(MAKEINFO)" \
|
|
"MAKEHTML=$(MAKEHTML)" \
|
|
"MAKEHTMLFLAGS=$(MAKEHTMLFLAGS)" \
|
|
"INSTALL=$(INSTALL)" \
|
|
"INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \
|
|
"INSTALL_DATA=$(INSTALL_DATA)" \
|
|
"RUNTEST=$(RUNTEST)" \
|
|
"RUNTESTFLAGS=$(RUNTESTFLAGS)"
|
|
|
|
# All generated files which can be included by another file.
|
|
generated_files = config.h
|
|
|
|
all: gdbserver$(EXEEXT) gdbreplay$(EXEEXT) $(extra_libraries)
|
|
|
|
# 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:
|
|
n=`echo gdbserver | sed '$(program_transform_name)'`; \
|
|
if [ x$$n = x ]; then n=gdbserver; else true; fi; \
|
|
if [ x"$(IPA_DEPFILES)" != x ]; then \
|
|
$(SHELL) $(srcdir)/../mkinstalldirs $(DESTDIR)$(libdir); \
|
|
$(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $(IPA_LIB) $(DESTDIR)$(libdir)/$(IPA_LIB); \
|
|
fi; \
|
|
$(SHELL) $(srcdir)/../mkinstalldirs $(DESTDIR)$(bindir); \
|
|
$(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) gdbserver$(EXEEXT) $(DESTDIR)$(bindir)/$$n$(EXEEXT)
|
|
|
|
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
|
|
|
|
uninstall: force
|
|
n=`echo gdbserver | sed '$(program_transform_name)'`; \
|
|
if [ x$$n = x ]; then n=gdbserver; else true; fi; \
|
|
rm -f $(DESTDIR)/$(bindir)/$$n$(EXEEXT) $(DESTDIR)$(man1dir)/$$n.1
|
|
|
|
installcheck:
|
|
check:
|
|
info dvi pdf:
|
|
install-info:
|
|
install-pdf:
|
|
html:
|
|
install-html:
|
|
clean-info:
|
|
|
|
gdbserver$(EXEEXT): $(sort $(OBS)) ${CDEPS} $(LIBGNU) $(LIBIBERTY) \
|
|
$(INTL_DEPS) $(GDBSUPPORT)
|
|
$(SILENCE) rm -f gdbserver$(EXEEXT)
|
|
$(ECHO_CXXLD) $(CC_LD) $(INTERNAL_CFLAGS) $(INTERNAL_LDFLAGS) \
|
|
$(CXXFLAGS) \
|
|
-o gdbserver$(EXEEXT) $(OBS) $(GDBSUPPORT) $(LIBGNU) \
|
|
$(LIBGNU_EXTRA_LIBS) $(LIBIBERTY) $(INTL) \
|
|
$(GDBSERVER_LIBS) $(XM_CLIBS) $(WIN32APILIBS)
|
|
|
|
gdbreplay$(EXEEXT): $(sort $(GDBREPLAY_OBS)) $(LIBGNU) $(LIBIBERTY) \
|
|
$(INTL_DEPS) $(GDBSUPPORT)
|
|
$(SILENCE) rm -f gdbreplay$(EXEEXT)
|
|
$(ECHO_CXXLD) $(CC_LD) $(INTERNAL_CFLAGS) $(INTERNAL_LDFLAGS) \
|
|
$(CXXFLAGS) \
|
|
-o gdbreplay$(EXEEXT) $(GDBREPLAY_OBS) $(XM_CLIBS) \
|
|
$(GDBSUPPORT) $(LIBGNU) $(LIBGNU_EXTRA_LIBS) \
|
|
$(LIBIBERTY) $(INTL) $(WIN32APILIBS)
|
|
|
|
IPA_OBJS = \
|
|
alloc-ipa.o \
|
|
ax-ipa.o \
|
|
gdbsupport/common-utils-ipa.o \
|
|
gdbsupport/errors-ipa.o \
|
|
gdbsupport/format-ipa.o \
|
|
gdbsupport/print-utils-ipa.o \
|
|
gdbsupport/rsp-low-ipa.o \
|
|
gdbsupport/safe-strerror-ipa.o \
|
|
gdbsupport/tdesc-ipa.o \
|
|
regcache-ipa.o \
|
|
remote-utils-ipa.o \
|
|
tdesc-ipa.o \
|
|
tracepoint-ipa.o \
|
|
utils-ipa.o \
|
|
${IPA_DEPFILES}
|
|
|
|
IPA_LIB = libinproctrace.so
|
|
|
|
$(IPA_LIB): $(sort $(IPA_OBJS)) ${CDEPS}
|
|
$(SILENCE) rm -f $(IPA_LIB)
|
|
$(ECHO_CXXLD) $(CC_LD) -shared -fPIC -Wl,--soname=$(IPA_LIB) \
|
|
-Wl,--no-undefined $(INTERNAL_CFLAGS) $(INTERNAL_LDFLAGS) \
|
|
$(CXXFLAGS) \
|
|
-o $(IPA_LIB) ${IPA_OBJS} -ldl -pthread
|
|
|
|
# Put the proper machine-specific files first, so M-. on a machine
|
|
# specific routine gets the one for the correct machine.
|
|
# The xyzzy stuff below deals with empty DEPFILES
|
|
TAGS: ${TAGFILES}
|
|
etags \
|
|
`for i in yzzy ${DEPFILES}; do \
|
|
if [ x$$i != xyzzy ]; then \
|
|
echo ${srcdir}/$$i | sed -e 's/\.o$$/\.cc/' \
|
|
-e 's,/\(arch\|nat\|target\)/,/../\1/,' \
|
|
fi; \
|
|
done` \
|
|
${TAGFILES}
|
|
tags: TAGS
|
|
|
|
mostlyclean clean:
|
|
rm -f *.o ${ADD_FILES} *~
|
|
rm -f gdbserver$(EXEEXT) gdbreplay$(EXEEXT) core make.log
|
|
rm -f $(IPA_LIB)
|
|
rm -f *-generated.cc
|
|
rm -f stamp-xml
|
|
rm -f $(DEPDIR)/*.Po
|
|
for i in $(CONFIG_SRC_SUBDIR); do \
|
|
rm -f $$i/*.o; \
|
|
rm -f $$i/$(DEPDIR)/*; \
|
|
done
|
|
|
|
maintainer-clean realclean distclean: clean
|
|
rm -f Makefile config.status config.h stamp-h config.log
|
|
rm -f Makefile
|
|
for i in $(CONFIG_SRC_SUBDIR); do \
|
|
rmdir $$i/$(DEPDIR); \
|
|
done
|
|
|
|
config.h: stamp-h ; @true
|
|
stamp-h: config.in config.status
|
|
$(SHELL) ./config.status config.h
|
|
|
|
Makefile: Makefile.in config.status
|
|
$(SHELL) ./config.status $@
|
|
|
|
config.status: configure configure.srv $(srcdir)/../bfd/development.sh
|
|
$(SHELL) ./config.status --recheck
|
|
|
|
# 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:
|
|
|
|
version-generated.cc: Makefile $(srcdir)/../gdb/version.in $(srcdir)/../bfd/version.h $(srcdir)/../gdbsupport/create-version.sh
|
|
$(ECHO_GEN) $(SHELL) $(srcdir)/../gdbsupport/create-version.sh $(srcdir)/../gdb \
|
|
$(host_alias) $(target_alias) $@
|
|
|
|
xml-builtin-generated.cc: stamp-xml; @true
|
|
stamp-xml: $(XML_DIR)/feature_to_c.sh Makefile $(XML_FILES)
|
|
$(SILENCE) rm -f xml-builtin.tmp
|
|
$(ECHO_GEN_XML_BUILTIN_GENERATED) $(SHELL) $(XML_DIR)/feature_to_c.sh \
|
|
xml-builtin.tmp $(XML_FILES)
|
|
$(SILENCE) $(SHELL) $(srcdir)/../move-if-change xml-builtin.tmp xml-builtin-generated.cc
|
|
$(SILENCE) echo stamp > stamp-xml
|
|
|
|
.PRECIOUS: xml-builtin.cc
|
|
|
|
# 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 =
|
|
|
|
regdat_sh = $(srcdir)/../gdb/regformats/regdat.sh
|
|
|
|
UST_CFLAGS = $(ustinc) -DCONFIG_UST_GDB_INTEGRATION
|
|
|
|
# Undo gnulib replacements for the IPA shared library build.
|
|
# The gnulib headers are still needed, but gnulib is not linked
|
|
# into the IPA lib so replacement apis don't work.
|
|
UNDO_GNULIB_CFLAGS = -Drpl_strerror_r=strerror_r
|
|
|
|
# Note, we only build the IPA if -fvisibility=hidden is supported in
|
|
# the first place.
|
|
IPAGENT_CFLAGS = $(INTERNAL_CFLAGS) $(UST_CFLAGS) \
|
|
$(UNDO_GNULIB_CFLAGS) \
|
|
-fPIC -DIN_PROCESS_AGENT \
|
|
-fvisibility=hidden
|
|
|
|
# CXXFLAGS is at the very end on purpose, so that user-supplied flags can
|
|
# override internal flags.
|
|
IPAGENT_COMPILE = $(ECHO_CXX) $(COMPILE.pre) $(IPAGENT_CFLAGS) $(CXXFLAGS) $(COMPILE.post)
|
|
|
|
# Rules for special cases.
|
|
|
|
ax-ipa.o: ax.cc
|
|
$(IPAGENT_COMPILE) $(WARN_CFLAGS_NO_FORMAT) $<
|
|
$(POSTCOMPILE)
|
|
|
|
ax.o: ax.cc
|
|
$(COMPILE) $(WARN_CFLAGS_NO_FORMAT) $<
|
|
$(POSTCOMPILE)
|
|
|
|
# Rules for objects that go in the in-process agent.
|
|
|
|
arch/%-ipa.o: ../gdb/arch/%.c
|
|
$(IPAGENT_COMPILE) -x c++ $<
|
|
$(POSTCOMPILE)
|
|
|
|
gdbsupport/%-ipa.o: ../gdbsupport/%.cc
|
|
$(IPAGENT_COMPILE) $<
|
|
$(POSTCOMPILE)
|
|
|
|
%-ipa.o: %-generated.cc
|
|
$(IPAGENT_COMPILE) $<
|
|
$(POSTCOMPILE)
|
|
|
|
%-ipa.o: %.cc
|
|
$(IPAGENT_COMPILE) $<
|
|
$(POSTCOMPILE)
|
|
|
|
%-ipa.o: ../gdb/%.c
|
|
$(IPAGENT_COMPILE) -x c++ $<
|
|
$(POSTCOMPILE)
|
|
|
|
# Note: Between two matching pattern rules, GNU Make 3.81 chooses the first one.
|
|
# Therefore, this one needs to be before "%.o: %.cc" for it to be considered for
|
|
# files such as linux-amd64-ipa.o generated from linux-amd64-ipa.cc.
|
|
#
|
|
# Later versions of GNU Make choose the rule with the shortest stem, so it would
|
|
# work in any order.
|
|
|
|
%-ipa.o: %-ipa.cc
|
|
$(IPAGENT_COMPILE) $<
|
|
$(POSTCOMPILE)
|
|
|
|
# Rules for objects that go in the gdbserver binary.
|
|
|
|
arch/%.o: ../gdb/arch/%.c
|
|
$(COMPILE) -x c++ $<
|
|
$(POSTCOMPILE)
|
|
|
|
%.o: %-generated.cc
|
|
$(COMPILE) $<
|
|
$(POSTCOMPILE)
|
|
|
|
%.o: %.cc
|
|
$(COMPILE) $<
|
|
$(POSTCOMPILE)
|
|
|
|
nat/%.o: ../gdb/nat/%.c
|
|
$(COMPILE) -x c++ $<
|
|
$(POSTCOMPILE)
|
|
|
|
target/%.o: ../gdb/target/%.c
|
|
$(COMPILE) -x c++ $<
|
|
$(POSTCOMPILE)
|
|
|
|
%.o: ../gdb/%.c
|
|
$(COMPILE) -x c++ $<
|
|
$(POSTCOMPILE)
|
|
|
|
# Rules for register format descriptions. Suffix destination files with
|
|
# -generated to identify and clean them easily.
|
|
|
|
%-generated.cc: ../gdb/regformats/%.dat $(regdat_sh)
|
|
$(ECHO_REGDAT) $(SHELL) $(regdat_sh) $< $@
|
|
|
|
%-generated.cc: ../gdb/regformats/rs6000/%.dat $(regdat_sh)
|
|
$(ECHO_REGDAT) $(SHELL) $(regdat_sh) $< $@
|
|
|
|
#
|
|
# 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) $(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 = $(OBS) $(GDBREPLAY_OBS) $(IPA_OBJS)
|
|
|
|
# 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
|
|
|
|
# All the .deps files to include.
|
|
all_deps_files = $(foreach dep,$(patsubst %.o,%.Po,$(all_object_files)),\
|
|
$(dir $(dep))/$(DEPDIR)/$(notdir $(dep)))
|
|
|
|
# Dependencies.
|
|
-include $(all_deps_files)
|
|
|
|
# Disable implicit make rules.
|
|
include $(srcdir)/../gdb/disable-implicit-rules.mk
|
|
|
|
# Do not delete intermediate files (e.g. *-generated.cc).
|
|
.SECONDARY:
|
|
|
|
# This is the end of "Makefile.in".
|