1 | # ---------------------------------------------------------- |
---|
2 | # _ _ __ _ __ ____ ____ ____ ____ ____ ____ |
---|
3 | # / )( \( ( \( )(_ _) (_ _)( __)/ ___)(_ _)/ ___) |
---|
4 | # ) \/ (/ / )( )( )( ) _) \___ \ )( \___ \ |
---|
5 | # \____/\_)__)(__) (__) (__) (____)(____/ (__) (____/ |
---|
6 | # |
---|
7 | # ---------------------------------------------------------- |
---|
8 | |
---|
9 | |
---|
10 | .SUFFIXES: .cxx .o .sym |
---|
11 | |
---|
12 | dummy: |
---|
13 | false |
---|
14 | |
---|
15 | include Makefile.setup.include |
---|
16 | |
---|
17 | |
---|
18 | RELUNITDIR=../$(UNITDIR) |
---|
19 | FULLUNITDIR=$(ARBHOME)/$(UNITDIR) |
---|
20 | |
---|
21 | SHAREDLIBS=\ |
---|
22 | CORE \ |
---|
23 | ARBDB \ |
---|
24 | AWT \ |
---|
25 | WINDOW \ |
---|
26 | |
---|
27 | EXEOBJDIRS=\ |
---|
28 | TOOLS \ |
---|
29 | PERLTOOLS \ |
---|
30 | HELP_SOURCE \ |
---|
31 | AISC_MKPTPS \ |
---|
32 | |
---|
33 | ISSHAREDLIB=$(findstring $(UNITDIR),$(SHAREDLIBS)) |
---|
34 | ISEXEOBJECT=$(findstring $(UNITDIR),$(EXEOBJDIRS)) |
---|
35 | |
---|
36 | ifneq ($(ISSHAREDLIB),) |
---|
37 | UNITLIB=$(UNITLIBNAME).$(SHARED_LIB_SUFFIX) |
---|
38 | else |
---|
39 | ifneq ($(ISEXEOBJECT),) |
---|
40 | UNITLIB=$(UNITLIBNAME).o |
---|
41 | else |
---|
42 | UNITLIB=$(UNITLIBNAME).a |
---|
43 | endif |
---|
44 | endif |
---|
45 | |
---|
46 | UNIQUE_NAME=test_$(subst /,_,$(subst .,_,$(UNITDIR)_$(UNITLIB))) |
---|
47 | |
---|
48 | ifneq ($(ISSHAREDLIB),) |
---|
49 | FULLLIB=$(ARBHOME)/lib/$(UNITLIB) |
---|
50 | else |
---|
51 | FULLLIB=$(FULLUNITDIR)/$(UNITLIB) |
---|
52 | endif |
---|
53 | |
---|
54 | DESTDIR=tests |
---|
55 | RUNDIR=run# see also UnitTester.cxx@chdir |
---|
56 | |
---|
57 | SYMLIST=$(DESTDIR)/$(UNIQUE_NAME).sym |
---|
58 | TEST_CODE=$(DESTDIR)/$(UNIQUE_NAME).cxx |
---|
59 | TEST_OBJ=$(DESTDIR)/$(UNIQUE_NAME).o |
---|
60 | TEST_EXE=$(DESTDIR)/$(UNIQUE_NAME) |
---|
61 | |
---|
62 | MAKESYMLIST=./make_symlist.sh |
---|
63 | SYM2TESTCODE=./sym2testcode.pl |
---|
64 | |
---|
65 | INCDIR=../INCLUDE |
---|
66 | |
---|
67 | INCLUDES= \ |
---|
68 | UnitTester.hxx \ |
---|
69 | $(INCDIR)/arb_assert.h \ |
---|
70 | |
---|
71 | UNIT_TESTER_LIB=./UNIT_TESTER.a |
---|
72 | |
---|
73 | ifeq ($(UNITLIB),.a) |
---|
74 | # nothing given (only avoids undefined symbols) |
---|
75 | LINKLIST= |
---|
76 | LINKDEPS= |
---|
77 | else |
---|
78 | LINKLIST=$(shell ../SOURCE_TOOLS/needed_libs.pl -S -A .. -l $(FULLLIB)) |
---|
79 | LINKDEPS=$(shell ../SOURCE_TOOLS/needed_libs.pl -S -A .. -F $(FULLLIB)) |
---|
80 | endif |
---|
81 | |
---|
82 | ifeq ($(CHECK_LEAKS),0) |
---|
83 | LEAKS:= |
---|
84 | else |
---|
85 | ifeq ($(CHECK_LEAKS),1) |
---|
86 | LEAKS:=-l |
---|
87 | else |
---|
88 | LEAKS:=-l -r |
---|
89 | endif |
---|
90 | endif |
---|
91 | |
---|
92 | # -------------------------------------------------------------------------------- |
---|
93 | |
---|
94 | clean: |
---|
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 | |
---|
105 | makedirs: $(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 | |
---|
119 | dump: |
---|
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 | |
---|
136 | do_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 | |
---|
141 | show_test_header: |
---|
142 | @echo "" |
---|
143 | @echo "-------------------- [ Test $(UNITLIBNAME) ] --------------------" |
---|
144 | |
---|
145 | perform_test: $(TEST_EXE) |
---|
146 | @echo "fake[2]: Entering directory \`$(FULLUNITDIR)'" |
---|
147 | ifeq ($(findstring B,$(VALGRIND)),B) |
---|
148 | $(MAKE) -f Makefile.test do_valgrind |
---|
149 | endif |
---|
150 | $(TEST_EXE) |
---|
151 | ifeq ($(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]" |
---|
156 | endif |
---|
157 | ifeq ($(findstring A,$(VALGRIND)),A) |
---|
158 | $(MAKE) -f Makefile.test do_valgrind |
---|
159 | endif |
---|
160 | @echo "fake[2]: Leaving directory \`$(FULLUNITDIR)'" |
---|
161 | |
---|
162 | skip_test: |
---|
163 | @echo "UnitTester: $(UNITLIBNAME) tests=0 (skipped via RESTRICT_LIB)" |
---|
164 | |
---|
165 | # -------------------- |
---|
166 | |
---|
167 | RUN:=perform_test |
---|
168 | |
---|
169 | ifneq ('$(RESTRICT_LIB)','') |
---|
170 | IS_RESTRICTED_TO=$(findstring :$(UNITLIBNAME):,:$(RESTRICT_LIB):) |
---|
171 | ifeq ('$(IS_RESTRICTED_TO)','') |
---|
172 | RUN:=skip_test |
---|
173 | endif |
---|
174 | endif |
---|
175 | |
---|
176 | runtest: $(RUN) |
---|
177 | |
---|
178 | #runtest: dump |
---|
179 | |
---|