1#	$OpenBSD: Makefile,v 1.14 2024/08/31 11:14:58 tb Exp $
2
3OPENSSL_RUBY_TESTS =	/usr/local/share/openssl-ruby-tests
4.if exists(/usr/local/bin/ruby32)
5RUBY_BINREV =		32
6.else
7RUBY_BINREV =		33
8.endif
9RUBY =			ruby${RUBY_BINREV}
10
11# We work in a subdirectory of obj/ since extconf.rb generates a Makefile whose
12# name can't be customized in $PWD. An obj/Makefile in turn confuses either make
13# or bsd.*.mk. This hurts when things are in an unexpected state after a signal.
14BUILDDIR =		build
15
16.if !exists(${OPENSSL_RUBY_TESTS})
17regress:
18	@echo package openssl-ruby-tests is required for this regress
19	@echo SKIPPED
20.else
21
22REGRESS_TARGETS +=		openssl-ruby-test
23
24openssl-ruby-test:	retest
25
26_BUILDDIR_COOKIE =	.builddir
27_BUILD_COOKIE =		.build
28_TEST_COOKIE =		.test
29
30${_BUILDDIR_COOKIE}:
31	mkdir -p ${BUILDDIR}
32	touch $@
33
34${_BUILD_COOKIE}: ${_BUILDDIR_COOKIE}
35	cd ${BUILDDIR} && \
36	    ${RUBY} ${OPENSSL_RUBY_TESTS}/ext/openssl/extconf.rb && \
37	    make;
38	touch $@
39
40OPENSSL_RUBY_TESTSRC =	${OPENSSL_RUBY_TESTS}/test/openssl/test_*.rb
41${_TEST_COOKIE}: ${_BUILD_COOKIE} ${_BUILDDIR_COOKIE}
42	cd ${BUILDDIR} && \
43	    env SKIP_EXPECTED_FAILURES=true ${RUBY} -I. \
44		-I${OPENSSL_RUBY_TESTS}/test/openssl \
45		-I${OPENSSL_RUBY_TESTS}/lib \
46		-e 'Dir["${OPENSSL_RUBY_TESTSRC}"].each{|f| require f}' \
47		-- --no-use-color --no-show-detail-immediately
48	touch $@
49
50build: ${_BUILD_COOKIE}
51test: ${_TEST_COOKIE}
52
53_MAKE =			cd ${.CURDIR} && exec ${.MAKE}
54
55rebuild:
56	rm -f ${_BUILD_COOKIE}
57	${_MAKE} build
58
59retest:
60	rm -f ${_TEST_COOKIE}
61	${_MAKE} test
62
63.for _t in test_client_ca
64REGRESS_TARGETS += ${_t}
65REGRESS_EXPECTED_FAILURES += ${_t}
66${_t}: ${_BUILD_COOKIE}
67	cd ${BUILDDIR} && \
68	    ${RUBY} -I. -I${OPENSSL_RUBY_TESTS}/test/openssl \
69		-I${OPENSSL_RUBY_TESTS}/lib \
70		${OPENSSL_RUBY_TESTS}/test/openssl/test_ssl.rb \
71		-n ${_t}
72.endfor
73
74CLEANFILES +=		${_BUILD_COOKIE} ${_TEST_COOKIE} ${_BUILDDIR_COOKIE}
75
76. if make(clean) || make(cleandir)
77.  if exists(${BUILDDIR})
78.BEGIN:
79	rm -r ${BUILDDIR}
80.  endif
81. endif
82
83.PHONY: build rebuild test retest
84
85.endif
86
87.include <bsd.regress.mk>
88