]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - share/mk/atf.test.mk
Implement pci_enable_msi() and pci_disable_msi() in the LinuxKPI.
[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 .endif
59
60 .if !empty(ATF_TESTS_SH)
61 SCRIPTS+= ${ATF_TESTS_SH}
62 _TESTS+= ${ATF_TESTS_SH}
63 .for _T in ${ATF_TESTS_SH}
64 SCRIPTSDIR_${_T}= ${TESTSDIR}
65 TEST_INTERFACE.${_T}= atf
66 CLEANFILES+= ${_T} ${_T}.tmp
67 # TODO(jmmv): It seems to me that this SED and SRC functionality should
68 # exist in bsd.prog.mk along the support for SCRIPTS.  Move it there if
69 # this proves to be useful within the tests.
70 ATF_TESTS_SH_SED_${_T}?= # empty
71 ATF_TESTS_SH_SRC_${_T}?= ${_T}.sh
72 ${_T}: ${ATF_TESTS_SH_SRC_${_T}}
73         echo '#! /usr/libexec/atf-sh' > ${.TARGET}.tmp
74 .if empty(ATF_TESTS_SH_SED_${_T})
75         cat ${.ALLSRC:N*Makefile*} >>${.TARGET}.tmp
76 .else
77         cat ${.ALLSRC:N*Makefile*} \
78             | sed ${ATF_TESTS_SH_SED_${_T}} >>${.TARGET}.tmp
79 .endif
80         chmod +x ${.TARGET}.tmp
81         mv ${.TARGET}.tmp ${.TARGET}
82 .endfor
83 .endif
84
85 .if !empty(ATF_TESTS_KSH93)
86 SCRIPTS+= ${ATF_TESTS_KSH93}
87 _TESTS+= ${ATF_TESTS_KSH93}
88 .for _T in ${ATF_TESTS_KSH93}
89 SCRIPTSDIR_${_T}= ${TESTSDIR}
90 TEST_INTERFACE.${_T}= atf
91 TEST_METADATA.${_T}+= required_programs="ksh93"
92 CLEANFILES+= ${_T} ${_T}.tmp
93 # TODO(jmmv): It seems to me that this SED and SRC functionality should
94 # exist in bsd.prog.mk along the support for SCRIPTS.  Move it there if
95 # this proves to be useful within the tests.
96 ATF_TESTS_KSH93_SED_${_T}?= # empty
97 ATF_TESTS_KSH93_SRC_${_T}?= ${_T}.sh
98 ${_T}: ${ATF_TESTS_KSH93_SRC_${_T}}
99         echo '#! /usr/libexec/atf-sh -s/usr/local/bin/ksh93' > ${.TARGET}.tmp
100 .if empty(ATF_TESTS_KSH93_SED_${_T})
101         cat ${.ALLSRC:N*Makefile*} >>${.TARGET}.tmp
102 .else
103         cat ${.ALLSRC:N*Makefile*} \
104             | sed ${ATF_TESTS_KSH93_SED_${_T}} >>${.TARGET}.tmp
105 .endif
106         chmod +x ${.TARGET}.tmp
107         mv ${.TARGET}.tmp ${.TARGET}
108 .endfor
109 .endif