xref: /netbsd-src/external/gpl3/gdb/dist/libbacktrace/Makefile.am (revision 22ebeae4b2252475e0ebe332f69734639cb946ea)
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
32ACLOCAL_AMFLAGS = -I .. -I ../config
33
34AM_CPPFLAGS = -I $(top_srcdir)/../include -I $(top_srcdir)/../libgcc \
35	-I ../libgcc
36
37AM_CFLAGS = $(EXTRA_FLAGS) $(WARN_FLAGS) $(PIC_FLAG) $(CET_HOST_FLAGS)
38
39noinst_LTLIBRARIES = libbacktrace.la
40
41libbacktrace_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
52BACKTRACE_FILES = \
53	backtrace.c \
54	simple.c \
55	nounwind.c
56
57FORMAT_FILES = \
58	elf.c \
59	macho.c \
60	pecoff.c \
61	unknown.c \
62	xcoff.c
63
64VIEW_FILES = \
65	read.c \
66	mmapio.c
67
68ALLOC_FILES = \
69	alloc.c \
70	mmap.c
71
72EXTRA_libbacktrace_la_SOURCES = \
73	$(BACKTRACE_FILES) \
74	$(FORMAT_FILES) \
75	$(VIEW_FILES) \
76	$(ALLOC_FILES)
77
78libbacktrace_la_LIBADD = \
79	$(BACKTRACE_FILE) \
80	$(FORMAT_FILE) \
81	$(VIEW_FILE) \
82	$(ALLOC_FILE)
83
84libbacktrace_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.
90check_PROGRAMS =
91
92# Add a test to this variable if you want it to be run.
93TESTS =
94
95# Add a test to this variable if you want it to be built as a Makefile
96# target and run.
97MAKETESTS =
98
99# Add a test to this variable if you want it to be built as a program,
100# with SOURCES, etc., and run.
101BUILDTESTS =
102
103# Add a file to this variable if you want it to be built for testing.
104check_DATA =
105
106# Flags to use when compiling test programs.
107libbacktrace_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.
111libbacktrace_testing_ldflags = -no-install
112
113if USE_DSYMUTIL
114
115%.dSYM: %
116	$(DSYMUTIL) $<
117
118endif USE_DSYMUTIL
119
120if NATIVE
121check_LTLIBRARIES = libbacktrace_alloc.la
122
123libbacktrace_alloc_la_SOURCES = $(libbacktrace_la_SOURCES)
124libbacktrace_alloc_la_LIBADD = $(BACKTRACE_FILE) $(FORMAT_FILE) read.lo alloc.lo
125
126libbacktrace_alloc_la_DEPENDENCIES = $(libbacktrace_alloc_la_LIBADD)
127
128check_LTLIBRARIES += libbacktrace_noformat.la
129
130libbacktrace_noformat_la_SOURCES = $(libbacktrace_la_SOURCES)
131libbacktrace_noformat_la_LIBADD = $(BACKTRACE_FILE) $(VIEW_FILE) $(ALLOC_FILE)
132
133libbacktrace_noformat_la_DEPENDENCIES = $(libbacktrace_noformat_la_LIBADD)
134
135if HAVE_ELF
136if HAVE_OBJCOPY_DEBUGLINK
137
138TEST_BUILD_ID_DIR=$(abs_builddir)/usr/lib/debug/.build-id/
139
140check_LTLIBRARIES += libbacktrace_elf_for_test.la
141
142libbacktrace_elf_for_test_la_SOURCES = $(libbacktrace_la_SOURCES)
143libbacktrace_elf_for_test_la_LIBADD = $(BACKTRACE_FILE) elf_for_test.lo \
144	$(VIEW_FILE) $(ALLOC_FILE)
145
146elf_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
154endif HAVE_OBJCOPY_DEBUGLINK
155endif HAVE_ELF
156
157elf_%.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
166xcoff_%.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
175test_elf_32_SOURCES = test_format.c testlib.c
176test_elf_32_CFLAGS = $(libbacktrace_TEST_CFLAGS)
177test_elf_32_LDFLAGS = $(libbacktrace_testing_ldflags)
178test_elf_32_LDADD = libbacktrace_noformat.la elf_32.lo
179
180BUILDTESTS += test_elf_32
181
182test_elf_64_SOURCES = test_format.c testlib.c
183test_elf_64_CFLAGS = $(libbacktrace_TEST_CFLAGS)
184test_elf_64_LDFLAGS = $(libbacktrace_testing_ldflags)
185test_elf_64_LDADD = libbacktrace_noformat.la elf_64.lo
186
187BUILDTESTS += test_elf_64
188
189test_macho_SOURCES = test_format.c testlib.c
190test_macho_CFLAGS = $(libbacktrace_TEST_CFLAGS)
191test_macho_LDFLAGS = $(libbacktrace_testing_ldflags)
192test_macho_LDADD = libbacktrace_noformat.la macho.lo
193
194BUILDTESTS += test_macho
195
196test_xcoff_32_SOURCES = test_format.c testlib.c
197test_xcoff_32_CFLAGS = $(libbacktrace_TEST_CFLAGS)
198test_xcoff_32_LDFLAGS = $(libbacktrace_testing_ldflags)
199test_xcoff_32_LDADD = libbacktrace_noformat.la xcoff_32.lo
200
201BUILDTESTS += test_xcoff_32
202
203test_xcoff_64_SOURCES = test_format.c testlib.c
204test_xcoff_64_CFLAGS = $(libbacktrace_TEST_CFLAGS)
205test_xcoff_64_LDFLAGS = $(libbacktrace_testing_ldflags)
206test_xcoff_64_LDADD = libbacktrace_noformat.la xcoff_64.lo
207
208BUILDTESTS += test_xcoff_64
209
210test_pecoff_SOURCES = test_format.c testlib.c
211test_pecoff_CFLAGS = $(libbacktrace_TEST_CFLAGS)
212test_pecoff_LDFLAGS = $(libbacktrace_testing_ldflags)
213test_pecoff_LDADD = libbacktrace_noformat.la pecoff.lo
214
215BUILDTESTS += test_pecoff
216
217test_unknown_SOURCES = test_format.c testlib.c
218test_unknown_CFLAGS = $(libbacktrace_TEST_CFLAGS)
219test_unknown_LDFLAGS = $(libbacktrace_testing_ldflags)
220test_unknown_LDADD = libbacktrace_noformat.la unknown.lo
221
222BUILDTESTS += test_unknown
223
224unittest_SOURCES = unittest.c testlib.c
225unittest_CFLAGS = $(libbacktrace_TEST_CFLAGS)
226unittest_LDFLAGS = $(libbacktrace_testing_ldflags)
227unittest_LDADD = libbacktrace.la
228
229BUILDTESTS += unittest
230
231unittest_alloc_SOURCES = $(unittest_SOURCES)
232unittest_alloc_CFLAGS = $(libbacktrace_TEST_CFLAGS)
233unittest_alloc_LDFLAGS = $(libbacktrace_testing_ldflags)
234unittest_alloc_LDADD = libbacktrace_alloc.la
235
236BUILDTESTS += unittest_alloc
237
238check_LTLIBRARIES += libbacktrace_instrumented_alloc.la
239
240libbacktrace_instrumented_alloc_la_SOURCES = $(libbacktrace_la_SOURCES)
241libbacktrace_instrumented_alloc_la_LIBADD = $(BACKTRACE_FILE) $(FORMAT_FILE) \
242	read.lo instrumented_alloc.lo
243
244libbacktrace_instrumented_alloc_la_DEPENDENCIES = \
245	$(libbacktrace_instrumented_alloc_la_LIBADD)
246
247instrumented_alloc.lo: alloc.c
248
249allocfail_SOURCES = allocfail.c testlib.c
250allocfail_CFLAGS = $(libbacktrace_TEST_CFLAGS)
251allocfail_LDADD = libbacktrace_instrumented_alloc.la
252
253check_PROGRAMS += allocfail
254
255allocfail.sh: allocfail
256
257TESTS += allocfail.sh
258
259if USE_DSYMUTIL
260check_DATA += allocfail.dSYM
261endif USE_DSYMUTIL
262
263if HAVE_ELF
264if HAVE_BUILDID
265if HAVE_OBJCOPY_DEBUGLINK
266
267b2test_SOURCES = $(btest_SOURCES)
268b2test_CFLAGS = $(libbacktrace_TEST_CFLAGS)
269b2test_LDFLAGS = -Wl,--build-id $(libbacktrace_testing_ldflags)
270b2test_LDADD = libbacktrace_elf_for_test.la
271
272check_PROGRAMS += b2test
273MAKETESTS += b2test_buildid b2test_buildidfull
274
275if HAVE_DWZ
276
277b3test_SOURCES = $(btest_SOURCES)
278b3test_CFLAGS = $(libbacktrace_TEST_CFLAGS)
279b3test_LDFLAGS = -Wl,--build-id $(libbacktrace_testing_ldflags)
280b3test_LDADD = libbacktrace_elf_for_test.la
281
282check_PROGRAMS += b3test
283MAKETESTS += b3test_dwz_buildid b3test_dwz_buildidfull
284
285endif HAVE_DWZ
286
287endif HAVE_OBJCOPY_DEBUGLINK
288endif HAVE_BUILDID
289endif HAVE_ELF
290
291btest_SOURCES = btest.c testlib.c
292btest_CFLAGS = $(libbacktrace_TEST_CFLAGS) -O
293btest_LDFLAGS = $(libbacktrace_testing_ldflags)
294btest_LDADD = libbacktrace.la
295
296BUILDTESTS += btest
297
298if USE_DSYMUTIL
299check_DATA += btest.dSYM
300endif USE_DSYMUTIL
301
302if HAVE_ELF
303
304btest_lto_SOURCES = btest.c testlib.c
305btest_lto_CFLAGS = $(libbacktrace_TEST_CFLAGS) -O -flto
306btest_lto_LDFLAGS = $(libbacktrace_testing_ldflags)
307btest_lto_LDADD = libbacktrace.la
308
309BUILDTESTS += btest_lto
310
311endif HAVE_ELF
312
313btest_alloc_SOURCES = $(btest_SOURCES)
314btest_alloc_CFLAGS = $(libbacktrace_TEST_CFLAGS)
315btest_alloc_LDFLAGS = $(libbacktrace_testing_ldflags)
316btest_alloc_LDADD = libbacktrace_alloc.la
317
318BUILDTESTS += btest_alloc
319
320if USE_DSYMUTIL
321check_DATA += btest_alloc.dSYM
322endif USE_DSYMUTIL
323
324if 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
338MAKETESTS += btest_dwz
339
340if HAVE_OBJCOPY_DEBUGLINK
341
342MAKETESTS += btest_dwz_gnudebuglink
343
344endif HAVE_OBJCOPY_DEBUGLINK
345
346endif HAVE_DWZ
347
348stest_SOURCES = stest.c
349stest_CFLAGS = $(libbacktrace_TEST_CFLAGS)
350stest_LDFLAGS = $(libbacktrace_testing_ldflags)
351stest_LDADD = libbacktrace.la
352
353BUILDTESTS += stest
354
355if USE_DSYMUTIL
356check_DATA += stest.dSYM
357endif USE_DSYMUTIL
358
359stest_alloc_SOURCES = $(stest_SOURCES)
360stest_alloc_CFLAGS = $(libbacktrace_TEST_CFLAGS)
361stest_alloc_LDFLAGS = $(libbacktrace_testing_ldflags)
362stest_alloc_LDADD = libbacktrace_alloc.la
363
364BUILDTESTS += stest_alloc
365
366if USE_DSYMUTIL
367check_DATA += stest_alloc.dSYM
368endif USE_DSYMUTIL
369
370if HAVE_ELF
371
372ztest_SOURCES = ztest.c testlib.c
373ztest_CFLAGS = $(libbacktrace_TEST_CFLAGS) -DSRCDIR=\"$(srcdir)\"
374ztest_LDFLAGS = $(libbacktrace_testing_ldflags)
375ztest_LDADD = libbacktrace.la
376ztest_alloc_LDADD = libbacktrace_alloc.la
377
378if HAVE_ZLIB
379ztest_LDADD += -lz
380ztest_alloc_LDADD += -lz
381endif
382ztest_LDADD += $(CLOCK_GETTIME_LINK)
383ztest_alloc_LDADD += $(CLOCK_GETTIME_LINK)
384
385BUILDTESTS += ztest
386
387ztest_alloc_SOURCES = $(ztest_SOURCES)
388ztest_alloc_CFLAGS = $(ztest_CFLAGS)
389ztest_alloc_LDFLAGS = $(libbacktrace_testing_ldflags)
390
391BUILDTESTS += ztest_alloc
392
393zstdtest_SOURCES = zstdtest.c testlib.c
394zstdtest_CFLAGS = $(libbacktrace_TEST_CFLAGS) -DSRCDIR=\"$(srcdir)\"
395zstdtest_LDFLAGS = $(libbacktrace_testing_ldflags)
396zstdtest_LDADD = libbacktrace.la
397zstdtest_alloc_LDADD = libbacktrace_alloc.la
398
399if HAVE_ZSTD
400zstdtest_LDADD += -lzstd
401zstdtest_alloc_LDADD += -lzstd
402endif
403zstdtest_LDADD += $(CLOCK_GETTIME_LINK)
404zstdtest_alloc_LDADD += $(CLOCK_GETTIME_LINK)
405
406BUILDTESTS += zstdtest
407
408zstdtest_alloc_SOURCES = $(zstdtest_SOURCES)
409zstdtest_alloc_CFLAGS = $(zstdtest_CFLAGS)
410zstdtest_alloc_LDFLAGS = $(libbacktrace_testing_ldflags)
411
412BUILDTESTS += zstdtest_alloc
413
414endif HAVE_ELF
415
416edtest_SOURCES = edtest.c edtest2_build.c testlib.c
417edtest_CFLAGS = $(libbacktrace_TEST_CFLAGS)
418edtest_LDFLAGS = $(libbacktrace_testing_ldflags)
419edtest_LDADD = libbacktrace.la
420
421BUILDTESTS += edtest
422
423if USE_DSYMUTIL
424check_DATA += edtest.dSYM
425endif USE_DSYMUTIL
426
427edtest_alloc_SOURCES = $(edtest_SOURCES)
428edtest_alloc_CFLAGS = $(libbacktrace_TEST_CFLAGS)
429edtest_alloc_LDFLAGS = $(libbacktrace_testing_ldflags)
430edtest_alloc_LDADD = libbacktrace_alloc.la
431
432if USE_DSYMUTIL
433check_DATA += edtest_alloc.dSYM
434endif USE_DSYMUTIL
435
436BUILDTESTS += edtest_alloc
437
438edtest2_build.c: gen_edtest2_build; @true
439gen_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
444if HAVE_PTHREAD
445
446BUILDTESTS += ttest
447
448ttest_SOURCES = ttest.c testlib.c
449ttest_CFLAGS = $(libbacktrace_TEST_CFLAGS) -pthread
450ttest_LDFLAGS = $(libbacktrace_testing_ldflags)
451ttest_LDADD = libbacktrace.la
452
453if USE_DSYMUTIL
454check_DATA += ttest.dSYM
455endif USE_DSYMUTIL
456
457BUILDTESTS += ttest_alloc
458
459ttest_alloc_SOURCES = $(ttest_SOURCES)
460ttest_alloc_CFLAGS = $(ttest_CFLAGS)
461ttest_alloc_LDFLAGS = $(libbacktrace_testing_ldflags)
462ttest_alloc_LDADD = libbacktrace_alloc.la
463
464if USE_DSYMUTIL
465check_DATA += ttest_alloc.dSYM
466endif USE_DSYMUTIL
467
468endif HAVE_PTHREAD
469
470if HAVE_OBJCOPY_DEBUGLINK
471
472MAKETESTS += 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
482endif 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
496if HAVE_COMPRESSED_DEBUG
497
498ctestg_SOURCES = btest.c testlib.c
499ctestg_CFLAGS = $(libbacktrace_TEST_CFLAGS)
500ctestg_LDFLAGS = -Wl,--compress-debug-sections=zlib-gnu $(libbacktrace_testing_ldflags)
501ctestg_LDADD = libbacktrace.la
502
503ctesta_SOURCES = btest.c testlib.c
504ctesta_CFLAGS = $(libbacktrace_TEST_CFLAGS)
505ctesta_LDFLAGS = -Wl,--compress-debug-sections=zlib-gabi $(libbacktrace_testing_ldflags)
506ctesta_LDADD = libbacktrace.la
507
508BUILDTESTS += ctestg ctesta
509
510if HAVE_COMPRESSED_DEBUG_ZSTD
511
512ctestzstd_SOURCES = btest.c testlib.c
513ctestzstd_CFLAGS = $(libbacktrace_TEST_CFLAGS)
514ctestzstd_LDFLAGS = -Wl,--compress-debug-sections=zstd $(libbacktrace_testing_ldflags)
515ctestzstd_LDADD = libbacktrace.la
516
517BUILDTESTS += ctestzstd
518
519endif
520
521ctestg_alloc_SOURCES = $(ctestg_SOURCES)
522ctestg_alloc_CFLAGS = $(ctestg_CFLAGS)
523ctestg_alloc_LDFLAGS = $(ctestg_LDFLAGS) $(libbacktrace_testing_ldflags)
524ctestg_alloc_LDADD = libbacktrace_alloc.la
525
526ctesta_alloc_SOURCES = $(ctesta_SOURCES)
527ctesta_alloc_CFLAGS = $(ctesta_CFLAGS)
528ctesta_alloc_LDFLAGS = $(ctesta_LDFLAGS) $(libbacktrace_testing_ldflags)
529ctesta_alloc_LDADD = libbacktrace_alloc.la
530
531BUILDTESTS += ctestg_alloc ctesta_alloc
532
533endif
534
535if HAVE_DWARF5
536
537dwarf5_SOURCES = btest.c testlib.c
538dwarf5_CFLAGS = $(libbacktrace_TEST_CFLAGS) -gdwarf-5
539dwarf5_LDFLAGS = $(libbacktrace_testing_ldflags)
540dwarf5_LDADD = libbacktrace.la
541
542BUILDTESTS += dwarf5
543
544if USE_DSYMUTIL
545check_DATA += dwarf5.dSYM
546endif USE_DSYMUTIL
547
548dwarf5_alloc_SOURCES = $(dwarf5_SOURCES)
549dwarf5_alloc_CFLAGS = $(dwarf5_CFLAGS)
550dwarf5_alloc_LDFLAGS = $(libbacktrace_testing_ldflags)
551dwarf5_alloc_LDADD = libbacktrace_alloc.la
552
553BUILDTESTS += dwarf5_alloc
554
555if USE_DSYMUTIL
556check_DATA += dwarf5_alloc.dSYM
557endif USE_DSYMUTIL
558
559endif
560
561mtest_SOURCES = mtest.c testlib.c
562mtest_CFLAGS = $(libbacktrace_TEST_CFLAGS) -O
563mtest_LDFLAGS = $(libbacktrace_testing_ldflags)
564mtest_LDADD = libbacktrace.la
565
566BUILDTESTS += mtest
567
568if USE_DSYMUTIL
569check_DATA += mtest.dSYM
570endif USE_DSYMUTIL
571
572if HAVE_MINIDEBUG
573
574MAKETESTS += 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
588endif HAVE_MINIDEBUG
589
590endif NATIVE
591
592if HAVE_ELF
593
594xztest_SOURCES = xztest.c testlib.c
595xztest_CFLAGS = $(libbacktrace_TEST_CFLAGS) -DSRCDIR=\"$(srcdir)\"
596xztest_LDFLAGS = $(libbacktrace_testing_ldflags)
597xztest_LDADD = libbacktrace.la
598
599xztest_alloc_SOURCES = $(xztest_SOURCES)
600xztest_alloc_CFLAGS = $(xztest_CFLAGS)
601xztest_alloc_LDFLAGS = $(libbacktrace_testing_ldflags)
602xztest_alloc_LDADD = libbacktrace_alloc.la
603
604if HAVE_LIBLZMA
605xztest_LDADD += -llzma
606xztest_alloc_LDADD += -llzma
607endif
608
609xztest_LDADD += $(CLOCK_GETTIME_LINK)
610xztest_alloc_LDADD += $(CLOCK_GETTIME_LINK)
611
612BUILDTESTS += xztest xztest_alloc
613
614endif HAVE_ELF
615
616check_PROGRAMS += $(BUILDTESTS)
617
618TESTS += $(MAKETESTS) $(BUILDTESTS)
619
620CLEANFILES = \
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
625clean-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
640INCDIR = $(top_srcdir)/../include
641alloc.lo: config.h backtrace.h internal.h
642backtrace.lo: config.h backtrace.h internal.h
643btest.lo: $(INCDIR)/filenames.h backtrace.h backtrace-supported.h
644dwarf.lo: config.h $(INCDIR)/dwarf2.h $(INCDIR)/dwarf2.def \
645	$(INCDIR)/filenames.h backtrace.h internal.h
646elf.lo: config.h backtrace.h internal.h
647fileline.lo: config.h backtrace.h internal.h
648macho.lo: config.h backtrace.h internal.h
649mmap.lo: config.h backtrace.h internal.h
650mmapio.lo: config.h backtrace.h internal.h
651mtest.lo: backtrace.h backtrace-supported.h
652nounwind.lo: config.h internal.h
653pecoff.lo: config.h backtrace.h internal.h
654posix.lo: config.h backtrace.h internal.h
655print.lo: config.h backtrace.h internal.h
656read.lo: config.h backtrace.h internal.h
657simple.lo: config.h backtrace.h internal.h
658sort.lo: config.h backtrace.h internal.h
659stest.lo: config.h backtrace.h internal.h
660state.lo: config.h backtrace.h backtrace-supported.h internal.h
661unknown.lo: config.h backtrace.h internal.h
662xcoff.lo: config.h backtrace.h internal.h
663xztest.lo: config.h backtrace.h backtrace-supported.h internal.h testlib.h
664ztest.lo: config.h backtrace.h backtrace-supported.h internal.h testlib.h
665
666include $(top_srcdir)/../multilib.am
667