xref: /openbsd/Makefile.cross (revision 39646eb4)
1*39646eb4Sdrahn# $OpenBSD: Makefile.cross,v 1.30 2010/05/31 17:38:03 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" || \
10*39646eb4Sdrahn	 ${TARGET} == "gumstix" || ${TARGET} == "palm" || \
11*39646eb4Sdrahn	 ${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
19a78fab76Smiod.elif	(${TARGET} == "sgi")
20a78fab76SmiodTARGET_ARCH=	mips64
2156074f2fSmiod.elif	(${TARGET} == "loongson")
2256074f2fSmiodTARGET_ARCH=	mips64el
2356074f2fSmiodTARGET_CPU=	mips64
24990b83faSderaadt.elif	(${TARGET} == "solbourne")
25990b83faSderaadtTARGET_ARCH=	sparc
26e330ff7cSmiod.elif	(${TARGET} == "macppc" || ${TARGET} == "mvmeppc" || \
27e330ff7cSmiod	 ${TARGET} == "socppc")
28a78fab76SmiodTARGET_ARCH=	powerpc
292f050487Smiod.elif	(${TARGET} == "landisk")
302f050487SmiodTARGET_ARCH=	sh
31a78fab76Smiod.else
32a78fab76SmiodTARGET_ARCH=	${TARGET}
33a78fab76Smiod.endif
3456074f2fSmiodTARGET_CPU?=	${TARGET_ARCH}
35a78fab76Smiod
36a071a6c7Sdrahn#CROSSCPPFLAGS?=	-nostdinc -I${CROSSDIR}/usr/include
37a071a6c7Sdrahn#CROSSLDFLAGS?=	-nostdlib -L${CROSSDIR}/usr/lib -static
38a071a6c7SdrahnCROSSCFLAGS?=	${CROSSCPPFLAGS} -O2 ${PIPE} ${DEBUG}
39a222f159SespieCROSSCXXFLAGS?=	${CROSSCPPFLAGS}
40a071a6c7Sdrahn#LDSTATIC?=	-static
41a071a6c7Sdrahn
42a071a6c7Sdrahn# XXX
43a071a6c7SdrahnBINMODE?=555
44a071a6c7SdrahnBINOWN?=root
45a071a6c7SdrahnBINOWN?=bin
46a222f159Sespie
47a222f159SespieCROSSDIR=	${DESTDIR}/usr/cross/${TARGET}
48a071a6c7SdrahnCROSSENV=	AR=${CROSSDIR}/usr/${TARGET_CANON}/bin/ar \
49a071a6c7Sdrahn		AS=${CROSSDIR}/usr/${TARGET_CANON}/bin/as \
50a071a6c7Sdrahn		CC=${CROSSDIR}/usr/${TARGET_CANON}/bin/cc \
51a071a6c7Sdrahn		CPP=${CROSSDIR}/usr/${TARGET_CANON}/bin/cpp \
52a071a6c7Sdrahn		CXX=${CROSSDIR}/usr/${TARGET_CANON}/bin/c++ \
53a071a6c7Sdrahn		LD=${CROSSDIR}/usr/${TARGET_CANON}/bin/ld \
54a071a6c7Sdrahn		OBJCOPY=${CROSSDIR}/usr/${TARGET_CANON}/bin/objcopy \
55a071a6c7Sdrahn		LORDER=/usr/bin/lorder RANLIB=${CROSSDIR}/usr/${TARGET_CANON}/bin/ranlib \
56a071a6c7Sdrahn		STRIP=${CROSSDIR}/usr/${TARGET_CANON}/bin/strip \
57a071a6c7Sdrahn		HOSTCC=\"${CC}\" HOSTCXX=\"${CXX}\" NOMAN= \
58a222f159Sespie		HOSTCFLAGS=\"${CFLAGS}\" HOSTCXXFLAGS=\"${CXXFLAGS}\" \
59a222f159Sespie		HOSTLDFLAGS=\"${LDFLAGS}\" \
60a222f159Sespie		CFLAGS=\"${CROSSCFLAGS}\" CPPFLAGS=\"${CROSSCPPFLAGS}\" \
61a222f159Sespie		CXXFLAGS=\"${CROSSCXXFLAGS}\" \
62a222f159Sespie		LDFLAGS=\"${CROSSLDFLAGS}\"
63a071a6c7SdrahnCROSSADDPATH=:${CROSSDIR}/usr/${TARGET_CANON}/bin
64a071a6c7SdrahnCROSSPATH=	/usr/bin:/bin:/usr/sbin:/sbin${CROSSADDPATH}
65a222f159SespieCROSSLANGS?=	c c++
66a222f159Sespie
67141bf37aSespieTARGET_CANON=`cat ${CROSSDIR}/TARGET_CANON`
68141bf37aSespie
69a222f159SespieCROSSDIRS=	${CROSSDIR}/.dirs_done
70a071a6c7SdrahnCROSSOBJ=	${CROSSDIR}/.obj_done
71a071a6c7SdrahnCROSSINCLUDES=	${CROSSDIR}/.includes_done
72a071a6c7SdrahnCROSSBINUTILS=	${CROSSDIR}/.binutils_done
73a071a6c7SdrahnCROSSGCC=	${CROSSDIR}/.gcc_done
74a071a6c7Sdrahn#NO_CROSS=	isakmpd tn3270 keynote sectok ssh
75a222f159Sespie
76141bf37aSespie# no libcrypto.... these won't build
77a071a6c7Sdrahn#NO_CROSS+=	dc login_krb5 login_krb5-or-pwd passwd ppp tcpdump telnet \
78a071a6c7Sdrahn#		ftp gzsig sasyncd vnconfig
79a071a6c7Sdrahn
80141bf37aSespie# need host setup for ydr
81141bf37aSespieNO_CROSS+=afs
82141bf37aSespie# explicit cross-compile
83141bf37aSespieNO_CROSS+=bind
84a071a6c7SdrahnNO_CROSS+=httpd
85a071a6c7SdrahnNO_CROSS+=microcode
86a071a6c7SdrahnNO_CROSS+=groff lynx binutils perl texinfo gcc cvs
87141bf37aSespie
88a222f159Sespiecross-dirs:	${CROSSDIRS}
89a222f159Sespiecross-obj:	${CROSSOBJ}
90a222f159Sespiecross-includes:	${CROSSINCLUDES}
91a222f159Sespiecross-binutils:	${CROSSBINUTILS}
92a222f159Sespiecross-gcc:	${CROSSGCC}
93a222f159Sespie
94a222f159Sespiecross-env:
95a222f159Sespie	@echo ${CROSSENV} MACHINE=${TARGET} \
96d49bf4ccSmickey	    MACHINE_ARCH=`cat ${CROSSDIR}/TARGET_ARCH` \
9756074f2fSmiod	    MACHINE_CPU=`cat ${CROSSDIR}/TARGET_CPU` \
98d49bf4ccSmickey	    BSDOBJDIR=${CROSSDIR}/usr/obj \
99d49bf4ccSmickey	    BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET}
100a222f159Sespie
101a222f159Sespie${CROSSDIRS}:
102a222f159Sespie	@-mkdir -p ${CROSSDIR}
103a78fab76Smiod	@echo ${TARGET_ARCH} > ${CROSSDIR}/TARGET_ARCH
104a222f159Sespie	@echo TARGET_ARCH is `cat ${CROSSDIR}/TARGET_ARCH`
10556074f2fSmiod	@echo ${TARGET_CPU} > ${CROSSDIR}/TARGET_CPU
10656074f2fSmiod	@echo TARGET_CPU is `cat ${CROSSDIR}/TARGET_CPU`
107a222f159Sespie	@eval `grep '^osr=' sys/conf/newvers.sh`; \
10856074f2fSmiod	   echo ${TARGET_ARCH}-unknown-openbsd$$osr > \
109a222f159Sespie	   ${CROSSDIR}/TARGET_CANON
110a222f159Sespie	@-mkdir -p ${CROSSDIR}
111141bf37aSespie	@-mkdir -p ${CROSSDIR}/usr/${TARGET_CANON}
112a222f159Sespie	@ln -sf ${CROSSDIR}/usr/include \
113141bf37aSespie	    ${CROSSDIR}/usr/${TARGET_CANON}/include
114a222f159Sespie	@ln -sf ${CROSSDIR}/usr/lib \
115141bf37aSespie	    ${CROSSDIR}/usr/${TARGET_CANON}/lib
116141bf37aSespie	@-mkdir -p ${CROSSDIR}/usr/${TARGET_CANON}/bin
117a222f159Sespie	@(cd ${.CURDIR}/etc && DESTDIR=${CROSSDIR} ${MAKE} distrib-dirs)
118a222f159Sespie	@touch ${CROSSDIRS}
119a222f159Sespie
120a222f159Sespie${CROSSOBJ}:	${CROSSDIRS}
121a222f159Sespie	@-mkdir -p ${CROSSDIR}/usr/obj
122a222f159Sespie	@(cd ${.CURDIR} && \
123a222f159Sespie	    BSDOBJDIR=${CROSSDIR}/usr/obj \
124a222f159Sespie	    MACHINE=${TARGET} \
12556074f2fSmiod	    MACHINE_ARCH=${TARGET_ARCH} MACHINE_CPU=${TARGET_CPU} \
126a222f159Sespie	    BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
127a222f159Sespie	    ${MAKE} obj)
128a222f159Sespie	@touch ${CROSSOBJ}
129a222f159Sespie
130a222f159Sespie${CROSSINCLUDES}:	${CROSSOBJ}
131a222f159Sespie	@-mkdir -p ${CROSSDIR}/usr/include
132a222f159Sespie	@(cd ${.CURDIR}/include && \
13356074f2fSmiod	    MACHINE=${TARGET} \
13456074f2fSmiod	    MACHINE_ARCH=${TARGET_ARCH} MACHINE_CPU=${TARGET_CPU} \
135a222f159Sespie	    MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
13656074f2fSmiod	    TARGET_ARCH=${TARGET_ARCH} TARGET_CPU=${TARGET_CPU} \
137a222f159Sespie	    ${MAKE} prereq && \
13856074f2fSmiod	    MACHINE=${TARGET} \
13956074f2fSmiod	    MACHINE_ARCH=${TARGET_ARCH} MACHINE_CPU=${TARGET_CPU} \
140a222f159Sespie	    MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
14156074f2fSmiod	    TARGET_ARCH=${TARGET_ARCH} TARGET_CPU=${TARGET_CPU} \
142a222f159Sespie	    ${MAKE} DESTDIR=${CROSSDIR} includes)
143a222f159Sespie	@touch ${CROSSINCLUDES}
144a222f159Sespie
145a78fab76Smiod.if (${TARGET_ARCH} == "m68k" || ${TARGET_ARCH} == "m88k" || \
146a78fab76Smiod     ${TARGET_ARCH} == "vax")
147a222f159SespieBINUTILS=	ar as ld nm ranlib objcopy objdump strings strip
148a222f159SespieNEW_BINUTILS?=	No
149a222f159Sespie.else
150a222f159SespieBINUTILS=	ar as gasp ld nm objcopy objdump ranlib readelf size \
151a222f159Sespie		strings strip
152a222f159SespieNEW_BINUTILS?=	Yes
153a222f159Sespie.endif
154a222f159Sespie
155a222f159Sespie${CROSSBINUTILS}:	${CROSSINCLUDES}
156a222f159Sespie	(cd ${.CURDIR}/gnu/usr.bin/binutils; \
157a222f159Sespie	    MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
158e829c094Smiod	    USING_NEW_BINUTILS=${NEW_BINUTILS} \
15956074f2fSmiod	    TARGET_ARCH=${TARGET_ARCH} TARGET_CPU=${TARGET_CPU} \
16056074f2fSmiod	    PATH=${CROSSPATH} \
161a222f159Sespie	    ${MAKE} -f Makefile.bsd-wrapper depend && \
162a222f159Sespie	    MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
163e829c094Smiod	    USING_NEW_BINUTILS=${NEW_BINUTILS} \
16456074f2fSmiod	    TARGET_ARCH=${TARGET_ARCH} TARGET_CPU=${TARGET_CPU} \
165a222f159Sespie	    ${MAKE} -f Makefile.bsd-wrapper all && \
166a222f159Sespie	    DESTDIR=${CROSSDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
167e829c094Smiod	    USING_NEW_BINUTILS=${NEW_BINUTILS} \
16856074f2fSmiod	    MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
16956074f2fSmiod	    USING_NEW_BINUTILS=${NEW_BINUTILS} \
17056074f2fSmiod	    TARGET_ARCH=${TARGET_ARCH} TARGET_CPU=${TARGET_CPU} \
171a222f159Sespie	    ${MAKE} -f Makefile.bsd-wrapper install)
172e829c094Smiod.if ${NEW_BINUTILS:L} != "yes"
173a222f159Sespie	(cd ${.CURDIR}/gnu/usr.bin/gas; \
174141bf37aSespie	    TARGET_MACHINE_ARCH=${TARGET_ARCH} \
175a222f159Sespie	    MAKEOBJDIR=obj.${MACHINE}.${TARGET} ${MAKE} depend all; \
176141bf37aSespie	    TARGET_MACHINE_ARCH=${TARGET_ARCH} \
177a222f159Sespie	    DESTDIR=${CROSSDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
178a222f159Sespie	    ${MAKE} NOMAN= install)
179a222f159Sespie	ln -sf ${CROSSDIR}/usr/bin/as \
1804149f057Smiod	    ${CROSSDIR}/usr/${TARGET_CANON}/bin/as
181a222f159Sespie	(cd ${.CURDIR}/gnu/usr.bin/ld; \
182141bf37aSespie	    TARGET_MACHINE_ARCH=${TARGET_ARCH} \
183a222f159Sespie	    MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
184a222f159Sespie	    ${MAKE} NOPIC= NOMAN= depend all; \
185141bf37aSespie	    TARGET_MACHINE_ARCH=${TARGET_ARCH} \
186a222f159Sespie	    DESTDIR=${CROSSDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
187a222f159Sespie	    ${MAKE} NOPIC= NOMAN= install)
188a222f159Sespie	ln -sf ${CROSSDIR}/usr/bin/ld \
189141bf37aSespie	    ${CROSSDIR}/usr/${TARGET_CANON}/bin/ld
190a222f159Sespie	(cd ${.CURDIR}/usr.bin/ar; \
191a57924a5Smiod	    ELF_TOOLCHAIN=no \
192a222f159Sespie	    MAKEOBJDIR=obj.${MACHINE}.${TARGET} ${MAKE} NOMAN= depend all; \
193a57924a5Smiod	    ELF_TOOLCHAIN=no \
194a222f159Sespie	    DESTDIR=${CROSSDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
195a222f159Sespie	    ${MAKE} NOMAN= install)
196a222f159Sespie	ln -sf ${CROSSDIR}/usr/bin/ar \
197141bf37aSespie	    ${CROSSDIR}/usr/${TARGET_CANON}/bin/ar
198a222f159Sespie	(cd ${.CURDIR}/usr.bin/ranlib; \
199a57924a5Smiod	    ELF_TOOLCHAIN=no \
200a222f159Sespie	    MAKEOBJDIR=obj.${MACHINE}.${TARGET} ${MAKE} NOMAN= depend all; \
201a57924a5Smiod	    ELF_TOOLCHAIN=no \
202a222f159Sespie	    DESTDIR=${CROSSDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
203a222f159Sespie	    ${MAKE} NOMAN= install)
204a222f159Sespie	ln -sf ${CROSSDIR}/usr/bin/ranlib \
205141bf37aSespie	    ${CROSSDIR}/usr/${TARGET_CANON}/bin/ranlib
206a222f159Sespie	(cd ${.CURDIR}/usr.bin/strip; \
207a222f159Sespie	    MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
208141bf37aSespie	    ${MAKE} TARGET_MACHINE_ARCH=${TARGET_ARCH} \
209a222f159Sespie	    NOMAN= depend all; \
210a222f159Sespie	    DESTDIR=${CROSSDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
211141bf37aSespie	    ${MAKE} TARGET_MACHINE_ARCH=${TARGET_ARCH} \
212a222f159Sespie	    NOMAN= install)
213a222f159Sespie	ln -sf ${CROSSDIR}/usr/bin/strip \
214141bf37aSespie	    ${CROSSDIR}/usr/${TARGET_CANON}/bin/strip
215a222f159Sespie.endif
216a222f159Sespie	@for cmd in ${BINUTILS}; do \
217a071a6c7Sdrahn	 if [ -e ${CROSSDIR}/usr/bin/${TARGET_CANON}-$$cmd ] ; then \
218a071a6c7Sdrahn	    cp -f ${CROSSDIR}/usr/bin/${TARGET_CANON}-$$cmd \
219a071a6c7Sdrahn	        ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-$$cmd ; \
220a071a6c7Sdrahn	    ln -sf ${TARGET_CANON}-$$cmd \
221141bf37aSespie		${CROSSDIR}/usr/${TARGET_CANON}/bin/$$cmd ;\
222a071a6c7Sdrahn	   if [ -e ${CROSSDIR}/usr/bin/$$cmd ] ; then \
223a071a6c7Sdrahn	    rm -f ${CROSSDIR}/usr/bin/$$cmd ;\
224a071a6c7Sdrahn	   fi ;\
225a071a6c7Sdrahn	 elif [ -e ${CROSSDIR}/usr/bin/$$cmd ] ; then \
226a071a6c7Sdrahn	    cp -f ${CROSSDIR}/usr/bin/$$cmd \
227a071a6c7Sdrahn	        ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-$$cmd ; \
228a071a6c7Sdrahn	    ln -sf ${TARGET_CANON}-$$cmd \
229a071a6c7Sdrahn		${CROSSDIR}/usr/${TARGET_CANON}/bin/$$cmd ;\
230a071a6c7Sdrahn	    mv ${CROSSDIR}/usr/bin/$$cmd \
231a071a6c7Sdrahn		${CROSSDIR}/usr/bin/${TARGET_CANON}-$$cmd ;\
232a222f159Sespie	 fi ;\
233a222f159Sespie	done
234a222f159Sespie	@touch ${CROSSBINUTILS}
235a222f159Sespie
236a222f159Sespie# bsd.own.mk can't do it for us
237df2fec26Smickey.if ${TARGET_ARCH} == "m68k" || ${TARGET_ARCH} == "m88k" || \
238a78fab76Smiod    ${TARGET_ARCH} == "sparc" || ${TARGET_ARCH} == "vax"
239ca88db65SespieTARGET_USE_GCC3=No
24019bc13dbSmickey.else
24119bc13dbSmickeyTARGET_USE_GCC3=Yes
242a222f159Sespie.endif
243a222f159Sespie
244a222f159Sespie${CROSSGCC}:		${CROSSBINUTILS}
245ca88db65Sespie.if ${TARGET_USE_GCC3:L} == "yes"
246a222f159Sespie	(cd ${.CURDIR}/gnu/usr.bin/gcc; \
247a222f159Sespie	    MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
24856074f2fSmiod	    TARGET_ARCH=${TARGET_ARCH} TARGET_CPU=${TARGET_CPU} \
24956074f2fSmiod	    CROSSDIR=${CROSSDIR} \
250a071a6c7Sdrahn	    PATH=${CROSSPATH} ${MAKE} -f Makefile.bsd-wrapper depend && \
251a222f159Sespie	    MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
25256074f2fSmiod	    TARGET_ARCH=${TARGET_ARCH} TARGET_CPU=${TARGET_CPU} \
25356074f2fSmiod	    CROSSDIR=${CROSSDIR} \
254a222f159Sespie	    ${MAKE} -f Makefile.bsd-wrapper all && \
255a071a6c7Sdrahn	    env CROSSDIR=${CROSSDIR} DESTDIR=${CROSSDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
256a071a6c7Sdrahn	    PATH=${CROSSPATH} ${MAKE} -f Makefile.bsd-wrapper install)
257a071a6c7Sdrahn	cp -f ${CROSSDIR}/usr/bin/${TARGET_CANON}-g++ ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-c++
258a071a6c7Sdrahn	cp -f ${CROSSDIR}/usr/bin/gcc ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-cc
259a071a6c7Sdrahn	cp -f ${CROSSDIR}/usr/libexec/cpp ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-libexeccpp
260a071a6c7Sdrahn	rm -f ${CROSSDIR}/usr/bin/gcc  ${CROSSDIR}/usr/bin/cc ${CROSSDIR}/usr/libexec/cpp
261a071a6c7Sdrahn	ln -sf ${TARGET_CANON}-cc ${CROSSDIR}/usr/${TARGET_CANON}/bin/cc
262a071a6c7Sdrahn	ln -sf ${TARGET_CANON}-c++ ${CROSSDIR}/usr/${TARGET_CANON}/bin/c++
263a071a6c7Sdrahn	rm -f ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-cpp
264a071a6c7Sdrahn	sed -e 's#/usr/libexec/cpp#${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-libexeccpp#' \
265a071a6c7Sdrahn	    -e 's#/usr/include#${CROSSDIR}/usr/include#' \
266a071a6c7Sdrahn	    -e 's/@dollaropt@//' \
267a071a6c7Sdrahn	    ${.CURDIR}/usr.bin/cpp/cpp.sh > ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-cpp
268a071a6c7Sdrahn	chmod ${BINMODE} ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-cpp
269a071a6c7Sdrahn	chown ${BINOWN}:${BINGRP} ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-cpp
270a071a6c7Sdrahn	ln -sf ${TARGET_CANON}-cpp ${CROSSDIR}/usr/${TARGET_CANON}/bin/cpp
271a222f159Sespie.else
272a222f159Sespie	(cd ${CROSSDIR}/usr/obj/gnu/egcs/gcc; \
273a222f159Sespie	    /bin/sh ${.CURDIR}/gnu/egcs/gcc/configure \
274a222f159Sespie	    --with-gnu-as --with-gnu-ld --prefix ${CROSSDIR}/usr \
275141bf37aSespie	    --target ${TARGET_CANON} \
276a222f159Sespie	    --enable-languages="c,c++" --enable-cpp --disable-nls \
277a222f159Sespie	    --with-gxx-include-dir=${CROSSDIR}/usr/include/g++ && \
278a222f159Sespie	    PATH=${CROSSPATH} ${MAKE} BISON=yacc LANGUAGES="${CROSSLANGS}" \
279a222f159Sespie	    CFLAGS="${CFLAGS} -I${.CURDIR}/gnu/lib/libiberty/include" \
280a222f159Sespie	    LIBIBERTY_INCLUDES=${.CURDIR}/gnu/lib/libiberty/include \
281a222f159Sespie	    DEMANGLER_PROG= DEMANGLE_H= LDFLAGS="${LDSTATIC}" build_infodir=. \
282a222f159Sespie	    GCC_FOR_TARGET="./xgcc -B./ -I${CROSSDIR}/usr/include" && \
283a222f159Sespie	    ${MAKE} BISON=yacc LANGUAGES="${CROSSLANGS}" LDFLAGS="${LDSTATIC}" \
284a222f159Sespie	    GCC_FOR_TARGET="./xgcc -B./ -I${CROSSDIR}/usr/include" \
285a222f159Sespie	    CFLAGS="${CFLAGS} -I${.CURDIR}/gnu/lib/libiberty/include" \
286a222f159Sespie	    LIBIBERTY_INCLUDES=${.CURDIR}/gnu/lib/libiberty/include \
287a222f159Sespie	    build_infodir=. INSTALL_MAN= INSTALL_HEADERS_DIR= install)
288a071a6c7Sdrahn	mv -f ${CROSSDIR}/usr/bin/cpp ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-libexeccpp
289a071a6c7Sdrahn	rm -f ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-cpp
290a071a6c7Sdrahn	sed -e 's#/usr/libexec/cpp#${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-libexeccpp#' \
291a222f159Sespie	    -e 's#/usr/include#${CROSSDIR}/usr/include#' \
292a071a6c7Sdrahn	    -e 's/@dollaropt@/-$$/' ${.CURDIR}/usr.bin/cpp/cpp.sh > \
293a071a6c7Sdrahn	    ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-cpp
294a071a6c7Sdrahn	chmod ${BINMODE} \
295a071a6c7Sdrahn	    ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-cpp
296a071a6c7Sdrahn	chown ${BINOWN}:${BINGRP}\
297a071a6c7Sdrahn	    ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-cpp
298a071a6c7Sdrahn	ln -sf ${TARGET_CANON}-cpp ${CROSSDIR}/usr/${TARGET_CANON}/bin/cpp
299a071a6c7Sdrahn	ln -sf gcc ${CROSSDIR}/usr/${TARGET_CANON}/bin/cc
300a071a6c7Sdrahn	ln -sf gcc ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-cc
301a071a6c7Sdrahn	cp -f ${CROSSDIR}/usr/bin/${TARGET_CANON}-g++ ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-c++
302a071a6c7Sdrahn	ln -sf ${TARGET_CANON}-c++ ${CROSSDIR}/usr/${TARGET_CANON}/bin/c++
303a222f159Sespie.endif
304a222f159Sespie	@touch ${CROSSGCC}
305a222f159Sespie
306a222f159Sespie# XXX MAKEOBJDIR maybe should be obj.${TARGET} here, revisit later
307a222f159Sespiecross-lib:	${CROSSGCC}
30856074f2fSmiod	MACHINE=${TARGET} \
30956074f2fSmiod	    MACHINE_ARCH=${TARGET_ARCH} MACHINE_CPU=${TARGET_CPU}; \
31056074f2fSmiod	export MACHINE MACHINE_ARCH MACHINE_CPU; \
311a222f159Sespie	(cd ${.CURDIR}/lib; \
312a222f159Sespie	    for lib in csu libc; do \
313a222f159Sespie	    (cd $$lib; \
314a222f159Sespie	        eval ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
315a071a6c7Sdrahn		    ${MAKE} WANTLINT=no depend all ;\
316a071a6c7Sdrahn	        eval ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} DESTDIR=${CROSSDIR} \
317a071a6c7Sdrahn		    ${MAKE} WANTLINT=no install); \
318a222f159Sespie	    done; \
319a222f159Sespie	    eval ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
320a222f159Sespie	        SKIPDIR=\"${NO_CROSS} libocurses/PSD.doc\" \
321a071a6c7Sdrahn	        ${MAKE} WANTLINT=no depend all ; \
322a071a6c7Sdrahn	    eval ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} DESTDIR=${CROSSDIR} \
323a071a6c7Sdrahn	        SKIPDIR=\"${NO_CROSS} libocurses/PSD.doc\" \
324a071a6c7Sdrahn	        ${MAKE} WANTLINT=no install)
325a222f159Sespie
326a222f159Sespiecross-bin:	${CROSSOBJ}
32756074f2fSmiod	MACHINE=${TARGET} \
32856074f2fSmiod	    MACHINE_ARCH=${TARGET_ARCH} MACHINE_CPU=${TARGET_CPU}; \
32956074f2fSmiod	export MACHINE MACHINE_ARCH MACHINE_CPU; \
330a222f159Sespie	for i in libexec bin sbin usr.bin usr.sbin; do \
331a222f159Sespie	(cd ${.CURDIR}/$$i; \
332a222f159Sespie	    eval ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
333a222f159Sespie	        SKIPDIR=\"${BINUTILS} ${NO_CROSS}\" \
334a071a6c7Sdrahn	        ${MAKE} depend all ; \
335a071a6c7Sdrahn	    eval ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} DESTDIR=${CROSSDIR} \
336a071a6c7Sdrahn	        SKIPDIR=\"${BINUTILS} ${NO_CROSS}\" \
337a071a6c7Sdrahn	        ${MAKE} install); \
338a071a6c7Sdrahn	done
339a071a6c7Sdrahn
340a071a6c7Sdrahncross-gnu:	${CROSSOBJ}
34156074f2fSmiod	MACHINE=${TARGET} \
34256074f2fSmiod	    MACHINE_ARCH=${TARGET_ARCH} MACHINE_CPU=${TARGET_CPU}; \
34356074f2fSmiod	export MACHINE MACHINE_ARCH MACHINE_CPU; \
344a071a6c7Sdrahn	for i in gnu/lib gnu/usr.sbin gnu/usr.bin ; do \
345a071a6c7Sdrahn	(cd ${.CURDIR}/$$i; \
346a071a6c7Sdrahn	    eval ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
347a071a6c7Sdrahn	        SKIPDIR=\"${NO_CROSS}\" \
348a071a6c7Sdrahn	        ${MAKE} depend all ; \
349a071a6c7Sdrahn	    eval ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} DESTDIR=${CROSSDIR} \
350a071a6c7Sdrahn	        SKIPDIR=\"${NO_CROSS}\" \
351a071a6c7Sdrahn	        ${MAKE} install); \
352a071a6c7Sdrahn	done
353a071a6c7Sdrahn
354a071a6c7Sdrahncross-share:   ${CROSSOBJ}
35556074f2fSmiod	MACHINE=${TARGET} \
35656074f2fSmiod	    MACHINE_ARCH=${TARGET_ARCH} MACHINE_CPU=${TARGET_CPU}; \
35756074f2fSmiod	export MACHINE MACHINE_ARCH MACHINE_CPU; \
358a071a6c7Sdrahn	for i in share; do \
359a071a6c7Sdrahn	    (cd ${.CURDIR}/$$i; \
360a071a6c7Sdrahn	        eval ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
361a071a6c7Sdrahn		SKIPDIR=\"${NO_CROSS}\" \
362a071a6c7Sdrahn		${MAKE} depend all install); \
363a071a6c7Sdrahn	done
364a071a6c7Sdrahn
365a071a6c7Sdrahncross-sys:   ${CROSSOBJ}
36656074f2fSmiod	MACHINE=${TARGET} \
36756074f2fSmiod	    MACHINE_ARCH=${TARGET_ARCH} MACHINE_CPU=${TARGET_CPU}; \
36856074f2fSmiod	export MACHINE MACHINE_ARCH MACHINE_CPU; \
369a071a6c7Sdrahn	for i in sys; do \
370a071a6c7Sdrahn	    (cd ${.CURDIR}/$$i; \
371a071a6c7Sdrahn	        eval ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
372a071a6c7Sdrahn		SKIPDIR=\"${NO_CROSS}\" \
373a222f159Sespie		${MAKE} depend all install); \
374a222f159Sespie	done
375a222f159Sespie
376a222f159Sespiecross-etc-root-var:	${CROSSOBJ}
377a222f159Sespie	(cd ${.CURDIR}/etc && \
37856074f2fSmiod	    MACHINE=${TARGET} \
37956074f2fSmiod	    MACHINE_ARCH=${TARGET_ARCH} MACHINE_CPU=${TARGET_CPU} \
38056074f2fSmiod	    DESTDIR=${CROSSDIR} \
38156074f2fSmiod	    ${MAKE} distribution-etc-root-var)
382a222f159Sespie
383a222f159Sespiecross-depend:
384a222f159Sespie	@(cd ${.CURDIR} && \
385a222f159Sespie	    BSDOBJDIR=${CROSSDIR}/usr/obj \
386a222f159Sespie	    BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
387a222f159Sespie	    SKIPDIR="${NO_CROSS}" \
388a222f159Sespie	    ${MAKE} depend)
389a222f159Sespie
390a222f159Sespiecross-clean:
391a222f159Sespie	@(cd ${.CURDIR} && \
392a222f159Sespie	    BSDOBJDIR=${CROSSDIR}/usr/obj \
393a222f159Sespie	    BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
394a222f159Sespie	    SKIPDIR="${NO_CROSS}" \
395a222f159Sespie	    ${MAKE} clean)
396a222f159Sespie
397a222f159Sespiecross-cleandir:
398a222f159Sespie	@(cd ${.CURDIR} && \
399a222f159Sespie	    BSDOBJDIR=${CROSSDIR}/usr/obj \
400a222f159Sespie	    BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
401a222f159Sespie	    SKIPDIR="${NO_CROSS}" \
402a222f159Sespie	    ${MAKE} cleandir)
403