1*b14edc4dSdrahn# $OpenBSD: Makefile.cross,v 1.49 2011/11/11 12:26:54 drahn Exp $ 2a222f159Sespie 3a222f159Sespiecross-tools: cross-includes cross-binutils cross-gcc cross-lib 4a071a6c7Sdrahncross-distrib: cross-tools cross-bin cross-share cross-sys cross-etc-root-var 5a071a6c7Sdrahn# cross-gnu \ 6a222f159Sespie 7a78fab76Smiod# Have to compute TARGET_ARCH directly in the Makefile, for .if tests involving 8a78fab76Smiod# this variable to work. 943421439Smatthieu.if (${TARGET} == "armish" || ${TARGET} == "beagle" || \ 1039646eb4Sdrahn ${TARGET} == "gumstix" || ${TARGET} == "palm" || \ 1139646eb4Sdrahn ${TARGET} == "zaurus") 12a78fab76SmiodTARGET_ARCH= arm 13a78fab76Smiod.elif (${TARGET} == "hp300" || ${TARGET} == "mac68k" || \ 14a78fab76Smiod ${TARGET} == "mvme68k") 15a78fab76SmiodTARGET_ARCH= m68k 16ad744452Smiod.elif (${TARGET} == "aviion" || ${TARGET} == "luna88k" || \ 17ad744452Smiod ${TARGET} == "mvme88k") 18a78fab76SmiodTARGET_ARCH= m88k 19c3ed6a03Ssyuu.elif (${TARGET} == "sgi" || ${TARGET} == "octeon") 20a78fab76SmiodTARGET_ARCH= mips64 2156074f2fSmiod.elif (${TARGET} == "loongson") 2256074f2fSmiodTARGET_ARCH= mips64el 2356074f2fSmiodTARGET_CPU= mips64 24990b83faSderaadt.elif (${TARGET} == "solbourne") 25990b83faSderaadtTARGET_ARCH= sparc 265b036de8Sderaadt.elif (${TARGET} == "macppc" || ${TARGET} == "socppc") 27a78fab76SmiodTARGET_ARCH= powerpc 282f050487Smiod.elif (${TARGET} == "landisk") 292f050487SmiodTARGET_ARCH= sh 30a78fab76Smiod.else 31a78fab76SmiodTARGET_ARCH= ${TARGET} 32a78fab76Smiod.endif 3356074f2fSmiodTARGET_CPU?= ${TARGET_ARCH} 34a78fab76Smiod 35a732d4d4Sguenther# List of LP64 archs 36a732d4d4Sguenther# XXX move to bsd.*.mk? 37a732d4d4SguentherLP64_ARCH = amd64 alpha hppa64 ia64 mips64 sparc64 vax64 38a732d4d4Sguenther 39a732d4d4SguentherTARGET_IS_LP64 = 40a732d4d4SguentherMACHINE_IS_LP64 = 41a732d4d4Sguenther.for _ in ${LP64_ARCH} 42a732d4d4Sguenther. if !empty(TARGET_ARCH:M$_) 43a732d4d4Sguenther TARGET_IS_LP64 = yes 44a732d4d4Sguenther. endif 45a732d4d4Sguenther. if !empty(MACHINE_ARCH:M$_) 46a732d4d4Sguenther MACHINE_IS_LP64 = yes 47a732d4d4Sguenther. endif 48a732d4d4Sguenther.endfor 49a732d4d4Sguenther 50a071a6c7Sdrahn#CROSSCPPFLAGS?= -nostdinc -I${CROSSDIR}/usr/include 51a071a6c7Sdrahn#CROSSLDFLAGS?= -nostdlib -L${CROSSDIR}/usr/lib -static 52a071a6c7SdrahnCROSSCFLAGS?= ${CROSSCPPFLAGS} -O2 ${PIPE} ${DEBUG} 53a222f159SespieCROSSCXXFLAGS?= ${CROSSCPPFLAGS} 54a071a6c7Sdrahn#LDSTATIC?= -static 55a071a6c7Sdrahn 56a071a6c7Sdrahn# XXX 57a071a6c7SdrahnBINMODE?=555 58a071a6c7SdrahnBINOWN?=root 59a8ae43d8SmpiBINGRP?=bin 60a222f159Sespie 61a222f159SespieCROSSDIR= ${DESTDIR}/usr/cross/${TARGET} 62a071a6c7SdrahnCROSSENV= AR=${CROSSDIR}/usr/${TARGET_CANON}/bin/ar \ 63a071a6c7Sdrahn AS=${CROSSDIR}/usr/${TARGET_CANON}/bin/as \ 64a071a6c7Sdrahn CC=${CROSSDIR}/usr/${TARGET_CANON}/bin/cc \ 65a071a6c7Sdrahn CPP=${CROSSDIR}/usr/${TARGET_CANON}/bin/cpp \ 66a071a6c7Sdrahn CXX=${CROSSDIR}/usr/${TARGET_CANON}/bin/c++ \ 67a071a6c7Sdrahn LD=${CROSSDIR}/usr/${TARGET_CANON}/bin/ld \ 68a071a6c7Sdrahn OBJCOPY=${CROSSDIR}/usr/${TARGET_CANON}/bin/objcopy \ 69a071a6c7Sdrahn LORDER=/usr/bin/lorder RANLIB=${CROSSDIR}/usr/${TARGET_CANON}/bin/ranlib \ 70a071a6c7Sdrahn STRIP=${CROSSDIR}/usr/${TARGET_CANON}/bin/strip \ 71a071a6c7Sdrahn HOSTCC=\"${CC}\" HOSTCXX=\"${CXX}\" NOMAN= \ 72a222f159Sespie HOSTCFLAGS=\"${CFLAGS}\" HOSTCXXFLAGS=\"${CXXFLAGS}\" \ 73a222f159Sespie HOSTLDFLAGS=\"${LDFLAGS}\" \ 74a222f159Sespie CFLAGS=\"${CROSSCFLAGS}\" CPPFLAGS=\"${CROSSCPPFLAGS}\" \ 75a222f159Sespie CXXFLAGS=\"${CROSSCXXFLAGS}\" \ 76a222f159Sespie LDFLAGS=\"${CROSSLDFLAGS}\" 77a071a6c7SdrahnCROSSADDPATH=:${CROSSDIR}/usr/${TARGET_CANON}/bin 78a071a6c7SdrahnCROSSPATH= /usr/bin:/bin:/usr/sbin:/sbin${CROSSADDPATH} 79a222f159SespieCROSSLANGS?= c c++ 80a222f159Sespie 81141bf37aSespieTARGET_CANON=`cat ${CROSSDIR}/TARGET_CANON` 82141bf37aSespie 83a222f159SespieCROSSDIRS= ${CROSSDIR}/.dirs_done 84a071a6c7SdrahnCROSSOBJ= ${CROSSDIR}/.obj_done 85a071a6c7SdrahnCROSSINCLUDES= ${CROSSDIR}/.includes_done 86a071a6c7SdrahnCROSSBINUTILS= ${CROSSDIR}/.binutils_done 87a071a6c7SdrahnCROSSGCC= ${CROSSDIR}/.gcc_done 88bab9f9c3Sdjm#NO_CROSS= isakmpd keynote ssh 89a222f159Sespie 90*b14edc4dSdrahn.include <bsd.own.mk> 91*b14edc4dSdrahn 926018e286SkettenisBINUTILS217_ARCH=hppa64 ia64 939102a13aSdrahnOLD_BINUTILS_ARCH=m68k m88k vax 949102a13aSdrahn 959102a13aSdrahn.for _arch in ${TARGET_ARCH} 969102a13aSdrahn.if !empty(GCC2_ARCH:M${_arch}) 979102a13aSdrahnUSE_GCC3?=no 9888ff6307SdrahnTARGET_USE_GCC3=No 999102a13aSdrahnCOMPILER_VERSION?=gcc2 1009102a13aSdrahn.elif !empty(GCC4_ARCH:M${_arch}) 10188ff6307SdrahnTARGET_USE_GCC4=Yes 1029102a13aSdrahnCOMPILER_VERSION?=gcc4 10388ff6307Sdrahn.else 10488ff6307SdrahnTARGET_USE_GCC3=Yes 1059102a13aSdrahnCOMPILER_VERSION?=gcc3 10688ff6307Sdrahn.endif 10788ff6307Sdrahn 1089102a13aSdrahn.if !empty(BINUTILS217_ARCH:M${_arch}) 1099102a13aSdrahnBINUTILS_VERSION=binutils-2.17 1109102a13aSdrahn.else 1119102a13aSdrahnBINUTILS_VERSION=binutils 1129102a13aSdrahn.endif 1139102a13aSdrahn 1149102a13aSdrahn.if !empty(OLD_BINUTILS_ARCH:M${_arch}) 1159102a13aSdrahnNEW_BINUTILS?= No 1169102a13aSdrahnBINUTILS= ar as ld nm ranlib objcopy objdump strings strip 1179102a13aSdrahn.else 1189102a13aSdrahnNEW_BINUTILS?= Yes 1199102a13aSdrahnBINUTILS= ar as gasp ld nm objcopy objdump ranlib readelf size \ 1209102a13aSdrahn strings strip 1219102a13aSdrahn.endif 1229102a13aSdrahnBINUTILS_DIR=gnu/usr.bin/${BINUTILS_VERSION} 1239102a13aSdrahn.endfor 1249102a13aSdrahn 125141bf37aSespie# no libcrypto.... these won't build 126a071a6c7Sdrahn#NO_CROSS+= dc login_krb5 login_krb5-or-pwd passwd ppp tcpdump telnet \ 127a071a6c7Sdrahn# ftp gzsig sasyncd vnconfig 128a071a6c7Sdrahn 129141bf37aSespie# need host setup for ydr 130141bf37aSespieNO_CROSS+=afs 131141bf37aSespie# explicit cross-compile 132141bf37aSespieNO_CROSS+=bind 133a071a6c7SdrahnNO_CROSS+=httpd 134a071a6c7SdrahnNO_CROSS+=microcode 1359102a13aSdrahnNO_CROSS+=groff lynx binutils binutils-2.17 perl texinfo gcc cvs 136e3bab464SdrahnNO_CROSS+=nsd 137141bf37aSespie 138a222f159Sespiecross-dirs: ${CROSSDIRS} 139a222f159Sespiecross-obj: ${CROSSOBJ} 140a222f159Sespiecross-includes: ${CROSSINCLUDES} 141a222f159Sespiecross-binutils: ${CROSSBINUTILS} 142a222f159Sespiecross-gcc: ${CROSSGCC} 143a222f159Sespie 144a222f159Sespiecross-env: 145a222f159Sespie @echo ${CROSSENV} MACHINE=${TARGET} \ 146d49bf4ccSmickey MACHINE_ARCH=`cat ${CROSSDIR}/TARGET_ARCH` \ 14756074f2fSmiod MACHINE_CPU=`cat ${CROSSDIR}/TARGET_CPU` \ 148d49bf4ccSmickey BSDOBJDIR=${CROSSDIR}/usr/obj \ 149d49bf4ccSmickey BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} 150a222f159Sespie 151a222f159Sespie${CROSSDIRS}: 152*b14edc4dSdrahn.if ${TARGET_ARCH} == "arm" && ${MACHINE_IS_LP64} == "yes" 153*b14edc4dSdrahn # this config is allowed 154*b14edc4dSdrahn.elif ${TARGET_IS_LP64} != ${MACHINE_IS_LP64} 155a732d4d4Sguenther @echo "host and target have different size longs" 156a732d4d4Sguenther @echo "cross compiler generates bad code; aborting"; exit 1 157a732d4d4Sguenther.endif 158a222f159Sespie @-mkdir -p ${CROSSDIR} 159a78fab76Smiod @echo ${TARGET_ARCH} > ${CROSSDIR}/TARGET_ARCH 160a222f159Sespie @echo TARGET_ARCH is `cat ${CROSSDIR}/TARGET_ARCH` 16156074f2fSmiod @echo ${TARGET_CPU} > ${CROSSDIR}/TARGET_CPU 16256074f2fSmiod @echo TARGET_CPU is `cat ${CROSSDIR}/TARGET_CPU` 163a222f159Sespie @eval `grep '^osr=' sys/conf/newvers.sh`; \ 16456074f2fSmiod echo ${TARGET_ARCH}-unknown-openbsd$$osr > \ 165a222f159Sespie ${CROSSDIR}/TARGET_CANON 166a222f159Sespie @-mkdir -p ${CROSSDIR} 167141bf37aSespie @-mkdir -p ${CROSSDIR}/usr/${TARGET_CANON} 168a222f159Sespie @ln -sf ${CROSSDIR}/usr/include \ 169141bf37aSespie ${CROSSDIR}/usr/${TARGET_CANON}/include 170a222f159Sespie @ln -sf ${CROSSDIR}/usr/lib \ 171141bf37aSespie ${CROSSDIR}/usr/${TARGET_CANON}/lib 172141bf37aSespie @-mkdir -p ${CROSSDIR}/usr/${TARGET_CANON}/bin 173a222f159Sespie @(cd ${.CURDIR}/etc && DESTDIR=${CROSSDIR} ${MAKE} distrib-dirs) 174a222f159Sespie @touch ${CROSSDIRS} 175a222f159Sespie 176a222f159Sespie${CROSSOBJ}: ${CROSSDIRS} 177a222f159Sespie @-mkdir -p ${CROSSDIR}/usr/obj 178a222f159Sespie @(cd ${.CURDIR} && \ 179a222f159Sespie BSDOBJDIR=${CROSSDIR}/usr/obj \ 18088ff6307Sdrahn COMPILER_VERSION=${COMPILER_VERSION} \ 181a222f159Sespie MACHINE=${TARGET} \ 18256074f2fSmiod MACHINE_ARCH=${TARGET_ARCH} MACHINE_CPU=${TARGET_CPU} \ 183a222f159Sespie BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \ 184a222f159Sespie ${MAKE} obj) 185a222f159Sespie @touch ${CROSSOBJ} 186a222f159Sespie 187a222f159Sespie${CROSSINCLUDES}: ${CROSSOBJ} 188a222f159Sespie @-mkdir -p ${CROSSDIR}/usr/include 189a222f159Sespie @(cd ${.CURDIR}/include && \ 19088ff6307Sdrahn COMPILER_VERSION=${COMPILER_VERSION} \ 19156074f2fSmiod MACHINE=${TARGET} \ 19256074f2fSmiod MACHINE_ARCH=${TARGET_ARCH} MACHINE_CPU=${TARGET_CPU} \ 193a222f159Sespie MAKEOBJDIR=obj.${MACHINE}.${TARGET} \ 19456074f2fSmiod TARGET_ARCH=${TARGET_ARCH} TARGET_CPU=${TARGET_CPU} \ 195a222f159Sespie ${MAKE} prereq && \ 19688ff6307Sdrahn COMPILER_VERSION=${COMPILER_VERSION} \ 19756074f2fSmiod MACHINE=${TARGET} \ 19856074f2fSmiod MACHINE_ARCH=${TARGET_ARCH} MACHINE_CPU=${TARGET_CPU} \ 199a222f159Sespie MAKEOBJDIR=obj.${MACHINE}.${TARGET} \ 20056074f2fSmiod TARGET_ARCH=${TARGET_ARCH} TARGET_CPU=${TARGET_CPU} \ 201a222f159Sespie ${MAKE} DESTDIR=${CROSSDIR} includes) 202a222f159Sespie @touch ${CROSSINCLUDES} 203a222f159Sespie 204a222f159Sespie${CROSSBINUTILS}: ${CROSSINCLUDES} 2059102a13aSdrahn (cd ${.CURDIR}/${BINUTILS_DIR}; \ 206a222f159Sespie MAKEOBJDIR=obj.${MACHINE}.${TARGET} \ 207e829c094Smiod USING_NEW_BINUTILS=${NEW_BINUTILS} \ 20856074f2fSmiod TARGET_ARCH=${TARGET_ARCH} TARGET_CPU=${TARGET_CPU} \ 20956074f2fSmiod PATH=${CROSSPATH} \ 210a222f159Sespie ${MAKE} -f Makefile.bsd-wrapper depend && \ 211a222f159Sespie MAKEOBJDIR=obj.${MACHINE}.${TARGET} \ 212e829c094Smiod USING_NEW_BINUTILS=${NEW_BINUTILS} \ 21356074f2fSmiod TARGET_ARCH=${TARGET_ARCH} TARGET_CPU=${TARGET_CPU} \ 214a222f159Sespie ${MAKE} -f Makefile.bsd-wrapper all && \ 215a222f159Sespie DESTDIR=${CROSSDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \ 21688ff6307Sdrahn COMPILER_VERSION=${COMPILER_VERSION} \ 217e829c094Smiod USING_NEW_BINUTILS=${NEW_BINUTILS} \ 21856074f2fSmiod MAKEOBJDIR=obj.${MACHINE}.${TARGET} \ 21956074f2fSmiod USING_NEW_BINUTILS=${NEW_BINUTILS} \ 22056074f2fSmiod TARGET_ARCH=${TARGET_ARCH} TARGET_CPU=${TARGET_CPU} \ 221a222f159Sespie ${MAKE} -f Makefile.bsd-wrapper install) 222e829c094Smiod.if ${NEW_BINUTILS:L} != "yes" 223a222f159Sespie (cd ${.CURDIR}/gnu/usr.bin/gas; \ 224141bf37aSespie TARGET_MACHINE_ARCH=${TARGET_ARCH} \ 225a222f159Sespie MAKEOBJDIR=obj.${MACHINE}.${TARGET} ${MAKE} depend all; \ 226141bf37aSespie TARGET_MACHINE_ARCH=${TARGET_ARCH} \ 227a222f159Sespie DESTDIR=${CROSSDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \ 228a222f159Sespie ${MAKE} NOMAN= install) 229a222f159Sespie ln -sf ${CROSSDIR}/usr/bin/as \ 2304149f057Smiod ${CROSSDIR}/usr/${TARGET_CANON}/bin/as 231a222f159Sespie (cd ${.CURDIR}/gnu/usr.bin/ld; \ 232141bf37aSespie TARGET_MACHINE_ARCH=${TARGET_ARCH} \ 233a222f159Sespie MAKEOBJDIR=obj.${MACHINE}.${TARGET} \ 234a222f159Sespie ${MAKE} NOPIC= NOMAN= depend all; \ 235141bf37aSespie TARGET_MACHINE_ARCH=${TARGET_ARCH} \ 236a222f159Sespie DESTDIR=${CROSSDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \ 237a222f159Sespie ${MAKE} NOPIC= NOMAN= install) 238a222f159Sespie ln -sf ${CROSSDIR}/usr/bin/ld \ 239141bf37aSespie ${CROSSDIR}/usr/${TARGET_CANON}/bin/ld 240a222f159Sespie (cd ${.CURDIR}/usr.bin/ar; \ 241a57924a5Smiod ELF_TOOLCHAIN=no \ 242a222f159Sespie MAKEOBJDIR=obj.${MACHINE}.${TARGET} ${MAKE} NOMAN= depend all; \ 243a57924a5Smiod ELF_TOOLCHAIN=no \ 244a222f159Sespie DESTDIR=${CROSSDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \ 245a222f159Sespie ${MAKE} NOMAN= install) 246a222f159Sespie ln -sf ${CROSSDIR}/usr/bin/ar \ 247141bf37aSespie ${CROSSDIR}/usr/${TARGET_CANON}/bin/ar 24888ff6307Sdrahn @(cd ${.CURDIR}/usr.bin/ranlib; \ 249a57924a5Smiod ELF_TOOLCHAIN=no \ 250a222f159Sespie MAKEOBJDIR=obj.${MACHINE}.${TARGET} ${MAKE} NOMAN= depend all; \ 251a57924a5Smiod ELF_TOOLCHAIN=no \ 252a222f159Sespie DESTDIR=${CROSSDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \ 253a222f159Sespie ${MAKE} NOMAN= install) 254a222f159Sespie ln -sf ${CROSSDIR}/usr/bin/ranlib \ 255141bf37aSespie ${CROSSDIR}/usr/${TARGET_CANON}/bin/ranlib 256a222f159Sespie (cd ${.CURDIR}/usr.bin/strip; \ 257a222f159Sespie MAKEOBJDIR=obj.${MACHINE}.${TARGET} \ 258141bf37aSespie ${MAKE} TARGET_MACHINE_ARCH=${TARGET_ARCH} \ 259a222f159Sespie NOMAN= depend all; \ 260a222f159Sespie DESTDIR=${CROSSDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \ 261141bf37aSespie ${MAKE} TARGET_MACHINE_ARCH=${TARGET_ARCH} \ 262a222f159Sespie NOMAN= install) 263a222f159Sespie ln -sf ${CROSSDIR}/usr/bin/strip \ 264141bf37aSespie ${CROSSDIR}/usr/${TARGET_CANON}/bin/strip 265a222f159Sespie.endif 266a222f159Sespie @for cmd in ${BINUTILS}; do \ 267a071a6c7Sdrahn if [ -e ${CROSSDIR}/usr/bin/${TARGET_CANON}-$$cmd ] ; then \ 268a071a6c7Sdrahn cp -f ${CROSSDIR}/usr/bin/${TARGET_CANON}-$$cmd \ 269a071a6c7Sdrahn ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-$$cmd ; \ 270a071a6c7Sdrahn ln -sf ${TARGET_CANON}-$$cmd \ 271141bf37aSespie ${CROSSDIR}/usr/${TARGET_CANON}/bin/$$cmd ;\ 272a071a6c7Sdrahn if [ -e ${CROSSDIR}/usr/bin/$$cmd ] ; then \ 273a071a6c7Sdrahn rm -f ${CROSSDIR}/usr/bin/$$cmd ;\ 274a071a6c7Sdrahn fi ;\ 275a071a6c7Sdrahn elif [ -e ${CROSSDIR}/usr/bin/$$cmd ] ; then \ 276a071a6c7Sdrahn cp -f ${CROSSDIR}/usr/bin/$$cmd \ 277a071a6c7Sdrahn ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-$$cmd ; \ 278a071a6c7Sdrahn ln -sf ${TARGET_CANON}-$$cmd \ 279a071a6c7Sdrahn ${CROSSDIR}/usr/${TARGET_CANON}/bin/$$cmd ;\ 280a071a6c7Sdrahn mv ${CROSSDIR}/usr/bin/$$cmd \ 281a071a6c7Sdrahn ${CROSSDIR}/usr/bin/${TARGET_CANON}-$$cmd ;\ 282a222f159Sespie fi ;\ 283a222f159Sespie done 284a222f159Sespie @touch ${CROSSBINUTILS} 285a222f159Sespie 286a222f159Sespie 287a222f159Sespie${CROSSGCC}: ${CROSSBINUTILS} 28888ff6307Sdrahn.if ${COMPILER_VERSION:L} == "gcc4" 28988ff6307Sdrahn (cd ${.CURDIR}/gnu/usr.bin/cc; \ 29088ff6307Sdrahn MAKEOBJDIR=obj.${MACHINE}.${TARGET} \ 29188ff6307Sdrahn TARGET_ARCH=${TARGET_ARCH} TARGET_CPU=${TARGET_CPU} \ 29288ff6307Sdrahn CROSSDIR=${CROSSDIR} \ 29388ff6307Sdrahn MACHINE=${TARGET} \ 29488ff6307Sdrahn PATH=${CROSSPATH} ${MAKE} depend ) 29588ff6307Sdrahn (cd ${.CURDIR}/gnu/usr.bin/cc; \ 29688ff6307Sdrahn MAKEOBJDIR=obj.${MACHINE}.${TARGET} \ 29788ff6307Sdrahn TARGET_ARCH=${TARGET_ARCH} TARGET_CPU=${TARGET_CPU} \ 29888ff6307Sdrahn CROSSDIR=${CROSSDIR} \ 29988ff6307Sdrahn MACHINE=${TARGET} \ 30088ff6307Sdrahn ${MAKE} all ) 30188ff6307Sdrahn (cd ${.CURDIR}/gnu/usr.bin/cc; \ 30288ff6307Sdrahn env CROSSDIR=${CROSSDIR} DESTDIR=${CROSSDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \ 30388ff6307Sdrahn TARGET_ARCH=${TARGET_ARCH} TARGET_CPU=${TARGET_CPU} \ 30488ff6307Sdrahn MACHINE=${TARGET} \ 30588ff6307Sdrahn PATH=${CROSSPATH} ${MAKE} install) 3068d925239Sdrahn cp -f ${CROSSDIR}/usr/bin/g++ ${CROSSDIR}/usr/bin/${TARGET_CANON}-g++ 30788ff6307Sdrahn cp -f ${CROSSDIR}/usr/bin/${TARGET_CANON}-g++ ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-c++ 30888ff6307Sdrahn cp -f ${CROSSDIR}/usr/libexec/cpp ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-libexeccpp 3098d925239Sdrahn cp -f ${CROSSDIR}/usr/bin/gcc ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-cc 31088ff6307Sdrahn ln -sf ${TARGET_CANON}-cc ${CROSSDIR}/usr/${TARGET_CANON}/bin/cc 3118d925239Sdrahn 3128d925239Sdrahn cp -f ${CROSSDIR}/usr/bin/gcc ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-cc 3138d925239Sdrahn rm -f ${CROSSDIR}/usr/bin/gcc ${CROSSDIR}/usr/bin/g++ ${CROSSDIR}/usr/bin/cc ${CROSSDIR}/usr/libexec/cpp 3148d925239Sdrahn # fix links 31588ff6307Sdrahn rm -f ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-cpp 31688ff6307Sdrahn sed -e 's#/usr/libexec/cpp#${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-libexeccpp#' \ 317846f21d9Sdrahn -e 's/@GNUC@//' \ 31888ff6307Sdrahn -e 's#/usr/include#${CROSSDIR}/usr/include#' \ 31988ff6307Sdrahn -e 's/@dollaropt@//' \ 32088ff6307Sdrahn ${.CURDIR}/usr.bin/cpp/cpp.sh > ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-cpp 32188ff6307Sdrahn chmod ${BINMODE} ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-cpp 32288ff6307Sdrahn chown ${BINOWN}:${BINGRP} ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-cpp 32388ff6307Sdrahn ln -sf ${TARGET_CANON}-cpp ${CROSSDIR}/usr/${TARGET_CANON}/bin/cpp 32488ff6307Sdrahn.elif ${COMPILER_VERSION:L} == "gcc3" 325a222f159Sespie (cd ${.CURDIR}/gnu/usr.bin/gcc; \ 326a222f159Sespie MAKEOBJDIR=obj.${MACHINE}.${TARGET} \ 32756074f2fSmiod TARGET_ARCH=${TARGET_ARCH} TARGET_CPU=${TARGET_CPU} \ 32856074f2fSmiod CROSSDIR=${CROSSDIR} \ 329a071a6c7Sdrahn PATH=${CROSSPATH} ${MAKE} -f Makefile.bsd-wrapper depend && \ 330a222f159Sespie MAKEOBJDIR=obj.${MACHINE}.${TARGET} \ 33156074f2fSmiod TARGET_ARCH=${TARGET_ARCH} TARGET_CPU=${TARGET_CPU} \ 33256074f2fSmiod CROSSDIR=${CROSSDIR} \ 333a222f159Sespie ${MAKE} -f Makefile.bsd-wrapper all && \ 334a071a6c7Sdrahn env CROSSDIR=${CROSSDIR} DESTDIR=${CROSSDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \ 335a071a6c7Sdrahn PATH=${CROSSPATH} ${MAKE} -f Makefile.bsd-wrapper install) 336a071a6c7Sdrahn cp -f ${CROSSDIR}/usr/bin/${TARGET_CANON}-g++ ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-c++ 337a071a6c7Sdrahn cp -f ${CROSSDIR}/usr/bin/gcc ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-cc 338a071a6c7Sdrahn cp -f ${CROSSDIR}/usr/libexec/cpp ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-libexeccpp 339a071a6c7Sdrahn rm -f ${CROSSDIR}/usr/bin/gcc ${CROSSDIR}/usr/bin/cc ${CROSSDIR}/usr/libexec/cpp 340a071a6c7Sdrahn ln -sf ${TARGET_CANON}-cc ${CROSSDIR}/usr/${TARGET_CANON}/bin/cc 341a071a6c7Sdrahn ln -sf ${TARGET_CANON}-c++ ${CROSSDIR}/usr/${TARGET_CANON}/bin/c++ 342a071a6c7Sdrahn rm -f ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-cpp 343a071a6c7Sdrahn sed -e 's#/usr/libexec/cpp#${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-libexeccpp#' \ 344846f21d9Sdrahn -e 's/@GNUC@/-D__GNUC__/' \ 345a071a6c7Sdrahn -e 's#/usr/include#${CROSSDIR}/usr/include#' \ 346a071a6c7Sdrahn -e 's/@dollaropt@//' \ 347a071a6c7Sdrahn ${.CURDIR}/usr.bin/cpp/cpp.sh > ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-cpp 348a071a6c7Sdrahn chmod ${BINMODE} ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-cpp 349a071a6c7Sdrahn chown ${BINOWN}:${BINGRP} ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-cpp 350a071a6c7Sdrahn ln -sf ${TARGET_CANON}-cpp ${CROSSDIR}/usr/${TARGET_CANON}/bin/cpp 351a222f159Sespie.else 352a222f159Sespie (cd ${CROSSDIR}/usr/obj/gnu/egcs/gcc; \ 353a222f159Sespie /bin/sh ${.CURDIR}/gnu/egcs/gcc/configure \ 354a222f159Sespie --with-gnu-as --with-gnu-ld --prefix ${CROSSDIR}/usr \ 355141bf37aSespie --target ${TARGET_CANON} \ 356a222f159Sespie --enable-languages="c,c++" --enable-cpp --disable-nls \ 357a222f159Sespie --with-gxx-include-dir=${CROSSDIR}/usr/include/g++ && \ 358a222f159Sespie PATH=${CROSSPATH} ${MAKE} BISON=yacc LANGUAGES="${CROSSLANGS}" \ 359a222f159Sespie CFLAGS="${CFLAGS} -I${.CURDIR}/gnu/lib/libiberty/include" \ 360a222f159Sespie LIBIBERTY_INCLUDES=${.CURDIR}/gnu/lib/libiberty/include \ 361a222f159Sespie DEMANGLER_PROG= DEMANGLE_H= LDFLAGS="${LDSTATIC}" build_infodir=. \ 362a222f159Sespie GCC_FOR_TARGET="./xgcc -B./ -I${CROSSDIR}/usr/include" && \ 363a222f159Sespie ${MAKE} BISON=yacc LANGUAGES="${CROSSLANGS}" LDFLAGS="${LDSTATIC}" \ 364a222f159Sespie GCC_FOR_TARGET="./xgcc -B./ -I${CROSSDIR}/usr/include" \ 365a222f159Sespie CFLAGS="${CFLAGS} -I${.CURDIR}/gnu/lib/libiberty/include" \ 366a222f159Sespie LIBIBERTY_INCLUDES=${.CURDIR}/gnu/lib/libiberty/include \ 367a222f159Sespie build_infodir=. INSTALL_MAN= INSTALL_HEADERS_DIR= install) 368a071a6c7Sdrahn mv -f ${CROSSDIR}/usr/bin/cpp ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-libexeccpp 369a071a6c7Sdrahn rm -f ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-cpp 370a071a6c7Sdrahn sed -e 's#/usr/libexec/cpp#${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-libexeccpp#' \ 371846f21d9Sdrahn -e 's/@GNUC@/-D__GNUC__/' \ 372a222f159Sespie -e 's#/usr/include#${CROSSDIR}/usr/include#' \ 373a071a6c7Sdrahn -e 's/@dollaropt@/-$$/' ${.CURDIR}/usr.bin/cpp/cpp.sh > \ 374a071a6c7Sdrahn ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-cpp 375a071a6c7Sdrahn chmod ${BINMODE} \ 376a071a6c7Sdrahn ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-cpp 377a071a6c7Sdrahn chown ${BINOWN}:${BINGRP}\ 378a071a6c7Sdrahn ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-cpp 379a071a6c7Sdrahn ln -sf ${TARGET_CANON}-cpp ${CROSSDIR}/usr/${TARGET_CANON}/bin/cpp 380a071a6c7Sdrahn ln -sf gcc ${CROSSDIR}/usr/${TARGET_CANON}/bin/cc 381a071a6c7Sdrahn ln -sf gcc ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-cc 382a071a6c7Sdrahn cp -f ${CROSSDIR}/usr/bin/${TARGET_CANON}-g++ ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-c++ 383a071a6c7Sdrahn ln -sf ${TARGET_CANON}-c++ ${CROSSDIR}/usr/${TARGET_CANON}/bin/c++ 384a222f159Sespie.endif 385a222f159Sespie @touch ${CROSSGCC} 386a222f159Sespie 387a222f159Sespie# XXX MAKEOBJDIR maybe should be obj.${TARGET} here, revisit later 388a222f159Sespiecross-lib: ${CROSSGCC} 38956074f2fSmiod MACHINE=${TARGET} \ 39056074f2fSmiod MACHINE_ARCH=${TARGET_ARCH} MACHINE_CPU=${TARGET_CPU}; \ 39156074f2fSmiod export MACHINE MACHINE_ARCH MACHINE_CPU; \ 392a222f159Sespie (cd ${.CURDIR}/lib; \ 393a222f159Sespie for lib in csu libc; do \ 394a222f159Sespie (cd $$lib; \ 395a222f159Sespie eval ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \ 396a071a6c7Sdrahn ${MAKE} WANTLINT=no depend all ;\ 397a071a6c7Sdrahn eval ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} DESTDIR=${CROSSDIR} \ 398a071a6c7Sdrahn ${MAKE} WANTLINT=no install); \ 399a222f159Sespie done; \ 400a222f159Sespie eval ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \ 401a222f159Sespie SKIPDIR=\"${NO_CROSS} libocurses/PSD.doc\" \ 402a071a6c7Sdrahn ${MAKE} WANTLINT=no depend all ; \ 403a071a6c7Sdrahn eval ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} DESTDIR=${CROSSDIR} \ 404a071a6c7Sdrahn SKIPDIR=\"${NO_CROSS} libocurses/PSD.doc\" \ 405a071a6c7Sdrahn ${MAKE} WANTLINT=no install) 406a222f159Sespie 407a222f159Sespiecross-bin: ${CROSSOBJ} 40856074f2fSmiod MACHINE=${TARGET} \ 40956074f2fSmiod MACHINE_ARCH=${TARGET_ARCH} MACHINE_CPU=${TARGET_CPU}; \ 41056074f2fSmiod export MACHINE MACHINE_ARCH MACHINE_CPU; \ 411a222f159Sespie for i in libexec bin sbin usr.bin usr.sbin; do \ 412a222f159Sespie (cd ${.CURDIR}/$$i; \ 413a222f159Sespie eval ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \ 414a222f159Sespie SKIPDIR=\"${BINUTILS} ${NO_CROSS}\" \ 415a071a6c7Sdrahn ${MAKE} depend all ; \ 416a071a6c7Sdrahn eval ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} DESTDIR=${CROSSDIR} \ 417a071a6c7Sdrahn SKIPDIR=\"${BINUTILS} ${NO_CROSS}\" \ 418a071a6c7Sdrahn ${MAKE} install); \ 419a071a6c7Sdrahn done 420a071a6c7Sdrahn 421a071a6c7Sdrahncross-gnu: ${CROSSOBJ} 42256074f2fSmiod MACHINE=${TARGET} \ 42356074f2fSmiod MACHINE_ARCH=${TARGET_ARCH} MACHINE_CPU=${TARGET_CPU}; \ 42456074f2fSmiod export MACHINE MACHINE_ARCH MACHINE_CPU; \ 425a071a6c7Sdrahn for i in gnu/lib gnu/usr.sbin gnu/usr.bin ; do \ 426a071a6c7Sdrahn (cd ${.CURDIR}/$$i; \ 427a071a6c7Sdrahn eval ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \ 428a071a6c7Sdrahn SKIPDIR=\"${NO_CROSS}\" \ 429a071a6c7Sdrahn ${MAKE} depend all ; \ 430a071a6c7Sdrahn eval ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} DESTDIR=${CROSSDIR} \ 431a071a6c7Sdrahn SKIPDIR=\"${NO_CROSS}\" \ 432a071a6c7Sdrahn ${MAKE} install); \ 433a071a6c7Sdrahn done 434a071a6c7Sdrahn 435a071a6c7Sdrahncross-share: ${CROSSOBJ} 43656074f2fSmiod MACHINE=${TARGET} \ 43756074f2fSmiod MACHINE_ARCH=${TARGET_ARCH} MACHINE_CPU=${TARGET_CPU}; \ 43856074f2fSmiod export MACHINE MACHINE_ARCH MACHINE_CPU; \ 439a071a6c7Sdrahn for i in share; do \ 440a071a6c7Sdrahn (cd ${.CURDIR}/$$i; \ 441a071a6c7Sdrahn eval ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \ 442a071a6c7Sdrahn SKIPDIR=\"${NO_CROSS}\" \ 443a071a6c7Sdrahn ${MAKE} depend all install); \ 444a071a6c7Sdrahn done 445a071a6c7Sdrahn 446a071a6c7Sdrahncross-sys: ${CROSSOBJ} 44756074f2fSmiod MACHINE=${TARGET} \ 44856074f2fSmiod MACHINE_ARCH=${TARGET_ARCH} MACHINE_CPU=${TARGET_CPU}; \ 44956074f2fSmiod export MACHINE MACHINE_ARCH MACHINE_CPU; \ 450a071a6c7Sdrahn for i in sys; do \ 451a071a6c7Sdrahn (cd ${.CURDIR}/$$i; \ 452a071a6c7Sdrahn eval ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \ 453a071a6c7Sdrahn SKIPDIR=\"${NO_CROSS}\" \ 454a222f159Sespie ${MAKE} depend all install); \ 455a222f159Sespie done 456a222f159Sespie 457a222f159Sespiecross-etc-root-var: ${CROSSOBJ} 458a222f159Sespie (cd ${.CURDIR}/etc && \ 45956074f2fSmiod MACHINE=${TARGET} \ 46056074f2fSmiod MACHINE_ARCH=${TARGET_ARCH} MACHINE_CPU=${TARGET_CPU} \ 46156074f2fSmiod DESTDIR=${CROSSDIR} \ 46256074f2fSmiod ${MAKE} distribution-etc-root-var) 463a222f159Sespie 464a222f159Sespiecross-depend: 465a222f159Sespie @(cd ${.CURDIR} && \ 466a222f159Sespie BSDOBJDIR=${CROSSDIR}/usr/obj \ 467a222f159Sespie BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \ 468a222f159Sespie SKIPDIR="${NO_CROSS}" \ 469a222f159Sespie ${MAKE} depend) 470a222f159Sespie 471a222f159Sespiecross-clean: 472a222f159Sespie @(cd ${.CURDIR} && \ 473a222f159Sespie BSDOBJDIR=${CROSSDIR}/usr/obj \ 474a222f159Sespie BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \ 475a222f159Sespie SKIPDIR="${NO_CROSS}" \ 476a222f159Sespie ${MAKE} clean) 477a222f159Sespie 478a222f159Sespiecross-cleandir: 479a222f159Sespie @(cd ${.CURDIR} && \ 480a222f159Sespie BSDOBJDIR=${CROSSDIR}/usr/obj \ 481a222f159Sespie BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \ 482a222f159Sespie SKIPDIR="${NO_CROSS}" \ 483a222f159Sespie ${MAKE} cleandir) 484