xref: /openbsd/Makefile.cross (revision 6231a781)
1*6231a781Smiod# $OpenBSD: Makefile.cross,v 1.65 2013/07/05 21:29:51 miod 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" || \
10f78813fcSderaadt	 ${TARGET} == "zaurus")
11a78fab76SmiodTARGET_ARCH=	arm
12a0c16a81Smatthew.elif	(${TARGET} == "hp300" || ${TARGET} == "mvme68k")
13a78fab76SmiodTARGET_ARCH=	m68k
14ad744452Smiod.elif	(${TARGET} == "aviion" || ${TARGET} == "luna88k" || \
15ad744452Smiod	 ${TARGET} == "mvme88k")
16a78fab76SmiodTARGET_ARCH=	m88k
17c3ed6a03Ssyuu.elif	(${TARGET} == "sgi" || ${TARGET} == "octeon")
18a78fab76SmiodTARGET_ARCH=	mips64
1956074f2fSmiod.elif	(${TARGET} == "loongson")
2056074f2fSmiodTARGET_ARCH=	mips64el
2156074f2fSmiodTARGET_CPU=	mips64
22990b83faSderaadt.elif	(${TARGET} == "solbourne")
23990b83faSderaadtTARGET_ARCH=	sparc
245b036de8Sderaadt.elif	(${TARGET} == "macppc" || ${TARGET} == "socppc")
25a78fab76SmiodTARGET_ARCH=	powerpc
262f050487Smiod.elif	(${TARGET} == "landisk")
272f050487SmiodTARGET_ARCH=	sh
28a78fab76Smiod.else
29a78fab76SmiodTARGET_ARCH=	${TARGET}
30a78fab76Smiod.endif
3156074f2fSmiodTARGET_CPU?=	${TARGET_ARCH}
32a78fab76Smiod
33a732d4d4Sguenther# List of LP64 archs
34a732d4d4Sguenther# XXX move to bsd.*.mk?
35a732d4d4SguentherLP64_ARCH = amd64 alpha hppa64 ia64 mips64 sparc64 vax64
36a732d4d4Sguenther
37a732d4d4SguentherTARGET_IS_LP64 =
38a732d4d4SguentherMACHINE_IS_LP64 =
39a732d4d4Sguenther.for _ in ${LP64_ARCH}
40a732d4d4Sguenther. if !empty(TARGET_ARCH:M$_)
41a732d4d4Sguenther    TARGET_IS_LP64 = yes
42a732d4d4Sguenther. endif
43a732d4d4Sguenther. if !empty(MACHINE_ARCH:M$_)
44a732d4d4Sguenther    MACHINE_IS_LP64 = yes
45a732d4d4Sguenther. endif
46a732d4d4Sguenther.endfor
47a732d4d4Sguenther
48a071a6c7Sdrahn#CROSSCPPFLAGS?=	-nostdinc -I${CROSSDIR}/usr/include
49a071a6c7Sdrahn#CROSSLDFLAGS?=	-nostdlib -L${CROSSDIR}/usr/lib -static
50a071a6c7SdrahnCROSSCFLAGS?=	${CROSSCPPFLAGS} -O2 ${PIPE} ${DEBUG}
51a222f159SespieCROSSCXXFLAGS?=	${CROSSCPPFLAGS}
52a071a6c7Sdrahn#LDSTATIC?=	-static
53a071a6c7Sdrahn
54a222f159SespieCROSSDIR=	${DESTDIR}/usr/cross/${TARGET}
55a071a6c7SdrahnCROSSENV=	AR=${CROSSDIR}/usr/${TARGET_CANON}/bin/ar \
56a071a6c7Sdrahn		AS=${CROSSDIR}/usr/${TARGET_CANON}/bin/as \
57a071a6c7Sdrahn		CC=${CROSSDIR}/usr/${TARGET_CANON}/bin/cc \
58a071a6c7Sdrahn		CPP=${CROSSDIR}/usr/${TARGET_CANON}/bin/cpp \
59a071a6c7Sdrahn		CXX=${CROSSDIR}/usr/${TARGET_CANON}/bin/c++ \
60a071a6c7Sdrahn		LD=${CROSSDIR}/usr/${TARGET_CANON}/bin/ld \
61a071a6c7Sdrahn		OBJCOPY=${CROSSDIR}/usr/${TARGET_CANON}/bin/objcopy \
62a071a6c7Sdrahn		LORDER=/usr/bin/lorder RANLIB=${CROSSDIR}/usr/${TARGET_CANON}/bin/ranlib \
63a071a6c7Sdrahn		STRIP=${CROSSDIR}/usr/${TARGET_CANON}/bin/strip \
64a071a6c7Sdrahn		HOSTCC=\"${CC}\" HOSTCXX=\"${CXX}\" NOMAN= \
65a222f159Sespie		HOSTCFLAGS=\"${CFLAGS}\" HOSTCXXFLAGS=\"${CXXFLAGS}\" \
66a222f159Sespie		HOSTLDFLAGS=\"${LDFLAGS}\" \
67a222f159Sespie		CFLAGS=\"${CROSSCFLAGS}\" CPPFLAGS=\"${CROSSCPPFLAGS}\" \
68a222f159Sespie		CXXFLAGS=\"${CROSSCXXFLAGS}\" \
69a222f159Sespie		LDFLAGS=\"${CROSSLDFLAGS}\"
70a071a6c7SdrahnCROSSADDPATH=:${CROSSDIR}/usr/${TARGET_CANON}/bin
71a071a6c7SdrahnCROSSPATH=	/usr/bin:/bin:/usr/sbin:/sbin${CROSSADDPATH}
72a222f159SespieCROSSLANGS?=	c c++
73a222f159Sespie
74141bf37aSespieTARGET_CANON=`cat ${CROSSDIR}/TARGET_CANON`
75141bf37aSespie
76a222f159SespieCROSSDIRS=	${CROSSDIR}/.dirs_done
77a071a6c7SdrahnCROSSOBJ=	${CROSSDIR}/.obj_done
78a071a6c7SdrahnCROSSINCLUDES=	${CROSSDIR}/.includes_done
79a071a6c7SdrahnCROSSBINUTILS=	${CROSSDIR}/.binutils_done
80a071a6c7SdrahnCROSSGCC=	${CROSSDIR}/.gcc_done
81bab9f9c3Sdjm#NO_CROSS=	isakmpd keynote ssh
82a222f159Sespie
83b14edc4dSdrahn.include <bsd.own.mk>
84b14edc4dSdrahn
859102a13aSdrahn.for _arch in ${TARGET_ARCH}
869102a13aSdrahn.if !empty(GCC2_ARCH:M${_arch})
873f5a0f4fSmiodCOMPILER_VERSION=gcc2
889102a13aSdrahn.elif !empty(GCC4_ARCH:M${_arch})
893f5a0f4fSmiodCOMPILER_VERSION=gcc4
9088ff6307Sdrahn.else
913f5a0f4fSmiodCOMPILER_VERSION=gcc3
9288ff6307Sdrahn.endif
9388ff6307Sdrahn
949102a13aSdrahn.if !empty(BINUTILS217_ARCH:M${_arch})
959102a13aSdrahnBINUTILS_VERSION=binutils-2.17
969102a13aSdrahn.else
979102a13aSdrahnBINUTILS_VERSION=binutils
989102a13aSdrahn.endif
999102a13aSdrahn
1004eec3ddaSmiod.if !empty(PIE_ARCH:M${_arch})
1014eec3ddaSmiodNOPIE_FLAGS=-fno-pie
1024eec3ddaSmiodNOPIE_LDFLAGS=-nopie
1034eec3ddaSmiodPIE_DEFAULT=${DEFAULT_PIE_DEF}
1044eec3ddaSmiod.else
1054eec3ddaSmiodNOPIE_FLAGS=
1064eec3ddaSmiodPIE_DEFAULT=
1074eec3ddaSmiod.endif
1084eec3ddaSmiod
1099102a13aSdrahnBINUTILS=	ar as gasp ld nm objcopy objdump ranlib readelf size \
1109102a13aSdrahn		strings strip
1119102a13aSdrahnBINUTILS_DIR=gnu/usr.bin/${BINUTILS_VERSION}
1129102a13aSdrahn.endfor
1139102a13aSdrahn
114141bf37aSespie# no libcrypto.... these won't build
115a071a6c7Sdrahn#NO_CROSS+=	dc login_krb5 login_krb5-or-pwd passwd ppp tcpdump telnet \
116a071a6c7Sdrahn#		ftp gzsig sasyncd vnconfig
117a071a6c7Sdrahn
118141bf37aSespie# explicit cross-compile
119141bf37aSespieNO_CROSS+=bind
120a071a6c7SdrahnNO_CROSS+=httpd
121a071a6c7SdrahnNO_CROSS+=microcode
1229102a13aSdrahnNO_CROSS+=groff lynx binutils binutils-2.17 perl texinfo gcc cvs
123e3bab464SdrahnNO_CROSS+=nsd
124e4aad24cSjsingNO_CROSS+=nginx
125372e2726SjsingNO_CROSS+=sqlite3
126141bf37aSespie
127a222f159Sespiecross-dirs:	${CROSSDIRS}
128a222f159Sespiecross-obj:	${CROSSOBJ}
129a222f159Sespiecross-includes:	${CROSSINCLUDES}
130a222f159Sespiecross-binutils:	${CROSSBINUTILS}
131a222f159Sespiecross-gcc:	${CROSSGCC}
132a222f159Sespie
133a222f159Sespiecross-env:
134a222f159Sespie	@echo ${CROSSENV} MACHINE=${TARGET} \
135d49bf4ccSmickey	    MACHINE_ARCH=`cat ${CROSSDIR}/TARGET_ARCH` \
13656074f2fSmiod	    MACHINE_CPU=`cat ${CROSSDIR}/TARGET_CPU` \
137d49bf4ccSmickey	    BSDOBJDIR=${CROSSDIR}/usr/obj \
138d49bf4ccSmickey	    BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET}
139a222f159Sespie
140a222f159Sespie${CROSSDIRS}:
141b14edc4dSdrahn.if ${TARGET_ARCH} == "arm" &&  ${MACHINE_IS_LP64} == "yes"
142b14edc4dSdrahn# this config is allowed
143b14edc4dSdrahn.elif ${TARGET_IS_LP64} != ${MACHINE_IS_LP64}
144a732d4d4Sguenther@echo "host and target have different size longs"
145a732d4d4Sguenther@echo "cross compiler generates bad code; aborting"; exit 1
146a732d4d4Sguenther.endif
147a222f159Sespie	@-mkdir -p ${CROSSDIR}
148a78fab76Smiod	@echo ${TARGET_ARCH} > ${CROSSDIR}/TARGET_ARCH
149a222f159Sespie	@echo TARGET_ARCH is `cat ${CROSSDIR}/TARGET_ARCH`
15056074f2fSmiod	@echo ${TARGET_CPU} > ${CROSSDIR}/TARGET_CPU
15156074f2fSmiod	@echo TARGET_CPU is `cat ${CROSSDIR}/TARGET_CPU`
152a222f159Sespie	@eval `grep '^osr=' sys/conf/newvers.sh`; \
15356074f2fSmiod	   echo ${TARGET_ARCH}-unknown-openbsd$$osr > \
154a222f159Sespie	   ${CROSSDIR}/TARGET_CANON
155a222f159Sespie	@-mkdir -p ${CROSSDIR}
156141bf37aSespie	@-mkdir -p ${CROSSDIR}/usr/${TARGET_CANON}
157a222f159Sespie	@ln -sf ${CROSSDIR}/usr/include \
158141bf37aSespie	    ${CROSSDIR}/usr/${TARGET_CANON}/include
159a222f159Sespie	@ln -sf ${CROSSDIR}/usr/lib \
160141bf37aSespie	    ${CROSSDIR}/usr/${TARGET_CANON}/lib
161141bf37aSespie	@-mkdir -p ${CROSSDIR}/usr/${TARGET_CANON}/bin
162a222f159Sespie	@(cd ${.CURDIR}/etc && DESTDIR=${CROSSDIR} ${MAKE} distrib-dirs)
163a222f159Sespie	@touch ${CROSSDIRS}
164a222f159Sespie
165a222f159Sespie${CROSSOBJ}:	${CROSSDIRS}
166a222f159Sespie	@-mkdir -p ${CROSSDIR}/usr/obj
167a222f159Sespie	@(cd ${.CURDIR} && \
168a222f159Sespie	    BSDOBJDIR=${CROSSDIR}/usr/obj \
16988ff6307Sdrahn	    COMPILER_VERSION=${COMPILER_VERSION} \
170a222f159Sespie	    MACHINE=${TARGET} \
17156074f2fSmiod	    MACHINE_ARCH=${TARGET_ARCH} MACHINE_CPU=${TARGET_CPU} \
172a222f159Sespie	    BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
173a222f159Sespie	    ${MAKE} obj)
174a222f159Sespie	@touch ${CROSSOBJ}
175a222f159Sespie
176a222f159Sespie${CROSSINCLUDES}:	${CROSSOBJ}
177a222f159Sespie	@-mkdir -p ${CROSSDIR}/usr/include
178a222f159Sespie	@(cd ${.CURDIR}/include && \
17988ff6307Sdrahn	    COMPILER_VERSION=${COMPILER_VERSION} \
18056074f2fSmiod	    MACHINE=${TARGET} \
18156074f2fSmiod	    MACHINE_ARCH=${TARGET_ARCH} MACHINE_CPU=${TARGET_CPU} \
182a222f159Sespie	    MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
18356074f2fSmiod	    TARGET_ARCH=${TARGET_ARCH} TARGET_CPU=${TARGET_CPU} \
184a222f159Sespie	    ${MAKE} prereq && \
18588ff6307Sdrahn	    COMPILER_VERSION=${COMPILER_VERSION} \
18656074f2fSmiod	    MACHINE=${TARGET} \
18756074f2fSmiod	    MACHINE_ARCH=${TARGET_ARCH} MACHINE_CPU=${TARGET_CPU} \
188a222f159Sespie	    MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
18956074f2fSmiod	    TARGET_ARCH=${TARGET_ARCH} TARGET_CPU=${TARGET_CPU} \
190a222f159Sespie	    ${MAKE} DESTDIR=${CROSSDIR} includes)
191a222f159Sespie	@touch ${CROSSINCLUDES}
192a222f159Sespie
193a222f159Sespie${CROSSBINUTILS}:	${CROSSINCLUDES}
1949102a13aSdrahn	(cd ${.CURDIR}/${BINUTILS_DIR}; \
195a222f159Sespie	    MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
196*6231a781Smiod	    PIE_DEFAULT=${PIE_DEFAULT} \
19756074f2fSmiod	    TARGET_ARCH=${TARGET_ARCH} TARGET_CPU=${TARGET_CPU} \
19856074f2fSmiod	    PATH=${CROSSPATH} \
199a222f159Sespie	    ${MAKE} -f Makefile.bsd-wrapper depend && \
200a222f159Sespie	    MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
201*6231a781Smiod	    PIE_DEFAULT=${PIE_DEFAULT} \
20256074f2fSmiod	    TARGET_ARCH=${TARGET_ARCH} TARGET_CPU=${TARGET_CPU} \
203a222f159Sespie	    ${MAKE} -f Makefile.bsd-wrapper all && \
204a222f159Sespie	    DESTDIR=${CROSSDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
20588ff6307Sdrahn	    COMPILER_VERSION=${COMPILER_VERSION} \
206*6231a781Smiod	    PIE_DEFAULT=${PIE_DEFAULT} \
20756074f2fSmiod	    MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
20856074f2fSmiod	    TARGET_ARCH=${TARGET_ARCH} TARGET_CPU=${TARGET_CPU} \
209a222f159Sespie	    ${MAKE} -f Makefile.bsd-wrapper install)
210a222f159Sespie	@for cmd in ${BINUTILS}; do \
211a071a6c7Sdrahn	 if [ -e ${CROSSDIR}/usr/bin/${TARGET_CANON}-$$cmd ] ; then \
212a071a6c7Sdrahn	    cp -f ${CROSSDIR}/usr/bin/${TARGET_CANON}-$$cmd \
213a071a6c7Sdrahn	        ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-$$cmd ; \
214a071a6c7Sdrahn	    ln -sf ${TARGET_CANON}-$$cmd \
215141bf37aSespie		${CROSSDIR}/usr/${TARGET_CANON}/bin/$$cmd ;\
216a071a6c7Sdrahn	   if [ -e ${CROSSDIR}/usr/bin/$$cmd ] ; then \
217a071a6c7Sdrahn	    rm -f ${CROSSDIR}/usr/bin/$$cmd ;\
218a071a6c7Sdrahn	   fi ;\
219a071a6c7Sdrahn	 elif [ -e ${CROSSDIR}/usr/bin/$$cmd ] ; then \
220a071a6c7Sdrahn	    cp -f ${CROSSDIR}/usr/bin/$$cmd \
221a071a6c7Sdrahn	        ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-$$cmd ; \
222a071a6c7Sdrahn	    ln -sf ${TARGET_CANON}-$$cmd \
223a071a6c7Sdrahn		${CROSSDIR}/usr/${TARGET_CANON}/bin/$$cmd ;\
224a071a6c7Sdrahn	    mv ${CROSSDIR}/usr/bin/$$cmd \
225a071a6c7Sdrahn		${CROSSDIR}/usr/bin/${TARGET_CANON}-$$cmd ;\
226a222f159Sespie	 fi ;\
227a222f159Sespie	done
228a222f159Sespie	@touch ${CROSSBINUTILS}
229a222f159Sespie
230a222f159Sespie
231a222f159Sespie${CROSSGCC}:		${CROSSBINUTILS}
23288ff6307Sdrahn.if ${COMPILER_VERSION:L} == "gcc4"
23388ff6307Sdrahn	(cd ${.CURDIR}/gnu/usr.bin/cc; \
23488ff6307Sdrahn	    MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
23588ff6307Sdrahn	    TARGET_ARCH=${TARGET_ARCH} TARGET_CPU=${TARGET_CPU} \
23688ff6307Sdrahn	    CROSSDIR=${CROSSDIR} \
23788ff6307Sdrahn	    MACHINE=${TARGET} \
23888ff6307Sdrahn	    PATH=${CROSSPATH} ${MAKE} depend  )
23988ff6307Sdrahn	(cd ${.CURDIR}/gnu/usr.bin/cc; \
24088ff6307Sdrahn	    MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
24188ff6307Sdrahn	    TARGET_ARCH=${TARGET_ARCH} TARGET_CPU=${TARGET_CPU} \
24288ff6307Sdrahn	    CROSSDIR=${CROSSDIR} \
24388ff6307Sdrahn	    MACHINE=${TARGET} \
24488ff6307Sdrahn	    ${MAKE} all )
24588ff6307Sdrahn	(cd ${.CURDIR}/gnu/usr.bin/cc; \
24688ff6307Sdrahn	    env CROSSDIR=${CROSSDIR} DESTDIR=${CROSSDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
24788ff6307Sdrahn	    TARGET_ARCH=${TARGET_ARCH} TARGET_CPU=${TARGET_CPU} \
24888ff6307Sdrahn	    MACHINE=${TARGET} \
24988ff6307Sdrahn	    PATH=${CROSSPATH} ${MAKE} install)
2508d925239Sdrahn	cp -f ${CROSSDIR}/usr/bin/g++  ${CROSSDIR}/usr/bin/${TARGET_CANON}-g++
25188ff6307Sdrahn	cp -f ${CROSSDIR}/usr/bin/${TARGET_CANON}-g++ ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-c++
25288ff6307Sdrahn	cp -f ${CROSSDIR}/usr/libexec/cpp ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-libexeccpp
2538d925239Sdrahn	cp -f ${CROSSDIR}/usr/bin/gcc ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-cc
25488ff6307Sdrahn	ln -sf ${TARGET_CANON}-cc ${CROSSDIR}/usr/${TARGET_CANON}/bin/cc
2558d925239Sdrahn
2568d925239Sdrahn	cp -f ${CROSSDIR}/usr/bin/gcc ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-cc
2578d925239Sdrahn	rm -f ${CROSSDIR}/usr/bin/gcc  ${CROSSDIR}/usr/bin/g++  ${CROSSDIR}/usr/bin/cc ${CROSSDIR}/usr/libexec/cpp
2588d925239Sdrahn	# fix links
25988ff6307Sdrahn	rm -f ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-cpp
26088ff6307Sdrahn	sed -e 's#/usr/libexec/cpp#${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-libexeccpp#' \
261846f21d9Sdrahn	    -e 's/@GNUC@//' \
26288ff6307Sdrahn	    -e 's#/usr/include#${CROSSDIR}/usr/include#' \
26388ff6307Sdrahn	    -e 's/@dollaropt@//' \
26488ff6307Sdrahn	    ${.CURDIR}/usr.bin/cpp/cpp.sh > ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-cpp
26588ff6307Sdrahn	chmod ${BINMODE} ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-cpp
26688ff6307Sdrahn	chown ${BINOWN}:${BINGRP} ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-cpp
26788ff6307Sdrahn	ln -sf ${TARGET_CANON}-cpp ${CROSSDIR}/usr/${TARGET_CANON}/bin/cpp
26888ff6307Sdrahn.elif ${COMPILER_VERSION:L} == "gcc3"
269a222f159Sespie	(cd ${.CURDIR}/gnu/usr.bin/gcc; \
270a222f159Sespie	    MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
27156074f2fSmiod	    TARGET_ARCH=${TARGET_ARCH} TARGET_CPU=${TARGET_CPU} \
27256074f2fSmiod	    CROSSDIR=${CROSSDIR} \
273a071a6c7Sdrahn	    PATH=${CROSSPATH} ${MAKE} -f Makefile.bsd-wrapper depend && \
274a222f159Sespie	    MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
27556074f2fSmiod	    TARGET_ARCH=${TARGET_ARCH} TARGET_CPU=${TARGET_CPU} \
27656074f2fSmiod	    CROSSDIR=${CROSSDIR} \
277a222f159Sespie	    ${MAKE} -f Makefile.bsd-wrapper all && \
278a071a6c7Sdrahn	    env CROSSDIR=${CROSSDIR} DESTDIR=${CROSSDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
279a071a6c7Sdrahn	    PATH=${CROSSPATH} ${MAKE} -f Makefile.bsd-wrapper install)
280a071a6c7Sdrahn	cp -f ${CROSSDIR}/usr/bin/${TARGET_CANON}-g++ ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-c++
281a071a6c7Sdrahn	cp -f ${CROSSDIR}/usr/bin/gcc ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-cc
282a071a6c7Sdrahn	cp -f ${CROSSDIR}/usr/libexec/cpp ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-libexeccpp
283a071a6c7Sdrahn	rm -f ${CROSSDIR}/usr/bin/gcc  ${CROSSDIR}/usr/bin/cc ${CROSSDIR}/usr/libexec/cpp
284a071a6c7Sdrahn	ln -sf ${TARGET_CANON}-cc ${CROSSDIR}/usr/${TARGET_CANON}/bin/cc
285a071a6c7Sdrahn	ln -sf ${TARGET_CANON}-c++ ${CROSSDIR}/usr/${TARGET_CANON}/bin/c++
286a071a6c7Sdrahn	rm -f ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-cpp
287a071a6c7Sdrahn	sed -e 's#/usr/libexec/cpp#${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-libexeccpp#' \
288846f21d9Sdrahn	    -e 's/@GNUC@/-D__GNUC__/' \
289a071a6c7Sdrahn	    -e 's#/usr/include#${CROSSDIR}/usr/include#' \
290a071a6c7Sdrahn	    -e 's/@dollaropt@//' \
291a071a6c7Sdrahn	    ${.CURDIR}/usr.bin/cpp/cpp.sh > ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-cpp
292a071a6c7Sdrahn	chmod ${BINMODE} ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-cpp
293a071a6c7Sdrahn	chown ${BINOWN}:${BINGRP} ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-cpp
294a071a6c7Sdrahn	ln -sf ${TARGET_CANON}-cpp ${CROSSDIR}/usr/${TARGET_CANON}/bin/cpp
295a222f159Sespie.else
296a222f159Sespie	(cd ${CROSSDIR}/usr/obj/gnu/egcs/gcc; \
297a222f159Sespie	    /bin/sh ${.CURDIR}/gnu/egcs/gcc/configure \
298a222f159Sespie	    --with-gnu-as --with-gnu-ld --prefix ${CROSSDIR}/usr \
299141bf37aSespie	    --target ${TARGET_CANON} \
300a222f159Sespie	    --enable-languages="c,c++" --enable-cpp --disable-nls \
301a222f159Sespie	    --with-gxx-include-dir=${CROSSDIR}/usr/include/g++ && \
302a222f159Sespie	    PATH=${CROSSPATH} ${MAKE} BISON=yacc LANGUAGES="${CROSSLANGS}" \
303e1e6bc48Smiod	    CFLAGS="${CFLAGS} -DOPENBSD_CROSS -I${.CURDIR}/gnu/lib/libiberty/include" \
304a222f159Sespie	    LIBIBERTY_INCLUDES=${.CURDIR}/gnu/lib/libiberty/include \
305a222f159Sespie	    DEMANGLER_PROG= DEMANGLE_H= LDFLAGS="${LDSTATIC}" build_infodir=. \
306a222f159Sespie	    GCC_FOR_TARGET="./xgcc -B./ -I${CROSSDIR}/usr/include" && \
307a222f159Sespie	    ${MAKE} BISON=yacc LANGUAGES="${CROSSLANGS}" LDFLAGS="${LDSTATIC}" \
308a222f159Sespie	    GCC_FOR_TARGET="./xgcc -B./ -I${CROSSDIR}/usr/include" \
309e1e6bc48Smiod	    CFLAGS="${CFLAGS} -DOPENBSD_CROSS -I${.CURDIR}/gnu/lib/libiberty/include" \
310a222f159Sespie	    LIBIBERTY_INCLUDES=${.CURDIR}/gnu/lib/libiberty/include \
311a222f159Sespie	    build_infodir=. INSTALL_MAN= INSTALL_HEADERS_DIR= install)
312a071a6c7Sdrahn	mv -f ${CROSSDIR}/usr/bin/cpp ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-libexeccpp
313a071a6c7Sdrahn	rm -f ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-cpp
314a071a6c7Sdrahn	sed -e 's#/usr/libexec/cpp#${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-libexeccpp#' \
315846f21d9Sdrahn	    -e 's/@GNUC@/-D__GNUC__/' \
316a222f159Sespie	    -e 's#/usr/include#${CROSSDIR}/usr/include#' \
317a071a6c7Sdrahn	    -e 's/@dollaropt@/-$$/' ${.CURDIR}/usr.bin/cpp/cpp.sh > \
318a071a6c7Sdrahn	    ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-cpp
319a071a6c7Sdrahn	chmod ${BINMODE} \
320a071a6c7Sdrahn	    ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-cpp
321a071a6c7Sdrahn	chown ${BINOWN}:${BINGRP}\
322a071a6c7Sdrahn	    ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-cpp
323a071a6c7Sdrahn	ln -sf ${TARGET_CANON}-cpp ${CROSSDIR}/usr/${TARGET_CANON}/bin/cpp
324a071a6c7Sdrahn	ln -sf gcc ${CROSSDIR}/usr/${TARGET_CANON}/bin/cc
325a071a6c7Sdrahn	ln -sf gcc ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-cc
326a071a6c7Sdrahn	cp -f ${CROSSDIR}/usr/bin/${TARGET_CANON}-g++ ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-c++
327a071a6c7Sdrahn	ln -sf ${TARGET_CANON}-c++ ${CROSSDIR}/usr/${TARGET_CANON}/bin/c++
328a222f159Sespie.endif
329a222f159Sespie	@touch ${CROSSGCC}
330a222f159Sespie
331a222f159Sespie# XXX MAKEOBJDIR maybe should be obj.${TARGET} here, revisit later
332a222f159Sespiecross-lib:	${CROSSGCC}
33356074f2fSmiod	MACHINE=${TARGET} \
33456074f2fSmiod	    MACHINE_ARCH=${TARGET_ARCH} MACHINE_CPU=${TARGET_CPU}; \
33556074f2fSmiod	export MACHINE MACHINE_ARCH MACHINE_CPU; \
336a222f159Sespie	(cd ${.CURDIR}/lib; \
337a222f159Sespie	    for lib in csu libc; do \
338a222f159Sespie	    (cd $$lib; \
339a222f159Sespie	        eval ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
3407cd9afdfSokan		    ${MAKE} depend all ;\
341a071a6c7Sdrahn	        eval ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} DESTDIR=${CROSSDIR} \
3427cd9afdfSokan		    ${MAKE} install); \
343a222f159Sespie	    done; \
344a222f159Sespie	    eval ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
345a222f159Sespie	        SKIPDIR=\"${NO_CROSS} libocurses/PSD.doc\" \
3467cd9afdfSokan	        ${MAKE} depend all ; \
347a071a6c7Sdrahn	    eval ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} DESTDIR=${CROSSDIR} \
348a071a6c7Sdrahn	        SKIPDIR=\"${NO_CROSS} libocurses/PSD.doc\" \
3497cd9afdfSokan	        ${MAKE} install)
350a222f159Sespie
351a222f159Sespiecross-bin:	${CROSSOBJ}
35256074f2fSmiod	MACHINE=${TARGET} \
35356074f2fSmiod	    MACHINE_ARCH=${TARGET_ARCH} MACHINE_CPU=${TARGET_CPU}; \
35456074f2fSmiod	export MACHINE MACHINE_ARCH MACHINE_CPU; \
355a222f159Sespie	for i in libexec bin sbin usr.bin usr.sbin; do \
356a222f159Sespie	(cd ${.CURDIR}/$$i; \
357a222f159Sespie	    eval ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
358a222f159Sespie	        SKIPDIR=\"${BINUTILS} ${NO_CROSS}\" \
359a071a6c7Sdrahn	        ${MAKE} depend all ; \
360a071a6c7Sdrahn	    eval ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} DESTDIR=${CROSSDIR} \
361a071a6c7Sdrahn	        SKIPDIR=\"${BINUTILS} ${NO_CROSS}\" \
362a071a6c7Sdrahn	        ${MAKE} install); \
363a071a6c7Sdrahn	done
364a071a6c7Sdrahn
365a071a6c7Sdrahncross-gnu:	${CROSSOBJ}
36656074f2fSmiod	MACHINE=${TARGET} \
36756074f2fSmiod	    MACHINE_ARCH=${TARGET_ARCH} MACHINE_CPU=${TARGET_CPU}; \
36856074f2fSmiod	export MACHINE MACHINE_ARCH MACHINE_CPU; \
369a071a6c7Sdrahn	for i in gnu/lib gnu/usr.sbin gnu/usr.bin ; do \
370a071a6c7Sdrahn	(cd ${.CURDIR}/$$i; \
371a071a6c7Sdrahn	    eval ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
372a071a6c7Sdrahn	        SKIPDIR=\"${NO_CROSS}\" \
373a071a6c7Sdrahn	        ${MAKE} depend all ; \
374a071a6c7Sdrahn	    eval ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} DESTDIR=${CROSSDIR} \
375a071a6c7Sdrahn	        SKIPDIR=\"${NO_CROSS}\" \
376a071a6c7Sdrahn	        ${MAKE} install); \
377a071a6c7Sdrahn	done
378a071a6c7Sdrahn
379a071a6c7Sdrahncross-share:   ${CROSSOBJ}
38056074f2fSmiod	MACHINE=${TARGET} \
38156074f2fSmiod	    MACHINE_ARCH=${TARGET_ARCH} MACHINE_CPU=${TARGET_CPU}; \
38256074f2fSmiod	export MACHINE MACHINE_ARCH MACHINE_CPU; \
383a071a6c7Sdrahn	for i in share; do \
384a071a6c7Sdrahn	    (cd ${.CURDIR}/$$i; \
385a071a6c7Sdrahn	        eval ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
386a071a6c7Sdrahn		SKIPDIR=\"${NO_CROSS}\" \
387a071a6c7Sdrahn		${MAKE} depend all install); \
388a071a6c7Sdrahn	done
389a071a6c7Sdrahn
390a071a6c7Sdrahncross-sys:   ${CROSSOBJ}
39156074f2fSmiod	MACHINE=${TARGET} \
39256074f2fSmiod	    MACHINE_ARCH=${TARGET_ARCH} MACHINE_CPU=${TARGET_CPU}; \
39356074f2fSmiod	export MACHINE MACHINE_ARCH MACHINE_CPU; \
394a071a6c7Sdrahn	for i in sys; do \
395a071a6c7Sdrahn	    (cd ${.CURDIR}/$$i; \
396a071a6c7Sdrahn	        eval ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
397a071a6c7Sdrahn		SKIPDIR=\"${NO_CROSS}\" \
398a222f159Sespie		${MAKE} depend all install); \
399a222f159Sespie	done
400a222f159Sespie
401a222f159Sespiecross-etc-root-var:	${CROSSOBJ}
402a222f159Sespie	(cd ${.CURDIR}/etc && \
40356074f2fSmiod	    MACHINE=${TARGET} \
40456074f2fSmiod	    MACHINE_ARCH=${TARGET_ARCH} MACHINE_CPU=${TARGET_CPU} \
40556074f2fSmiod	    DESTDIR=${CROSSDIR} \
40656074f2fSmiod	    ${MAKE} distribution-etc-root-var)
407a222f159Sespie
408a222f159Sespiecross-depend:
409a222f159Sespie	@(cd ${.CURDIR} && \
410a222f159Sespie	    BSDOBJDIR=${CROSSDIR}/usr/obj \
411a222f159Sespie	    BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
412a222f159Sespie	    SKIPDIR="${NO_CROSS}" \
413a222f159Sespie	    ${MAKE} depend)
414a222f159Sespie
415a222f159Sespiecross-clean:
416a222f159Sespie	@(cd ${.CURDIR} && \
417a222f159Sespie	    BSDOBJDIR=${CROSSDIR}/usr/obj \
418a222f159Sespie	    BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
419a222f159Sespie	    SKIPDIR="${NO_CROSS}" \
420a222f159Sespie	    ${MAKE} clean)
421a222f159Sespie
422a222f159Sespiecross-cleandir:
423a222f159Sespie	@(cd ${.CURDIR} && \
424a222f159Sespie	    BSDOBJDIR=${CROSSDIR}/usr/obj \
425a222f159Sespie	    BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
426a222f159Sespie	    SKIPDIR="${NO_CROSS}" \
427a222f159Sespie	    ${MAKE} cleandir)
428