source: tags/arb-6.0/UNIT_TESTER/Makefile.test

Last change on this file was 11188, checked in by westram, 10 years ago
  • allow to restrict test-scope to test-functions matching a given regexpr (no recompile needed)
File size: 4.3 KB
Line 
1# ----------------------------------------------------------
2#   _  _  __ _  __  ____    ____  ____  ____  ____  ____
3#  / )( \(  ( \(  )(_  _)  (_  _)(  __)/ ___)(_  _)/ ___)
4#  ) \/ (/    / )(   )(      )(   ) _) \___ \  )(  \___ \
5#  \____/\_)__)(__) (__)    (__) (____)(____/ (__) (____/
6#
7# ----------------------------------------------------------
8
9
10.SUFFIXES: .cxx .o .sym
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
54DESTDIR=tests
55RUNDIR=run# see also UnitTester.cxx@chdir
56
57SYMLIST=$(DESTDIR)/$(UNIQUE_NAME).sym
58TEST_CODE=$(DESTDIR)/$(UNIQUE_NAME).cxx
59TEST_OBJ=$(DESTDIR)/$(UNIQUE_NAME).o
60TEST_EXE=$(DESTDIR)/$(UNIQUE_NAME)
61
62MAKESYMLIST=./make_symlist.sh
63SYM2TESTCODE=./sym2testcode.pl
64
65INCDIR=../INCLUDE
66
67INCLUDES= \
68        UnitTester.hxx \
69        $(INCDIR)/arb_assert.h \
70
71UNIT_TESTER_LIB=./UNIT_TESTER.a
72
73ifeq ($(UNITLIB),.a)
74# nothing given (only avoids undefined symbols)
75LINKLIST=
76LINKDEPS=
77else
78LINKLIST=$(shell ../SOURCE_TOOLS/needed_libs.pl -S -A .. -l $(FULLLIB))
79LINKDEPS=$(shell ../SOURCE_TOOLS/needed_libs.pl -S -A .. -F $(FULLLIB))
80endif
81
82ifeq ($(CHECK_LEAKS),0)
83        LEAKS:=
84else
85ifeq ($(CHECK_LEAKS),1)
86        LEAKS:=-l
87else
88        LEAKS:=-l -r
89endif
90endif
91
92# --------------------------------------------------------------------------------
93
94clean:
95        rm -f $(DESTDIR)/*
96
97# --------------------------------------------------------------------------------
98
99$(DESTDIR):
100        test -d $(DESTDIR) || mkdir -p $(DESTDIR)
101
102$(RUNDIR):
103        test -d $(RUNDIR) || mkdir -p $(RUNDIR)
104
105makedirs: $(DESTDIR) $(RUNDIR)
106
107$(SYMLIST) : $(FULLLIB) Makefile makedirs show_test_header $(MAKESYMLIST)
108        $(MAKESYMLIST) $(FULLLIB) $(SYMLIST)
109
110$(TEST_CODE) : $(SYMLIST) $(SYM2TESTCODE) Makefile.test
111        $(SYM2TESTCODE) $(UNITLIB) $(RESTRICT_MODULE) $(RESTRICT_FUN) $< $@ $(WARN_LEVEL)
112
113$(TEST_OBJ) : $(TEST_CODE) $(INCLUDES)
114        $(A_CXX) $(cflags) $(cxxflags) -c $< -o $@ -I. $(POST_COMPILE)
115
116$(TEST_EXE) : $(TEST_OBJ) $(UNIT_TESTER_LIB) $(LINKDEPS)
117        $(LINK_EXECUTABLE) $@ $< $(UNIT_TESTER_LIB) -L../lib $(LINKLIST) $(EXECLIBS)
118
119dump:
120        @echo "$(SEP) dump $(UNITLIBNAME)"
121        @echo "UNITDIR        ='$(UNITDIR)'"
122        @echo "UNITLIBNAME    ='$(UNITLIBNAME)'"
123        @echo "FULLUNITDIR    ='$(FULLUNITDIR)'"
124        @echo "ISSHAREDLIB    ='$(ISSHAREDLIB)'"
125        @echo "UNITLIB        ='$(UNITLIB)'"
126        @echo "FULLLIB        ='$(FULLLIB)'"
127        @echo "UNIQUE_NAME    ='$(UNIQUE_NAME)'"
128        @echo "SYMLIST        ='$(SYMLIST)'"
129        @echo "TEST_CODE      ='$(TEST_CODE)'"
130        @echo "TEST_OBJ       ='$(TEST_OBJ)'"
131        @echo "TEST_EXE       ='$(TEST_EXE)'"
132        @echo "INCLUDES       ='$(INCLUDES)'"
133        @echo "LINKLIST       ='$(LINKLIST)'"
134        @echo "LINKDEPS       ='$(LINKDEPS)'"
135
136do_valgrind:
137        @echo "Valgrinding $(TEST_EXE)"
138        $(ARBHOME)/SOURCE_TOOLS/arb_valgrind -e -q $(LEAKS) -c 40 $(TEST_EXE) || \
139                echo "UnitTester: $(UNITLIBNAME) valgrind reports error(s)"
140
141show_test_header:
142        @echo ""
143        @echo "-------------------- [ Test $(UNITLIBNAME) ] --------------------"
144
145perform_test: $(TEST_EXE)
146        @echo "fake[2]: Entering directory \`$(FULLUNITDIR)'"
147ifeq ($(findstring B,$(VALGRIND)),B)
148        $(MAKE) -f Makefile.test do_valgrind
149endif
150        $(TEST_EXE)
151ifeq ($(COVERAGE),1)
152        @echo "UnitTester: coverage" # do not remove (used as trigger)
153        @echo "-------------------- test-coverage for $(UNITLIBNAME)"
154        ./gcov2msg.sh $(FULLUNITDIR) $(UNITLIBNAME)
155        @echo "-------------------- test-coverage for $(UNITLIBNAME) [end]"
156endif
157ifeq ($(findstring A,$(VALGRIND)),A)
158        $(MAKE) -f Makefile.test do_valgrind
159endif
160        @echo "fake[2]: Leaving directory \`$(FULLUNITDIR)'"
161
162skip_test:
163        @echo "UnitTester: $(UNITLIBNAME) tests=0 (skipped via RESTRICT_LIB)"
164
165# --------------------
166
167RUN:=perform_test
168
169ifneq ('$(RESTRICT_LIB)','')
170IS_RESTRICTED_TO=$(findstring :$(UNITLIBNAME):,:$(RESTRICT_LIB):)
171ifeq ('$(IS_RESTRICTED_TO)','')
172        RUN:=skip_test
173endif
174endif
175
176runtest: $(RUN)
177
178#runtest: dump
179
Note: See TracBrowser for help on using the repository browser.