Makefile.cross revision 1.86
1# $OpenBSD: Makefile.cross,v 1.86 2016/08/10 14:27:15 deraadt Exp $
2
3cross-tools:	cross-includes cross-binutils cross-gcc cross-lib
4cross-distrib:	cross-tools cross-bin cross-share cross-sys cross-etc-root-var
5# cross-gnu \
6
7# Have to compute TARGET_ARCH directly in the Makefile, for .if tests involving
8# this variable to work.
9.if	(${TARGET} == "armv7" || ${TARGET} == "zaurus")
10TARGET_ARCH=	arm
11.elif	(${TARGET} == "luna88k")
12TARGET_ARCH=	m88k
13.elif	(${TARGET} == "sgi" || ${TARGET} == "octeon")
14TARGET_ARCH=	mips64
15.elif	(${TARGET} == "loongson")
16TARGET_ARCH=	mips64el
17TARGET_CPU=	mips64
18.elif	(${TARGET} == "macppc" || ${TARGET} == "socppc")
19TARGET_ARCH=	powerpc
20.elif	(${TARGET} == "landisk")
21TARGET_ARCH=	sh
22.else
23TARGET_ARCH=	${TARGET}
24.endif
25TARGET_CPU?=	${TARGET_ARCH}
26
27# List of LP64 archs
28# XXX move to bsd.*.mk?
29LP64_ARCH = amd64 alpha mips64 sparc64
30
31TARGET_IS_LP64 =
32MACHINE_IS_LP64 =
33.for _ in ${LP64_ARCH}
34. if !empty(TARGET_ARCH:M$_)
35    TARGET_IS_LP64 = yes
36. endif
37. if !empty(MACHINE_ARCH:M$_)
38    MACHINE_IS_LP64 = yes
39. endif
40.endfor
41
42#CROSSCPPFLAGS?=	-nostdinc -I${CROSSDIR}/usr/include
43#CROSSLDFLAGS?=	-nostdlib -L${CROSSDIR}/usr/lib -static
44CROSSCFLAGS?=	${CROSSCPPFLAGS} -O2 ${PIPE} ${DEBUG}
45CROSSCXXFLAGS?=	${CROSSCPPFLAGS}
46#LDSTATIC?=	-static
47
48CROSSDIR=	${DESTDIR}/usr/cross/${TARGET}
49CROSSENV=	AR=${CROSSDIR}/usr/${TARGET_CANON}/bin/ar \
50		AS=${CROSSDIR}/usr/${TARGET_CANON}/bin/as \
51		CC=${CROSSDIR}/usr/${TARGET_CANON}/bin/cc \
52		CPP=${CROSSDIR}/usr/${TARGET_CANON}/bin/cpp \
53		CXX=${CROSSDIR}/usr/${TARGET_CANON}/bin/c++ \
54		LD=${CROSSDIR}/usr/${TARGET_CANON}/bin/ld \
55		OBJCOPY=${CROSSDIR}/usr/${TARGET_CANON}/bin/objcopy \
56		LORDER=/usr/bin/lorder RANLIB=${CROSSDIR}/usr/${TARGET_CANON}/bin/ranlib \
57		STRIP=${CROSSDIR}/usr/${TARGET_CANON}/bin/strip \
58		HOSTCC=\"${CC}\" HOSTCXX=\"${CXX}\" NOMAN= \
59		HOSTCFLAGS=\"${CFLAGS}\" HOSTCXXFLAGS=\"${CXXFLAGS}\" \
60		HOSTLDFLAGS=\"${LDFLAGS}\" \
61		CFLAGS=\"${CROSSCFLAGS}\" CPPFLAGS=\"${CROSSCPPFLAGS}\" \
62		CXXFLAGS=\"${CROSSCXXFLAGS}\" \
63		LDFLAGS=\"${CROSSLDFLAGS}\"
64CROSSADDPATH=:${CROSSDIR}/usr/${TARGET_CANON}/bin
65CROSSPATH=	/usr/bin:/bin:/usr/sbin:/sbin${CROSSADDPATH}
66CROSSLANGS?=	c c++
67
68TARGET_CANON=`cat ${CROSSDIR}/TARGET_CANON`
69
70CROSSDIRS=	${CROSSDIR}/.dirs_done
71CROSSOBJ=	${CROSSDIR}/.obj_done
72CROSSINCLUDES=	${CROSSDIR}/.includes_done
73CROSSBINUTILS=	${CROSSDIR}/.binutils_done
74CROSSGCC=	${CROSSDIR}/.gcc_done
75#NO_CROSS=	isakmpd keynote ssh
76
77.include <bsd.own.mk>
78
79.for _arch in ${TARGET_ARCH}
80.if !empty(GCC3_ARCH:M${_arch})
81COMPILER_VERSION=gcc3
82.else
83COMPILER_VERSION=gcc4
84.endif
85
86.if !empty(PIE_ARCH:M${_arch})
87NOPIE_FLAGS=-fno-pie
88NOPIE_LDFLAGS=-nopie
89PIE_DEFAULT=${DEFAULT_PIE_DEF}
90.else
91NOPIE_FLAGS=
92PIE_DEFAULT=
93.endif
94
95BINUTILS=	ar as gasp ld nm objcopy objdump ranlib readelf size \
96		strings strip
97BINUTILS_DIR=gnu/usr.bin/binutils-2.17
98.endfor
99
100# no libcrypto.... these won't build
101#NO_CROSS+=	dc passwd ppp tcpdump telnet ftp sasyncd vnconfig
102		
103# explicit cross-compile
104NO_CROSS+=microcode
105NO_CROSS+=groff binutils binutils-2.17 perl texinfo gcc cvs
106NO_CROSS+=nsd
107NO_CROSS+=sqlite3
108NO_CROSS+=bind
109NO_CROSS+=unbound
110
111cross-dirs:	${CROSSDIRS}
112cross-obj:	${CROSSOBJ}
113cross-includes:	${CROSSINCLUDES}
114cross-binutils:	${CROSSBINUTILS}
115cross-gcc:	${CROSSGCC}
116
117cross-env:
118	@echo ${CROSSENV} MACHINE=${TARGET} \
119	    MACHINE_ARCH=`cat ${CROSSDIR}/TARGET_ARCH` \
120	    MACHINE_CPU=`cat ${CROSSDIR}/TARGET_CPU` \
121	    BSDOBJDIR=${CROSSDIR}/usr/obj \
122	    BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET}
123
124${CROSSDIRS}:
125.if ${TARGET_ARCH} == "arm" &&  ${MACHINE_IS_LP64} == "yes"
126	# this config is allowed
127.elif ${TARGET_IS_LP64} != ${MACHINE_IS_LP64}
128	@echo "host and target have different size longs"
129	@echo "cross compiler generates bad code; aborting"; exit 1
130.endif
131	@-mkdir -p ${CROSSDIR}
132	@echo ${TARGET_ARCH} > ${CROSSDIR}/TARGET_ARCH
133	@echo TARGET_ARCH is `cat ${CROSSDIR}/TARGET_ARCH`
134	@echo ${TARGET_CPU} > ${CROSSDIR}/TARGET_CPU
135	@echo TARGET_CPU is `cat ${CROSSDIR}/TARGET_CPU`
136	@eval `grep '^osr=' sys/conf/newvers.sh`; \
137	   echo ${TARGET_ARCH}-unknown-openbsd$$osr > \
138	   ${CROSSDIR}/TARGET_CANON
139	@-mkdir -p ${CROSSDIR}
140	@-mkdir -p ${CROSSDIR}/usr/${TARGET_CANON}
141	@ln -sf ${CROSSDIR}/usr/include \
142	    ${CROSSDIR}/usr/${TARGET_CANON}/include
143	@ln -sf ${CROSSDIR}/usr/lib \
144	    ${CROSSDIR}/usr/${TARGET_CANON}/lib
145	@-mkdir -p ${CROSSDIR}/usr/${TARGET_CANON}/bin
146	@(cd ${.CURDIR}/etc && DESTDIR=${CROSSDIR} ${MAKE} distrib-dirs)
147	@touch ${CROSSDIRS}
148
149${CROSSOBJ}:	${CROSSDIRS}
150	@-mkdir -p ${CROSSDIR}/usr/obj
151	@(cd ${.CURDIR} && \
152	    BSDOBJDIR=${CROSSDIR}/usr/obj \
153	    COMPILER_VERSION=${COMPILER_VERSION} \
154	    MACHINE=${TARGET} \
155	    MACHINE_ARCH=${TARGET_ARCH} MACHINE_CPU=${TARGET_CPU} \
156	    BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
157	    ${MAKE} obj)
158	@touch ${CROSSOBJ}
159
160${CROSSINCLUDES}:	${CROSSOBJ}
161	@-mkdir -p ${CROSSDIR}/usr/include
162	@(cd ${.CURDIR}/include && \
163	    COMPILER_VERSION=${COMPILER_VERSION} \
164	    MACHINE=${TARGET} \
165	    MACHINE_ARCH=${TARGET_ARCH} MACHINE_CPU=${TARGET_CPU} \
166	    MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
167	    TARGET_ARCH=${TARGET_ARCH} TARGET_CPU=${TARGET_CPU} \
168	    ${MAKE} prereq && \
169	    COMPILER_VERSION=${COMPILER_VERSION} \
170	    MACHINE=${TARGET} \
171	    MACHINE_ARCH=${TARGET_ARCH} MACHINE_CPU=${TARGET_CPU} \
172	    MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
173	    TARGET_ARCH=${TARGET_ARCH} TARGET_CPU=${TARGET_CPU} \
174	    ${MAKE} DESTDIR=${CROSSDIR} includes)
175	@touch ${CROSSINCLUDES}
176
177${CROSSBINUTILS}:	${CROSSINCLUDES}
178	(cd ${.CURDIR}/${BINUTILS_DIR}; \
179	    MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
180	    PIE_DEFAULT=${PIE_DEFAULT} \
181	    TARGET_ARCH=${TARGET_ARCH} TARGET_CPU=${TARGET_CPU} \
182	    PATH=${CROSSPATH} \
183	    ${MAKE} -f Makefile.bsd-wrapper depend && \
184	    MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
185	    PIE_DEFAULT=${PIE_DEFAULT} \
186	    TARGET_ARCH=${TARGET_ARCH} TARGET_CPU=${TARGET_CPU} \
187	    ${MAKE} -f Makefile.bsd-wrapper all && \
188	    DESTDIR=${CROSSDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
189	    COMPILER_VERSION=${COMPILER_VERSION} \
190	    PIE_DEFAULT=${PIE_DEFAULT} \
191	    MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
192	    TARGET_ARCH=${TARGET_ARCH} TARGET_CPU=${TARGET_CPU} \
193	    ${MAKE} -f Makefile.bsd-wrapper install)
194	@for cmd in ${BINUTILS}; do \
195	 if [ -e ${CROSSDIR}/usr/bin/${TARGET_CANON}-$$cmd ] ; then \
196	    cp -f ${CROSSDIR}/usr/bin/${TARGET_CANON}-$$cmd \
197	        ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-$$cmd ; \
198	    ln -sf ${TARGET_CANON}-$$cmd \
199		${CROSSDIR}/usr/${TARGET_CANON}/bin/$$cmd ;\
200	   if [ -e ${CROSSDIR}/usr/bin/$$cmd ] ; then \
201	    rm -f ${CROSSDIR}/usr/bin/$$cmd ;\
202	   fi ;\
203	 elif [ -e ${CROSSDIR}/usr/bin/$$cmd ] ; then \
204	    cp -f ${CROSSDIR}/usr/bin/$$cmd \
205	        ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-$$cmd ; \
206	    ln -sf ${TARGET_CANON}-$$cmd \
207		${CROSSDIR}/usr/${TARGET_CANON}/bin/$$cmd ;\
208	    mv ${CROSSDIR}/usr/bin/$$cmd \
209		${CROSSDIR}/usr/bin/${TARGET_CANON}-$$cmd ;\
210	 fi ;\
211	done
212	@touch ${CROSSBINUTILS}
213
214
215${CROSSGCC}:		${CROSSBINUTILS}
216.if ${COMPILER_VERSION:L} == "gcc3"
217	(cd ${.CURDIR}/gnu/usr.bin/gcc; \
218	    MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
219	    TARGET_ARCH=${TARGET_ARCH} TARGET_CPU=${TARGET_CPU} \
220	    CROSSDIR=${CROSSDIR} \
221	    PATH=${CROSSPATH} ${MAKE} -f Makefile.bsd-wrapper depend && \
222	    MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
223	    TARGET_ARCH=${TARGET_ARCH} TARGET_CPU=${TARGET_CPU} \
224	    CROSSDIR=${CROSSDIR} \
225	    ${MAKE} -f Makefile.bsd-wrapper all && \
226	    env CROSSDIR=${CROSSDIR} DESTDIR=${CROSSDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
227	    PATH=${CROSSPATH} ${MAKE} -f Makefile.bsd-wrapper install)
228	cp -f ${CROSSDIR}/usr/bin/${TARGET_CANON}-g++ ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-c++
229	cp -f ${CROSSDIR}/usr/bin/gcc ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-cc
230	cp -f ${CROSSDIR}/usr/libexec/cpp ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-libexeccpp
231	rm -f ${CROSSDIR}/usr/bin/gcc  ${CROSSDIR}/usr/bin/cc ${CROSSDIR}/usr/libexec/cpp 
232	ln -sf ${TARGET_CANON}-cc ${CROSSDIR}/usr/${TARGET_CANON}/bin/cc
233	ln -sf ${TARGET_CANON}-c++ ${CROSSDIR}/usr/${TARGET_CANON}/bin/c++
234	rm -f ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-cpp 
235	sed -e 's#/usr/libexec/cpp#${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-libexeccpp#' \
236	    -e 's/@GNUC@/-D__GNUC__/' \
237	    -e 's#/usr/include#${CROSSDIR}/usr/include#' \
238	    -e 's/@dollaropt@//' \
239	    ${.CURDIR}/usr.bin/cpp/cpp.sh > ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-cpp 
240	chmod ${BINMODE} ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-cpp 
241	chown ${BINOWN}:${BINGRP} ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-cpp 
242	ln -sf ${TARGET_CANON}-cpp ${CROSSDIR}/usr/${TARGET_CANON}/bin/cpp
243.else
244	(cd ${.CURDIR}/gnu/usr.bin/cc; \
245	    PIE_DEFAULT=${PIE_DEFAULT} \
246	    MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
247	    TARGET_ARCH=${TARGET_ARCH} TARGET_CPU=${TARGET_CPU} \
248	    CROSSDIR=${CROSSDIR} \
249	    MACHINE=${TARGET} \
250	    PATH=${CROSSPATH} ${MAKE} depend  )
251	(cd ${.CURDIR}/gnu/usr.bin/cc; \
252	    PIE_DEFAULT=${PIE_DEFAULT} \
253	    MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
254	    TARGET_ARCH=${TARGET_ARCH} TARGET_CPU=${TARGET_CPU} \
255	    CROSSDIR=${CROSSDIR} \
256	    MACHINE=${TARGET} \
257	    ${MAKE} all )
258	(cd ${.CURDIR}/gnu/usr.bin/cc; \
259	    env CROSSDIR=${CROSSDIR} DESTDIR=${CROSSDIR} \
260	    PIE_DEFAULT=${PIE_DEFAULT} \
261	    MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
262	    TARGET_ARCH=${TARGET_ARCH} TARGET_CPU=${TARGET_CPU} \
263	    MACHINE=${TARGET} \
264	    PATH=${CROSSPATH} ${MAKE} install)
265	cp -f ${CROSSDIR}/usr/bin/g++  ${CROSSDIR}/usr/bin/${TARGET_CANON}-g++ 
266	cp -f ${CROSSDIR}/usr/bin/${TARGET_CANON}-g++ ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-c++
267	cp -f ${CROSSDIR}/usr/libexec/cpp ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-libexeccpp
268	cp -f ${CROSSDIR}/usr/bin/gcc ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-cc
269	ln -sf ${TARGET_CANON}-cc ${CROSSDIR}/usr/${TARGET_CANON}/bin/cc
270
271	cp -f ${CROSSDIR}/usr/bin/gcc ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-cc
272	rm -f ${CROSSDIR}/usr/bin/gcc  ${CROSSDIR}/usr/bin/g++  ${CROSSDIR}/usr/bin/cc ${CROSSDIR}/usr/libexec/cpp 
273	# fix links
274	rm -f ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-cpp 
275	sed -e 's#/usr/libexec/cpp#${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-libexeccpp#' \
276	    -e 's/@GNUC@//' \
277	    -e 's#/usr/include#${CROSSDIR}/usr/include#' \
278	    -e 's/@dollaropt@//' \
279	    ${.CURDIR}/usr.bin/cpp/cpp.sh > ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-cpp 
280	chmod ${BINMODE} ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-cpp 
281	chown ${BINOWN}:${BINGRP} ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-cpp 
282	ln -sf ${TARGET_CANON}-cpp ${CROSSDIR}/usr/${TARGET_CANON}/bin/cpp
283.endif
284	@touch ${CROSSGCC}
285
286# XXX MAKEOBJDIR maybe should be obj.${TARGET} here, revisit later
287cross-lib:	${CROSSGCC}
288	MACHINE=${TARGET} \
289	    MACHINE_ARCH=${TARGET_ARCH} MACHINE_CPU=${TARGET_CPU} \
290	    BSDOBJDIR=${CROSSDIR}/usr/obj; \
291	export MACHINE MACHINE_ARCH MACHINE_CPU BSDOBJDIR; \
292	(cd ${.CURDIR}/lib; \
293	    for lib in csu libc; do \
294	    (cd $$lib; \
295	        eval ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
296		    ${MAKE} depend all ;\
297	        eval ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} DESTDIR=${CROSSDIR} \
298		    ${MAKE} install); \
299	    done; \
300	    eval ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
301	        SKIPDIR=\"${NO_CROSS}\" \
302	        ${MAKE} depend all ; \
303	    eval ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} DESTDIR=${CROSSDIR} \
304	        SKIPDIR=\"${NO_CROSS}\" \
305	        ${MAKE} install)
306
307cross-bin:	${CROSSOBJ}
308	MACHINE=${TARGET} \
309	    MACHINE_ARCH=${TARGET_ARCH} MACHINE_CPU=${TARGET_CPU}; \
310	export MACHINE MACHINE_ARCH MACHINE_CPU; \
311	for i in libexec bin sbin usr.bin usr.sbin; do \
312	(cd ${.CURDIR}/$$i; \
313	    eval ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
314	        SKIPDIR=\"${BINUTILS} ${NO_CROSS}\" \
315	        ${MAKE} depend all ; \
316	    eval ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} DESTDIR=${CROSSDIR} \
317	        SKIPDIR=\"${BINUTILS} ${NO_CROSS}\" \
318	        ${MAKE} install); \
319	done
320
321cross-gnu:	${CROSSOBJ}
322	MACHINE=${TARGET} \
323	    MACHINE_ARCH=${TARGET_ARCH} MACHINE_CPU=${TARGET_CPU}; \
324	export MACHINE MACHINE_ARCH MACHINE_CPU; \
325	for i in gnu/lib gnu/usr.sbin gnu/usr.bin ; do \
326	(cd ${.CURDIR}/$$i; \
327	    eval ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
328	        SKIPDIR=\"${NO_CROSS}\" \
329	        ${MAKE} depend all ; \
330	    eval ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} DESTDIR=${CROSSDIR} \
331	        SKIPDIR=\"${NO_CROSS}\" \
332	        ${MAKE} install); \
333	done
334
335cross-share:   ${CROSSOBJ}
336	MACHINE=${TARGET} \
337	    MACHINE_ARCH=${TARGET_ARCH} MACHINE_CPU=${TARGET_CPU}; \
338	export MACHINE MACHINE_ARCH MACHINE_CPU; \
339	for i in share; do \
340	    (cd ${.CURDIR}/$$i; \
341	        eval ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
342		SKIPDIR=\"${NO_CROSS}\" \
343		DESTDIR=${CROSSDIR} \
344		${MAKE} depend all install); \
345	done
346
347cross-sys:   ${CROSSOBJ}
348	MACHINE=${TARGET} \
349	    MACHINE_ARCH=${TARGET_ARCH} MACHINE_CPU=${TARGET_CPU}; \
350	export MACHINE MACHINE_ARCH MACHINE_CPU; \
351	for i in sys; do \
352	    (cd ${.CURDIR}/$$i; \
353	        eval ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
354		SKIPDIR=\"${NO_CROSS}\" \
355		DESTDIR=${CROSSDIR} \
356		${MAKE} depend all install); \
357	done
358
359cross-etc-root-var:	${CROSSOBJ}
360	(cd ${.CURDIR}/etc && \
361	    MACHINE=${TARGET} \
362	    MACHINE_ARCH=${TARGET_ARCH} MACHINE_CPU=${TARGET_CPU} \
363	    DESTDIR=${CROSSDIR} \
364	    ${MAKE} distribution-etc-root-var)
365
366cross-depend:
367	@(cd ${.CURDIR} && \
368	    BSDOBJDIR=${CROSSDIR}/usr/obj \
369	    BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
370	    SKIPDIR="${NO_CROSS}" \
371	    ${MAKE} depend)
372
373cross-clean:
374	@(cd ${.CURDIR} && \
375	    BSDOBJDIR=${CROSSDIR}/usr/obj \
376	    BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
377	    SKIPDIR="${NO_CROSS}" \
378	    ${MAKE} clean)
379
380cross-cleandir:
381	@(cd ${.CURDIR} && \
382	    BSDOBJDIR=${CROSSDIR}/usr/obj \
383	    BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
384	    SKIPDIR="${NO_CROSS}" \
385	    ${MAKE} cleandir)
386