source: branches/profile/UNIT_TESTER/Makefile.test

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