summaryrefslogtreecommitdiff
path: root/tests/tests.am
blob: 7b1d4367c3fbcc450221b063af448e63eeb5d014 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
#
# THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY EXPRESSED
# OR IMPLIED.  ANY USE IS AT YOUR OWN RISK.
#
# Permission is hereby granted to use or copy this program
# for any purpose, provided the above notices are retained on all copies.
# Permission to modify the code and to distribute modified code is granted,
# provided the above notices are retained, and a notice that the code was
# modified is included with the above copyright notice.

# Common libs to *_LDADD for most tests.
test_ldadd = $(nodist_libgc_la_OBJECTS) $(top_builddir)/libgc.la \
            $(EXTRA_TEST_LIBS)

TESTS += gctest$(EXEEXT)
check_PROGRAMS += gctest
gctest_SOURCES = tests/gctest.c
gctest_LDADD = $(test_ldadd)
if THREADS
if ENABLE_SHARED
gctest_LDADD += $(ATOMIC_OPS_LIBS)
endif
gctest_LDADD += $(THREADDLLIBS)
endif
gctest_DEPENDENCIES = $(top_builddir)/libgc.la

if EMSCRIPTEN
# Note: because of libtool, you'll need to point your browser to
# .libs/gctest.html, not gctest.html at topdir.
check_PROGRAMS += gctest.html
gctest_html_SOURCES = $(gctest_SOURCES)
gctest_html_LDADD = $(gctest_LDADD)
endif

TESTS += hugetest$(EXEEXT)
check_PROGRAMS += hugetest
hugetest_SOURCES = tests/huge.c
hugetest_LDADD = $(test_ldadd)

TESTS += leaktest$(EXEEXT)
check_PROGRAMS += leaktest
leaktest_SOURCES = tests/leak.c
leaktest_LDADD = $(test_ldadd)

TESTS += middletest$(EXEEXT)
check_PROGRAMS += middletest
middletest_SOURCES = tests/middle.c
middletest_LDADD = $(test_ldadd)

TESTS += realloctest$(EXEEXT)
check_PROGRAMS += realloctest
realloctest_SOURCES = tests/realloc.c
realloctest_LDADD = $(test_ldadd)

TESTS += smashtest$(EXEEXT)
check_PROGRAMS += smashtest
smashtest_SOURCES = tests/smash.c
smashtest_LDADD = $(test_ldadd)

TESTS += staticrootstest$(EXEEXT)
check_PROGRAMS += staticrootstest
staticrootstest_SOURCES = tests/staticroots.c
staticrootstest_CFLAGS = -DSTATICROOTSLIB2
staticrootstest_LDADD = $(nodist_libgc_la_OBJECTS) $(EXTRA_TEST_LIBS) \
                        libstaticroots_lib_test.la libstaticroots_lib2_test.la
check_LTLIBRARIES += libstaticroots_lib_test.la libstaticroots_lib2_test.la
libstaticroots_lib_test_la_SOURCES = tests/staticroots_lib.c
libstaticroots_lib_test_la_LIBADD = $(test_ldadd)
libstaticroots_lib_test_la_LDFLAGS = -no-undefined -rpath /nowhere
libstaticroots_lib_test_la_DEPENDENCIES = $(top_builddir)/libgc.la
libstaticroots_lib2_test_la_SOURCES = tests/staticroots_lib.c
libstaticroots_lib2_test_la_LIBADD = $(test_ldadd)
libstaticroots_lib2_test_la_CFLAGS = -DSTATICROOTSLIB2
libstaticroots_lib2_test_la_LDFLAGS = -no-undefined -rpath /nowhere
if ENABLE_SHARED
staticrootstest_LDADD += $(top_builddir)/libgc.la
endif

if KEEP_BACK_PTRS
TESTS += tracetest$(EXEEXT)
check_PROGRAMS += tracetest
tracetest_SOURCES = tests/trace.c
tracetest_LDADD = $(test_ldadd)
endif

if THREADS

TESTS += atomicopstest$(EXEEXT)
check_PROGRAMS += atomicopstest
atomicopstest_SOURCES = tests/atomicops.c
atomicopstest_LDADD = $(nodist_libgc_la_OBJECTS) $(EXTRA_TEST_LIBS) \
                $(ATOMIC_OPS_LIBS) $(THREADDLLIBS)

TESTS += initfromthreadtest$(EXEEXT)
check_PROGRAMS += initfromthreadtest
initfromthreadtest_SOURCES = tests/initfromthread.c
initfromthreadtest_LDADD = $(test_ldadd) $(THREADDLLIBS)

TESTS += subthreadcreatetest$(EXEEXT)
check_PROGRAMS += subthreadcreatetest
subthreadcreatetest_SOURCES = tests/subthreadcreate.c
subthreadcreatetest_LDADD = $(test_ldadd)
if ENABLE_SHARED
subthreadcreatetest_LDADD += $(ATOMIC_OPS_LIBS)
endif
subthreadcreatetest_LDADD += $(THREADDLLIBS)

TESTS += threadkeytest$(EXEEXT)
check_PROGRAMS += threadkeytest
threadkeytest_SOURCES = tests/threadkey.c
threadkeytest_LDADD = $(test_ldadd) $(THREADDLLIBS)

TESTS += threadleaktest$(EXEEXT)
check_PROGRAMS += threadleaktest
threadleaktest_SOURCES = tests/threadleak.c
threadleaktest_LDADD = $(test_ldadd) $(THREADDLLIBS)

endif

if CPLUSPLUS
TESTS += cpptest$(EXEEXT)
check_PROGRAMS += cpptest
cpptest_SOURCES = tests/cpp.cc
if AVOID_CPP_LIB
cpptest_LDADD = gc_badalc.o gc_cpp.o $(test_ldadd) $(CXXLIBS)
else
cpptest_LDADD = libgccpp.la $(nodist_libgc_la_OBJECTS) \
                $(EXTRA_TEST_LIBS) $(CXXLIBS)
## In case of static libraries build, libgc.a is already referenced in
## dependency_libs attribute of libgccpp.la file.
if ENABLE_SHARED
cpptest_LDADD += $(top_builddir)/libgc.la
endif
endif
endif

if ENABLE_DISCLAIM

TESTS += disclaimtest$(EXEEXT)
check_PROGRAMS += disclaimtest
disclaimtest_SOURCES = tests/disclaim.c
disclaimtest_LDADD = $(test_ldadd)
if THREADS
disclaimtest_LDADD += $(THREADDLLIBS)
endif

TESTS += disclaim_bench$(EXEEXT)
check_PROGRAMS += disclaim_bench
disclaim_bench_SOURCES = tests/disclaim_bench.c
disclaim_bench_LDADD = $(test_ldadd)

TESTS += weakmaptest$(EXEEXT)
check_PROGRAMS += weakmaptest
weakmaptest_SOURCES = tests/weakmap.c
weakmaptest_LDADD = $(test_ldadd)
if THREADS
if ENABLE_SHARED
weakmaptest_LDADD += $(ATOMIC_OPS_LIBS)
endif
weakmaptest_LDADD += $(THREADDLLIBS)
endif

endif

# Run the tests directly (without test-driver):
.PHONY: check-without-test-driver
check-without-test-driver: $(TESTS)
	./gctest$(EXEEXT)
	./hugetest$(EXEEXT)
	./leaktest$(EXEEXT)
	./middletest$(EXEEXT)
	./realloctest$(EXEEXT)
	./smashtest$(EXEEXT)
	./staticrootstest$(EXEEXT)
	test ! -f atomicopstest$(EXEEXT) || ./atomicopstest$(EXEEXT)
	test ! -f cpptest$(EXEEXT) || ./cpptest$(EXEEXT)
	test ! -f disclaim_bench$(EXEEXT) || ./disclaim_bench$(EXEEXT)
	test ! -f disclaimtest$(EXEEXT) || ./disclaimtest$(EXEEXT)
	test ! -f initfromthreadtest$(EXEEXT) || ./initfromthreadtest$(EXEEXT)
	test ! -f subthreadcreatetest$(EXEEXT) || ./subthreadcreatetest$(EXEEXT)
	test ! -f threadkeytest$(EXEEXT) || ./threadkeytest$(EXEEXT)
	test ! -f threadleaktest$(EXEEXT) || ./threadleaktest$(EXEEXT)
	test ! -f tracetest$(EXEEXT) || ./tracetest$(EXEEXT)
	test ! -f weakmaptest$(EXEEXT) || ./weakmaptest$(EXEEXT)
	./cordtest$(EXEEXT)