| 1 | # ---------------------------------------------------------- |
|---|
| 2 | # _ _ __ _ __ ____ ____ ____ ____ ____ ____ |
|---|
| 3 | # / )( \( ( \( )(_ _) (_ _)( __)/ ___)(_ _)/ ___) |
|---|
| 4 | # ) \/ (/ / )( )( )( ) _) \___ \ )( \___ \ |
|---|
| 5 | # \____/\_)__)(__) (__) (__) (____)(____/ (__) (____/ |
|---|
| 6 | # |
|---|
| 7 | # ---------------------------------------------------------- |
|---|
| 8 | |
|---|
| 9 | |
|---|
| 10 | .SUFFIXES: .cxx .o .sym .done |
|---|
| 11 | |
|---|
| 12 | dummy: |
|---|
| 13 | false |
|---|
| 14 | |
|---|
| 15 | include Makefile.setup.include |
|---|
| 16 | |
|---|
| 17 | |
|---|
| 18 | RELUNITDIR=../$(UNITDIR) |
|---|
| 19 | FULLUNITDIR=$(ARBHOME)/$(UNITDIR) |
|---|
| 20 | |
|---|
| 21 | # Note: whitespace is important for the following tests! |
|---|
| 22 | |
|---|
| 23 | SHAREDLIBS= \ |
|---|
| 24 | CORE \ |
|---|
| 25 | ARBDB \ |
|---|
| 26 | AWT \ |
|---|
| 27 | WINDOW \ |
|---|
| 28 | |
|---|
| 29 | EXEOBJDIRS= \ |
|---|
| 30 | TOOLS \ |
|---|
| 31 | PERLTOOLS \ |
|---|
| 32 | HELP_SOURCE \ |
|---|
| 33 | AISC_MKPTPS \ |
|---|
| 34 | PROBE_SET \ |
|---|
| 35 | |
|---|
| 36 | ISSHAREDLIB=$(findstring $(UNITDIR) , $(SHAREDLIBS) ) |
|---|
| 37 | ISEXEOBJECT=$(findstring $(UNITDIR) , $(EXEOBJDIRS) ) |
|---|
| 38 | |
|---|
| 39 | ifneq ($(ISSHAREDLIB),) |
|---|
| 40 | UNITLIB=$(UNITLIBNAME).$(SHARED_LIB_SUFFIX) |
|---|
| 41 | else |
|---|
| 42 | ifneq ($(ISEXEOBJECT),) |
|---|
| 43 | UNITLIB=$(UNITLIBNAME).o |
|---|
| 44 | else |
|---|
| 45 | UNITLIB=$(UNITLIBNAME).a |
|---|
| 46 | endif |
|---|
| 47 | endif |
|---|
| 48 | |
|---|
| 49 | UNIQUE_NAME=test_$(subst /,_,$(subst .,_,$(UNITDIR)_$(UNITLIB))) |
|---|
| 50 | |
|---|
| 51 | ifneq ($(ISSHAREDLIB),) |
|---|
| 52 | FULLLIB=$(ARBHOME)/lib/$(UNITLIB) |
|---|
| 53 | else |
|---|
| 54 | FULLLIB=$(FULLUNITDIR)/$(UNITLIB) |
|---|
| 55 | endif |
|---|
| 56 | |
|---|
| 57 | RUNDIR=run# see also UnitTester.cxx@chdir |
|---|
| 58 | |
|---|
| 59 | SKIPPING_SLOW_TEST=$(wildcard skipslow.stamp) |
|---|
| 60 | ifeq ($(SKIPPING_SLOW_TEST),) |
|---|
| 61 | DESTDIR=tests.slow |
|---|
| 62 | else |
|---|
| 63 | DESTDIR=tests |
|---|
| 64 | endif |
|---|
| 65 | |
|---|
| 66 | TEST_BASE=$(DESTDIR)/$(UNIQUE_NAME) |
|---|
| 67 | |
|---|
| 68 | SYMLIST=$(TEST_BASE).sym |
|---|
| 69 | TEST_CODE=$(TEST_BASE).cxx |
|---|
| 70 | TEST_OBJ=$(TEST_BASE).o |
|---|
| 71 | TEST_EXE=$(TEST_BASE) |
|---|
| 72 | TEST_DONE=$(TEST_BASE).done |
|---|
| 73 | |
|---|
| 74 | MAKESYMLIST=./make_symlist.sh |
|---|
| 75 | SYM2TESTCODE=./sym2testcode.pl |
|---|
| 76 | |
|---|
| 77 | INCDIR=../INCLUDE |
|---|
| 78 | |
|---|
| 79 | INCLUDES= \ |
|---|
| 80 | UnitTester.hxx \ |
|---|
| 81 | $(INCDIR)/arb_assert.h \ |
|---|
| 82 | |
|---|
| 83 | UNIT_TESTER_LIB=./UNIT_TESTER.a |
|---|
| 84 | |
|---|
| 85 | ifeq ($(UNITLIB),.a) |
|---|
| 86 | # nothing given (only avoids undefined symbols) |
|---|
| 87 | LINKLIST= |
|---|
| 88 | LINKDEPS= |
|---|
| 89 | else |
|---|
| 90 | LINKLIST=$(shell ../SOURCE_TOOLS/needed_libs.pl -S -A .. -l $(FULLLIB)) |
|---|
| 91 | LINKDEPS=$(shell ../SOURCE_TOOLS/needed_libs.pl -S -A .. -F $(FULLLIB)) |
|---|
| 92 | endif |
|---|
| 93 | |
|---|
| 94 | ifeq ($(CHECK_LEAKS),0) |
|---|
| 95 | LEAKS:= |
|---|
| 96 | else |
|---|
| 97 | ifeq ($(CHECK_LEAKS),1) |
|---|
| 98 | LEAKS:=-l |
|---|
| 99 | else |
|---|
| 100 | LEAKS:=-l -r |
|---|
| 101 | endif |
|---|
| 102 | endif |
|---|
| 103 | |
|---|
| 104 | # -------------------------------------------------------------------------------- |
|---|
| 105 | |
|---|
| 106 | clean: |
|---|
| 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 | |
|---|
| 117 | makedirs: $(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 | |
|---|
| 132 | dump: |
|---|
| 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 | |
|---|
| 149 | do_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 | |
|---|
| 154 | show_test_header: |
|---|
| 155 | @echo "" |
|---|
| 156 | @echo "-------------------- [ Test $(UNITLIBNAME) ] --------------------" |
|---|
| 157 | |
|---|
| 158 | |
|---|
| 159 | $(TEST_DONE) : $(TEST_EXE) |
|---|
| 160 | @echo "fake[2]: Entering directory \`$(FULLUNITDIR)'" |
|---|
| 161 | ifeq ($(findstring B,$(VALGRIND)),B) |
|---|
| 162 | $(MAKE) -f Makefile.test do_valgrind |
|---|
| 163 | endif |
|---|
| 164 | $(TEST_EXE) |
|---|
| 165 | ifeq ($(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]" |
|---|
| 170 | endif |
|---|
| 171 | ifeq ($(findstring A,$(VALGRIND)),A) |
|---|
| 172 | $(MAKE) -f Makefile.test do_valgrind |
|---|
| 173 | endif |
|---|
| 174 | @echo "fake[2]: Leaving directory \`$(FULLUNITDIR)'" |
|---|
| 175 | touch $@ |
|---|
| 176 | |
|---|
| 177 | perform_test: $(TEST_DONE) |
|---|
| 178 | @echo "UnitTester: target=$(UNITLIBNAME) tests=0 (possibly skipped because unchanged)" |
|---|
| 179 | |
|---|
| 180 | skip_test: |
|---|
| 181 | @echo "UnitTester: target=$(UNITLIBNAME) tests=0 (skipped via RESTRICT_LIB)" |
|---|
| 182 | |
|---|
| 183 | # -------------------- |
|---|
| 184 | |
|---|
| 185 | RUN:=perform_test |
|---|
| 186 | |
|---|
| 187 | ifneq ('$(RESTRICT_LIB)','') |
|---|
| 188 | IS_RESTRICTED_TO=$(findstring :$(UNITLIBNAME):,:$(RESTRICT_LIB):) |
|---|
| 189 | ifeq ('$(IS_RESTRICTED_TO)','') |
|---|
| 190 | RUN:=skip_test |
|---|
| 191 | endif |
|---|
| 192 | endif |
|---|
| 193 | |
|---|
| 194 | ifeq ($(ONLY_CHANGED_TESTS),0) |
|---|
| 195 | |
|---|
| 196 | always: |
|---|
| 197 | @echo forcing target $(TEST_DONE) |
|---|
| 198 | |
|---|
| 199 | $(TEST_DONE) : always |
|---|
| 200 | |
|---|
| 201 | else |
|---|
| 202 | |
|---|
| 203 | # declare some EXTRA_TEST_DEPENDENCIES |
|---|
| 204 | |
|---|
| 205 | TOOLDIR=../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 |
|---|
| 225 | XSLTDIR=../HELP_SOURCE |
|---|
| 226 | $(DESTDIR)/test_HELP_SOURCE_arb_help2xml_o.done : $(XSLTDIR)/to_help.xsl $(XSLTDIR)/to_html.xsl |
|---|
| 227 | |
|---|
| 228 | endif |
|---|
| 229 | |
|---|
| 230 | runtest: $(RUN) |
|---|
| 231 | |
|---|
| 232 | #runtest: dump |
|---|
| 233 | |
|---|