1# $OpenBSD: Makefile,v 1.18 2019/07/25 14:17:11 bluhm Exp $
2
3C_MODULES?=	strlcpy strlcat getcwd memcpy fread memcpy declare \
4		sscanf vararray md builtins
5CPP_MODULES?=	snprintf sscanf
6
7C_STRLCPY=	1 2 3 4 5 6
8C_STRLCAT=	1 2 3 4 5 6
9C_GETCWD=	1 2 3 4
10C_MEMCPY=	1 2 3 4 5 6 8
11C_FREAD=	1 2 3 4
12C_DECLARE=	1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
13C_SSCANF=	1 2 3 4 5 6
14C_VARARRAY=	1 2 3
15C_MD=		1 2 3 4 5 6
16C_BUILTINS=	1
17
18CPP_SNPRINTF=	1 2 3 4 5
19CPP_SSCANF=	1
20
21TCC=		gcc
22TCFLAGS=	-Wbounded -Wformat -pedantic
23TCXX=		g++
24TCXXFLAGS=	${TCFLAGS}
25REGRESS_TARGETS= ${C_TARGETS} ${CPP_TARGETS}
26
27.for i in ${C_MODULES}
28.  for j in ${C_${i:U}}
29C_TARGETS+= c-${i}-${j} 
30c-${i}-${j}:
31	${TCC} ${TCFLAGS} -o /dev/null ${i}-${j}.c 2>&1 | sed '/^\/tmp\//d;s/(\.text+0x[0-9a-f]*)//' | diff -u - ${.CURDIR}/${i}-${j}.c${EXP}
32.  endfor
33.endfor
34
35.for i in ${CPP_MODULES}
36.  for j in ${CPP_${i:U}}
37CPP_TARGETS+= cpp-${i}-${j}
38cpp-${i}-${j}:
39	${TCXX} ${TCXXFLAGS} -o /dev/null ${i}-${j}.cpp 2>&1 | grep -v 'misused' | sed '/^\/tmp\//d;s/(\.text+0x[0-9a-f]*)//' | diff -u - ${.CURDIR}/${i}-${j}.cpp${EXP}
40.  endfor
41.endfor
42
43generate:
44.for i in ${C_TARGETS}
45	-${TCC} ${TCFLAGS} -o /dev/null ${i:C/^c-//g}.c 2>&1 | sed '/^\/tmp\//d;s/(\.text+0x[0-9a-f]*)//' >${i:C/^c-//g}.c${EXP}
46.endfor
47.for i in ${CPP_TARGETS}
48	-${TCXX} ${TCXXFLAGS} -o /dev/null ${i:C/^cpp-//g}.cpp 2>&1 | sed '/^\/tmp\//d;s/(\.text+0x[0-9a-f]*)//' >${i:C/^cpp-//g}.cpp${EXP}
49.endfor
50
51.PHONY:	${REGRESS_TARGETS} generate regress
52
53NOOBJ= Yes
54
55.include <bsd.own.mk>
56
57.if ${LINKER_VERSION} == "lld"
58# llvm linker does not support gcc warnings about insecure functions
59REGRESS_EXPECTED_FAILURES=	c-getcwd-1
60.endif
61
62.if ${BUILD_GCC3:L} == "yes" 
63EXP=		.exp.gcc3
64.elif ${BUILD_GCC4:L} == "yes" 
65EXP=		.exp.gcc4
66.else
67regress:
68	@echo neither gcc3 nor gcc4 exists on ${MACHINE_ARCH}
69	@echo SKIPPED
70.endif
71
72.include <bsd.regress.mk>
73