1 # Makefile.am -- Backtrace Makefile. 2 # Copyright (C) 2012-2024 Free Software Foundation, Inc. 3 4 # Redistribution and use in source and binary forms, with or without 5 # modification, are permitted provided that the following conditions are 6 # met: 7 8 # (1) Redistributions of source code must retain the above copyright 9 # notice, this list of conditions and the following disclaimer. 10 11 # (2) Redistributions in binary form must reproduce the above copyright 12 # notice, this list of conditions and the following disclaimer in 13 # the documentation and/or other materials provided with the 14 # distribution. 15 16 # (3) The name of the author may not be used to 17 # endorse or promote products derived from this software without 18 # specific prior written permission. 19 20 # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 21 # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 22 # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 23 # DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, 24 # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 25 # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 26 # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 27 # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 28 # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 29 # IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 30 # POSSIBILITY OF SUCH DAMAGE. 31 32 ACLOCAL_AMFLAGS = -I .. -I ../config 33 34 AM_CPPFLAGS = -I $(top_srcdir)/../include -I $(top_srcdir)/../libgcc \ 35 -I ../libgcc 36 37 AM_CFLAGS = $(EXTRA_FLAGS) $(WARN_FLAGS) $(PIC_FLAG) $(CET_HOST_FLAGS) 38 39 noinst_LTLIBRARIES = libbacktrace.la 40 41 libbacktrace_la_SOURCES = \ 42 backtrace.h \ 43 atomic.c \ 44 dwarf.c \ 45 fileline.c \ 46 internal.h \ 47 posix.c \ 48 print.c \ 49 sort.c \ 50 state.c 51 52 BACKTRACE_FILES = \ 53 backtrace.c \ 54 simple.c \ 55 nounwind.c 56 57 FORMAT_FILES = \ 58 elf.c \ 59 macho.c \ 60 pecoff.c \ 61 unknown.c \ 62 xcoff.c 63 64 VIEW_FILES = \ 65 read.c \ 66 mmapio.c 67 68 ALLOC_FILES = \ 69 alloc.c \ 70 mmap.c 71 72 EXTRA_libbacktrace_la_SOURCES = \ 73 $(BACKTRACE_FILES) \ 74 $(FORMAT_FILES) \ 75 $(VIEW_FILES) \ 76 $(ALLOC_FILES) 77 78 libbacktrace_la_LIBADD = \ 79 $(BACKTRACE_FILE) \ 80 $(FORMAT_FILE) \ 81 $(VIEW_FILE) \ 82 $(ALLOC_FILE) 83 84 libbacktrace_la_DEPENDENCIES = $(libbacktrace_la_LIBADD) 85 86 # Testsuite. 87 88 # Add a test to this variable if you want it to be built as a program, 89 # with SOURCES, etc. 90 check_PROGRAMS = 91 92 # Add a test to this variable if you want it to be run. 93 TESTS = 94 95 # Add a test to this variable if you want it to be built as a Makefile 96 # target and run. 97 MAKETESTS = 98 99 # Add a test to this variable if you want it to be built as a program, 100 # with SOURCES, etc., and run. 101 BUILDTESTS = 102 103 # Add a file to this variable if you want it to be built for testing. 104 check_DATA = 105 106 # Flags to use when compiling test programs. 107 libbacktrace_TEST_CFLAGS = $(EXTRA_FLAGS) $(WARN_FLAGS) -g 108 109 # Flags to use when linking test programs. 110 # This avoids generating a shell script when configured with --enable-shared. 111 libbacktrace_testing_ldflags = -no-install 112 113 if USE_DSYMUTIL 114 115 %.dSYM: % 116 $(DSYMUTIL) $< 117 118 endif USE_DSYMUTIL 119 120 if NATIVE 121 check_LTLIBRARIES = libbacktrace_alloc.la 122 123 libbacktrace_alloc_la_SOURCES = $(libbacktrace_la_SOURCES) 124 libbacktrace_alloc_la_LIBADD = $(BACKTRACE_FILE) $(FORMAT_FILE) read.lo alloc.lo 125 126 libbacktrace_alloc_la_DEPENDENCIES = $(libbacktrace_alloc_la_LIBADD) 127 128 check_LTLIBRARIES += libbacktrace_noformat.la 129 130 libbacktrace_noformat_la_SOURCES = $(libbacktrace_la_SOURCES) 131 libbacktrace_noformat_la_LIBADD = $(BACKTRACE_FILE) $(VIEW_FILE) $(ALLOC_FILE) 132 133 libbacktrace_noformat_la_DEPENDENCIES = $(libbacktrace_noformat_la_LIBADD) 134 135 if HAVE_ELF 136 if HAVE_OBJCOPY_DEBUGLINK 137 138 TEST_BUILD_ID_DIR=$(abs_builddir)/usr/lib/debug/.build-id/ 139 140 check_LTLIBRARIES += libbacktrace_elf_for_test.la 141 142 libbacktrace_elf_for_test_la_SOURCES = $(libbacktrace_la_SOURCES) 143 libbacktrace_elf_for_test_la_LIBADD = $(BACKTRACE_FILE) elf_for_test.lo \ 144 $(VIEW_FILE) $(ALLOC_FILE) 145 146 elf_for_test.c: elf.c 147 SEARCH='^#define SYSTEM_BUILD_ID_DIR.*$$'; \ 148 REPLACE="#define SYSTEM_BUILD_ID_DIR \"$(TEST_BUILD_ID_DIR)\""; \ 149 $(SED) "s%$$SEARCH%$$REPLACE%" \ 150 $< \ 151 > $@.tmp 152 mv $@.tmp $@ 153 154 endif HAVE_OBJCOPY_DEBUGLINK 155 endif HAVE_ELF 156 157 elf_%.c: elf.c 158 nlinit=`echo 'nl="'; echo '"'`; eval "$$nlinit"; \ 159 SEARCH='#error "Unknown BACKTRACE_ELF_SIZE"'; \ 160 REPLACE="#undef BACKTRACE_ELF_SIZE\\$${nl}#define BACKTRACE_ELF_SIZE"; \ 161 $(SED) "s/^$$SEARCH\$$/$$REPLACE $*/" \ 162 $< \ 163 > $@.tmp 164 mv $@.tmp $@ 165 166 xcoff_%.c: xcoff.c 167 nlinit=`echo 'nl="'; echo '"'`; eval "$$nlinit"; \ 168 SEARCH='#error "Unknown BACKTRACE_XCOFF_SIZE"'; \ 169 REPLACE="#undef BACKTRACE_XCOFF_SIZE\\$${nl}#define BACKTRACE_XCOFF_SIZE"; \ 170 $(SED) "s/^$$SEARCH\$$/$$REPLACE $*/" \ 171 $< \ 172 > $@.tmp 173 mv $@.tmp $@ 174 175 test_elf_32_SOURCES = test_format.c testlib.c 176 test_elf_32_CFLAGS = $(libbacktrace_TEST_CFLAGS) 177 test_elf_32_LDFLAGS = $(libbacktrace_testing_ldflags) 178 test_elf_32_LDADD = libbacktrace_noformat.la elf_32.lo 179 180 BUILDTESTS += test_elf_32 181 182 test_elf_64_SOURCES = test_format.c testlib.c 183 test_elf_64_CFLAGS = $(libbacktrace_TEST_CFLAGS) 184 test_elf_64_LDFLAGS = $(libbacktrace_testing_ldflags) 185 test_elf_64_LDADD = libbacktrace_noformat.la elf_64.lo 186 187 BUILDTESTS += test_elf_64 188 189 test_macho_SOURCES = test_format.c testlib.c 190 test_macho_CFLAGS = $(libbacktrace_TEST_CFLAGS) 191 test_macho_LDFLAGS = $(libbacktrace_testing_ldflags) 192 test_macho_LDADD = libbacktrace_noformat.la macho.lo 193 194 BUILDTESTS += test_macho 195 196 test_xcoff_32_SOURCES = test_format.c testlib.c 197 test_xcoff_32_CFLAGS = $(libbacktrace_TEST_CFLAGS) 198 test_xcoff_32_LDFLAGS = $(libbacktrace_testing_ldflags) 199 test_xcoff_32_LDADD = libbacktrace_noformat.la xcoff_32.lo 200 201 BUILDTESTS += test_xcoff_32 202 203 test_xcoff_64_SOURCES = test_format.c testlib.c 204 test_xcoff_64_CFLAGS = $(libbacktrace_TEST_CFLAGS) 205 test_xcoff_64_LDFLAGS = $(libbacktrace_testing_ldflags) 206 test_xcoff_64_LDADD = libbacktrace_noformat.la xcoff_64.lo 207 208 BUILDTESTS += test_xcoff_64 209 210 test_pecoff_SOURCES = test_format.c testlib.c 211 test_pecoff_CFLAGS = $(libbacktrace_TEST_CFLAGS) 212 test_pecoff_LDFLAGS = $(libbacktrace_testing_ldflags) 213 test_pecoff_LDADD = libbacktrace_noformat.la pecoff.lo 214 215 BUILDTESTS += test_pecoff 216 217 test_unknown_SOURCES = test_format.c testlib.c 218 test_unknown_CFLAGS = $(libbacktrace_TEST_CFLAGS) 219 test_unknown_LDFLAGS = $(libbacktrace_testing_ldflags) 220 test_unknown_LDADD = libbacktrace_noformat.la unknown.lo 221 222 BUILDTESTS += test_unknown 223 224 unittest_SOURCES = unittest.c testlib.c 225 unittest_CFLAGS = $(libbacktrace_TEST_CFLAGS) 226 unittest_LDFLAGS = $(libbacktrace_testing_ldflags) 227 unittest_LDADD = libbacktrace.la 228 229 BUILDTESTS += unittest 230 231 unittest_alloc_SOURCES = $(unittest_SOURCES) 232 unittest_alloc_CFLAGS = $(libbacktrace_TEST_CFLAGS) 233 unittest_alloc_LDFLAGS = $(libbacktrace_testing_ldflags) 234 unittest_alloc_LDADD = libbacktrace_alloc.la 235 236 BUILDTESTS += unittest_alloc 237 238 check_LTLIBRARIES += libbacktrace_instrumented_alloc.la 239 240 libbacktrace_instrumented_alloc_la_SOURCES = $(libbacktrace_la_SOURCES) 241 libbacktrace_instrumented_alloc_la_LIBADD = $(BACKTRACE_FILE) $(FORMAT_FILE) \ 242 read.lo instrumented_alloc.lo 243 244 libbacktrace_instrumented_alloc_la_DEPENDENCIES = \ 245 $(libbacktrace_instrumented_alloc_la_LIBADD) 246 247 instrumented_alloc.lo: alloc.c 248 249 allocfail_SOURCES = allocfail.c testlib.c 250 allocfail_CFLAGS = $(libbacktrace_TEST_CFLAGS) 251 allocfail_LDADD = libbacktrace_instrumented_alloc.la 252 253 check_PROGRAMS += allocfail 254 255 allocfail.sh: allocfail 256 257 TESTS += allocfail.sh 258 259 if USE_DSYMUTIL 260 check_DATA += allocfail.dSYM 261 endif USE_DSYMUTIL 262 263 if HAVE_ELF 264 if HAVE_BUILDID 265 if HAVE_OBJCOPY_DEBUGLINK 266 267 b2test_SOURCES = $(btest_SOURCES) 268 b2test_CFLAGS = $(libbacktrace_TEST_CFLAGS) 269 b2test_LDFLAGS = -Wl,--build-id $(libbacktrace_testing_ldflags) 270 b2test_LDADD = libbacktrace_elf_for_test.la 271 272 check_PROGRAMS += b2test 273 MAKETESTS += b2test_buildid b2test_buildidfull 274 275 if HAVE_DWZ 276 277 b3test_SOURCES = $(btest_SOURCES) 278 b3test_CFLAGS = $(libbacktrace_TEST_CFLAGS) 279 b3test_LDFLAGS = -Wl,--build-id $(libbacktrace_testing_ldflags) 280 b3test_LDADD = libbacktrace_elf_for_test.la 281 282 check_PROGRAMS += b3test 283 MAKETESTS += b3test_dwz_buildid b3test_dwz_buildidfull 284 285 endif HAVE_DWZ 286 287 endif HAVE_OBJCOPY_DEBUGLINK 288 endif HAVE_BUILDID 289 endif HAVE_ELF 290 291 btest_SOURCES = btest.c testlib.c 292 btest_CFLAGS = $(libbacktrace_TEST_CFLAGS) -O 293 btest_LDFLAGS = $(libbacktrace_testing_ldflags) 294 btest_LDADD = libbacktrace.la 295 296 BUILDTESTS += btest 297 298 if USE_DSYMUTIL 299 check_DATA += btest.dSYM 300 endif USE_DSYMUTIL 301 302 if HAVE_ELF 303 304 btest_lto_SOURCES = btest.c testlib.c 305 btest_lto_CFLAGS = $(libbacktrace_TEST_CFLAGS) -O -flto 306 btest_lto_LDFLAGS = $(libbacktrace_testing_ldflags) 307 btest_lto_LDADD = libbacktrace.la 308 309 BUILDTESTS += btest_lto 310 311 endif HAVE_ELF 312 313 btest_alloc_SOURCES = $(btest_SOURCES) 314 btest_alloc_CFLAGS = $(libbacktrace_TEST_CFLAGS) 315 btest_alloc_LDFLAGS = $(libbacktrace_testing_ldflags) 316 btest_alloc_LDADD = libbacktrace_alloc.la 317 318 BUILDTESTS += btest_alloc 319 320 if USE_DSYMUTIL 321 check_DATA += btest_alloc.dSYM 322 endif USE_DSYMUTIL 323 324 if HAVE_DWZ 325 326 %_dwz: % 327 rm -f $@ $@_common.debug 328 cp $< $@_1 329 cp $< $@_2 330 if $(DWZ) -m $@_common.debug $@_1 $@_2; then \ 331 rm -f $@_2; \ 332 mv $@_1 $@; \ 333 else \ 334 echo "Ignoring dwz errors, assuming that test passes"; \ 335 cp $< $@; \ 336 fi 337 338 MAKETESTS += btest_dwz 339 340 if HAVE_OBJCOPY_DEBUGLINK 341 342 MAKETESTS += btest_dwz_gnudebuglink 343 344 endif HAVE_OBJCOPY_DEBUGLINK 345 346 endif HAVE_DWZ 347 348 stest_SOURCES = stest.c 349 stest_CFLAGS = $(libbacktrace_TEST_CFLAGS) 350 stest_LDFLAGS = $(libbacktrace_testing_ldflags) 351 stest_LDADD = libbacktrace.la 352 353 BUILDTESTS += stest 354 355 if USE_DSYMUTIL 356 check_DATA += stest.dSYM 357 endif USE_DSYMUTIL 358 359 stest_alloc_SOURCES = $(stest_SOURCES) 360 stest_alloc_CFLAGS = $(libbacktrace_TEST_CFLAGS) 361 stest_alloc_LDFLAGS = $(libbacktrace_testing_ldflags) 362 stest_alloc_LDADD = libbacktrace_alloc.la 363 364 BUILDTESTS += stest_alloc 365 366 if USE_DSYMUTIL 367 check_DATA += stest_alloc.dSYM 368 endif USE_DSYMUTIL 369 370 if HAVE_ELF 371 372 ztest_SOURCES = ztest.c testlib.c 373 ztest_CFLAGS = $(libbacktrace_TEST_CFLAGS) -DSRCDIR=\"$(srcdir)\" 374 ztest_LDFLAGS = $(libbacktrace_testing_ldflags) 375 ztest_LDADD = libbacktrace.la 376 ztest_alloc_LDADD = libbacktrace_alloc.la 377 378 if HAVE_ZLIB 379 ztest_LDADD += -lz 380 ztest_alloc_LDADD += -lz 381 endif 382 ztest_LDADD += $(CLOCK_GETTIME_LINK) 383 ztest_alloc_LDADD += $(CLOCK_GETTIME_LINK) 384 385 BUILDTESTS += ztest 386 387 ztest_alloc_SOURCES = $(ztest_SOURCES) 388 ztest_alloc_CFLAGS = $(ztest_CFLAGS) 389 ztest_alloc_LDFLAGS = $(libbacktrace_testing_ldflags) 390 391 BUILDTESTS += ztest_alloc 392 393 zstdtest_SOURCES = zstdtest.c testlib.c 394 zstdtest_CFLAGS = $(libbacktrace_TEST_CFLAGS) -DSRCDIR=\"$(srcdir)\" 395 zstdtest_LDFLAGS = $(libbacktrace_testing_ldflags) 396 zstdtest_LDADD = libbacktrace.la 397 zstdtest_alloc_LDADD = libbacktrace_alloc.la 398 399 if HAVE_ZSTD 400 zstdtest_LDADD += -lzstd 401 zstdtest_alloc_LDADD += -lzstd 402 endif 403 zstdtest_LDADD += $(CLOCK_GETTIME_LINK) 404 zstdtest_alloc_LDADD += $(CLOCK_GETTIME_LINK) 405 406 BUILDTESTS += zstdtest 407 408 zstdtest_alloc_SOURCES = $(zstdtest_SOURCES) 409 zstdtest_alloc_CFLAGS = $(zstdtest_CFLAGS) 410 zstdtest_alloc_LDFLAGS = $(libbacktrace_testing_ldflags) 411 412 BUILDTESTS += zstdtest_alloc 413 414 endif HAVE_ELF 415 416 edtest_SOURCES = edtest.c edtest2_build.c testlib.c 417 edtest_CFLAGS = $(libbacktrace_TEST_CFLAGS) 418 edtest_LDFLAGS = $(libbacktrace_testing_ldflags) 419 edtest_LDADD = libbacktrace.la 420 421 BUILDTESTS += edtest 422 423 if USE_DSYMUTIL 424 check_DATA += edtest.dSYM 425 endif USE_DSYMUTIL 426 427 edtest_alloc_SOURCES = $(edtest_SOURCES) 428 edtest_alloc_CFLAGS = $(libbacktrace_TEST_CFLAGS) 429 edtest_alloc_LDFLAGS = $(libbacktrace_testing_ldflags) 430 edtest_alloc_LDADD = libbacktrace_alloc.la 431 432 if USE_DSYMUTIL 433 check_DATA += edtest_alloc.dSYM 434 endif USE_DSYMUTIL 435 436 BUILDTESTS += edtest_alloc 437 438 edtest2_build.c: gen_edtest2_build; @true 439 gen_edtest2_build: $(srcdir)/edtest2.c 440 cat $(srcdir)/edtest2.c > tmp-edtest2_build.c 441 $(SHELL) $(srcdir)/../move-if-change tmp-edtest2_build.c edtest2_build.c 442 echo timestamp > $@ 443 444 if HAVE_PTHREAD 445 446 BUILDTESTS += ttest 447 448 ttest_SOURCES = ttest.c testlib.c 449 ttest_CFLAGS = $(libbacktrace_TEST_CFLAGS) -pthread 450 ttest_LDFLAGS = $(libbacktrace_testing_ldflags) 451 ttest_LDADD = libbacktrace.la 452 453 if USE_DSYMUTIL 454 check_DATA += ttest.dSYM 455 endif USE_DSYMUTIL 456 457 BUILDTESTS += ttest_alloc 458 459 ttest_alloc_SOURCES = $(ttest_SOURCES) 460 ttest_alloc_CFLAGS = $(ttest_CFLAGS) 461 ttest_alloc_LDFLAGS = $(libbacktrace_testing_ldflags) 462 ttest_alloc_LDADD = libbacktrace_alloc.la 463 464 if USE_DSYMUTIL 465 check_DATA += ttest_alloc.dSYM 466 endif USE_DSYMUTIL 467 468 endif HAVE_PTHREAD 469 470 if HAVE_OBJCOPY_DEBUGLINK 471 472 MAKETESTS += btest_gnudebuglink btest_gnudebuglinkfull 473 474 %_gnudebuglink: % 475 $(OBJCOPY) --only-keep-debug $< $@.debug 476 $(OBJCOPY) --strip-debug --add-gnu-debuglink=$@.debug $< $@ 477 478 %_gnudebuglinkfull: % 479 $(OBJCOPY) --only-keep-debug $< $@.debug 480 $(OBJCOPY) --strip-all --add-gnu-debuglink=$@.debug $< $@ 481 482 endif HAVE_OBJCOPY_DEBUGLINK 483 484 %_buildid: % 485 ./install-debuginfo-for-buildid.sh \ 486 "$(TEST_BUILD_ID_DIR)" \ 487 $< 488 $(OBJCOPY) --strip-debug $< $@ 489 490 %_buildidfull: % 491 ./install-debuginfo-for-buildid.sh \ 492 "$(TEST_BUILD_ID_DIR)" \ 493 $< 494 $(OBJCOPY) --strip-all $< $@ 495 496 if HAVE_COMPRESSED_DEBUG 497 498 ctestg_SOURCES = btest.c testlib.c 499 ctestg_CFLAGS = $(libbacktrace_TEST_CFLAGS) 500 ctestg_LDFLAGS = -Wl,--compress-debug-sections=zlib-gnu $(libbacktrace_testing_ldflags) 501 ctestg_LDADD = libbacktrace.la 502 503 ctesta_SOURCES = btest.c testlib.c 504 ctesta_CFLAGS = $(libbacktrace_TEST_CFLAGS) 505 ctesta_LDFLAGS = -Wl,--compress-debug-sections=zlib-gabi $(libbacktrace_testing_ldflags) 506 ctesta_LDADD = libbacktrace.la 507 508 BUILDTESTS += ctestg ctesta 509 510 if HAVE_COMPRESSED_DEBUG_ZSTD 511 512 ctestzstd_SOURCES = btest.c testlib.c 513 ctestzstd_CFLAGS = $(libbacktrace_TEST_CFLAGS) 514 ctestzstd_LDFLAGS = -Wl,--compress-debug-sections=zstd $(libbacktrace_testing_ldflags) 515 ctestzstd_LDADD = libbacktrace.la 516 517 BUILDTESTS += ctestzstd 518 519 endif 520 521 ctestg_alloc_SOURCES = $(ctestg_SOURCES) 522 ctestg_alloc_CFLAGS = $(ctestg_CFLAGS) 523 ctestg_alloc_LDFLAGS = $(ctestg_LDFLAGS) $(libbacktrace_testing_ldflags) 524 ctestg_alloc_LDADD = libbacktrace_alloc.la 525 526 ctesta_alloc_SOURCES = $(ctesta_SOURCES) 527 ctesta_alloc_CFLAGS = $(ctesta_CFLAGS) 528 ctesta_alloc_LDFLAGS = $(ctesta_LDFLAGS) $(libbacktrace_testing_ldflags) 529 ctesta_alloc_LDADD = libbacktrace_alloc.la 530 531 BUILDTESTS += ctestg_alloc ctesta_alloc 532 533 endif 534 535 if HAVE_DWARF5 536 537 dwarf5_SOURCES = btest.c testlib.c 538 dwarf5_CFLAGS = $(libbacktrace_TEST_CFLAGS) -gdwarf-5 539 dwarf5_LDFLAGS = $(libbacktrace_testing_ldflags) 540 dwarf5_LDADD = libbacktrace.la 541 542 BUILDTESTS += dwarf5 543 544 if USE_DSYMUTIL 545 check_DATA += dwarf5.dSYM 546 endif USE_DSYMUTIL 547 548 dwarf5_alloc_SOURCES = $(dwarf5_SOURCES) 549 dwarf5_alloc_CFLAGS = $(dwarf5_CFLAGS) 550 dwarf5_alloc_LDFLAGS = $(libbacktrace_testing_ldflags) 551 dwarf5_alloc_LDADD = libbacktrace_alloc.la 552 553 BUILDTESTS += dwarf5_alloc 554 555 if USE_DSYMUTIL 556 check_DATA += dwarf5_alloc.dSYM 557 endif USE_DSYMUTIL 558 559 endif 560 561 mtest_SOURCES = mtest.c testlib.c 562 mtest_CFLAGS = $(libbacktrace_TEST_CFLAGS) -O 563 mtest_LDFLAGS = $(libbacktrace_testing_ldflags) 564 mtest_LDADD = libbacktrace.la 565 566 BUILDTESTS += mtest 567 568 if USE_DSYMUTIL 569 check_DATA += mtest.dSYM 570 endif USE_DSYMUTIL 571 572 if HAVE_MINIDEBUG 573 574 MAKETESTS += mtest_minidebug 575 576 %_minidebug: % 577 $(NM) -D $< -P --defined-only | $(AWK) '{ print $$1 }' | sort > $<.dsyms 578 $(NM) $< -P --defined-only | $(AWK) '{ if ($$2 == "T" || $$2 == "t" || $$2 == "D") print $$1 }' | sort > $<.fsyms 579 $(COMM) -13 $<.dsyms $<.fsyms > $<.keepsyms 580 $(OBJCOPY) --only-keep-debug $< $<.dbg 581 $(OBJCOPY) -S --remove-section .gdb_index --remove-section .comment --keep-symbols=$<.keepsyms $<.dbg $<.mdbg 582 $(OBJCOPY) --strip-all --remove-section ..comment $< $<.strip 583 rm -f $<.mdbg.xz 584 $(XZ) $<.mdbg 585 $(OBJCOPY) --add-section .gnu_debugdata=$<.mdbg.xz $<.strip 586 mv $<.strip $@ 587 588 endif HAVE_MINIDEBUG 589 590 endif NATIVE 591 592 if HAVE_ELF 593 594 xztest_SOURCES = xztest.c testlib.c 595 xztest_CFLAGS = $(libbacktrace_TEST_CFLAGS) -DSRCDIR=\"$(srcdir)\" 596 xztest_LDFLAGS = $(libbacktrace_testing_ldflags) 597 xztest_LDADD = libbacktrace.la 598 599 xztest_alloc_SOURCES = $(xztest_SOURCES) 600 xztest_alloc_CFLAGS = $(xztest_CFLAGS) 601 xztest_alloc_LDFLAGS = $(libbacktrace_testing_ldflags) 602 xztest_alloc_LDADD = libbacktrace_alloc.la 603 604 if HAVE_LIBLZMA 605 xztest_LDADD += -llzma 606 xztest_alloc_LDADD += -llzma 607 endif 608 609 xztest_LDADD += $(CLOCK_GETTIME_LINK) 610 xztest_alloc_LDADD += $(CLOCK_GETTIME_LINK) 611 612 BUILDTESTS += xztest xztest_alloc 613 614 endif HAVE_ELF 615 616 check_PROGRAMS += $(BUILDTESTS) 617 618 TESTS += $(MAKETESTS) $(BUILDTESTS) 619 620 CLEANFILES = \ 621 $(MAKETESTS) $(BUILDTESTS) *.debug elf_for_test.c edtest2_build.c \ 622 gen_edtest2_build \ 623 *.dsyms *.fsyms *.keepsyms *.dbg *.mdbg *.mdbg.xz *.strip 624 625 clean-local: 626 -rm -rf usr 627 628 # We can't use automake's automatic dependency tracking, because it 629 # breaks when using bootstrap-lean. Automatic dependency tracking 630 # with GCC bootstrap will cause some of the objects to depend on 631 # header files in prev-gcc/include, e.g., stddef.h and stdarg.h. When 632 # using bootstrap-lean, prev-gcc is removed after each stage. When 633 # running "make install", those header files will be gone, causing the 634 # library to be rebuilt at install time. That may not succeed. 635 636 # These manual dependencies do not include dependencies on unwind.h, 637 # even though that is part of GCC, because where to find it depends on 638 # whether we are being built as a host library or a target library. 639 640 INCDIR = $(top_srcdir)/../include 641 alloc.lo: config.h backtrace.h internal.h 642 backtrace.lo: config.h backtrace.h internal.h 643 btest.lo: $(INCDIR)/filenames.h backtrace.h backtrace-supported.h 644 dwarf.lo: config.h $(INCDIR)/dwarf2.h $(INCDIR)/dwarf2.def \ 645 $(INCDIR)/filenames.h backtrace.h internal.h 646 elf.lo: config.h backtrace.h internal.h 647 fileline.lo: config.h backtrace.h internal.h 648 macho.lo: config.h backtrace.h internal.h 649 mmap.lo: config.h backtrace.h internal.h 650 mmapio.lo: config.h backtrace.h internal.h 651 mtest.lo: backtrace.h backtrace-supported.h 652 nounwind.lo: config.h internal.h 653 pecoff.lo: config.h backtrace.h internal.h 654 posix.lo: config.h backtrace.h internal.h 655 print.lo: config.h backtrace.h internal.h 656 read.lo: config.h backtrace.h internal.h 657 simple.lo: config.h backtrace.h internal.h 658 sort.lo: config.h backtrace.h internal.h 659 stest.lo: config.h backtrace.h internal.h 660 state.lo: config.h backtrace.h backtrace-supported.h internal.h 661 unknown.lo: config.h backtrace.h internal.h 662 xcoff.lo: config.h backtrace.h internal.h 663 xztest.lo: config.h backtrace.h backtrace-supported.h internal.h testlib.h 664 ztest.lo: config.h backtrace.h backtrace-supported.h internal.h testlib.h 665 666 include $(top_srcdir)/../multilib.am 667