source: tags/ms_r18q1/UNIT_TESTER/Makefile.test

Last change on this file was 16919, checked in by westram, 6 years ago
File size: 5.6 KB
Line 
1# ----------------------------------------------------------
2#   _  _  __ _  __  ____    ____  ____  ____  ____  ____
3#  / )( \(  ( \(  )(_  _)  (_  _)(  __)/ ___)(_  _)/ ___)
4#  ) \/ (/    / )(   )(      )(   ) _) \___ \  )(  \___ \
5#  \____/\_)__)(__) (__)    (__) (____)(____/ (__) (____/
6#
7# ----------------------------------------------------------
8
9
10.SUFFIXES: .cxx .o .sym .done
11
12dummy:
13        false
14
15include Makefile.setup.include
16
17
18RELUNITDIR=../$(UNITDIR)
19FULLUNITDIR=$(ARBHOME)/$(UNITDIR)
20
21# Note: whitespace is important for the following tests!
22
23SHAREDLIBS= \
24        CORE \
25        ARBDB \
26        AWT \
27        WINDOW \
28
29EXEOBJDIRS= \
30        TOOLS \
31        PERLTOOLS \
32        HELP_SOURCE \
33        AISC_MKPTPS \
34        PROBE_SET \
35
36ISSHAREDLIB=$(findstring  $(UNITDIR) , $(SHAREDLIBS) )
37ISEXEOBJECT=$(findstring  $(UNITDIR) , $(EXEOBJDIRS) )
38
39ifneq ($(ISSHAREDLIB),)
40        UNITLIB=$(UNITLIBNAME).$(SHARED_LIB_SUFFIX)
41else
42ifneq ($(ISEXEOBJECT),)
43        UNITLIB=$(UNITLIBNAME).o
44else
45        UNITLIB=$(UNITLIBNAME).a
46endif
47endif
48
49UNIQUE_NAME=test_$(subst /,_,$(subst .,_,$(UNITDIR)_$(UNITLIB)))
50
51ifneq ($(ISSHAREDLIB),)
52FULLLIB=$(ARBHOME)/lib/$(UNITLIB)
53else
54FULLLIB=$(FULLUNITDIR)/$(UNITLIB)
55endif
56
57RUNDIR=run# see also UnitTester.cxx@chdir
58
59SKIPPING_SLOW_TEST=$(wildcard skipslow.stamp)
60ifeq ($(SKIPPING_SLOW_TEST),)
61        DESTDIR=tests.slow
62else
63        DESTDIR=tests
64endif
65
66TEST_BASE=$(DESTDIR)/$(UNIQUE_NAME)
67
68SYMLIST=$(TEST_BASE).sym
69TEST_CODE=$(TEST_BASE).cxx
70TEST_OBJ=$(TEST_BASE).o
71TEST_EXE=$(TEST_BASE)
72TEST_DONE=$(TEST_BASE).done
73
74MAKESYMLIST=./make_symlist.sh
75SYM2TESTCODE=./sym2testcode.pl
76
77INCDIR=../INCLUDE
78
79INCLUDES= \
80        UnitTester.hxx \
81        $(INCDIR)/arb_assert.h \
82
83UNIT_TESTER_LIB=./UNIT_TESTER.a
84
85ifeq ($(UNITLIB),.a)
86# nothing given (only avoids undefined symbols)
87LINKLIST=
88LINKDEPS=
89else
90LINKLIST=$(shell ../SOURCE_TOOLS/needed_libs.pl -S -A .. -l $(FULLLIB))
91LINKDEPS=$(shell ../SOURCE_TOOLS/needed_libs.pl -S -A .. -F $(FULLLIB))
92endif
93
94ifeq ($(CHECK_LEAKS),0)
95        LEAKS:=
96else
97ifeq ($(CHECK_LEAKS),1)
98        LEAKS:=-l
99else
100        LEAKS:=-l -r
101endif
102endif
103
104# --------------------------------------------------------------------------------
105
106clean:
107        rm -f $(DESTDIR)/*
108
109# --------------------------------------------------------------------------------
110
111$(DESTDIR):
112        test -d $(DESTDIR) || mkdir -p $(DESTDIR)
113
114$(RUNDIR):
115        test -d $(RUNDIR) || mkdir -p $(RUNDIR)
116
117makedirs: $(DESTDIR) $(RUNDIR)
118
119$(SYMLIST) : $(FULLLIB) Makefile makedirs show_test_header $(MAKESYMLIST)
120        $(MAKESYMLIST) $(FULLLIB) $(SYMLIST)
121
122$(TEST_CODE) : $(SYMLIST) $(SYM2TESTCODE) Makefile.test Makefile.setup.local
123        $(SYM2TESTCODE) $(UNITLIB) $(RESTRICT_MODULE) $(RESTRICT_FUN) $< $@.tmp $(WARN_LEVEL)
124        ../SOURCE_TOOLS/mv_if_diff $@.tmp $@
125
126$(TEST_OBJ) : $(TEST_CODE) $(INCLUDES)
127        $(A_CXX) $(cflags) $(cxxflags) -c $< -o $@ $(CXX_INCLUDES) $(POST_COMPILE) $<
128
129$(TEST_EXE) : $(TEST_OBJ) $(UNIT_TESTER_LIB) $(LINKDEPS)
130        $(LINK_EXECUTABLE) $@ $< $(UNIT_TESTER_LIB) -L../lib $(LINKLIST)
131
132dump:
133        @echo "$(SEP) dump $(UNITLIBNAME)"
134        @echo "UNITDIR        ='$(UNITDIR)'"
135        @echo "UNITLIBNAME    ='$(UNITLIBNAME)'"
136        @echo "FULLUNITDIR    ='$(FULLUNITDIR)'"
137        @echo "ISSHAREDLIB    ='$(ISSHAREDLIB)'"
138        @echo "UNITLIB        ='$(UNITLIB)'"
139        @echo "FULLLIB        ='$(FULLLIB)'"
140        @echo "UNIQUE_NAME    ='$(UNIQUE_NAME)'"
141        @echo "SYMLIST        ='$(SYMLIST)'"
142        @echo "TEST_CODE      ='$(TEST_CODE)'"
143        @echo "TEST_OBJ       ='$(TEST_OBJ)'"
144        @echo "TEST_EXE       ='$(TEST_EXE)'"
145        @echo "INCLUDES       ='$(INCLUDES)'"
146        @echo "LINKLIST       ='$(LINKLIST)'"
147        @echo "LINKDEPS       ='$(LINKDEPS)'"
148
149do_valgrind:
150        @echo "Valgrinding $(TEST_EXE)"
151        $(ARBHOME)/SOURCE_TOOLS/arb_valgrind -e -q $(LEAKS) -c 40 $(TEST_EXE) || \
152                echo "UnitTester: $(UNITLIBNAME) valgrind reports error(s)"
153
154show_test_header:
155        @echo ""
156        @echo "-------------------- [ Test $(UNITLIBNAME) ] --------------------"
157
158
159$(TEST_DONE) : $(TEST_EXE)
160        @echo "fake[2]: Entering directory \`$(FULLUNITDIR)'"
161ifeq ($(findstring B,$(VALGRIND)),B)
162        $(MAKE) -f Makefile.test do_valgrind
163endif
164        $(TEST_EXE)
165ifeq ($(COVERAGE),1)
166        @echo "UnitTester: coverage" # do not remove (used as trigger)
167        @echo "-------------------- test-coverage for $(UNITLIBNAME)"
168        ./gcov2msg.sh $(FULLUNITDIR) $(UNITLIBNAME)
169        @echo "-------------------- test-coverage for $(UNITLIBNAME) [end]"
170endif
171ifeq ($(findstring A,$(VALGRIND)),A)
172        $(MAKE) -f Makefile.test do_valgrind
173endif
174        @echo "fake[2]: Leaving directory \`$(FULLUNITDIR)'"
175        touch $@
176
177perform_test: $(TEST_DONE)
178        @echo "UnitTester: target=$(UNITLIBNAME) tests=0 (possibly skipped because unchanged)"
179
180skip_test:
181        @echo "UnitTester: target=$(UNITLIBNAME) tests=0 (skipped via RESTRICT_LIB)"
182
183# --------------------
184
185RUN:=perform_test
186
187ifneq ('$(RESTRICT_LIB)','')
188IS_RESTRICTED_TO=$(findstring :$(UNITLIBNAME):,:$(RESTRICT_LIB):)
189ifeq ('$(IS_RESTRICTED_TO)','')
190        RUN:=skip_test
191endif
192endif
193
194ifeq ($(ONLY_CHANGED_TESTS),0)
195
196always:
197        @echo forcing target $(TEST_DONE)
198
199$(TEST_DONE) : always
200
201else
202
203# declare some EXTRA_TEST_DEPENDENCIES
204
205TOOLDIR=../bin
206
207# tests in arb_test.o call several command-line-tools:
208$(DESTDIR)/test_TOOLS_arb_test_o.done : \
209        $(TOOLDIR)/arb_calc_pvp \
210        $(TOOLDIR)/arb_export_tree \
211        $(TOOLDIR)/arb_export_rates \
212        $(TOOLDIR)/arb_export_sequences \
213        $(TOOLDIR)/arb_export_seq_filtered \
214        $(TOOLDIR)/arb_probe \
215        $(TOOLDIR)/arb_probe_match \
216        $(TOOLDIR)/arb_dnarates \
217
218# force tests affected by changed pt-server:
219$(DESTDIR)/test_MULTI_PROBE_MULTI_PROBE_a.done : $(TOOLDIR)/arb_pt_server
220$(DESTDIR)/test_AWTC_AWTC_a.done : $(TOOLDIR)/arb_pt_server
221$(DESTDIR)/test_TOOLS_arb_probe_o.done : $(TOOLDIR)/arb_pt_server
222$(DESTDIR)/test_TOOLS_arb_test_o.done : $(TOOLDIR)/arb_pt_server
223
224# help test depends on xslt processing
225XSLTDIR=../HELP_SOURCE
226$(DESTDIR)/test_HELP_SOURCE_arb_help2xml_o.done : $(XSLTDIR)/to_help.xsl $(XSLTDIR)/to_html.xsl
227
228endif
229
230runtest: $(RUN)
231
232#runtest: dump
233
Note: See TracBrowser for help on using the repository browser.