1# Makefile.am -- Backtrace Makefile.
2# Copyright (C) 2012-2018 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 config
33
34AM_CFLAGS = $(EXTRA_FLAGS) $(WARN_FLAGS) $(PIC_FLAG)
35
36include_HEADERS = backtrace.h backtrace-supported.h
37
38lib_LTLIBRARIES = libbacktrace.la
39
40libbacktrace_la_SOURCES = \
41	backtrace.h \
42	atomic.c \
43	dwarf.c \
44	fileline.c \
45	internal.h \
46	posix.c \
47	print.c \
48	sort.c \
49	state.c
50
51BACKTRACE_FILES = \
52	backtrace.c \
53	simple.c \
54	nounwind.c
55
56FORMAT_FILES = \
57	elf.c \
58	pecoff.c \
59	unknown.c \
60	xcoff.c
61
62VIEW_FILES = \
63	read.c \
64	mmapio.c
65
66ALLOC_FILES = \
67	alloc.c \
68	mmap.c
69
70EXTRA_libbacktrace_la_SOURCES = \
71	$(BACKTRACE_FILES) \
72	$(FORMAT_FILES) \
73	$(VIEW_FILES) \
74	$(ALLOC_FILES)
75
76libbacktrace_la_LIBADD = \
77	$(BACKTRACE_FILE) \
78	$(FORMAT_FILE) \
79	$(VIEW_FILE) \
80	$(ALLOC_FILE)
81
82libbacktrace_la_DEPENDENCIES = $(libbacktrace_la_LIBADD)
83
84# Testsuite.
85
86check_PROGRAMS =
87CLEANFILES =
88
89TESTS = $(check_PROGRAMS)
90
91if NATIVE
92
93btest_SOURCES = btest.c testlib.c
94btest_CFLAGS = $(AM_CFLAGS) -g -O
95btest_LDADD = libbacktrace.la
96
97check_PROGRAMS += btest
98
99btest_static_SOURCES = btest.c testlib.c
100btest_static_CFLAGS = $(AM_CFLAGS) -g -O
101btest_static_LDADD = libbacktrace.la
102btest_static_LDFLAGS = -static-libtool-libs
103
104check_PROGRAMS += btest_static
105
106stest_SOURCES = stest.c
107stest_LDADD = libbacktrace.la
108
109check_PROGRAMS += stest
110
111ztest_SOURCES = ztest.c testlib.c
112ztest_CFLAGS = -DSRCDIR=\"$(srcdir)\"
113ztest_LDADD = libbacktrace.la
114
115if HAVE_ZLIB
116ztest_LDADD += -lz
117endif
118ztest_LDADD += $(CLOCK_GETTIME_LINK)
119
120check_PROGRAMS += ztest
121
122edtest_SOURCES = edtest.c edtest2_build.c testlib.c
123edtest_LDADD = libbacktrace.la
124
125check_PROGRAMS += edtest
126
127edtest2_build.c: gen_edtest2_build; @true
128gen_edtest2_build: $(srcdir)/edtest2.c
129	cat $(srcdir)/edtest2.c > tmp-edtest2_build.c
130	$(SHELL) $(srcdir)/move-if-change tmp-edtest2_build.c edtest2_build.c
131	echo timestamp > $@
132
133CLEANFILES += edtest2_build.c gen_edtest2_build
134
135if HAVE_PTHREAD
136
137check_PROGRAMS += ttest
138
139ttest_SOURCES = ttest.c testlib.c
140ttest_CFLAGS = $(AM_CFLAGS) -pthread
141ttest_LDADD = libbacktrace.la
142
143endif HAVE_PTHREAD
144
145if HAVE_OBJCOPY_DEBUGLINK
146
147TESTS += dtest
148
149dtest: btest_static
150	$(OBJCOPY) --only-keep-debug btest_static btest.debug
151	$(OBJCOPY) --strip-debug --add-gnu-debuglink=btest.debug btest_static dtest
152
153CLEANFILES += dtest btest.debug
154
155endif HAVE_OBJCOPY_DEBUGLINK
156
157if HAVE_COMPRESSED_DEBUG
158
159ctestg_SOURCES = btest.c testlib.c
160ctestg_CFLAGS = $(AM_CFLAGS) -g
161ctestg_LDFLAGS = -Wl,--compress-debug-sections=zlib-gnu
162ctestg_LDADD = libbacktrace.la
163
164ctesta_SOURCES = btest.c testlib.c
165ctesta_CFLAGS = $(AM_CFLAGS) -g
166ctesta_LDFLAGS = -Wl,--compress-debug-sections=zlib-gabi
167ctesta_LDADD = libbacktrace.la
168
169check_PROGRAMS += ctestg ctesta
170
171endif
172
173endif NATIVE
174
175# We can't use automake's automatic dependency tracking, because it
176# breaks when using bootstrap-lean.  Automatic dependency tracking
177# with GCC bootstrap will cause some of the objects to depend on
178# header files in prev-gcc/include, e.g., stddef.h and stdarg.h.  When
179# using bootstrap-lean, prev-gcc is removed after each stage.  When
180# running "make install", those header files will be gone, causing the
181# library to be rebuilt at install time.  That may not succeed.
182
183# These manual dependencies do not include dependencies on unwind.h,
184# even though that is part of GCC, because where to find it depends on
185# whether we are being built as a host library or a target library.
186
187alloc.lo: config.h backtrace.h internal.h
188backtrace.lo: config.h backtrace.h internal.h
189btest.lo:  backtrace.h backtrace-supported.h filenames.h
190dwarf.lo: config.h filenames.h backtrace.h internal.h
191elf.lo: config.h backtrace.h internal.h
192fileline.lo: config.h backtrace.h internal.h
193mmap.lo: config.h backtrace.h internal.h
194mmapio.lo: config.h backtrace.h internal.h
195nounwind.lo: config.h internal.h
196pecoff.lo: config.h backtrace.h internal.h
197posix.lo: config.h backtrace.h internal.h
198print.lo: config.h backtrace.h internal.h
199read.lo: config.h backtrace.h internal.h
200simple.lo: config.h backtrace.h internal.h
201sort.lo: config.h backtrace.h internal.h
202stest.lo: config.h backtrace.h internal.h
203state.lo: config.h backtrace.h backtrace-supported.h internal.h
204unknown.lo: config.h backtrace.h internal.h
205xcoff.lo: config.h backtrace.h internal.h
206
207