]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - share/mk/atf.test.mk
rtld-elf: link udivmoddi4 from compiler_rt
[FreeBSD/FreeBSD.git] / share / mk / atf.test.mk
1 # $FreeBSD$
2 #
3 # You must include bsd.test.mk instead of this file from your Makefile.
4 #
5 # Logic to build and install ATF test programs; i.e. test programs linked
6 # against the ATF libraries.
7
8 .if !target(__<bsd.test.mk>__)
9 .error atf.test.mk cannot be included directly.
10 .endif
11
12 # List of C, C++ and shell test programs to build.
13 #
14 # Programs listed here are built using PROGS, PROGS_CXX and SCRIPTS,
15 # respectively, from bsd.prog.mk.  However, the build rules are tweaked to
16 # require the ATF libraries.
17 #
18 # Test programs registered in this manner are set to be installed into TESTSDIR
19 # (which should be overridden by the Makefile) and are not required to provide a
20 # manpage.
21 ATF_TESTS_C?=
22 ATF_TESTS_CXX?=
23 ATF_TESTS_SH?=
24 ATF_TESTS_KSH93?=
25
26 .if !empty(ATF_TESTS_C)
27 PROGS+= ${ATF_TESTS_C}
28 _TESTS+= ${ATF_TESTS_C}
29 .for _T in ${ATF_TESTS_C}
30 BINDIR.${_T}= ${TESTSDIR}
31 MAN.${_T}?= # empty
32 SRCS.${_T}?= ${_T}.c
33 DPADD.${_T}+= ${LIBATF_C}
34 .if empty(LDFLAGS:M-static) && empty(LDFLAGS.${_T}:M-static)
35 LDADD.${_T}+= ${LDADD_atf_c}
36 .else
37 LDADD.${_T}+= ${LIBATF_C}
38 .endif
39 TEST_INTERFACE.${_T}= atf
40 .endfor
41 .endif
42
43 .if !empty(ATF_TESTS_CXX)
44 PROGS_CXX+= ${ATF_TESTS_CXX}
45 _TESTS+= ${ATF_TESTS_CXX}
46 .for _T in ${ATF_TESTS_CXX}
47 BINDIR.${_T}= ${TESTSDIR}
48 MAN.${_T}?= # empty
49 SRCS.${_T}?= ${_T}${CXX_SUFFIX:U.cc}
50 DPADD.${_T}+= ${LIBATF_CXX} ${LIBATF_C}
51 .if empty(LDFLAGS:M-static) && empty(LDFLAGS.${_T}:M-static)
52 LDADD.${_T}+= ${LDADD_atf_cxx} ${LDADD_atf_c}
53 .else
54 LDADD.${_T}+= ${LIBATF_CXX} ${LIBATF_C}
55 .endif
56 TEST_INTERFACE.${_T}= atf
57 .endfor
58 # Silence warnings about usage of deprecated std::auto_ptr
59 CXXWARNFLAGS+=  -Wno-deprecated-declarations
60 .endif
61
62 .if !empty(ATF_TESTS_SH)
63 SCRIPTS+= ${ATF_TESTS_SH}
64 _TESTS+= ${ATF_TESTS_SH}
65 .for _T in ${ATF_TESTS_SH}
66 SCRIPTSDIR_${_T}= ${TESTSDIR}
67 TEST_INTERFACE.${_T}= atf
68 CLEANFILES+= ${_T} ${_T}.tmp
69 # TODO(jmmv): It seems to me that this SED and SRC functionality should
70 # exist in bsd.prog.mk along the support for SCRIPTS.  Move it there if
71 # this proves to be useful within the tests.
72 ATF_TESTS_SH_SED_${_T}?= # empty
73 ATF_TESTS_SH_SRC_${_T}?= ${_T}.sh
74 ${_T}: ${ATF_TESTS_SH_SRC_${_T}}
75         echo '#! /usr/libexec/atf-sh' > ${.TARGET}.tmp
76 .if empty(ATF_TESTS_SH_SED_${_T})
77         cat ${.ALLSRC:N*Makefile*} >>${.TARGET}.tmp
78 .else
79         cat ${.ALLSRC:N*Makefile*} \
80             | sed ${ATF_TESTS_SH_SED_${_T}} >>${.TARGET}.tmp
81 .endif
82         chmod +x ${.TARGET}.tmp
83         mv ${.TARGET}.tmp ${.TARGET}
84 .endfor
85 .endif
86
87 .if !empty(ATF_TESTS_KSH93)
88 SCRIPTS+= ${ATF_TESTS_KSH93}
89 _TESTS+= ${ATF_TESTS_KSH93}
90 .for _T in ${ATF_TESTS_KSH93}
91 SCRIPTSDIR_${_T}= ${TESTSDIR}
92 TEST_INTERFACE.${_T}= atf
93 TEST_METADATA.${_T}+= required_programs="ksh93"
94 CLEANFILES+= ${_T} ${_T}.tmp
95 # TODO(jmmv): It seems to me that this SED and SRC functionality should
96 # exist in bsd.prog.mk along the support for SCRIPTS.  Move it there if
97 # this proves to be useful within the tests.
98 ATF_TESTS_KSH93_SED_${_T}?= # empty
99 ATF_TESTS_KSH93_SRC_${_T}?= ${_T}.sh
100 ${_T}: ${ATF_TESTS_KSH93_SRC_${_T}}
101         echo '#! /usr/libexec/atf-sh -s/usr/local/bin/ksh93' > ${.TARGET}.tmp
102 .if empty(ATF_TESTS_KSH93_SED_${_T})
103         cat ${.ALLSRC:N*Makefile*} >>${.TARGET}.tmp
104 .else
105         cat ${.ALLSRC:N*Makefile*} \
106             | sed ${ATF_TESTS_KSH93_SED_${_T}} >>${.TARGET}.tmp
107 .endif
108         chmod +x ${.TARGET}.tmp
109         mv ${.TARGET}.tmp ${.TARGET}
110 .endfor
111 .endif