More -fPIC options.
[external/binutils.git] / gold / testsuite / Makefile.am
1 # Process this file with automake to generate Makefile.in
2
3 # As far as I can tell automake testing support assumes that the build
4 # system and the host system are the same.  So these tests will not
5 # work when building with a cross-compiler.
6
7 AUTOMAKE_OPTIONS =
8
9 # The two_file_test tests -fmerge-constants, so we simply always turn
10 # it on.  This may need to be controlled by a configure option
11 # eventually.
12 AM_CXXFLAGS = $(WARN_CXXFLAGS) $(LFS_CXXFLAGS) -fmerge-constants
13
14 INCLUDES = \
15         -I$(srcdir) -I$(srcdir)/.. -I$(srcdir)/../../include \
16         -I$(srcdir)/../../elfcpp \
17         -DLOCALEDIR="\"$(datadir)/locale\"" \
18         @INCINTL@
19
20 if THREADS
21 THREADSLIB = -lpthread
22 endif
23
24 check_SCRIPTS = debug_msg.sh
25 check_DATA =
26
27 TESTS = object_unittest
28
29 if GCC
30
31 if NATIVE_LINKER
32
33 TESTS += debug_msg.sh undef_symbol.sh
34
35 check_DATA += debug_msg.err debug_msg_so.err debug_msg_ndebug.err
36 check_DATA += undef_symbol.err
37
38 NATIVE_PROGS = \
39         constructor_test \
40         constructor_static_test \
41         two_file_test \
42         two_file_static_test \
43         two_file_pic_test \
44         two_file_shared_1_test \
45         two_file_shared_2_test \
46         two_file_shared_1_pic_2_test \
47         two_file_shared_2_pic_1_test \
48         two_file_same_shared_test \
49         two_file_separate_shared_12_test \
50         two_file_separate_shared_21_test \
51         exception_test \
52         exception_static_test \
53         exception_shared_1_test \
54         exception_shared_2_test \
55         exception_same_shared_test \
56         exception_separate_shared_12_test \
57         exception_separate_shared_21_test \
58         weak_test
59
60 if FN_PTRS_IN_SO_WITHOUT_PIC
61
62 NATIVE_PROGS += \
63         two_file_shared_1_nonpic_test \
64         two_file_shared_2_nonpic_test \
65         two_file_same_shared_nonpic_test \
66         two_file_separate_shared_12_nonpic_test \
67         two_file_separate_shared_21_nonpic_test
68
69 endif
70
71 if TLS
72
73 NATIVE_PROGS += \
74         tls_test \
75         tls_pic_test \
76         tls_shared_test
77
78 if STATIC_TLS
79
80 NATIVE_PROGS += \
81         tls_static_test \
82         tls_static_pic_test
83
84 endif
85
86 if FN_PTRS_IN_SO_WITHOUT_PIC
87
88 NATIVE_PROGS += \
89         tls_shared_nonpic_test
90
91 endif
92 endif
93
94 NATIVE_TESTING = \
95         basic_test \
96         basic_pic_test \
97         basic_static_test \
98         basic_static_pic_test \
99         $(NATIVE_PROGS)
100
101 endif
102 endif
103
104 TESTS += $(NATIVE_TESTING)
105
106 check_LIBRARIES = libgoldtest.a
107 libgoldtest_a_SOURCES = test.cc testmain.cc testfile.cc
108
109 DEPENDENCIES = \
110         libgoldtest.a ../libgold.a ../../libiberty/libiberty.a $(LIBINTL_DEP)
111 LDADD = libgoldtest.a ../libgold.a ../../libiberty/libiberty.a $(LIBINTL) \
112         $(THREADSLIB)
113
114 check_PROGRAMS = object_unittest $(NATIVE_PROGS)
115
116 object_unittest_SOURCES = object_unittest.cc
117
118 if GCC
119
120 if NATIVE_LINKER
121
122 gcctestdir/ld: ../ld-new
123         test -d gcctestdir || mkdir -p gcctestdir
124         rm -f gcctestdir/ld
125         (cd gcctestdir && $(LN_S) ../../ld-new ld)
126
127 debug_msg.o: debug_msg.cc
128         $(CXXCOMPILE) -O0 -g -c -w -o $@ $(srcdir)/debug_msg.cc
129 odr_violation1.o: odr_violation1.cc
130         $(CXXCOMPILE) -O0 -g -c -w -o $@ $(srcdir)/odr_violation1.cc
131 odr_violation2.o: odr_violation2.cc
132         $(CXXCOMPILE) -O0 -g -c -w -o $@ $(srcdir)/odr_violation2.cc
133 debug_msg.err: debug_msg.o odr_violation1.o odr_violation2.o gcctestdir/ld
134         @echo $(CXXLINK) -Bgcctestdir/ -Wl,--detect-odr-violations -o debug_msg debug_msg.o odr_violation1.o odr_violation2.o "2>$@"
135         @if $(CXXLINK) -Bgcctestdir/ -Wl,--detect-odr-violations -o debug_msg debug_msg.o odr_violation1.o odr_violation2.o 2>$@; \
136         then \
137           echo 1>&2 "Link of debug_msg should have failed"; \
138           rm -f $@; \
139           exit 1; \
140         fi
141
142 # See if we can also detect problems when we're linking .so's, not .o's.
143 debug_msg.so: debug_msg.cc
144         $(CXXCOMPILE) -O0 -g -shared -fPIC -w -o $@ $(srcdir)/debug_msg.cc
145 odr_violation1.so: odr_violation1.cc
146         $(CXXCOMPILE) -O0 -g -shared -fPIC -w -o $@ $(srcdir)/odr_violation1.cc
147 odr_violation2.so: odr_violation2.cc
148         $(CXXCOMPILE) -O0 -g -shared -fPIC -w -o $@ $(srcdir)/odr_violation2.cc
149 debug_msg_so.err: debug_msg.so odr_violation1.so odr_violation2.so gcctestdir/ld
150         @echo $(CXXLINK) -Bgcctestdir/ -Wl,--detect-odr-violations -o debug_msg_so debug_msg.so odr_violation1.so odr_violation2.so "2>$@"
151         @if $(CXXLINK) -Bgcctestdir/ -Wl,--detect-odr-violations -o debug_msg_so debug_msg.so odr_violation1.so odr_violation2.so 2>$@; \
152         then \
153           echo 1>&2 "Link of debug_msg_so should have failed"; \
154           rm -f $@; \
155           exit 1; \
156         fi
157
158
159 # We also want to make sure we do something reasonable when there's no
160 # debug info available.  For the best test, we use .so's.
161 debug_msg_ndebug.so: debug_msg.cc
162         $(CXXCOMPILE) -O0 -g0 -shared -fPIC -w -o $@ $(srcdir)/debug_msg.cc
163 odr_violation1_ndebug.so: odr_violation1.cc
164         $(CXXCOMPILE) -O0 -g0 -shared -fPIC -w -o $@ $(srcdir)/odr_violation1.cc
165 odr_violation2_ndebug.so: odr_violation2.cc
166         $(CXXCOMPILE) -O0 -g0 -shared -fPIC -w -o $@ $(srcdir)/odr_violation2.cc
167 debug_msg_ndebug.err: debug_msg_ndebug.so odr_violation1_ndebug.so odr_violation2_ndebug.so gcctestdir/ld
168         @echo $(CXXLINK) -Bgcctestdir/ -Wl,--detect-odr-violations -o debug_msg_ndebug debug_msg_ndebug.so odr_violation1_ndebug.so odr_violation2_ndebug.so "2>$@"
169         @if $(CXXLINK) -Bgcctestdir/ -Wl,--detect-odr-violations -o debug_msg_ndebug debug_msg_ndebug.so odr_violation1_ndebug.so odr_violation2_ndebug.so 2>$@; \
170         then \
171           echo 1>&2 "Link of debug_msg_ndebug should have failed"; \
172           rm -f $@; \
173           exit 1; \
174         fi
175
176
177 undef_symbol.o: undef_symbol.cc
178         $(CXXCOMPILE) -O0 -g -c -fPIC $<
179 undef_symbol.so: undef_symbol.o
180         $(CXXLINK) -shared undef_symbol.o
181 undef_symbol.err: undef_symbol_main.o undef_symbol.so gcctestdir/ld
182         @echo $(CXXLINK) -Bgcctestdir/ -o undef_symbol_test undef_symbol_main.o undef_symbol.so "2>$@"
183         @if $(CXXLINK) -Bgcctestdir/ -o undef_symbol_test undef_symbol_main.o undef_symbol.so 2>$@; \
184         then \
185           echo 1>&2 "Link of undef_symbol_test should have failed"; \
186           rm -f $@; \
187           exit 1; \
188         fi
189
190 # Override the default CXXFLAGS--we don't want any optimization
191 basic_test.o: basic_test.cc
192         $(CXXCOMPILE) -O0 -c -o $@ $<
193 basic_test: basic_test.o gcctestdir/ld
194         $(CXXLINK) -Bgcctestdir/ basic_test.o
195 basic_static_test: basic_test.o gcctestdir/ld
196         $(CXXLINK) -Bgcctestdir/ -static basic_test.o
197
198 basic_pic_test.o: basic_test.cc
199         $(CXXCOMPILE) -O0 -c -fpic -o $@ $<
200 basic_pic_test: basic_pic_test.o gcctestdir/ld
201         $(CXXLINK) -Bgcctestdir/ basic_pic_test.o
202 basic_static_pic_test: basic_pic_test.o gcctestdir/ld
203         $(CXXLINK) -Bgcctestdir/ -static basic_pic_test.o
204
205 constructor_test_SOURCES = constructor_test.cc
206 constructor_test_DEPENDENCIES = gcctestdir/ld
207 constructor_test_LDFLAGS = -Bgcctestdir/
208
209 constructor_static_test_SOURCES = constructor_test.cc
210 constructor_static_test_DEPENDENCIES = gcctestdir/ld
211 constructor_static_test_LDFLAGS = -Bgcctestdir/ -static
212
213 two_file_test_SOURCES = \
214         two_file_test_1.cc \
215         two_file_test_2.cc \
216         two_file_test_main.cc \
217         two_file_test.h
218 two_file_test_DEPENDENCIES = gcctestdir/ld
219 two_file_test_LDFLAGS = -Bgcctestdir/
220
221 two_file_static_test_SOURCES = \
222         two_file_test_1.cc two_file_test_2.cc two_file_test_main.cc
223 two_file_static_test_DEPENDENCIES = gcctestdir/ld
224 two_file_static_test_LDFLAGS = -Bgcctestdir/ -static
225
226 two_file_pic_test_SOURCES = two_file_test_main.cc
227 two_file_pic_test_DEPENDENCIES = \
228         gcctestdir/ld two_file_test_1_pic.o two_file_test_2_pic.o
229 two_file_pic_test_LDFLAGS = -Bgcctestdir/
230 two_file_pic_test_LDADD = two_file_test_1_pic.o two_file_test_2_pic.o
231
232 two_file_shared_1_test_SOURCES = two_file_test_2.cc two_file_test_main.cc
233 two_file_shared_1_test_DEPENDENCIES = gcctestdir/ld two_file_shared_1.so
234 two_file_shared_1_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
235 two_file_shared_1_test_LDADD = two_file_shared_1.so
236
237 two_file_shared_2_test_SOURCES = two_file_test_1.cc two_file_test_main.cc
238 two_file_shared_2_test_DEPENDENCIES = gcctestdir/ld two_file_shared_2.so
239 two_file_shared_2_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
240 two_file_shared_2_test_LDADD = two_file_shared_2.so
241
242 two_file_shared_1_pic_2_test_SOURCES = two_file_test_main.cc
243 two_file_shared_1_pic_2_test_DEPENDENCIES = \
244         gcctestdir/ld two_file_shared_1.so two_file_test_1_pic.o
245 two_file_shared_1_pic_2_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
246 two_file_shared_1_pic_2_test_LDADD = two_file_test_1_pic.o two_file_shared_2.so
247
248 two_file_shared_2_pic_1_test_SOURCES = two_file_test_main.cc
249 two_file_shared_2_pic_1_test_DEPENDENCIES = \
250         gcctestdir/ld two_file_shared_2.so two_file_test_2_pic.o
251 two_file_shared_2_pic_1_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
252 two_file_shared_2_pic_1_test_LDADD = two_file_test_2_pic.o two_file_shared_1.so
253
254 two_file_same_shared_test_SOURCES = two_file_test_main.cc
255 two_file_same_shared_test_DEPENDENCIES = gcctestdir/ld two_file_shared.so
256 two_file_same_shared_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
257 two_file_same_shared_test_LDADD = two_file_shared.so
258
259 two_file_separate_shared_12_test_SOURCES = two_file_test_main.cc
260 two_file_separate_shared_12_test_DEPENDENCIES = \
261         gcctestdir/ld two_file_shared_1.so two_file_shared_2.so
262 two_file_separate_shared_12_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
263 two_file_separate_shared_12_test_LDADD = \
264         two_file_shared_1.so two_file_shared_2.so
265
266 two_file_separate_shared_21_test_SOURCES = two_file_test_main.cc
267 two_file_separate_shared_21_test_DEPENDENCIES = \
268         gcctestdir/ld two_file_shared_1.so two_file_shared_2.so
269 two_file_separate_shared_21_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
270 two_file_separate_shared_21_test_LDADD = \
271         two_file_shared_2.so two_file_shared_1.so
272
273 two_file_test_1_pic.o: two_file_test_1.cc
274         $(CXXCOMPILE) -c -fpic -o $@ $<
275 two_file_test_2_pic.o: two_file_test_2.cc
276         $(CXXCOMPILE) -c -fpic -o $@ $<
277
278 two_file_shared_1.so: two_file_test_1_pic.o
279         $(CXXLINK) -shared two_file_test_1_pic.o
280 two_file_shared_2.so: two_file_test_2_pic.o
281         $(CXXLINK) -shared two_file_test_2_pic.o
282 two_file_shared.so: two_file_test_1_pic.o two_file_test_2_pic.o
283         $(CXXLINK) -shared two_file_test_1_pic.o two_file_test_2_pic.o
284
285 # The nonpic tests will fail on platforms which can not put non-PIC
286 # code into shared libraries, so we just don't run them in that case.
287
288 if FN_PTRS_IN_SO_WITHOUT_PIC
289
290 two_file_shared_1_nonpic_test_SOURCES = \
291         two_file_test_2.cc two_file_test_main.cc
292 two_file_shared_1_nonpic_test_DEPENDENCIES = \
293         gcctestdir/ld two_file_shared_1_nonpic.so
294 two_file_shared_1_nonpic_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
295 two_file_shared_1_nonpic_test_LDADD = two_file_shared_1_nonpic.so
296
297 two_file_shared_2_nonpic_test_SOURCES = \
298         two_file_test_1.cc two_file_test_main.cc
299 two_file_shared_2_nonpic_test_DEPENDENCIES = \
300         gcctestdir/ld two_file_shared_2_nonpic.so
301 two_file_shared_2_nonpic_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
302 two_file_shared_2_nonpic_test_LDADD = two_file_shared_2_nonpic.so
303
304 two_file_same_shared_nonpic_test_SOURCES = two_file_test_main.cc
305 two_file_same_shared_nonpic_test_DEPENDENCIES = \
306         gcctestdir/ld two_file_shared_nonpic.so
307 two_file_same_shared_nonpic_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
308 two_file_same_shared_nonpic_test_LDADD = two_file_shared_nonpic.so
309
310 two_file_separate_shared_12_nonpic_test_SOURCES = two_file_test_main.cc
311 two_file_separate_shared_12_nonpic_test_DEPENDENCIES = \
312         gcctestdir/ld two_file_shared_1_nonpic.so two_file_shared_2_nonpic.so
313 two_file_separate_shared_12_nonpic_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
314 two_file_separate_shared_12_nonpic_test_LDADD = \
315         two_file_shared_1_nonpic.so two_file_shared_2_nonpic.so
316
317 two_file_separate_shared_21_nonpic_test_SOURCES = two_file_test_main.cc
318 two_file_separate_shared_21_nonpic_test_DEPENDENCIES = \
319         gcctestdir/ld two_file_shared_1_nonpic.so two_file_shared_2_nonpic.so
320 two_file_separate_shared_21_nonpic_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
321 two_file_separate_shared_21_nonpic_test_LDADD = \
322         two_file_shared_2_nonpic.so two_file_shared_1_nonpic.so
323
324 two_file_shared_1_nonpic.so: two_file_test_1.o
325         $(CXXLINK) -shared two_file_test_1.o
326 two_file_shared_2_nonpic.so: two_file_test_2.o
327         $(CXXLINK) -shared two_file_test_2.o
328 two_file_shared_nonpic.so: two_file_test_1.o two_file_test_2.o
329         $(CXXLINK) -shared two_file_test_1.o two_file_test_2.o
330
331 endif
332
333 exception_test_SOURCES = \
334         exception_test_main.cc \
335         exception_test_1.cc \
336         exception_test_2.cc \
337         exception_test.h
338 exception_test_DEPENDENCIES = gcctestdir/ld
339 exception_test_LDFLAGS = -Bgcctestdir/
340
341 exception_static_test_SOURCES = \
342         exception_test_main.cc \
343         exception_test_1.cc \
344         exception_test_2.cc
345 exception_static_test_DEPENDENCIES = gcctestdir/ld
346 exception_static_test_LDFLAGS = -Bgcctestdir/ -static
347
348 exception_shared_1_test_SOURCES = exception_test_2.cc exception_test_main.cc
349 exception_shared_1_test_DEPENDENCIES = gcctestdir/ld exception_shared_1.so
350 exception_shared_1_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
351 exception_shared_1_test_LDADD = exception_shared_1.so
352
353 exception_shared_2_test_SOURCES = exception_test_1.cc exception_test_main.cc
354 exception_shared_2_test_DEPENDENCIES = gcctestdir/ld exception_shared_2.so
355 exception_shared_2_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
356 exception_shared_2_test_LDADD = exception_shared_2.so
357
358 exception_same_shared_test_SOURCES = exception_test_main.cc
359 exception_same_shared_test_DEPENDENCIES = gcctestdir/ld exception_shared.so
360 exception_same_shared_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
361 exception_same_shared_test_LDADD = exception_shared.so
362
363 exception_separate_shared_12_test_SOURCES = exception_test_main.cc
364 exception_separate_shared_12_test_DEPENDENCIES = \
365         gcctestdir/ld exception_shared_1.so exception_shared_2.so
366 exception_separate_shared_12_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
367 exception_separate_shared_12_test_LDADD = \
368         exception_shared_1.so exception_shared_2.so
369
370 exception_separate_shared_21_test_SOURCES = exception_test_main.cc
371 exception_separate_shared_21_test_DEPENDENCIES = \
372         gcctestdir/ld exception_shared_1.so exception_shared_2.so
373 exception_separate_shared_21_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
374 exception_separate_shared_21_test_LDADD = \
375         exception_shared_2.so exception_shared_1.so
376
377 exception_test_1_pic.o: exception_test_1.cc
378         $(CXXCOMPILE) -c -fpic -o $@ $<
379 exception_test_2_pic.o: exception_test_2.cc
380         $(CXXCOMPILE) -c -fpic -o $@ $<
381
382 exception_shared_1.so: exception_test_1_pic.o
383         $(CXXLINK) -shared exception_test_1_pic.o
384 exception_shared_2.so: exception_test_2_pic.o
385         $(CXXLINK) -shared exception_test_2_pic.o
386 exception_shared.so: exception_test_1_pic.o exception_test_2_pic.o
387         $(CXXLINK) -shared exception_test_1_pic.o exception_test_2_pic.o
388
389 weak_test_SOURCES = weak_test.cc
390 weak_test_LDFLAGS = -Bgcctestdir/
391
392 if TLS
393
394 tls_test_SOURCES = tls_test.cc tls_test_file2.cc tls_test_main.cc tls_test.h
395 tls_test_DEPENDENCIES = gcctestdir/ld
396 tls_test_LDFLAGS = -Bgcctestdir/
397 tls_test_LDADD = -lpthread
398
399 tls_pic_test_SOURCES = tls_test_main.cc
400 tls_pic_test_DEPENDENCIES = gcctestdir/ld tls_test_pic.o tls_test_file2_pic.o
401 tls_pic_test_LDFLAGS = -Bgcctestdir/
402 tls_pic_test_LDADD = tls_test_pic.o tls_test_file2_pic.o -lpthread
403
404 tls_static_test_SOURCES = tls_test.cc tls_test_file2.cc tls_test_main.cc
405 tls_static_test_DEPENDENCIES = gcctestdir/ld
406 tls_static_test_LDFLAGS = -Bgcctestdir/ -static
407 tls_static_test_LDADD = -lpthread
408
409 tls_static_pic_test_SOURCES = tls_test_main.cc
410 tls_static_pic_test_DEPENDENCIES = gcctestdir/ld tls_test_pic.o tls_test_file2_pic.o
411 tls_static_pic_test_LDFLAGS = -Bgcctestdir/ -static
412 tls_static_pic_test_LDADD = tls_test_pic.o tls_test_file2_pic.o -lpthread
413
414 tls_shared_test_SOURCES = tls_test_main.cc
415 tls_shared_test_DEPENDENCIES = gcctestdir/ld tls_test_shared.so
416 tls_shared_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
417 tls_shared_test_LDADD = tls_test_shared.so -lpthread
418
419 tls_test_pic.o: tls_test.cc
420         $(CXXCOMPILE) -c -fpic -o $@ $<
421
422 tls_test_file2_pic.o: tls_test_file2.cc
423         $(CXXCOMPILE) -c -fpic -o $@ $<
424
425 tls_test_shared.so: tls_test_pic.o tls_test_file2_pic.o
426         $(CXXLINK) -shared tls_test_pic.o tls_test_file2_pic.o
427
428 if FN_PTRS_IN_SO_WITHOUT_PIC
429
430 tls_shared_nonpic_test_SOURCES = tls_test_main.cc
431 tls_shared_nonpic_test_DEPENDENCIES = gcctestdir/ld tls_test_shared_nonpic.so
432 tls_shared_nonpic_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
433 tls_shared_nonpic_test_LDADD = tls_test_shared_nonpic.so -lpthread
434
435 tls_test_shared_nonpic.so: tls_test.o tls_test_file2.o
436         $(CXXLINK) -shared tls_test.o tls_test_file2.o
437
438 endif
439
440 endif
441
442 endif
443 endif