xref: /openbsd/regress/usr.sbin/ospfd/Makefile (revision 5a38ef86)
1#	$OpenBSD: Makefile,v 1.14 2021/12/02 17:10:53 kn Exp $
2
3# The following ports must be installed for the regression tests:
4# p5-AnyEvent		provide framework for multiple event loops
5# p5-Hash-Merge		merge associative arrays
6# p5-YAML		YAML ain't a markup language
7#
8# Check wether all required perl packages are installed.  If some
9# are missing print a warning and skip the tests, but do not fail.
10
11PERL_REQUIRE != perl -Mstrict -Mwarnings -e ' \
12    eval { require AnyEvent } or print $@; \
13    eval { require Hash::Merge } or print $@; \
14    eval { require YAML } or print $@; \
15'
16.if ! empty (PERL_REQUIRE)
17regress:
18	@echo "${PERL_REQUIRE}"
19	@echo 'run "pkg_add p5-AnyEvent p5-Hash-Merge p5-YAML"'
20	@echo SKIPPED
21.endif
22
23# Fill out these variables with your own system parameters
24# You need a tap device and an unused /24 IPv4 network.
25
26TAPNUM ?=		3
27TAPIP ?=		10.188.6.17
28RTRID ?=		10.188.0.17
29
30# Automatically generate regress targets from test cases in directory.
31
32ARGS !=			cd ${.CURDIR} && ls args-*.pl
33CLEANFILES +=		*.log ospfd.conf ktrace.out stamp-* opentap opentap.d
34CLEANFILES +=		*.ktrace PassFd.c PassFd.o PassFd.so
35PERLHEADER !=		perl -MConfig -e 'print "$$Config{archlib}/CORE"'
36CFLAGS =		-Wall
37
38.MAIN: all
39
40REGRESS_SETUP_ONCE +=	setup
41setup:
42	[ -c /dev/tap${TAPNUM} ]
43	[ -z "${SUDO}" ] || ${SUDO} -C 4 true
44	${SUDO} ifconfig tap${TAPNUM} ${TAPIP} netmask 255.255.255.0
45
46REGRESS_CLEANUP +=	cleanup
47cleanup:
48	-${SUDO} ifconfig tap${TAPNUM} destroy
49
50# Set variables so that make runs with and without obj directory.
51# Only do that if necessary to keep visible output short.
52
53.if ${.CURDIR} == ${.OBJDIR}
54PERLINC =	-I.
55PERLPATH =
56.else
57PERLINC =	-I${.CURDIR} -I${.OBJDIR}
58PERLPATH =	${.CURDIR}/
59.endif
60
61# The arg tests take a perl hash with arguments controlling the
62# test parameters.
63
64.for a in ${ARGS}
65REGRESS_TARGETS +=	run-$a
66run-$a: $a opentap PassFd.so
67	time TAPNUM=${TAPNUM} TAPIP=${TAPIP} RTRID=${RTRID} SUDO=${SUDO} KTRACE=${KTRACE} OSPFD=${OSPFD} perl ${PERLINC} ${PERLPATH}ospfd.pl ${PERLPATH}$a
68.endfor
69
70# make perl syntax check for all args files
71
72.PHONY: syntax
73
74syntax: stamp-syntax
75
76stamp-syntax: ${ARGS} stamp-passfd
77.for a in ${ARGS}
78	@TAPNUM=${TAPNUM} TAPIP=${TAPIP} RTRID=${RTRID} perl ${PERLINC} -c ${PERLPATH}$a
79.endfor
80	@date >$@
81
82# build and test file descriptor passing perl xs module
83
84.PHONY: passfd
85
86passfd: stamp-passfd
87
88stamp-passfd: PassFd.so
89	perl ${PERLINC} ${PERLPATH}testfd.pl
90	@date >$@
91
92.SUFFIXES: .xs .so
93
94.xs.so:
95	xsubpp -prototypes $> >${@:S/.so$/.c/}
96	${CC} -shared -Wall -DNO_LOCALE_NUMERIC -DNO_LOCALE_COLLATE\
97	    -I${PERLHEADER} -o $@ ${@:S/.so$/.c/}
98	perl ${PERLINC} -M${@:R} -e ''
99
100.include <bsd.regress.mk>
101