[BACK]Return to Makefile.cross CVS log [TXT][DIR] Up to [local] / src

File: [local] / src / Makefile.cross (download)

Revision 1.69, Tue Mar 18 22:36:27 2014 UTC (10 years, 2 months ago) by miod
Branch: MAIN
Changes since 1.68: +2 -5 lines

Retire hp300, mvme68k and mvme88k ports. These ports have no users, keeping
this hardware alive is becoming increasingly difficult, and I should heed the
message sent by the three disks which have died on me over the last few days.

Noone sane will mourn these ports anyway. So long, and thanks for the fish.

# $OpenBSD: Makefile.cross,v 1.69 2014/03/18 22:36:27 miod Exp $

cross-tools:	cross-includes cross-binutils cross-gcc cross-lib
cross-distrib:	cross-tools cross-bin cross-share cross-sys cross-etc-root-var
# cross-gnu \

# Have to compute TARGET_ARCH directly in the Makefile, for .if tests involving
# this variable to work.
.if	(${TARGET} == "armish" || ${TARGET} == "armv7" || \
	 ${TARGET} == "zaurus")
TARGET_ARCH=	arm
.elif	(${TARGET} == "aviion" || ${TARGET} == "luna88k")
TARGET_ARCH=	m88k
.elif	(${TARGET} == "sgi" || ${TARGET} == "octeon")
TARGET_ARCH=	mips64
.elif	(${TARGET} == "loongson")
TARGET_ARCH=	mips64el
TARGET_CPU=	mips64
.elif	(${TARGET} == "solbourne")
TARGET_ARCH=	sparc
.elif	(${TARGET} == "macppc" || ${TARGET} == "socppc")
TARGET_ARCH=	powerpc
.elif	(${TARGET} == "landisk")
TARGET_ARCH=	sh
.else
TARGET_ARCH=	${TARGET}
.endif
TARGET_CPU?=	${TARGET_ARCH}

# List of LP64 archs
# XXX move to bsd.*.mk?
LP64_ARCH = amd64 alpha hppa64 ia64 mips64 sparc64 vax64

TARGET_IS_LP64 =
MACHINE_IS_LP64 =
.for _ in ${LP64_ARCH}
. if !empty(TARGET_ARCH:M$_)
    TARGET_IS_LP64 = yes
. endif
. if !empty(MACHINE_ARCH:M$_)
    MACHINE_IS_LP64 = yes
. endif
.endfor

#CROSSCPPFLAGS?=	-nostdinc -I${CROSSDIR}/usr/include
#CROSSLDFLAGS?=	-nostdlib -L${CROSSDIR}/usr/lib -static
CROSSCFLAGS?=	${CROSSCPPFLAGS} -O2 ${PIPE} ${DEBUG}
CROSSCXXFLAGS?=	${CROSSCPPFLAGS}
#LDSTATIC?=	-static

CROSSDIR=	${DESTDIR}/usr/cross/${TARGET}
CROSSENV=	AR=${CROSSDIR}/usr/${TARGET_CANON}/bin/ar \
		AS=${CROSSDIR}/usr/${TARGET_CANON}/bin/as \
		CC=${CROSSDIR}/usr/${TARGET_CANON}/bin/cc \
		CPP=${CROSSDIR}/usr/${TARGET_CANON}/bin/cpp \
		CXX=${CROSSDIR}/usr/${TARGET_CANON}/bin/c++ \
		LD=${CROSSDIR}/usr/${TARGET_CANON}/bin/ld \
		OBJCOPY=${CROSSDIR}/usr/${TARGET_CANON}/bin/objcopy \
		LORDER=/usr/bin/lorder RANLIB=${CROSSDIR}/usr/${TARGET_CANON}/bin/ranlib \
		STRIP=${CROSSDIR}/usr/${TARGET_CANON}/bin/strip \
		HOSTCC=\"${CC}\" HOSTCXX=\"${CXX}\" NOMAN= \
		HOSTCFLAGS=\"${CFLAGS}\" HOSTCXXFLAGS=\"${CXXFLAGS}\" \
		HOSTLDFLAGS=\"${LDFLAGS}\" \
		CFLAGS=\"${CROSSCFLAGS}\" CPPFLAGS=\"${CROSSCPPFLAGS}\" \
		CXXFLAGS=\"${CROSSCXXFLAGS}\" \
		LDFLAGS=\"${CROSSLDFLAGS}\"
CROSSADDPATH=:${CROSSDIR}/usr/${TARGET_CANON}/bin
CROSSPATH=	/usr/bin:/bin:/usr/sbin:/sbin${CROSSADDPATH}
CROSSLANGS?=	c c++

TARGET_CANON=`cat ${CROSSDIR}/TARGET_CANON`

CROSSDIRS=	${CROSSDIR}/.dirs_done
CROSSOBJ=	${CROSSDIR}/.obj_done
CROSSINCLUDES=	${CROSSDIR}/.includes_done
CROSSBINUTILS=	${CROSSDIR}/.binutils_done
CROSSGCC=	${CROSSDIR}/.gcc_done
#NO_CROSS=	isakmpd keynote ssh

.include <bsd.own.mk>

.for _arch in ${TARGET_ARCH}
.if !empty(GCC3_ARCH:M${_arch})
COMPILER_VERSION=gcc3
.else
COMPILER_VERSION=gcc4
.endif

.if !empty(BINUTILS217_ARCH:M${_arch})
BINUTILS_VERSION=binutils-2.17
.else
BINUTILS_VERSION=binutils
.endif

.if !empty(PIE_ARCH:M${_arch})
NOPIE_FLAGS=-fno-pie
NOPIE_LDFLAGS=-nopie
PIE_DEFAULT=${DEFAULT_PIE_DEF}
.else
NOPIE_FLAGS=
PIE_DEFAULT=
.endif

BINUTILS=	ar as gasp ld nm objcopy objdump ranlib readelf size \
		strings strip
BINUTILS_DIR=gnu/usr.bin/${BINUTILS_VERSION}
.endfor

# no libcrypto.... these won't build
#NO_CROSS+=	dc login_krb5 login_krb5-or-pwd passwd ppp tcpdump telnet \
#		ftp gzsig sasyncd vnconfig
		
# explicit cross-compile
NO_CROSS+=bind
NO_CROSS+=httpd
NO_CROSS+=microcode
NO_CROSS+=groff lynx binutils binutils-2.17 perl texinfo gcc cvs
NO_CROSS+=nsd
NO_CROSS+=nginx
NO_CROSS+=sqlite3

cross-dirs:	${CROSSDIRS}
cross-obj:	${CROSSOBJ}
cross-includes:	${CROSSINCLUDES}
cross-binutils:	${CROSSBINUTILS}
cross-gcc:	${CROSSGCC}

cross-env:
	@echo ${CROSSENV} MACHINE=${TARGET} \
	    MACHINE_ARCH=`cat ${CROSSDIR}/TARGET_ARCH` \
	    MACHINE_CPU=`cat ${CROSSDIR}/TARGET_CPU` \
	    BSDOBJDIR=${CROSSDIR}/usr/obj \
	    BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET}

${CROSSDIRS}:
.if ${TARGET_ARCH} == "arm" &&  ${MACHINE_IS_LP64} == "yes"
	# this config is allowed
.elif ${TARGET_IS_LP64} != ${MACHINE_IS_LP64}
	@echo "host and target have different size longs"
	@echo "cross compiler generates bad code; aborting"; exit 1
.endif
	@-mkdir -p ${CROSSDIR}
	@echo ${TARGET_ARCH} > ${CROSSDIR}/TARGET_ARCH
	@echo TARGET_ARCH is `cat ${CROSSDIR}/TARGET_ARCH`
	@echo ${TARGET_CPU} > ${CROSSDIR}/TARGET_CPU
	@echo TARGET_CPU is `cat ${CROSSDIR}/TARGET_CPU`
	@eval `grep '^osr=' sys/conf/newvers.sh`; \
	   echo ${TARGET_ARCH}-unknown-openbsd$$osr > \
	   ${CROSSDIR}/TARGET_CANON
	@-mkdir -p ${CROSSDIR}
	@-mkdir -p ${CROSSDIR}/usr/${TARGET_CANON}
	@ln -sf ${CROSSDIR}/usr/include \
	    ${CROSSDIR}/usr/${TARGET_CANON}/include
	@ln -sf ${CROSSDIR}/usr/lib \
	    ${CROSSDIR}/usr/${TARGET_CANON}/lib
	@-mkdir -p ${CROSSDIR}/usr/${TARGET_CANON}/bin
	@(cd ${.CURDIR}/etc && DESTDIR=${CROSSDIR} ${MAKE} distrib-dirs)
	@touch ${CROSSDIRS}

${CROSSOBJ}:	${CROSSDIRS}
	@-mkdir -p ${CROSSDIR}/usr/obj
	@(cd ${.CURDIR} && \
	    BSDOBJDIR=${CROSSDIR}/usr/obj \
	    COMPILER_VERSION=${COMPILER_VERSION} \
	    MACHINE=${TARGET} \
	    MACHINE_ARCH=${TARGET_ARCH} MACHINE_CPU=${TARGET_CPU} \
	    BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
	    ${MAKE} obj)
	@touch ${CROSSOBJ}

${CROSSINCLUDES}:	${CROSSOBJ}
	@-mkdir -p ${CROSSDIR}/usr/include
	@(cd ${.CURDIR}/include && \
	    COMPILER_VERSION=${COMPILER_VERSION} \
	    MACHINE=${TARGET} \
	    MACHINE_ARCH=${TARGET_ARCH} MACHINE_CPU=${TARGET_CPU} \
	    MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
	    TARGET_ARCH=${TARGET_ARCH} TARGET_CPU=${TARGET_CPU} \
	    ${MAKE} prereq && \
	    COMPILER_VERSION=${COMPILER_VERSION} \
	    MACHINE=${TARGET} \
	    MACHINE_ARCH=${TARGET_ARCH} MACHINE_CPU=${TARGET_CPU} \
	    MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
	    TARGET_ARCH=${TARGET_ARCH} TARGET_CPU=${TARGET_CPU} \
	    ${MAKE} DESTDIR=${CROSSDIR} includes)
	@touch ${CROSSINCLUDES}

${CROSSBINUTILS}:	${CROSSINCLUDES}
	(cd ${.CURDIR}/${BINUTILS_DIR}; \
	    MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
	    PIE_DEFAULT=${PIE_DEFAULT} \
	    TARGET_ARCH=${TARGET_ARCH} TARGET_CPU=${TARGET_CPU} \
	    PATH=${CROSSPATH} \
	    ${MAKE} -f Makefile.bsd-wrapper depend && \
	    MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
	    PIE_DEFAULT=${PIE_DEFAULT} \
	    TARGET_ARCH=${TARGET_ARCH} TARGET_CPU=${TARGET_CPU} \
	    ${MAKE} -f Makefile.bsd-wrapper all && \
	    DESTDIR=${CROSSDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
	    COMPILER_VERSION=${COMPILER_VERSION} \
	    PIE_DEFAULT=${PIE_DEFAULT} \
	    MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
	    TARGET_ARCH=${TARGET_ARCH} TARGET_CPU=${TARGET_CPU} \
	    ${MAKE} -f Makefile.bsd-wrapper install)
	@for cmd in ${BINUTILS}; do \
	 if [ -e ${CROSSDIR}/usr/bin/${TARGET_CANON}-$$cmd ] ; then \
	    cp -f ${CROSSDIR}/usr/bin/${TARGET_CANON}-$$cmd \
	        ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-$$cmd ; \
	    ln -sf ${TARGET_CANON}-$$cmd \
		${CROSSDIR}/usr/${TARGET_CANON}/bin/$$cmd ;\
	   if [ -e ${CROSSDIR}/usr/bin/$$cmd ] ; then \
	    rm -f ${CROSSDIR}/usr/bin/$$cmd ;\
	   fi ;\
	 elif [ -e ${CROSSDIR}/usr/bin/$$cmd ] ; then \
	    cp -f ${CROSSDIR}/usr/bin/$$cmd \
	        ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-$$cmd ; \
	    ln -sf ${TARGET_CANON}-$$cmd \
		${CROSSDIR}/usr/${TARGET_CANON}/bin/$$cmd ;\
	    mv ${CROSSDIR}/usr/bin/$$cmd \
		${CROSSDIR}/usr/bin/${TARGET_CANON}-$$cmd ;\
	 fi ;\
	done
	@touch ${CROSSBINUTILS}


${CROSSGCC}:		${CROSSBINUTILS}
.if ${COMPILER_VERSION:L} == "gcc3"
	(cd ${.CURDIR}/gnu/usr.bin/gcc; \
	    MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
	    TARGET_ARCH=${TARGET_ARCH} TARGET_CPU=${TARGET_CPU} \
	    CROSSDIR=${CROSSDIR} \
	    PATH=${CROSSPATH} ${MAKE} -f Makefile.bsd-wrapper depend && \
	    MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
	    TARGET_ARCH=${TARGET_ARCH} TARGET_CPU=${TARGET_CPU} \
	    CROSSDIR=${CROSSDIR} \
	    ${MAKE} -f Makefile.bsd-wrapper all && \
	    env CROSSDIR=${CROSSDIR} DESTDIR=${CROSSDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
	    PATH=${CROSSPATH} ${MAKE} -f Makefile.bsd-wrapper install)
	cp -f ${CROSSDIR}/usr/bin/${TARGET_CANON}-g++ ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-c++
	cp -f ${CROSSDIR}/usr/bin/gcc ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-cc
	cp -f ${CROSSDIR}/usr/libexec/cpp ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-libexeccpp
	rm -f ${CROSSDIR}/usr/bin/gcc  ${CROSSDIR}/usr/bin/cc ${CROSSDIR}/usr/libexec/cpp 
	ln -sf ${TARGET_CANON}-cc ${CROSSDIR}/usr/${TARGET_CANON}/bin/cc
	ln -sf ${TARGET_CANON}-c++ ${CROSSDIR}/usr/${TARGET_CANON}/bin/c++
	rm -f ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-cpp 
	sed -e 's#/usr/libexec/cpp#${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-libexeccpp#' \
	    -e 's/@GNUC@/-D__GNUC__/' \
	    -e 's#/usr/include#${CROSSDIR}/usr/include#' \
	    -e 's/@dollaropt@//' \
	    ${.CURDIR}/usr.bin/cpp/cpp.sh > ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-cpp 
	chmod ${BINMODE} ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-cpp 
	chown ${BINOWN}:${BINGRP} ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-cpp 
	ln -sf ${TARGET_CANON}-cpp ${CROSSDIR}/usr/${TARGET_CANON}/bin/cpp
.else
	(cd ${.CURDIR}/gnu/usr.bin/cc; \
	    MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
	    TARGET_ARCH=${TARGET_ARCH} TARGET_CPU=${TARGET_CPU} \
	    CROSSDIR=${CROSSDIR} \
	    MACHINE=${TARGET} \
	    PATH=${CROSSPATH} ${MAKE} depend  )
	(cd ${.CURDIR}/gnu/usr.bin/cc; \
	    MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
	    TARGET_ARCH=${TARGET_ARCH} TARGET_CPU=${TARGET_CPU} \
	    CROSSDIR=${CROSSDIR} \
	    MACHINE=${TARGET} \
	    ${MAKE} all )
	(cd ${.CURDIR}/gnu/usr.bin/cc; \
	    env CROSSDIR=${CROSSDIR} DESTDIR=${CROSSDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
	    TARGET_ARCH=${TARGET_ARCH} TARGET_CPU=${TARGET_CPU} \
	    MACHINE=${TARGET} \
	    PATH=${CROSSPATH} ${MAKE} install)
	cp -f ${CROSSDIR}/usr/bin/g++  ${CROSSDIR}/usr/bin/${TARGET_CANON}-g++ 
	cp -f ${CROSSDIR}/usr/bin/${TARGET_CANON}-g++ ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-c++
	cp -f ${CROSSDIR}/usr/libexec/cpp ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-libexeccpp
	cp -f ${CROSSDIR}/usr/bin/gcc ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-cc
	ln -sf ${TARGET_CANON}-cc ${CROSSDIR}/usr/${TARGET_CANON}/bin/cc

	cp -f ${CROSSDIR}/usr/bin/gcc ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-cc
	rm -f ${CROSSDIR}/usr/bin/gcc  ${CROSSDIR}/usr/bin/g++  ${CROSSDIR}/usr/bin/cc ${CROSSDIR}/usr/libexec/cpp 
	# fix links
	rm -f ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-cpp 
	sed -e 's#/usr/libexec/cpp#${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-libexeccpp#' \
	    -e 's/@GNUC@//' \
	    -e 's#/usr/include#${CROSSDIR}/usr/include#' \
	    -e 's/@dollaropt@//' \
	    ${.CURDIR}/usr.bin/cpp/cpp.sh > ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-cpp 
	chmod ${BINMODE} ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-cpp 
	chown ${BINOWN}:${BINGRP} ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-cpp 
	ln -sf ${TARGET_CANON}-cpp ${CROSSDIR}/usr/${TARGET_CANON}/bin/cpp
.endif
	@touch ${CROSSGCC}

# XXX MAKEOBJDIR maybe should be obj.${TARGET} here, revisit later
cross-lib:	${CROSSGCC}
	MACHINE=${TARGET} \
	    MACHINE_ARCH=${TARGET_ARCH} MACHINE_CPU=${TARGET_CPU}; \
	export MACHINE MACHINE_ARCH MACHINE_CPU; \
	(cd ${.CURDIR}/lib; \
	    for lib in csu libc; do \
	    (cd $$lib; \
	        eval ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
		    ${MAKE} depend all ;\
	        eval ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} DESTDIR=${CROSSDIR} \
		    ${MAKE} install); \
	    done; \
	    eval ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
	        SKIPDIR=\"${NO_CROSS} libocurses/PSD.doc\" \
	        ${MAKE} depend all ; \
	    eval ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} DESTDIR=${CROSSDIR} \
	        SKIPDIR=\"${NO_CROSS} libocurses/PSD.doc\" \
	        ${MAKE} install)

cross-bin:	${CROSSOBJ}
	MACHINE=${TARGET} \
	    MACHINE_ARCH=${TARGET_ARCH} MACHINE_CPU=${TARGET_CPU}; \
	export MACHINE MACHINE_ARCH MACHINE_CPU; \
	for i in libexec bin sbin usr.bin usr.sbin; do \
	(cd ${.CURDIR}/$$i; \
	    eval ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
	        SKIPDIR=\"${BINUTILS} ${NO_CROSS}\" \
	        ${MAKE} depend all ; \
	    eval ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} DESTDIR=${CROSSDIR} \
	        SKIPDIR=\"${BINUTILS} ${NO_CROSS}\" \
	        ${MAKE} install); \
	done

cross-gnu:	${CROSSOBJ}
	MACHINE=${TARGET} \
	    MACHINE_ARCH=${TARGET_ARCH} MACHINE_CPU=${TARGET_CPU}; \
	export MACHINE MACHINE_ARCH MACHINE_CPU; \
	for i in gnu/lib gnu/usr.sbin gnu/usr.bin ; do \
	(cd ${.CURDIR}/$$i; \
	    eval ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
	        SKIPDIR=\"${NO_CROSS}\" \
	        ${MAKE} depend all ; \
	    eval ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} DESTDIR=${CROSSDIR} \
	        SKIPDIR=\"${NO_CROSS}\" \
	        ${MAKE} install); \
	done

cross-share:   ${CROSSOBJ}
	MACHINE=${TARGET} \
	    MACHINE_ARCH=${TARGET_ARCH} MACHINE_CPU=${TARGET_CPU}; \
	export MACHINE MACHINE_ARCH MACHINE_CPU; \
	for i in share; do \
	    (cd ${.CURDIR}/$$i; \
	        eval ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
		SKIPDIR=\"${NO_CROSS}\" \
		${MAKE} depend all install); \
	done

cross-sys:   ${CROSSOBJ}
	MACHINE=${TARGET} \
	    MACHINE_ARCH=${TARGET_ARCH} MACHINE_CPU=${TARGET_CPU}; \
	export MACHINE MACHINE_ARCH MACHINE_CPU; \
	for i in sys; do \
	    (cd ${.CURDIR}/$$i; \
	        eval ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
		SKIPDIR=\"${NO_CROSS}\" \
		${MAKE} depend all install); \
	done

cross-etc-root-var:	${CROSSOBJ}
	(cd ${.CURDIR}/etc && \
	    MACHINE=${TARGET} \
	    MACHINE_ARCH=${TARGET_ARCH} MACHINE_CPU=${TARGET_CPU} \
	    DESTDIR=${CROSSDIR} \
	    ${MAKE} distribution-etc-root-var)

cross-depend:
	@(cd ${.CURDIR} && \
	    BSDOBJDIR=${CROSSDIR}/usr/obj \
	    BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
	    SKIPDIR="${NO_CROSS}" \
	    ${MAKE} depend)

cross-clean:
	@(cd ${.CURDIR} && \
	    BSDOBJDIR=${CROSSDIR}/usr/obj \
	    BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
	    SKIPDIR="${NO_CROSS}" \
	    ${MAKE} clean)

cross-cleandir:
	@(cd ${.CURDIR} && \
	    BSDOBJDIR=${CROSSDIR}/usr/obj \
	    BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
	    SKIPDIR="${NO_CROSS}" \
	    ${MAKE} cleandir)