# $NetBSD: Makefile,v 1.96 2025/07/17 19:50:40 kre Exp $
NOMAN= # defined
include <bsd.own.mk>
TESTSDIR= ${TESTSBASE}/kernel
TESTS_SUBDIRS+= kqueue
TESTS_C+= t_cloexec
TESTS_C+= t_clofork
#TESTS_C+= t_epoll
TESTS_C+= t_execregs
TESTS_C+= t_fcntl
if ${MKRUMP} != "no"
TESTS_C+= t_fdrestart
endif
TESTS_C+= t_kauth_pr_47598
TESTS_C+= t_ksem
TESTS_C+= t_lock
TESTS_C+= t_lockf
TESTS_C+= t_memfd_create
TESTS_C+= t_mqueue
TESTS_C+= t_nanosleep
TESTS_C+= t_open_pr_57260
TESTS_C+= t_proccwd
TESTS_C+= t_pty
TESTS_C+= t_semtimedop
TESTS_C+= t_signal_and_sp
TESTS_C+= t_sysv
TESTS_C+= t_subr_prf
TESTS_C+= t_sysctl
TESTS_C+= t_timeleft
if ${MKRUMP} != "no"
TESTS_C+= t_unmount
endif
TESTS_C+= t_zombie
TESTS_SH= t_fexecve
TESTS_SH+= t_fpufork
TESTS_SH+= t_interp
TESTS_SH+= t_magic_symlinks
TESTS_SH+= t_nointerpreter
TESTS_SH+= t_origin
TESTS_SH+= t_procpath
TESTS_SH+= t_ps_strings
if ${MKKMOD} != "no"
TESTS_SH+= t_setjmp
endif
if ${MKRUMP} != "no"
TESTS_SH+= t_simplehook
endif
TESTS_SH+= t_trapsignal
TESTS_SH+= t_umountstress
TESTS_SH+= t_umount
BINDIR= ${TESTSDIR}
PROGS+= h_cloexec
PROGS+= h_execregs
PROGS+= h_execsp_dynamic
PROGS+= h_execsp_static
PROGS+= h_fexecve
PROGS+= h_fpufork
PROGS+= h_getprocpath
PROGS+= h_ps_strings1
PROGS+= h_ps_strings2
PROGS+= h_segv
SCRIPTSDIR= ${TESTSDIR}
SCRIPTS= h_interpreter.sh
LDADD.t_fdrestart+= -lpthread
LDADD.t_fdrestart+= -lrumpnet_local
LDADD.t_fdrestart+= -lrumpnet_net
LDADD.t_fdrestart+= -lrumpnet_netinet
LDADD.t_fdrestart+= -lrumpnet
LDADD.t_fdrestart+= ${LIBRUMPBASE}
LDADD.t_mqueue+= -lrt
LDADD.t_unmount+= -lrumpfs_tmpfs
LDADD.t_unmount+= ${LIBRUMPBASE}
if (${MKRUMP} != "no") && !defined(BSD_MK_COMPAT_FILE)
TESTS_SUBDIRS+= tty
TESTS_C+= t_extattrctl
TESTS_C+= t_filedesc
TESTS_C+= t_rnd
LDADD.t_extattrctl+= ${LIBRUMPBASE}
LDADD.t_filedesc+= ${LDADD.t_rnd}
LDADD.t_rnd+= -lrumpdev_rnd -lrumpdev ${LIBRUMPBASE}
endif
LDADD.t_timeleft+= -lpthread
CPPFLAGS+= -D_KERNTYPES
CPPFLAGS.t_unmount.c+= -D_KMEMUSER -D__EXPOSE_MOUNT
if exists(${.PARSEDIR}/arch/${MACHINE_ARCH})
ARCHDIR:= ${.PARSEDIR}/arch/${MACHINE_ARCH}
else
ARCHDIR:= ${.PARSEDIR}/arch/${MACHINE_CPU}
endif
PATH: ${ARCHDIR}
if exists(${ARCHDIR}/stack_pointer.h)
CPPFLAGS.t_signal_and_sp.c+= -I${ARCHDIR} -DHAVE_STACK_POINTER_H
endif
SRCS.t_signal_and_sp+= t_signal_and_sp.c
if exists(${ARCHDIR}/contextspfunc.S)
CPPFLAGS.t_signal_and_sp.c+= -DHAVE_CONTEXTSPFUNC
SRCS.t_signal_and_sp+= contextspfunc.S
endif
if exists(${ARCHDIR}/signalsphandler.S)
CPPFLAGS.t_signal_and_sp.c+= -DHAVE_SIGNALSPHANDLER
SRCS.t_signal_and_sp+= signalsphandler.S
endif
if exists(${ARCHDIR}/threadspfunc.S)
CPPFLAGS.t_signal_and_sp.c+= -DHAVE_THREADSPFUNC
SRCS.t_signal_and_sp+= threadspfunc.S
LDADD.t_signal_and_sp+= -pthread
endif
SRCS.h_execsp_dynamic+= h_execsp.c
SRCS.h_execsp_static+= h_execsp.c
if exists(${ARCHDIR}/execsp.S)
CPPFLAGS.t_signal_and_sp.c+= -DHAVE_EXECSP
SRCS.h_execsp_dynamic+= execsp.S
SRCS.h_execsp_static+= execsp.S
LDFLAGS.h_execsp_dynamic+= -Wl,-e,execsp_start
LDFLAGS.h_execsp_static+= -Wl,-e,execsp_start
else
CPPFLAGS.h_execsp.c+= -Dexecsp_main=main
endif
LDSTATIC.h_execsp_static= -static
if ${MACHINE_CPU} == "mips"
CPPFLAGS.contextspfunc.S+= -I${NETBSDSRCDIR}/lib/libc/arch/mips
CPPFLAGS.execsp.S+= -I${NETBSDSRCDIR}/lib/libc/arch/mips
CPPFLAGS.signalsphandler.S+= -I${NETBSDSRCDIR}/lib/libc/arch/mips
endif
PATH: ${NETBSDSRCDIR}/sys/kern
TESTS_C+= t_extent
SRCS.t_extent= t_extent.c subr_extent.c
CPPFLAGS.t_extent.c= -D_EXTENT_TESTING -D__POOL_EXPOSE -D_KERNTYPES
CPPFLAGS.subr_extent.c= -D_EXTENT_TESTING -D__POOL_EXPOSE -D_KERNTYPES
TESTS_C+= t_time_arith
SRCS.t_time_arith= t_time_arith.c subr_time_arith.c
CPPFLAGS.t_time_arith.c+= -I${NETBSDSRCDIR}/sys -D_TIME_TESTING
CPPFLAGS.subr_time_arith.c+= -I${NETBSDSRCDIR}/sys -D_TIME_TESTING
LDADD.t_time_arith+= -lutil
t_subr_prf.c: gen_t_subr_prf ${NETBSDSRCDIR}/sys/kern/subr_prf.c
${HOST_SH} ${.ALLSRC} ${.TARGET}
if ${MKSANITIZER:Uno} == "yes"
# These symbols will be redefined by MKSANITIZER
${TOOL_SED} -i '/undef .*printf/d' ${.TARGET}
endif
CPPFLAGS.t_subr_prf.c= -Wno-pointer-sign # XXX platform vs kernel SHA2
# Test explicitly tests failure modes.
CPPFLAGS.t_subr_prf.c+= ${CC_WNO_FORMAT_TRUNCATION}
SANITIZER_RENAME_CLASSES+= t_subr_prf
SANITIZER_RENAME_FILES.t_subr_prf+= t_subr_prf.c
SANITIZER_RENAME_SYMBOL.t_subr_prf+= snprintf
SANITIZER_RENAME_SYMBOL.t_subr_prf+= vsnprintf
SANITIZER_RENAME_SYMBOL.t_subr_prf+= sprintf
SANITIZER_RENAME_SYMBOL.t_subr_prf+= vsnprintf
SANITIZER_RENAME_SYMBOL.t_subr_prf+= vasprintf
CLEANFILES+= t_subr_prf.c
LDADD.h_segv+= -lm
if exists(arch/${MACHINE_ARCH}/execregs.h)
CPPFLAGS.t_execregs.c+= -I${ARCHDIR}
CPPFLAGS.t_execregs.c+= -I${.CURDIR}/../lib/libc/gen # isqemu.h
CPPFLAGS.t_execregs.c+= -DHAVE_EXECREGS_TEST
SRCS.t_execregs+= t_execregs.c
SRCS.t_execregs+= execregs.c
LDSTATIC.h_execregs= -static
LDFLAGS.h_execregs+= -Wl,-e,execregs_start
else
SRCS.h_execregs= h_execregs_unimpl.c
endif
if ${MKKMOD} != "no"
SUBDIR+= setjmp_tester
endif
include <bsd.test.mk>