1# $NetBSD: Makefile,v 1.95 2025/04/27 16:22:26 riastradh Exp $
2
3NOMAN=              # defined
4
5.include <bsd.own.mk>
6
7TESTSDIR= ${TESTSBASE}/kernel
8
9TESTS_SUBDIRS+=     kqueue
10TESTS_C+= t_cloexec
11#TESTS_C+=          t_epoll
12TESTS_C+= t_execregs
13TESTS_C+= t_fcntl
14.if ${MKRUMP} != "no"
15TESTS_C+= t_fdrestart
16.endif
17TESTS_C+= t_kauth_pr_47598
18TESTS_C+= t_ksem
19TESTS_C+= t_lock
20TESTS_C+= t_lockf
21TESTS_C+= t_memfd_create
22TESTS_C+= t_mqueue
23TESTS_C+= t_nanosleep
24TESTS_C+= t_open_pr_57260
25TESTS_C+= t_proccwd
26TESTS_C+= t_pty
27TESTS_C+= t_semtimedop
28TESTS_C+= t_signal_and_sp
29TESTS_C+= t_sysv
30TESTS_C+= t_subr_prf
31TESTS_C+= t_sysctl
32TESTS_C+= t_timeleft
33.if ${MKRUMP} != "no"
34TESTS_C+= t_unmount
35.endif
36TESTS_C+= t_zombie
37
38TESTS_SH= t_fexecve
39TESTS_SH+=          t_fpufork
40TESTS_SH+=          t_interp
41TESTS_SH+=          t_magic_symlinks
42TESTS_SH+=          t_nointerpreter
43TESTS_SH+=          t_origin
44TESTS_SH+=          t_procpath
45TESTS_SH+=          t_ps_strings
46.if ${MKKMOD} != "no"
47TESTS_SH+=          t_setjmp
48.endif
49.if ${MKRUMP} != "no"
50TESTS_SH+=          t_simplehook
51.endif
52TESTS_SH+=          t_trapsignal
53TESTS_SH+=          t_umountstress
54TESTS_SH+=          t_umount
55
56BINDIR=             ${TESTSDIR}
57PROGS+=             h_cloexec
58PROGS+=             h_execregs
59PROGS+=             h_execsp_dynamic
60PROGS+=             h_execsp_static
61PROGS+=             h_fexecve
62PROGS+=             h_fpufork
63PROGS+=             h_getprocpath
64PROGS+=             h_ps_strings1
65PROGS+=             h_ps_strings2
66PROGS+=             h_segv
67
68SCRIPTSDIR=         ${TESTSDIR}
69SCRIPTS=  h_interpreter.sh
70
71LDADD.t_fdrestart+= -lpthread
72LDADD.t_fdrestart+= -lrumpnet_local
73LDADD.t_fdrestart+= -lrumpnet_net
74LDADD.t_fdrestart+= -lrumpnet_netinet
75LDADD.t_fdrestart+= -lrumpnet
76LDADD.t_fdrestart+= ${LIBRUMPBASE}
77
78LDADD.t_mqueue+= -lrt
79
80LDADD.t_unmount+=   -lrumpfs_tmpfs
81LDADD.t_unmount+=   ${LIBRUMPBASE}
82
83
84.if (${MKRUMP} != "no") && !defined(BSD_MK_COMPAT_FILE)
85TESTS_SUBDIRS+=     tty
86
87TESTS_C+= t_extattrctl
88TESTS_C+= t_filedesc
89TESTS_C+= t_rnd
90LDADD.t_extattrctl+= ${LIBRUMPBASE}
91LDADD.t_filedesc+=  ${LDADD.t_rnd}
92LDADD.t_rnd+=  -lrumpdev_rnd -lrumpdev ${LIBRUMPBASE}
93
94.endif
95
96LDADD.t_timeleft+=  -lpthread
97
98CPPFLAGS+=          -D_KERNTYPES
99CPPFLAGS.t_unmount.c+=        -D_KMEMUSER -D__EXPOSE_MOUNT
100
101.if exists(${.PARSEDIR}/arch/${MACHINE_ARCH})
102ARCHDIR:=           ${.PARSEDIR}/arch/${MACHINE_ARCH}
103.else
104ARCHDIR:=           ${.PARSEDIR}/arch/${MACHINE_CPU}
105.endif
106.PATH:                        ${ARCHDIR}
107
108.if exists(${ARCHDIR}/stack_pointer.h)
109CPPFLAGS.t_signal_and_sp.c+=  -I${ARCHDIR} -DHAVE_STACK_POINTER_H
110.endif
111
112SRCS.t_signal_and_sp+=                  t_signal_and_sp.c
113.if exists(${ARCHDIR}/contextspfunc.S)
114CPPFLAGS.t_signal_and_sp.c+=  -DHAVE_CONTEXTSPFUNC
115SRCS.t_signal_and_sp+=                  contextspfunc.S
116.endif
117.if exists(${ARCHDIR}/signalsphandler.S)
118CPPFLAGS.t_signal_and_sp.c+=  -DHAVE_SIGNALSPHANDLER
119SRCS.t_signal_and_sp+=                  signalsphandler.S
120.endif
121.if exists(${ARCHDIR}/threadspfunc.S)
122CPPFLAGS.t_signal_and_sp.c+=  -DHAVE_THREADSPFUNC
123SRCS.t_signal_and_sp+=                  threadspfunc.S
124LDADD.t_signal_and_sp+=                 -pthread
125.endif
126
127SRCS.h_execsp_dynamic+=                 h_execsp.c
128SRCS.h_execsp_static+=                  h_execsp.c
129.if exists(${ARCHDIR}/execsp.S)
130CPPFLAGS.t_signal_and_sp.c+=  -DHAVE_EXECSP
131SRCS.h_execsp_dynamic+=                 execsp.S
132SRCS.h_execsp_static+=                  execsp.S
133LDFLAGS.h_execsp_dynamic+=    -Wl,-e,execsp_start
134LDFLAGS.h_execsp_static+=     -Wl,-e,execsp_start
135.else
136CPPFLAGS.h_execsp.c+=                   -Dexecsp_main=main
137.endif
138LDSTATIC.h_execsp_static=     -static
139
140.if ${MACHINE_CPU} == "mips"
141CPPFLAGS.contextspfunc.S+=    -I${NETBSDSRCDIR}/lib/libc/arch/mips
142CPPFLAGS.execsp.S+=           -I${NETBSDSRCDIR}/lib/libc/arch/mips
143CPPFLAGS.signalsphandler.S+=  -I${NETBSDSRCDIR}/lib/libc/arch/mips
144.endif
145
146.PATH:                        ${NETBSDSRCDIR}/sys/kern
147TESTS_C+=           t_extent
148SRCS.t_extent=                t_extent.c subr_extent.c
149CPPFLAGS.t_extent.c=          -D_EXTENT_TESTING -D__POOL_EXPOSE -D_KERNTYPES
150CPPFLAGS.subr_extent.c=       -D_EXTENT_TESTING -D__POOL_EXPOSE -D_KERNTYPES
151
152TESTS_C+=           t_time_arith
153SRCS.t_time_arith=  t_time_arith.c subr_time_arith.c
154CPPFLAGS.t_time_arith.c+=     -I${NETBSDSRCDIR}/sys -D_TIME_TESTING
155CPPFLAGS.subr_time_arith.c+=  -I${NETBSDSRCDIR}/sys -D_TIME_TESTING
156LDADD.t_time_arith+=          -lutil
157
158t_subr_prf.c: gen_t_subr_prf ${NETBSDSRCDIR}/sys/kern/subr_prf.c
159          ${HOST_SH} ${.ALLSRC} ${.TARGET}
160.if ${MKSANITIZER:Uno} == "yes"
161          # These symbols will be redefined by MKSANITIZER
162          ${TOOL_SED} -i '/undef .*printf/d' ${.TARGET}
163.endif
164
165CPPFLAGS.t_subr_prf.c=        -Wno-pointer-sign   # XXX platform vs kernel SHA2
166
167# Test explicitly tests failure modes.
168CPPFLAGS.t_subr_prf.c+=       ${CC_WNO_FORMAT_TRUNCATION}
169
170SANITIZER_RENAME_CLASSES+=              t_subr_prf
171SANITIZER_RENAME_FILES.t_subr_prf+=     t_subr_prf.c
172SANITIZER_RENAME_SYMBOL.t_subr_prf+=    snprintf
173SANITIZER_RENAME_SYMBOL.t_subr_prf+=    vsnprintf
174SANITIZER_RENAME_SYMBOL.t_subr_prf+=    sprintf
175SANITIZER_RENAME_SYMBOL.t_subr_prf+=    vsnprintf
176SANITIZER_RENAME_SYMBOL.t_subr_prf+=    vasprintf
177
178CLEANFILES+=        t_subr_prf.c
179
180LDADD.h_segv+=      -lm
181
182.if exists(arch/${MACHINE_ARCH}/execregs.h)
183CPPFLAGS.t_execregs.c+=       -I${ARCHDIR}
184CPPFLAGS.t_execregs.c+=       -I${.CURDIR}/../lib/libc/gen # isqemu.h
185CPPFLAGS.t_execregs.c+=       -DHAVE_EXECREGS_TEST
186SRCS.t_execregs+=   t_execregs.c
187SRCS.t_execregs+=   execregs.c
188LDSTATIC.h_execregs=          -static
189LDFLAGS.h_execregs+=          -Wl,-e,execregs_start
190.else
191SRCS.h_execregs=    h_execregs_unimpl.c
192.endif
193
194.if ${MKKMOD} != "no"
195SUBDIR+=  setjmp_tester
196.endif
197
198.include <bsd.test.mk>
199