source: tags/svn.1.5.4/UNIT_TESTER/Makefile.test

Last change on this file was 8247, checked in by westram, 12 years ago
  • completes [8246]
    • main-wrapper-objects
      • compile with normal c-flags (fixes nightly cross-compilation error)
      • compile for C and C++ (allows to link vs leftover C-compilations (e.g. arb_a2ps))
    • changed main→ARB_main in TOOLS (fixes other broken nightly builds)
    • remove experimental entry-point from unit-test-executables (leftover from failed approach, execution via custom entry-point does not init static data at all)
    • corrected link printouts
File size: 4.1 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        HELP_SOURCE \
30        AISC_MKPTPS \
31
32ISSHAREDLIB=$(findstring $(UNITDIR),$(SHAREDLIBS))
33ISEXEOBJECT=$(findstring $(UNITDIR),$(EXEOBJDIRS))
34
35ifneq ($(ISSHAREDLIB),)
36        UNITLIB=lib$(UNITLIBNAME).so
37else
38ifneq ($(ISEXEOBJECT),)
39        UNITLIB=$(UNITLIBNAME).o
40else
41        UNITLIB=$(UNITLIBNAME).a
42endif
43endif
44
45UNIQUE_NAME=test_$(subst /,_,$(subst .,_,$(UNITDIR)_$(UNITLIB)))
46
47FULLLIB=$(FULLUNITDIR)/$(UNITLIB)
48
49DESTDIR=tests
50RUNDIR=run# see also UnitTester.cxx@chdir
51
52SYMLIST=$(DESTDIR)/$(UNIQUE_NAME).sym
53TEST_CODE=$(DESTDIR)/$(UNIQUE_NAME).cxx
54TEST_OBJ=$(DESTDIR)/$(UNIQUE_NAME).o
55TEST_EXE=$(DESTDIR)/$(UNIQUE_NAME)
56
57SYM2TESTCODE=./sym2testcode.pl
58
59INCDIR=../INCLUDE
60
61INCLUDES= \
62        UnitTester.hxx \
63        $(INCDIR)/arb_assert.h \
64
65UNIT_TESTER_LIB=./UNIT_TESTER.a
66
67ifeq ($(UNITLIB),.a)
68# nothing given (only avoids undefined symbols)
69LINKLIST=
70LINKDEPS=
71else
72LINKLIST=$(shell ../SOURCE_TOOLS/needed_libs.pl -S -A .. -l $(FULLLIB))
73LINKDEPS=$(shell ../SOURCE_TOOLS/needed_libs.pl -S -A .. -F $(FULLLIB))
74endif
75
76ifeq ($(CHECK_LEAKS),0)
77        LEAKS:=
78else
79ifeq ($(CHECK_LEAKS),1)
80        LEAKS:=-l
81else
82        LEAKS:=-l -r
83endif
84endif
85
86# --------------------------------------------------------------------------------
87
88clean:
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
99makedirs: $(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
113dump:
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
130do_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
135show_test_header:
136        @echo ""
137        @echo "-------------------- [ Test $(UNITLIBNAME) ] --------------------"
138
139perform_test: $(TEST_EXE)
140        @echo "fake[2]: Entering directory \`$(FULLUNITDIR)'"
141ifeq ($(findstring B,$(VALGRIND)),B)
142        $(MAKE) -f Makefile.test do_valgrind
143endif
144        $(TEST_EXE)
145ifeq ($(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]"
150endif
151ifeq ($(findstring A,$(VALGRIND)),A)
152        $(MAKE) -f Makefile.test do_valgrind
153endif
154        @echo "fake[2]: Leaving directory \`$(FULLUNITDIR)'"
155
156skip_test:
157        @echo "UnitTester: $(UNITLIBNAME) tests=0 (skipped via RESTRICT_LIB)"
158
159# --------------------
160
161RUN:=perform_test
162
163ifneq ('$(RESTRICT_LIB)','')
164IS_RESTRICTED_TO=$(findstring :$(UNITLIBNAME):,:$(RESTRICT_LIB):)
165ifeq ('$(IS_RESTRICTED_TO)','')
166        RUN:=skip_test
167endif
168endif
169
170runtest: $(RUN)
171
172#runtest: dump
173
Note: See TracBrowser for help on using the repository browser.