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 | HELP_SOURCE \ |
---|
30 | AISC_MKPTPS \ |
---|
31 | |
---|
32 | ISSHAREDLIB=$(findstring $(UNITDIR),$(SHAREDLIBS)) |
---|
33 | ISEXEOBJECT=$(findstring $(UNITDIR),$(EXEOBJDIRS)) |
---|
34 | |
---|
35 | ifneq ($(ISSHAREDLIB),) |
---|
36 | UNITLIB=lib$(UNITLIBNAME).so |
---|
37 | else |
---|
38 | ifneq ($(ISEXEOBJECT),) |
---|
39 | UNITLIB=$(UNITLIBNAME).o |
---|
40 | else |
---|
41 | UNITLIB=$(UNITLIBNAME).a |
---|
42 | endif |
---|
43 | endif |
---|
44 | |
---|
45 | UNIQUE_NAME=test_$(subst /,_,$(subst .,_,$(UNITDIR)_$(UNITLIB))) |
---|
46 | |
---|
47 | FULLLIB=$(FULLUNITDIR)/$(UNITLIB) |
---|
48 | |
---|
49 | DESTDIR=tests |
---|
50 | RUNDIR=run# see also UnitTester.cxx@chdir |
---|
51 | |
---|
52 | SYMLIST=$(DESTDIR)/$(UNIQUE_NAME).sym |
---|
53 | TEST_CODE=$(DESTDIR)/$(UNIQUE_NAME).cxx |
---|
54 | TEST_OBJ=$(DESTDIR)/$(UNIQUE_NAME).o |
---|
55 | TEST_EXE=$(DESTDIR)/$(UNIQUE_NAME) |
---|
56 | |
---|
57 | SYM2TESTCODE=./sym2testcode.pl |
---|
58 | |
---|
59 | INCDIR=../INCLUDE |
---|
60 | |
---|
61 | INCLUDES= \ |
---|
62 | UnitTester.hxx \ |
---|
63 | $(INCDIR)/arb_assert.h \ |
---|
64 | |
---|
65 | UNIT_TESTER_LIB=./UNIT_TESTER.a |
---|
66 | |
---|
67 | ifeq ($(UNITLIB),.a) |
---|
68 | # nothing given (only avoids undefined symbols) |
---|
69 | LINKLIST= |
---|
70 | LINKDEPS= |
---|
71 | else |
---|
72 | LINKLIST=$(shell ../SOURCE_TOOLS/needed_libs.pl -S -A .. -l $(FULLLIB)) |
---|
73 | LINKDEPS=$(shell ../SOURCE_TOOLS/needed_libs.pl -S -A .. -F $(FULLLIB)) |
---|
74 | endif |
---|
75 | |
---|
76 | ifeq ($(CHECK_LEAKS),0) |
---|
77 | LEAKS:= |
---|
78 | else |
---|
79 | ifeq ($(CHECK_LEAKS),1) |
---|
80 | LEAKS:=-l |
---|
81 | else |
---|
82 | LEAKS:=-l -r |
---|
83 | endif |
---|
84 | endif |
---|
85 | |
---|
86 | # -------------------------------------------------------------------------------- |
---|
87 | |
---|
88 | clean: |
---|
89 | rm -f $(DESTDIR)/* |
---|
90 | |
---|
91 | # -------------------------------------------------------------------------------- |
---|
92 | |
---|
93 | $(DESTDIR): |
---|
94 | test -d $(DESTDIR) || mkdir -p $(DESTDIR) |
---|
95 | |
---|
96 | $(RUNDIR): |
---|
97 | test -d $(RUNDIR) || mkdir -p $(RUNDIR) |
---|
98 | |
---|
99 | makedirs: $(DESTDIR) $(RUNDIR) |
---|
100 | |
---|
101 | $(SYMLIST) : $(FULLLIB) Makefile makedirs show_test_header |
---|
102 | nm -C -l $< > $@ |
---|
103 | |
---|
104 | $(TEST_CODE) : $(SYMLIST) $(SYM2TESTCODE) Makefile.test |
---|
105 | $(SYM2TESTCODE) $(UNITLIB) $(RESTRICT_MODULE) $< $@ $(WARN_LEVEL) |
---|
106 | |
---|
107 | $(TEST_OBJ) : $(TEST_CODE) $(INCLUDES) |
---|
108 | $(CPP) $(cflags) -c $< -o $@ -I. $(POST_COMPILE) |
---|
109 | |
---|
110 | $(TEST_EXE) : $(TEST_OBJ) $(UNIT_TESTER_LIB) $(LINKDEPS) |
---|
111 | $(LINK_EXECUTABLE) $@ $< $(UNIT_TESTER_LIB) -L../LIBLINK $(LINKLIST) $(EXECLIBS) |
---|
112 | |
---|
113 | dump: |
---|
114 | @echo "$(SEP) dump $(UNITLIBNAME)" |
---|
115 | @echo "UNITDIR ='$(UNITDIR)'" |
---|
116 | @echo "UNITLIBNAME ='$(UNITLIBNAME)'" |
---|
117 | @echo "FULLUNITDIR ='$(FULLUNITDIR)'" |
---|
118 | @echo "ISSHAREDLIB ='$(ISSHAREDLIB)'" |
---|
119 | @echo "UNITLIB ='$(UNITLIB)'" |
---|
120 | @echo "FULLLIB ='$(FULLLIB)'" |
---|
121 | @echo "UNIQUE_NAME ='$(UNIQUE_NAME)'" |
---|
122 | @echo "SYMLIST ='$(SYMLIST)'" |
---|
123 | @echo "TEST_CODE ='$(TEST_CODE)'" |
---|
124 | @echo "TEST_OBJ ='$(TEST_OBJ)'" |
---|
125 | @echo "TEST_EXE ='$(TEST_EXE)'" |
---|
126 | @echo "INCLUDES ='$(INCLUDES)'" |
---|
127 | @echo "LINKLIST ='$(LINKLIST)'" |
---|
128 | @echo "LINKDEPS ='$(LINKDEPS)'" |
---|
129 | |
---|
130 | do_valgrind: |
---|
131 | @echo "Valgrinding $(TEST_EXE)" |
---|
132 | $(ARBHOME)/SOURCE_TOOLS/arb_valgrind -e -q $(LEAKS) -c 15 $(TEST_EXE) || \ |
---|
133 | echo "UnitTester: $(UNITLIBNAME) valgrind reports error(s)" |
---|
134 | |
---|
135 | show_test_header: |
---|
136 | @echo "" |
---|
137 | @echo "-------------------- [ Test $(UNITLIBNAME) ] --------------------" |
---|
138 | |
---|
139 | perform_test: $(TEST_EXE) |
---|
140 | @echo "fake[2]: Entering directory \`$(FULLUNITDIR)'" |
---|
141 | ifeq ($(findstring B,$(VALGRIND)),B) |
---|
142 | $(MAKE) -f Makefile.test do_valgrind |
---|
143 | endif |
---|
144 | $(TEST_EXE) |
---|
145 | ifeq ($(COVERAGE),1) |
---|
146 | @echo "UnitTester: coverage" # do not remove (used as trigger) |
---|
147 | @echo "-------------------- test-coverage for $(UNITLIBNAME)" |
---|
148 | ./gcov2msg.sh $(FULLUNITDIR) $(UNITLIBNAME) |
---|
149 | @echo "-------------------- test-coverage for $(UNITLIBNAME) [end]" |
---|
150 | endif |
---|
151 | ifeq ($(findstring A,$(VALGRIND)),A) |
---|
152 | $(MAKE) -f Makefile.test do_valgrind |
---|
153 | endif |
---|
154 | @echo "fake[2]: Leaving directory \`$(FULLUNITDIR)'" |
---|
155 | |
---|
156 | skip_test: |
---|
157 | @echo "UnitTester: $(UNITLIBNAME) tests=0 (skipped via RESTRICT_LIB)" |
---|
158 | |
---|
159 | # -------------------- |
---|
160 | |
---|
161 | RUN:=perform_test |
---|
162 | |
---|
163 | ifneq ('$(RESTRICT_LIB)','') |
---|
164 | IS_RESTRICTED_TO=$(findstring :$(UNITLIBNAME):,:$(RESTRICT_LIB):) |
---|
165 | ifeq ('$(IS_RESTRICTED_TO)','') |
---|
166 | RUN:=skip_test |
---|
167 | endif |
---|
168 | endif |
---|
169 | |
---|
170 | runtest: $(RUN) |
---|
171 | |
---|
172 | #runtest: dump |
---|
173 | |
---|