| 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 | |
|---|