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