Add Makefile snippet to ease porting NetBSD testcases to FreeBSD from

contrib/netbsd-tests

This Makefile snippet handles polluting testcases with -lnetbsd, specific
headers for ATF version differences, and does necessary rewriting for the
testcases to match the format discussed on the TestSuite wiki page
(t_<foo> -> <foo>_test)

One must define SRCTOP (inspired by projects/bmake), OBJTOP, and TESTSRC
(e.g. contrib/netbsd-tests/lib/libc/gen) to use the Makefile snippet

Test programs are specific either via NETBSD_ATF_TESTS_C or NETBSD_ATF_TESTS_SH

C++ analogs aren't currently implemented.

The imported testcases will be cleaned up to use this Makefile snippet pseudo
"API".
This commit is contained in:
Enji Cooper 2014-11-04 00:19:10 +00:00
parent 7431dfd458
commit 37e4638f2e

View File

@ -0,0 +1,49 @@
# $FreeBSD$
.if !target(__netbsd_tests.test.mk__)
__netbsd_tests.test.mk__:
.if !defined(OBJTOP)
.error "Please define OBJTOP to the absolute path of the top of the object tree"
.endif
.if !defined(SRCTOP)
.error "Please define SRCTOP to the absolute path of the top of the source tree"
.endif
.if !defined(TESTSRC)
.error "Please define TESTSRC to the absolute path of the test sources, e.g. contrib/netbsd-tests/lib/libc/stdio"
.endif
.PATH: ${TESTSRC}
LIBNETBSD_SRCDIR= ${SRCTOP}/lib/libnetbsd
LIBNETBSD_OBJDIR= ${OBJTOP}/lib/libnetbsd
.for t in ${NETBSD_ATF_TESTS_C}
# XXX: needed for atf-c/config.h after v0.2.1 upgrade. See NetBSD PR #
# misc/49356 for more details
CFLAGS.$t+= -I${SRCTOP}/contrib/atf
CFLAGS.$t+= -I${LIBNETBSD_SRCDIR} -I${SRCTOP}/contrib/netbsd-tests
LDFLAGS.$t+= -L${LIBNETBSD_OBJDIR}
DPADD.$t+= ${LIBNETBSD}
LDADD.$t+= -lnetbsd
SRCS.$t?= ${t:C/^/t_/:C/_test$//g}.c
.endfor
ATF_TESTS_C+= ${NETBSD_ATF_TESTS_C}
# A C++ analog isn't provided because there aren't any C++ testcases in
# contrib/netbsd-tests
.for t in ${NETBSD_ATF_TESTS_SH}
ATF_TESTS_SH_SRC_$t?= ${t:C/^/t_/:C/_test$//g}.sh
.endfor
ATF_TESTS_SH+= ${NETBSD_ATF_TESTS_SH}
.endif
# vim: syntax=make