1# $OpenBSD: Makefile,v 1.51 2021/09/02 07:14:15 jasper Exp $
2
3REGRESS_TARGETS=     t1  t2  t3  t4  t5  t6  t7  t8  t9 \
4		t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 \
5		t20 t21 t22 t23 t24 t25 t26 t27 t28 t29 \
6		t30 t31 t32 t33 t34 t35 t36 t37 t38 t38j t39 \
7		t40 t41 t42 t42bis t43 t44 t45 t46 t47 t48
8
9REGRESS_EXPECTED_FAILURES = t14 t17 t18
10
11t1: t1.out
12	env -i PATH=${PATH} ${MAKE} -e -r -f ${.CURDIR}/mk1 | diff - t1.out
13
14# This is a POSIX test. pmake does not pass variables to submakes until
15# after OpenBSD 2.7.
16t2:
17	cd ${.CURDIR} && env -i PATH=${PATH} ${MAKE} -r -f mk2| diff - t2.out
18
19t3:
20	cd ${.CURDIR} && env -i PATH=${PATH} ${MAKE} -r -f mk3 -f mk3a|diff - t3.out
21	cd ${.CURDIR} && cat mk3a |env -i PATH=${PATH} ${MAKE} -r -f mk3 -f -|diff - t3.out
22	cd ${.CURDIR} && cat mk3 |env -i PATH=${PATH} ${MAKE} -r -f - -f mk3a|diff - t3.out
23	cd ${.CURDIR} && cat mk3 mk3a|env -i PATH=${PATH} ${MAKE} -r -f - |diff - t3.out
24
25t4:
26	cd ${.CURDIR} && cat mk4 mk4a|env -i PATH=${PATH} ${MAKE} -r -f - |diff - t4.out
27	# Splitting files along conditionals should not work
28	if cd ${.CURDIR} && env -i PATH=${PATH} ${MAKE} -r -f mk4 -f mk4a 2>/dev/null || test $$? -ge 128 ; then false; fi
29
30# Another POSIX test, checking that MAKEFLAGS does work
31t5:
32	# first check that make does fail as expected
33	if cd ${.CURDIR} && env -i PATH=${PATH} ${MAKE} -r -f mkfail 2>/dev/null || test $$? -ge 128; then false; fi
34	# first form of MAKEFLAGS
35	cd ${.CURDIR} && env -i PATH=${PATH} MAKEFLAGS=-n ${MAKE} -r -f mkfail
36	# second form of MAKEFLAGS
37	cd ${.CURDIR} && env -i PATH=${PATH} MAKEFLAGS=n ${MAKE} -r -f mkfail
38
39t6:
40	cd ${.CURDIR} && env -i PATH=${PATH} ${MAKE} A=good -r -f mk6 | diff - t6.out
41
42# This test passes since the cond parser has been rewritten.
43t7:
44	if cd ${.CURDIR} && env -i PATH=${PATH} ${MAKE} -r -f mk7 2>/dev/null || test $$? -ge 128; then false; fi
45
46# check for existent/non existent files
47t8:
48	touch goodfile phony
49	cd ${.CURDIR} && env -i PATH=${PATH} ${MAKE} -r -f mk8 | diff - t8.out
50
51t9:
52	cd ${.CURDIR} && env -i PATH=${PATH} ${MAKE} -r -f mk9 2>&1 | diff - t9.out
53
54# verify that systemV extended variables work as expected
55t10:	z.a
56	cd ${.CURDIR} && env -i PATH=${PATH} ${MAKE} -r -f mk10 |diff - t10.out
57
58# check for substitution parser in some confusing situations
59t11:
60	cd ${.CURDIR} && env -i PATH=${PATH} ${MAKE} -r -f mk11 |diff - t11.out
61	cd ${.CURDIR} && env -i PATH=${PATH} ${MAKE} -r -f mk11 A=t|diff - t11.out2
62
63# Check for filename expansions.
64t12:
65	cd ${.CURDIR} && env -i PATH=${PATH} ${MAKE} -r -f mk12 |diff - t12.out
66
67# Verify whitespace handling.
68t13:
69	cd ${.CURDIR} && env -i PATH=${PATH} ${MAKE} -r -f mk13 |diff - t13.out
70
71# make currently incorrectly uses annotations for suffixes rules
72# for non-suffixes rules.
73# this is hard to fix without breaking something else
74t14:
75	if cd ${.CURDIR} && env -i PATH=${PATH} ${MAKE} -r -f mk14 2>/dev/null || test $$? -ge 128; then false; fi
76
77t15:
78	touch t15file
79	cd ${.CURDIR} && ulimit -t 2 && env -i PATH=${PATH} ${MAKE} -r -f mk15 2>/dev/null
80
81t16:
82	cd ${.CURDIR} && env -i PATH=${PATH} ${MAKE} -r -f mk16
83
84# Bug in cond-parser, ends up having too many open conds.
85t17:
86	cd ${.CURDIR} && env -i PATH=${PATH} ${MAKE} -r -f mk17
87
88# bug in cond-parser again: this one holds too many open conditionals,
89# and exactly enough closes...
90t18:
91	cd ${.CURDIR} && env -i PATH=${PATH} ${MAKE} -r -f mk18
92
93t19:
94	cd ${.CURDIR} && env -i PATH=${PATH} SHELL=/bin/zsh ${MAKE} -r -f mk19 | diff - t19.out
95
96t20:
97	cd ${.CURDIR} && env -i PATH=${PATH} SHELL=/bin/sh ${MAKE} -r -f mk20 | diff - t20.out
98
99t21:
100	cd ${.CURDIR} && env -i PATH=${PATH} ${MAKE} -r -f mk21 | diff - t21.out
101
102t22:
103	cd ${.CURDIR} && env -i PATH=${PATH} ${MAKE} -r -f mk22 b | diff - t22.out
104
105t23:
106	cd ${.CURDIR} && ulimit -t 60 && env -i PATH=${PATH} ${MAKE} -r -f mk22 a 2>&1| diff - t23.out
107
108t24:
109	if cd ${.CURDIR} && env -i PATH=${PATH} ${MAKE} -r -f mk23 a 2>/dev/null || test $$? -ge 128; then false; fi
110
111t25:
112	touch ${.OBJDIR}/t25.1st
113	rm -f ${.OBJDIR}/t25.2nd
114	if cd ${.CURDIR} && env -i PATH=${PATH} ${MAKE} -r -f mk24 t25.2nd 2>/dev/null || test $$? -ge 128; then false; fi
115
116t26:
117	touch ${.OBJDIR}/f26.2nd
118	rm -f ${.OBJDIR}/f26
119	if cd ${.CURDIR} && env -i PATH=${PATH} ${MAKE} -r -f mk24 f26 2>/dev/null || test $$? -ge 128; then false; fi
120
121t27:
122	touch ${.OBJDIR}/t27.2nd
123	rm -f ${.OBJDIR}/t27.3rd
124	if cd ${.CURDIR} && env -i PATH=${PATH} ${MAKE} -r -f mk24 t27.3rd 2>/dev/null || test $$? -ge 128; then false; fi
125
126t28:
127	cd ${.CURDIR} && env -i PATH=${PATH} ${MAKE} -r -f mk25 all >/dev/null
128
129t29:
130	rm -f t29dep t29.targ t29.targ2 libt29.a
131	cd ${.CURDIR} && env -i PATH=${PATH} ${MAKE} -r -f mk26 all | diff - t29.out
132	cd ${.CURDIR} && env -i PATH=${PATH} ${MAKE} -r -f mk26 all | diff - t29.out2
133
134t30:
135	cd ${.CURDIR} && env -i PATH=${PATH} ${MAKE} -r -f mk27 all | diff - t30.out
136
137t31:
138	cd ${.CURDIR} && env -i PATH=${PATH} ${MAKE} -r -f mk28 all
139
140t32:
141	cd ${.CURDIR} && env -i PATH=${PATH} B="A" ${MAKE} -r -f mk32 all | diff - t32.out
142
143t33:
144	cd ${.CURDIR} && env -i PATH=${PATH} B=0 ${MAKE} -r -f mk32 all | diff - t33.out
145
146t34:
147	cd ${.CURDIR} && env -i PATH=${PATH} B=1 ${MAKE} -r -f mk32 all | diff - t34.out
148
149t35:
150	cd ${.CURDIR} && env -i PATH=${PATH} B=2 ${MAKE} -r -f mk32 all | diff - t35.out
151
152t36:
153	if echo '$$$$(A:&)' | env -i PATH=${PATH} ${MAKE} -r -f - 2>/dev/null|| test $$? -ge 128; then false; fi
154
155z.a:
156	touch $@
157
158t37:
159	if cd ${.CURDIR} && env -i PATH=${PATH} B=2 ${MAKE} -r -f mk33 all; then false; else true; fi
160
161t38:
162	cd ${.CURDIR} && env -i PATH=${PATH} ${MAKE} -r -f mk34 | diff - t38.out
163
164t38j:
165	cd ${.CURDIR} && env -i PATH=${PATH} ${MAKE} -r -f mk34 -j2 | diff - t38.out
166
167t39:
168	cd ${.CURDIR} && env -i PATH=${PATH} ${MAKE} -r -f mk35 2>&1 | diff - t39.out
169
170t40:
171	cd ${.CURDIR} && env -i PATH=${PATH} ${MAKE} -r -f mk36 2>/dev/null
172
173t41:
174	if cd ${.CURDIR} && env -i PATH=${PATH} ${MAKE} -r -f mk37 2>/dev/null || test $$? -ge 128; then false; fi
175
176t42:
177	if cd ${.CURDIR} && env -i PATH=${PATH} ${MAKE} -r -f mk38 2>/dev/null || test $$? -ge 128; then false; fi
178
179t42bis:
180	if cd ${.CURDIR} && env -i PATH=${PATH} ${MAKE} -r -f mk38bis 2>/dev/null || test $$? -ge 128; then false; fi
181
182t43:
183	cd ${.CURDIR} && env -i PATH=${PATH} ${MAKE} -r -j2 -f mk39 b 2>&1 | diff - t43.out
184	cd ${.CURDIR} && env -i PATH=${PATH} ${MAKE} -r -j2 -f mk39 a 2>&1 | diff - t43.out
185
186t44:
187	if cd ${.CURDIR} && env -i PATH=${PATH} ${MAKE} -r -f mk40 2>/dev/null || test $$? -ge 128; then false; fi
188
189t45:
190	if cd ${.CURDIR} && env -i PATH=${PATH} ${MAKE} -r -f mk41 2>/dev/null || test $$? -ge 128; then false; fi
191
192# this file should fail, but NOT segfault
193t46:
194	if cd ${.CURDIR} && env -i PATH=${PATH} ${MAKE} -r -f mk42 a 2>/dev/null; then \
195	    false; \
196	    else \
197		if test $$? -ge 1 -a $$? -lt 128; then \
198		    true; else \
199		    false; fi; \
200	    fi
201
202t47: tok.o
203	test -f tok.o || exit 1
204
205t48:
206	cd ${.CURDIR} && make -r -f mk43 a
207
208t1.out:
209	echo MACHINE_ARCH=${MACHINE_ARCH} >$@
210
211.PHONY: ${REGRESS_TARGETS} regress
212
213CLEANFILES+=t1.out z.a a.a a.b mk34.b goodfile phony t15file \
214	t25.1st t25.2nd f26.2nd f26 t27.2nd t27.3rd \
215	libt29.a t29dep t29.targ t29.targ2 t38.b tok tok.o tok.d
216
217.include <bsd.regress.mk>
218