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