1# Copyright (C) 1989-2023 Free Software Foundation, Inc. 2 3# This file is part of GDB. 4 5# This program is free software; you can redistribute it and/or modify 6# it under the terms of the GNU General Public License as published by 7# the Free Software Foundation; either version 3 of the License, or 8# (at your option) any later version. 9# 10# This program is distributed in the hope that it will be useful, 11# but WITHOUT ANY WARRANTY; without even the implied warranty of 12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13# GNU General Public License for more details. 14# 15# You should have received a copy of the GNU General Public License 16# along with this program. If not, see <http://www.gnu.org/licenses/>. 17 18# Please keep lists in this file sorted alphabetically, with one item per line. 19# See gdb/Makefile.in for guidelines on ordering files and directories. 20 21prefix = @prefix@ 22exec_prefix = @exec_prefix@ 23 24host_alias = @host_noncanonical@ 25target_alias = @target_noncanonical@ 26program_transform_name = @program_transform_name@ 27bindir = @bindir@ 28libdir = @libdir@ 29 30CONFIG_SRC_SUBDIR = @CONFIG_SRC_SUBDIR@ 31 32install_sh = @install_sh@ 33 34SHELL = @SHELL@ 35EXEEXT = @EXEEXT@ 36 37INSTALL = @INSTALL@ 38INSTALL_PROGRAM = @INSTALL_PROGRAM@ 39INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ 40INSTALL_DATA = @INSTALL_DATA@ 41RANLIB = @RANLIB@ 42 43CC = @CC@ 44CXX = @CXX@ 45CXX_DIALECT = @CXX_DIALECT@ 46AR = @AR@ 47AR_FLAGS = rc 48STRIP = @STRIP@ 49 50# Dependency tracking information. 51DEPMODE = @CCDEPMODE@ 52DEPDIR = @DEPDIR@ 53depcomp = $(SHELL) $(srcdir)/../depcomp 54 55# Directory containing source files. Don't clean up the spacing, 56# this exact string is matched for by the "configure" script. 57srcdir = @srcdir@ 58abs_top_srcdir = @abs_top_srcdir@ 59abs_srcdir = @abs_srcdir@ 60VPATH = @srcdir@ 61 62top_builddir = . 63 64include $(srcdir)/../gdb/silent-rules.mk 65 66# Note that these are overridden by GNU make-specific code below if 67# GNU make is used. The overrides implement dependency tracking. 68COMPILE.pre = $(CXX) $(CXX_DIALECT) 69COMPILE.post = -c -o $@ 70POSTCOMPILE = @true 71 72# CXXFLAGS is at the very end on purpose, so that user-supplied flags can 73# override internal flags. 74COMPILE = $(ECHO_CXX) $(COMPILE.pre) $(INTERNAL_CFLAGS) $(CXXFLAGS) $(COMPILE.post) 75 76# It is also possible that you will need to add -I/usr/include/sys to the 77# CFLAGS section if your system doesn't have fcntl.h in /usr/include (which 78# is where it should be according to Posix). 79 80# Set this up with gcc if you have gnu ld and the loader will print out 81# line numbers for undefinded refs. 82#CC_LD = g++ -static 83CC_LD = $(CXX) $(CXX_DIALECT) 84 85# Where is the "include" directory? Traditionally ../include or ./include 86INCLUDE_DIR = ${srcdir}/../include 87INCLUDE_DEP = $$(INCLUDE_DIR) 88 89LIBIBERTY_BUILDDIR = ../libiberty 90LIBIBERTY_NORMAL = $(LIBIBERTY_BUILDDIR)/libiberty.a 91LIBIBERTY_NOASAN = $(LIBIBERTY_BUILDDIR)/noasan/libiberty.a 92LIBIBERTY_PIC = $(LIBIBERTY_BUILDDIR)/pic/libiberty.a 93LIBIBERTY_FOR_SHLIB = \ 94 $(if $(wildcard $(LIBIBERTY_NOASAN)),\ 95 $(LIBIBERTY_NOASAN),\ 96 $(if $(wildcard $(LIBIBERTY_PIC)),\ 97 $(LIBIBERTY_PIC),\ 98 $(LIBIBERTY_NORMAL))) 99LIBIBERTY = $(LIBIBERTY_NORMAL) 100 101GDBSUPPORT_BUILDDIR = ../gdbsupport 102GDBSUPPORT = $(GDBSUPPORT_BUILDDIR)/libgdbsupport.a 103 104# Where is ust? These will be empty if ust was not available. 105ustlibs = @ustlibs@ 106ustinc = @ustinc@ 107 108# gnulib 109GNULIB_PARENT_DIR = .. 110include $(GNULIB_PARENT_DIR)/gnulib/Makefile.gnulib.inc 111 112# Where is the INTL library? Typically in ../intl. 113INTL = @LIBINTL@ 114INTL_DEPS = @LIBINTL_DEP@ 115INTL_CFLAGS = @INCINTL@ 116 117INCSUPPORT = -I$(srcdir)/.. -I.. 118 119# All the includes used for CFLAGS and for lint. 120# -I. for config files. 121# -I${srcdir} for our headers. 122# -I$(srcdir)/../gdb/regformats for regdef.h. 123# 124# We do not include ../target or ../nat in here because headers 125# in those directories should be included with the subdirectory. 126# e.g.: "target/wait.h". 127# 128INCLUDE_CFLAGS = -I. -I${srcdir} \ 129 -I$(srcdir)/../gdb/regformats -I$(srcdir)/.. -I$(INCLUDE_DIR) \ 130 -I$(srcdir)/../gdb $(INCGNU) $(INCSUPPORT) \ 131 $(INTL_CFLAGS) 132 133# M{H,T}_CFLAGS, if defined, has host- and target-dependent CFLAGS 134# from the config/ directory. 135GLOBAL_CFLAGS = ${MT_CFLAGS} ${MH_CFLAGS} 136#PROFILE_CFLAGS = -pg 137 138WARN_CFLAGS = @WARN_CFLAGS@ 139WERROR_CFLAGS = @WERROR_CFLAGS@ 140 141WARN_CFLAGS_NO_FORMAT = `echo " $(WARN_CFLAGS) " \ 142 | sed "s/ -Wformat-nonliteral / -Wno-format-nonliteral /g"` 143 144# These are specifically reserved for setting from the command line 145# when running make. I.E. "make CFLAGS=-Wmissing-prototypes". 146CFLAGS = @CFLAGS@ 147CXXFLAGS = @CXXFLAGS@ 148CPPFLAGS = @CPPFLAGS@ 149 150PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ 151PTHREAD_LIBS = @PTHREAD_LIBS@ 152 153WIN32APILIBS = @WIN32APILIBS@ 154 155# INTERNAL_CFLAGS is the aggregate of all other *CFLAGS macros. 156INTERNAL_CFLAGS_BASE = ${GLOBAL_CFLAGS} \ 157 ${PROFILE_CFLAGS} ${INCLUDE_CFLAGS} ${CPPFLAGS} $(PTHREAD_CFLAGS) 158INTERNAL_WARN_CFLAGS = ${INTERNAL_CFLAGS_BASE} $(WARN_CFLAGS) 159INTERNAL_CFLAGS = ${INTERNAL_WARN_CFLAGS} $(WERROR_CFLAGS) -DGDBSERVER 160 161# LDFLAGS is specifically reserved for setting from the command line 162# when running make. 163LDFLAGS = @LDFLAGS@ 164INTERNAL_LDFLAGS = $(LDFLAGS) @RDYNAMIC@ 165 166# All source files that go into linking GDB remote server. 167 168SFILES = \ 169 $(srcdir)/debug.cc \ 170 $(srcdir)/dll.cc \ 171 $(srcdir)/gdbreplay.cc \ 172 $(srcdir)/hostio.cc \ 173 $(srcdir)/i387-fp.cc \ 174 $(srcdir)/inferiors.cc \ 175 $(srcdir)/linux-aarch64-low.cc \ 176 $(srcdir)/linux-arc-low.cc \ 177 $(srcdir)/linux-arm-low.cc \ 178 $(srcdir)/linux-csky-low.cc \ 179 $(srcdir)/linux-ia64-low.cc \ 180 $(srcdir)/linux-loongarch-low.cc \ 181 $(srcdir)/linux-low.cc \ 182 $(srcdir)/linux-m68k-low.cc \ 183 $(srcdir)/linux-mips-low.cc \ 184 $(srcdir)/linux-nios2-low.cc \ 185 $(srcdir)/linux-or1k-low.cc \ 186 $(srcdir)/linux-ppc-low.cc \ 187 $(srcdir)/linux-riscv-low.cc \ 188 $(srcdir)/linux-s390-low.cc \ 189 $(srcdir)/linux-sh-low.cc \ 190 $(srcdir)/linux-sparc-low.cc \ 191 $(srcdir)/linux-x86-low.cc \ 192 $(srcdir)/linux-xtensa-low.cc \ 193 $(srcdir)/mem-break.cc \ 194 $(srcdir)/netbsd-aarch64-low.cc \ 195 $(srcdir)/netbsd-amd64-low.cc \ 196 $(srcdir)/netbsd-i386-low.cc \ 197 $(srcdir)/netbsd-low.cc \ 198 $(srcdir)/netbsd-low.h \ 199 $(srcdir)/proc-service.cc \ 200 $(srcdir)/proc-service.list \ 201 $(srcdir)/regcache.cc \ 202 $(srcdir)/remote-utils.cc \ 203 $(srcdir)/server.cc \ 204 $(srcdir)/symbol.cc \ 205 $(srcdir)/target.cc \ 206 $(srcdir)/thread-db.cc \ 207 $(srcdir)/utils.cc \ 208 $(srcdir)/win32-i386-low.cc \ 209 $(srcdir)/win32-low.cc \ 210 $(srcdir)/x86-low.cc \ 211 $(srcdir)/../gdb/alloc.c \ 212 $(srcdir)/../gdb/arch/arc.c \ 213 $(srcdir)/../gdb/arch/arm.c \ 214 $(srcdir)/../gdb/arch/arm-get-next-pcs.c \ 215 $(srcdir)/../gdb/arch/arm-linux.c \ 216 $(srcdir)/../gdb/arch/csky.c \ 217 $(srcdir)/../gdb/arch/loongarch.c \ 218 $(srcdir)/../gdb/arch/ppc-linux-common.c \ 219 $(srcdir)/../gdb/arch/riscv.c \ 220 $(srcdir)/../gdb/nat/aarch64-mte-linux-ptrace.c \ 221 $(srcdir)/../gdb/nat/aarch64-sve-linux-ptrace.c \ 222 $(srcdir)/../gdb/nat/linux-btrace.c \ 223 $(srcdir)/../gdb/nat/linux-namespaces.c \ 224 $(srcdir)/../gdb/nat/linux-osdata.c \ 225 $(srcdir)/../gdb/nat/linux-personality.c \ 226 $(srcdir)/../gdb/nat/mips-linux-watch.c \ 227 $(srcdir)/../gdb/nat/ppc-linux.c \ 228 $(srcdir)/../gdb/nat/riscv-linux-tdesc.c \ 229 $(srcdir)/../gdb/nat/fork-inferior.c \ 230 $(srcdir)/../gdb/target/target.c \ 231 $(srcdir)/../gdb/target/waitstatus.c 232 233DEPFILES = @GDBSERVER_DEPFILES@ 234 235LIBOBJS = @LIBOBJS@ 236 237SOURCES = $(SFILES) 238TAGFILES = $(SOURCES) ${HFILES} ${ALLPARAM} ${POSSLIBS} 239 240OBS = \ 241 alloc.o \ 242 ax.o \ 243 debug.o \ 244 dll.o \ 245 hostio.o \ 246 inferiors.o \ 247 mem-break.o \ 248 notif.o \ 249 regcache.o \ 250 remote-utils.o \ 251 server.o \ 252 symbol.o \ 253 target.o \ 254 tdesc.o \ 255 tracepoint.o \ 256 utils.o \ 257 version.o \ 258 target/target.o \ 259 target/waitstatus.o \ 260 $(DEPFILES) \ 261 $(LIBOBJS) \ 262 $(XML_BUILTIN) 263 264GDBREPLAY_OBS = \ 265 gdbreplay.o \ 266 utils.o \ 267 version.o 268 269GDBSERVER_LIBS = @GDBSERVER_LIBS@ $(PTHREAD_LIBS) 270XM_CLIBS = @LIBS@ 271CDEPS = $(srcdir)/proc-service.list 272 273# XML files to compile in to gdbserver, if any. 274XML_DIR = $(srcdir)/../gdb/features 275XML_FILES = @srv_xmlfiles@ 276XML_BUILTIN = @srv_xmlbuiltin@ 277 278IPA_DEPFILES = @IPA_DEPFILES@ 279extra_libraries = @extra_libraries@ 280 281FLAGS_TO_PASS = \ 282 "prefix=$(prefix)" \ 283 "exec_prefix=$(exec_prefix)" \ 284 "libdir=$(libdir)" \ 285 "DESTDIR=$(DESTDIR)" \ 286 "AR=$(AR)" \ 287 "AR_FLAGS=$(AR_FLAGS)" \ 288 "CC=$(CC)" \ 289 "CFLAGS=$(CFLAGS)" \ 290 "CXX=$(CXX)" \ 291 "CXXFLAGS=$(CXXFLAGS)" \ 292 "DLLTOOL=$(DLLTOOL)" \ 293 "LDFLAGS=$(LDFLAGS)" \ 294 "RANLIB=$(RANLIB)" \ 295 "MAKEINFO=$(MAKEINFO)" \ 296 "MAKEHTML=$(MAKEHTML)" \ 297 "MAKEHTMLFLAGS=$(MAKEHTMLFLAGS)" \ 298 "INSTALL=$(INSTALL)" \ 299 "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \ 300 "INSTALL_DATA=$(INSTALL_DATA)" \ 301 "RUNTEST=$(RUNTEST)" \ 302 "RUNTESTFLAGS=$(RUNTESTFLAGS)" 303 304# All generated files which can be included by another file. 305generated_files = config.h 306 307all: gdbserver$(EXEEXT) gdbreplay$(EXEEXT) $(extra_libraries) 308 309# Traditionally "install" depends on "all". But it may be useful 310# not to; for example, if the user has made some trivial change to a 311# source file and doesn't care about rebuilding or just wants to save the 312# time it takes for make to check that all is up to date. 313# install-only is intended to address that need. 314install: all 315 @$(MAKE) $(FLAGS_TO_PASS) install-only 316 317install-only: 318 n=`echo gdbserver | sed '$(program_transform_name)'`; \ 319 if [ x$$n = x ]; then n=gdbserver; else true; fi; \ 320 if [ x"$(IPA_DEPFILES)" != x ]; then \ 321 $(SHELL) $(srcdir)/../mkinstalldirs $(DESTDIR)$(libdir); \ 322 $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $(IPA_LIB) $(DESTDIR)$(libdir)/$(IPA_LIB); \ 323 fi; \ 324 $(SHELL) $(srcdir)/../mkinstalldirs $(DESTDIR)$(bindir); \ 325 $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) gdbserver$(EXEEXT) $(DESTDIR)$(bindir)/$$n$(EXEEXT) 326 327install-strip: 328 $(MAKE) $(FLAGS_TO_PASS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ 329 install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ 330 `test -z '$(STRIP)' || \ 331 echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install-only 332 333uninstall: force 334 n=`echo gdbserver | sed '$(program_transform_name)'`; \ 335 if [ x$$n = x ]; then n=gdbserver; else true; fi; \ 336 if [ x"$(IPA_DEPFILES)" != x ]; then \ 337 rm -f $(DESTDIR)$(libdir)/$(IPA_LIB); \ 338 fi; \ 339 rm -f $(DESTDIR)/$(bindir)/$$n$(EXEEXT) 340 341installcheck: 342check: 343info dvi pdf: 344install-info: 345install-pdf: 346html: 347install-html: 348clean-info: 349 350gdbserver$(EXEEXT): $(sort $(OBS)) ${CDEPS} $(LIBGNU) $(LIBIBERTY) \ 351 $(INTL_DEPS) $(GDBSUPPORT) 352 $(SILENCE) rm -f gdbserver$(EXEEXT) 353 $(ECHO_CXXLD) $(CC_LD) $(INTERNAL_CFLAGS) $(INTERNAL_LDFLAGS) \ 354 $(CXXFLAGS) \ 355 -o gdbserver$(EXEEXT) $(OBS) $(GDBSUPPORT) $(LIBGNU) \ 356 $(LIBGNU_EXTRA_LIBS) $(LIBIBERTY) $(INTL) \ 357 $(GDBSERVER_LIBS) $(XM_CLIBS) $(WIN32APILIBS) 358 359gdbreplay$(EXEEXT): $(sort $(GDBREPLAY_OBS)) $(LIBGNU) $(LIBIBERTY) \ 360 $(INTL_DEPS) $(GDBSUPPORT) 361 $(SILENCE) rm -f gdbreplay$(EXEEXT) 362 $(ECHO_CXXLD) $(CC_LD) $(INTERNAL_CFLAGS) $(INTERNAL_LDFLAGS) \ 363 $(CXXFLAGS) \ 364 -o gdbreplay$(EXEEXT) $(GDBREPLAY_OBS) $(XM_CLIBS) \ 365 $(GDBSUPPORT) $(LIBGNU) $(LIBGNU_EXTRA_LIBS) \ 366 $(LIBIBERTY) $(INTL) $(WIN32APILIBS) 367 368IPA_OBJS = \ 369 alloc-ipa.o \ 370 ax-ipa.o \ 371 gdbsupport/common-utils-ipa.o \ 372 gdbsupport/errors-ipa.o \ 373 gdbsupport/format-ipa.o \ 374 gdbsupport/print-utils-ipa.o \ 375 gdbsupport/rsp-low-ipa.o \ 376 gdbsupport/safe-strerror-ipa.o \ 377 gdbsupport/tdesc-ipa.o \ 378 regcache-ipa.o \ 379 remote-utils-ipa.o \ 380 tdesc-ipa.o \ 381 tracepoint-ipa.o \ 382 utils-ipa.o \ 383 ${IPA_DEPFILES} 384 385IPA_LIB = libinproctrace.so 386 387$(IPA_LIB): $(sort $(IPA_OBJS)) ${CDEPS} 388 $(SILENCE) rm -f $(IPA_LIB) 389 $(ECHO_CXXLD) $(CC_LD) -shared -fPIC -Wl,--soname=$(IPA_LIB) \ 390 -Wl,--no-undefined $(INTERNAL_CFLAGS) $(INTERNAL_LDFLAGS) \ 391 $(CXXFLAGS) \ 392 -o $(IPA_LIB) ${IPA_OBJS} $(LIBIBERTY_FOR_SHLIB) -ldl -pthread 393 394# Put the proper machine-specific files first, so M-. on a machine 395# specific routine gets the one for the correct machine. 396# The xyzzy stuff below deals with empty DEPFILES 397TAGS: ${TAGFILES} 398 etags \ 399 `for i in yzzy ${DEPFILES}; do \ 400 if [ x$$i != xyzzy ]; then \ 401 echo ${srcdir}/$$i | sed -e 's/\.o$$/\.cc/' \ 402 -e 's,/\(arch\|nat\|target\)/,/../\1/,' \ 403 fi; \ 404 done` \ 405 ${TAGFILES} 406tags: TAGS 407 408mostlyclean clean: 409 rm -f *.o ${ADD_FILES} *~ 410 rm -f gdbserver$(EXEEXT) gdbreplay$(EXEEXT) core make.log 411 rm -f $(IPA_LIB) 412 rm -f *-generated.cc 413 rm -f stamp-xml 414 rm -f $(DEPDIR)/*.Po 415 for i in $(CONFIG_SRC_SUBDIR); do \ 416 rm -f $$i/*.o; \ 417 rm -f $$i/$(DEPDIR)/*; \ 418 done 419 420maintainer-clean realclean distclean: clean 421 rm -f Makefile config.status config.h stamp-h config.log config.cache 422 for i in $(CONFIG_SRC_SUBDIR); do \ 423 rmdir $$i/$(DEPDIR); \ 424 done 425 426config.h: stamp-h ; @true 427stamp-h: config.in config.status 428 $(SHELL) ./config.status config.h 429 430Makefile: Makefile.in config.status 431 $(SHELL) ./config.status $@ 432 433config.status: configure configure.srv $(srcdir)/../bfd/development.sh 434 $(SHELL) ./config.status --recheck 435 436# automatic rebuilding in automake-generated Makefiles requires 437# this rule in the toplevel Makefile, which, with GNU make, causes 438# the desired updates through the implicit regeneration of the Makefile 439# and all of its prerequisites. 440am--refresh: 441 @: 442 443force: 444 445version-generated.cc: Makefile $(srcdir)/../gdb/version.in $(srcdir)/../bfd/version.h $(srcdir)/../gdbsupport/create-version.sh 446 $(ECHO_GEN) $(SHELL) $(srcdir)/../gdbsupport/create-version.sh $(srcdir)/../gdb \ 447 $(host_alias) $(target_alias) $@ 448 449xml-builtin-generated.cc: stamp-xml; @true 450stamp-xml: $(XML_DIR)/feature_to_c.sh Makefile $(XML_FILES) 451 $(SILENCE) rm -f xml-builtin.tmp 452 $(ECHO_GEN_XML_BUILTIN_GENERATED) $(SHELL) $(XML_DIR)/feature_to_c.sh \ 453 xml-builtin.tmp $(XML_FILES) 454 $(SILENCE) $(SHELL) $(srcdir)/../move-if-change xml-builtin.tmp xml-builtin-generated.cc 455 $(SILENCE) echo stamp > stamp-xml 456 457.PRECIOUS: xml-builtin.cc 458 459# GNU Make has an annoying habit of putting *all* the Makefile variables 460# into the environment, unless you include this target as a circumvention. 461# Rumor is that this will be fixed (and this target can be removed) 462# in GNU Make 4.0. 463.NOEXPORT: 464 465# GNU Make 3.63 has a different problem: it keeps tacking command line 466# overrides onto the definition of $(MAKE). This variable setting 467# will remove them. 468MAKEOVERRIDES = 469 470regdat_sh = $(srcdir)/../gdb/regformats/regdat.sh 471 472UST_CFLAGS = $(ustinc) -DCONFIG_UST_GDB_INTEGRATION 473 474# Undo gnulib replacements for the IPA shared library build. 475# The gnulib headers are still needed, but gnulib is not linked 476# into the IPA lib so replacement apis don't work. 477UNDO_GNULIB_CFLAGS = -Drpl_strerror_r=strerror_r -Drpl_free=free \ 478 -Drpl_malloc=malloc -Drpl_realloc=realloc 479 480# Note, we only build the IPA if -fvisibility=hidden is supported in 481# the first place. 482IPAGENT_CFLAGS = $(INTERNAL_CFLAGS) $(UST_CFLAGS) \ 483 $(UNDO_GNULIB_CFLAGS) \ 484 -fPIC -DIN_PROCESS_AGENT \ 485 -fvisibility=hidden 486 487# CXXFLAGS is at the very end on purpose, so that user-supplied flags can 488# override internal flags. 489IPAGENT_COMPILE = $(ECHO_CXX) $(COMPILE.pre) $(IPAGENT_CFLAGS) $(CXXFLAGS) $(COMPILE.post) 490 491# Rules for special cases. 492 493ax-ipa.o: ax.cc 494 $(IPAGENT_COMPILE) $(WARN_CFLAGS_NO_FORMAT) $< 495 $(POSTCOMPILE) 496 497ax.o: ax.cc 498 $(COMPILE) $(WARN_CFLAGS_NO_FORMAT) $< 499 $(POSTCOMPILE) 500 501# Rules for objects that go in the in-process agent. 502 503arch/%-ipa.o: ../gdb/arch/%.c 504 $(IPAGENT_COMPILE) -x c++ $< 505 $(POSTCOMPILE) 506 507gdbsupport/%-ipa.o: ../gdbsupport/%.cc 508 $(IPAGENT_COMPILE) $< 509 $(POSTCOMPILE) 510 511%-ipa.o: %-generated.cc 512 $(IPAGENT_COMPILE) $< 513 $(POSTCOMPILE) 514 515%-ipa.o: %.cc 516 $(IPAGENT_COMPILE) $< 517 $(POSTCOMPILE) 518 519%-ipa.o: ../gdb/%.c 520 $(IPAGENT_COMPILE) -x c++ $< 521 $(POSTCOMPILE) 522 523# Note: Between two matching pattern rules, GNU Make 3.81 chooses the first one. 524# Therefore, this one needs to be before "%.o: %.cc" for it to be considered for 525# files such as linux-amd64-ipa.o generated from linux-amd64-ipa.cc. 526# 527# Later versions of GNU Make choose the rule with the shortest stem, so it would 528# work in any order. 529 530%-ipa.o: %-ipa.cc 531 $(IPAGENT_COMPILE) $< 532 $(POSTCOMPILE) 533 534# Rules for objects that go in the gdbserver binary. 535 536arch/%.o: ../gdb/arch/%.c 537 $(COMPILE) -x c++ $< 538 $(POSTCOMPILE) 539 540%.o: %-generated.cc 541 $(COMPILE) $< 542 $(POSTCOMPILE) 543 544%.o: %.cc 545 $(COMPILE) $< 546 $(POSTCOMPILE) 547 548nat/%.o: ../gdb/nat/%.c 549 $(COMPILE) -x c++ $< 550 $(POSTCOMPILE) 551 552target/%.o: ../gdb/target/%.c 553 $(COMPILE) -x c++ $< 554 $(POSTCOMPILE) 555 556%.o: ../gdb/%.c 557 $(COMPILE) -x c++ $< 558 $(POSTCOMPILE) 559 560# Rules for register format descriptions. Suffix destination files with 561# -generated to identify and clean them easily. 562 563%-generated.cc: ../gdb/regformats/%.dat $(regdat_sh) 564 $(ECHO_REGDAT) $(SHELL) $(regdat_sh) $< $@ 565 566%-generated.cc: ../gdb/regformats/rs6000/%.dat $(regdat_sh) 567 $(ECHO_REGDAT) $(SHELL) $(regdat_sh) $< $@ 568 569# 570# Dependency tracking. 571# 572 573ifeq ($(DEPMODE),depmode=gcc3) 574# Note that we put the dependencies into a .Tpo file, then move them 575# into place if the compile succeeds. We need this because gcc does 576# not atomically write the dependency output file. 577override COMPILE.post = -c -o $@ -MT $@ -MMD -MP \ 578 -MF $(@D)/$(DEPDIR)/$(basename $(@F)).Tpo 579override POSTCOMPILE = @mv $(@D)/$(DEPDIR)/$(basename $(@F)).Tpo \ 580 $(@D)/$(DEPDIR)/$(basename $(@F)).Po 581else 582override COMPILE.pre = source='$<' object='$@' libtool=no \ 583 DEPDIR=$(DEPDIR) $(DEPMODE) $(depcomp) \ 584 $(CXX) $(CXX_DIALECT) 585# depcomp handles atomicity for us, so we don't need a postcompile 586# step. 587override POSTCOMPILE = 588endif 589 590# A list of all the objects we might care about in this build, for 591# dependency tracking. 592all_object_files = $(OBS) $(GDBREPLAY_OBS) $(IPA_OBJS) 593 594# Ensure that generated files are created early. Use order-only 595# dependencies if available. They require GNU make 3.80 or newer, 596# and the .VARIABLES variable was introduced at the same time. 597ifdef .VARIABLES 598$(all_object_files): | $(generated_files) 599else 600$(all_object_files) : $(generated_files) 601endif 602 603# All the .deps files to include. 604all_deps_files = $(foreach dep,$(patsubst %.o,%.Po,$(all_object_files)),\ 605 $(dir $(dep))/$(DEPDIR)/$(notdir $(dep))) 606 607# Dependencies. 608-include $(all_deps_files) 609 610# Disable implicit make rules. 611include $(srcdir)/../gdb/disable-implicit-rules.mk 612 613# Do not delete intermediate files (e.g. *-generated.cc). 614.SECONDARY: 615 616# This is the end of "Makefile.in". 617