1#	$OpenBSD: Makefile,v 1.4 2022/12/05 14:43:06 tb Exp $
2
3RUST_OPENSSL_TESTS =	/usr/local/share/rust-openssl-tests
4CARGO =			/usr/local/bin/cargo
5
6.if !exists(${RUST_OPENSSL_TESTS}) || !exists(${CARGO})
7regress:
8	@echo packages rust-openssl-tests and rust are required for this regress
9	@echo SKIPPED
10.else
11
12REGRESS_TARGETS +=	rust-openssl-test
13
14WORKSPACE_LINKS = openssl openssl-errors openssl-macros openssl-sys systest
15
16_WORKSPACE_COOKIE =	.workspace
17
18${_WORKSPACE_COOKIE}:
19. if ${.CURDIR} != ${.OBJDIR}
20	cp ${.CURDIR}/Cargo.toml ${.OBJDIR}/
21. endif
22	mkdir -p .cargo
23	cp ${.CURDIR}/config .cargo/
24	cd ${.OBJDIR} && ln -sf ${WORKSPACE_LINKS:S,^,${RUST_OPENSSL_TESTS}/,} .
25	touch $@
26
27CLEANFILES += Cargo.lock
28
29. if ${.CURDIR} != ${.OBJDIR}
30CLEANFILES += Cargo.toml
31. endif
32
33# Force use of base-clang on sparc64 since the build with base-gcc fails with:
34# error occurred: Command "cc" "-O0" "-ffunction-sections" "-fdata-sections" [...]
35# did not execute successfully (status code exit status: 1).
36. if "${MACHINE_ARCH}" == sparc64
37CARGO_CC=/usr/bin/clang
38. else
39CARGO_CC=cc
40. endif
41
42rust-openssl-test: ${_WORKSPACE_COOKIE}
43	cd ${.OBJDIR} && env CC=${CARGO_CC} \
44		cargo test --offline --color=never -- --color=never
45
46CLEANFILES +=	${_WORKSPACE_COOKIE} ${WORKSPACE_LINKS}
47
48. if make(clean) || make(cleandir)
49.  if exists(.cargo) || exists(target)
50.BEGIN:
51	rm -rf .cargo
52	rm -rf target
53.  endif
54. endif
55
56.endif
57
58.include <bsd.regress.mk>
59