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