Return to Makefile.cross CVS log | Up to [local] / src |
File: [local] / src / Makefile.cross (download)
Revision 1.69, Tue Mar 18 22:36:27 2014 UTC (10 years, 2 months ago) by miod
Retire hp300, mvme68k and mvme88k ports. These ports have no users, keeping this hardware alive is becoming increasingly difficult, and I should heed the message sent by the three disks which have died on me over the last few days. Noone sane will mourn these ports anyway. So long, and thanks for the fish. |
# $OpenBSD: Makefile.cross,v 1.69 2014/03/18 22:36:27 miod Exp $ cross-tools: cross-includes cross-binutils cross-gcc cross-lib cross-distrib: cross-tools cross-bin cross-share cross-sys cross-etc-root-var # cross-gnu \ # Have to compute TARGET_ARCH directly in the Makefile, for .if tests involving # this variable to work. .if (${TARGET} == "armish" || ${TARGET} == "armv7" || \ ${TARGET} == "zaurus") TARGET_ARCH= arm .elif (${TARGET} == "aviion" || ${TARGET} == "luna88k") TARGET_ARCH= m88k .elif (${TARGET} == "sgi" || ${TARGET} == "octeon") TARGET_ARCH= mips64 .elif (${TARGET} == "loongson") TARGET_ARCH= mips64el TARGET_CPU= mips64 .elif (${TARGET} == "solbourne") TARGET_ARCH= sparc .elif (${TARGET} == "macppc" || ${TARGET} == "socppc") TARGET_ARCH= powerpc .elif (${TARGET} == "landisk") TARGET_ARCH= sh .else TARGET_ARCH= ${TARGET} .endif TARGET_CPU?= ${TARGET_ARCH} # List of LP64 archs # XXX move to bsd.*.mk? LP64_ARCH = amd64 alpha hppa64 ia64 mips64 sparc64 vax64 TARGET_IS_LP64 = MACHINE_IS_LP64 = .for _ in ${LP64_ARCH} . if !empty(TARGET_ARCH:M$_) TARGET_IS_LP64 = yes . endif . if !empty(MACHINE_ARCH:M$_) MACHINE_IS_LP64 = yes . endif .endfor #CROSSCPPFLAGS?= -nostdinc -I${CROSSDIR}/usr/include #CROSSLDFLAGS?= -nostdlib -L${CROSSDIR}/usr/lib -static CROSSCFLAGS?= ${CROSSCPPFLAGS} -O2 ${PIPE} ${DEBUG} CROSSCXXFLAGS?= ${CROSSCPPFLAGS} #LDSTATIC?= -static CROSSDIR= ${DESTDIR}/usr/cross/${TARGET} CROSSENV= AR=${CROSSDIR}/usr/${TARGET_CANON}/bin/ar \ AS=${CROSSDIR}/usr/${TARGET_CANON}/bin/as \ CC=${CROSSDIR}/usr/${TARGET_CANON}/bin/cc \ CPP=${CROSSDIR}/usr/${TARGET_CANON}/bin/cpp \ CXX=${CROSSDIR}/usr/${TARGET_CANON}/bin/c++ \ LD=${CROSSDIR}/usr/${TARGET_CANON}/bin/ld \ OBJCOPY=${CROSSDIR}/usr/${TARGET_CANON}/bin/objcopy \ LORDER=/usr/bin/lorder RANLIB=${CROSSDIR}/usr/${TARGET_CANON}/bin/ranlib \ STRIP=${CROSSDIR}/usr/${TARGET_CANON}/bin/strip \ HOSTCC=\"${CC}\" HOSTCXX=\"${CXX}\" NOMAN= \ HOSTCFLAGS=\"${CFLAGS}\" HOSTCXXFLAGS=\"${CXXFLAGS}\" \ HOSTLDFLAGS=\"${LDFLAGS}\" \ CFLAGS=\"${CROSSCFLAGS}\" CPPFLAGS=\"${CROSSCPPFLAGS}\" \ CXXFLAGS=\"${CROSSCXXFLAGS}\" \ LDFLAGS=\"${CROSSLDFLAGS}\" CROSSADDPATH=:${CROSSDIR}/usr/${TARGET_CANON}/bin CROSSPATH= /usr/bin:/bin:/usr/sbin:/sbin${CROSSADDPATH} CROSSLANGS?= c c++ TARGET_CANON=`cat ${CROSSDIR}/TARGET_CANON` CROSSDIRS= ${CROSSDIR}/.dirs_done CROSSOBJ= ${CROSSDIR}/.obj_done CROSSINCLUDES= ${CROSSDIR}/.includes_done CROSSBINUTILS= ${CROSSDIR}/.binutils_done CROSSGCC= ${CROSSDIR}/.gcc_done #NO_CROSS= isakmpd keynote ssh .include <bsd.own.mk> .for _arch in ${TARGET_ARCH} .if !empty(GCC3_ARCH:M${_arch}) COMPILER_VERSION=gcc3 .else COMPILER_VERSION=gcc4 .endif .if !empty(BINUTILS217_ARCH:M${_arch}) BINUTILS_VERSION=binutils-2.17 .else BINUTILS_VERSION=binutils .endif .if !empty(PIE_ARCH:M${_arch}) NOPIE_FLAGS=-fno-pie NOPIE_LDFLAGS=-nopie PIE_DEFAULT=${DEFAULT_PIE_DEF} .else NOPIE_FLAGS= PIE_DEFAULT= .endif BINUTILS= ar as gasp ld nm objcopy objdump ranlib readelf size \ strings strip BINUTILS_DIR=gnu/usr.bin/${BINUTILS_VERSION} .endfor # no libcrypto.... these won't build #NO_CROSS+= dc login_krb5 login_krb5-or-pwd passwd ppp tcpdump telnet \ # ftp gzsig sasyncd vnconfig # explicit cross-compile NO_CROSS+=bind NO_CROSS+=httpd NO_CROSS+=microcode NO_CROSS+=groff lynx binutils binutils-2.17 perl texinfo gcc cvs NO_CROSS+=nsd NO_CROSS+=nginx NO_CROSS+=sqlite3 cross-dirs: ${CROSSDIRS} cross-obj: ${CROSSOBJ} cross-includes: ${CROSSINCLUDES} cross-binutils: ${CROSSBINUTILS} cross-gcc: ${CROSSGCC} cross-env: @echo ${CROSSENV} MACHINE=${TARGET} \ MACHINE_ARCH=`cat ${CROSSDIR}/TARGET_ARCH` \ MACHINE_CPU=`cat ${CROSSDIR}/TARGET_CPU` \ BSDOBJDIR=${CROSSDIR}/usr/obj \ BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} ${CROSSDIRS}: .if ${TARGET_ARCH} == "arm" && ${MACHINE_IS_LP64} == "yes" # this config is allowed .elif ${TARGET_IS_LP64} != ${MACHINE_IS_LP64} @echo "host and target have different size longs" @echo "cross compiler generates bad code; aborting"; exit 1 .endif @-mkdir -p ${CROSSDIR} @echo ${TARGET_ARCH} > ${CROSSDIR}/TARGET_ARCH @echo TARGET_ARCH is `cat ${CROSSDIR}/TARGET_ARCH` @echo ${TARGET_CPU} > ${CROSSDIR}/TARGET_CPU @echo TARGET_CPU is `cat ${CROSSDIR}/TARGET_CPU` @eval `grep '^osr=' sys/conf/newvers.sh`; \ echo ${TARGET_ARCH}-unknown-openbsd$$osr > \ ${CROSSDIR}/TARGET_CANON @-mkdir -p ${CROSSDIR} @-mkdir -p ${CROSSDIR}/usr/${TARGET_CANON} @ln -sf ${CROSSDIR}/usr/include \ ${CROSSDIR}/usr/${TARGET_CANON}/include @ln -sf ${CROSSDIR}/usr/lib \ ${CROSSDIR}/usr/${TARGET_CANON}/lib @-mkdir -p ${CROSSDIR}/usr/${TARGET_CANON}/bin @(cd ${.CURDIR}/etc && DESTDIR=${CROSSDIR} ${MAKE} distrib-dirs) @touch ${CROSSDIRS} ${CROSSOBJ}: ${CROSSDIRS} @-mkdir -p ${CROSSDIR}/usr/obj @(cd ${.CURDIR} && \ BSDOBJDIR=${CROSSDIR}/usr/obj \ COMPILER_VERSION=${COMPILER_VERSION} \ MACHINE=${TARGET} \ MACHINE_ARCH=${TARGET_ARCH} MACHINE_CPU=${TARGET_CPU} \ BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \ ${MAKE} obj) @touch ${CROSSOBJ} ${CROSSINCLUDES}: ${CROSSOBJ} @-mkdir -p ${CROSSDIR}/usr/include @(cd ${.CURDIR}/include && \ COMPILER_VERSION=${COMPILER_VERSION} \ MACHINE=${TARGET} \ MACHINE_ARCH=${TARGET_ARCH} MACHINE_CPU=${TARGET_CPU} \ MAKEOBJDIR=obj.${MACHINE}.${TARGET} \ TARGET_ARCH=${TARGET_ARCH} TARGET_CPU=${TARGET_CPU} \ ${MAKE} prereq && \ COMPILER_VERSION=${COMPILER_VERSION} \ MACHINE=${TARGET} \ MACHINE_ARCH=${TARGET_ARCH} MACHINE_CPU=${TARGET_CPU} \ MAKEOBJDIR=obj.${MACHINE}.${TARGET} \ TARGET_ARCH=${TARGET_ARCH} TARGET_CPU=${TARGET_CPU} \ ${MAKE} DESTDIR=${CROSSDIR} includes) @touch ${CROSSINCLUDES} ${CROSSBINUTILS}: ${CROSSINCLUDES} (cd ${.CURDIR}/${BINUTILS_DIR}; \ MAKEOBJDIR=obj.${MACHINE}.${TARGET} \ PIE_DEFAULT=${PIE_DEFAULT} \ TARGET_ARCH=${TARGET_ARCH} TARGET_CPU=${TARGET_CPU} \ PATH=${CROSSPATH} \ ${MAKE} -f Makefile.bsd-wrapper depend && \ MAKEOBJDIR=obj.${MACHINE}.${TARGET} \ PIE_DEFAULT=${PIE_DEFAULT} \ TARGET_ARCH=${TARGET_ARCH} TARGET_CPU=${TARGET_CPU} \ ${MAKE} -f Makefile.bsd-wrapper all && \ DESTDIR=${CROSSDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \ COMPILER_VERSION=${COMPILER_VERSION} \ PIE_DEFAULT=${PIE_DEFAULT} \ MAKEOBJDIR=obj.${MACHINE}.${TARGET} \ TARGET_ARCH=${TARGET_ARCH} TARGET_CPU=${TARGET_CPU} \ ${MAKE} -f Makefile.bsd-wrapper install) @for cmd in ${BINUTILS}; do \ if [ -e ${CROSSDIR}/usr/bin/${TARGET_CANON}-$$cmd ] ; then \ cp -f ${CROSSDIR}/usr/bin/${TARGET_CANON}-$$cmd \ ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-$$cmd ; \ ln -sf ${TARGET_CANON}-$$cmd \ ${CROSSDIR}/usr/${TARGET_CANON}/bin/$$cmd ;\ if [ -e ${CROSSDIR}/usr/bin/$$cmd ] ; then \ rm -f ${CROSSDIR}/usr/bin/$$cmd ;\ fi ;\ elif [ -e ${CROSSDIR}/usr/bin/$$cmd ] ; then \ cp -f ${CROSSDIR}/usr/bin/$$cmd \ ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-$$cmd ; \ ln -sf ${TARGET_CANON}-$$cmd \ ${CROSSDIR}/usr/${TARGET_CANON}/bin/$$cmd ;\ mv ${CROSSDIR}/usr/bin/$$cmd \ ${CROSSDIR}/usr/bin/${TARGET_CANON}-$$cmd ;\ fi ;\ done @touch ${CROSSBINUTILS} ${CROSSGCC}: ${CROSSBINUTILS} .if ${COMPILER_VERSION:L} == "gcc3" (cd ${.CURDIR}/gnu/usr.bin/gcc; \ MAKEOBJDIR=obj.${MACHINE}.${TARGET} \ TARGET_ARCH=${TARGET_ARCH} TARGET_CPU=${TARGET_CPU} \ CROSSDIR=${CROSSDIR} \ PATH=${CROSSPATH} ${MAKE} -f Makefile.bsd-wrapper depend && \ MAKEOBJDIR=obj.${MACHINE}.${TARGET} \ TARGET_ARCH=${TARGET_ARCH} TARGET_CPU=${TARGET_CPU} \ CROSSDIR=${CROSSDIR} \ ${MAKE} -f Makefile.bsd-wrapper all && \ env CROSSDIR=${CROSSDIR} DESTDIR=${CROSSDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \ PATH=${CROSSPATH} ${MAKE} -f Makefile.bsd-wrapper install) cp -f ${CROSSDIR}/usr/bin/${TARGET_CANON}-g++ ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-c++ cp -f ${CROSSDIR}/usr/bin/gcc ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-cc cp -f ${CROSSDIR}/usr/libexec/cpp ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-libexeccpp rm -f ${CROSSDIR}/usr/bin/gcc ${CROSSDIR}/usr/bin/cc ${CROSSDIR}/usr/libexec/cpp ln -sf ${TARGET_CANON}-cc ${CROSSDIR}/usr/${TARGET_CANON}/bin/cc ln -sf ${TARGET_CANON}-c++ ${CROSSDIR}/usr/${TARGET_CANON}/bin/c++ rm -f ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-cpp sed -e 's#/usr/libexec/cpp#${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-libexeccpp#' \ -e 's/@GNUC@/-D__GNUC__/' \ -e 's#/usr/include#${CROSSDIR}/usr/include#' \ -e 's/@dollaropt@//' \ ${.CURDIR}/usr.bin/cpp/cpp.sh > ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-cpp chmod ${BINMODE} ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-cpp chown ${BINOWN}:${BINGRP} ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-cpp ln -sf ${TARGET_CANON}-cpp ${CROSSDIR}/usr/${TARGET_CANON}/bin/cpp .else (cd ${.CURDIR}/gnu/usr.bin/cc; \ MAKEOBJDIR=obj.${MACHINE}.${TARGET} \ TARGET_ARCH=${TARGET_ARCH} TARGET_CPU=${TARGET_CPU} \ CROSSDIR=${CROSSDIR} \ MACHINE=${TARGET} \ PATH=${CROSSPATH} ${MAKE} depend ) (cd ${.CURDIR}/gnu/usr.bin/cc; \ MAKEOBJDIR=obj.${MACHINE}.${TARGET} \ TARGET_ARCH=${TARGET_ARCH} TARGET_CPU=${TARGET_CPU} \ CROSSDIR=${CROSSDIR} \ MACHINE=${TARGET} \ ${MAKE} all ) (cd ${.CURDIR}/gnu/usr.bin/cc; \ env CROSSDIR=${CROSSDIR} DESTDIR=${CROSSDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \ TARGET_ARCH=${TARGET_ARCH} TARGET_CPU=${TARGET_CPU} \ MACHINE=${TARGET} \ PATH=${CROSSPATH} ${MAKE} install) cp -f ${CROSSDIR}/usr/bin/g++ ${CROSSDIR}/usr/bin/${TARGET_CANON}-g++ cp -f ${CROSSDIR}/usr/bin/${TARGET_CANON}-g++ ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-c++ cp -f ${CROSSDIR}/usr/libexec/cpp ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-libexeccpp cp -f ${CROSSDIR}/usr/bin/gcc ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-cc ln -sf ${TARGET_CANON}-cc ${CROSSDIR}/usr/${TARGET_CANON}/bin/cc cp -f ${CROSSDIR}/usr/bin/gcc ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-cc rm -f ${CROSSDIR}/usr/bin/gcc ${CROSSDIR}/usr/bin/g++ ${CROSSDIR}/usr/bin/cc ${CROSSDIR}/usr/libexec/cpp # fix links rm -f ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-cpp sed -e 's#/usr/libexec/cpp#${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-libexeccpp#' \ -e 's/@GNUC@//' \ -e 's#/usr/include#${CROSSDIR}/usr/include#' \ -e 's/@dollaropt@//' \ ${.CURDIR}/usr.bin/cpp/cpp.sh > ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-cpp chmod ${BINMODE} ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-cpp chown ${BINOWN}:${BINGRP} ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-cpp ln -sf ${TARGET_CANON}-cpp ${CROSSDIR}/usr/${TARGET_CANON}/bin/cpp .endif @touch ${CROSSGCC} # XXX MAKEOBJDIR maybe should be obj.${TARGET} here, revisit later cross-lib: ${CROSSGCC} MACHINE=${TARGET} \ MACHINE_ARCH=${TARGET_ARCH} MACHINE_CPU=${TARGET_CPU}; \ export MACHINE MACHINE_ARCH MACHINE_CPU; \ (cd ${.CURDIR}/lib; \ for lib in csu libc; do \ (cd $$lib; \ eval ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \ ${MAKE} depend all ;\ eval ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} DESTDIR=${CROSSDIR} \ ${MAKE} install); \ done; \ eval ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \ SKIPDIR=\"${NO_CROSS} libocurses/PSD.doc\" \ ${MAKE} depend all ; \ eval ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} DESTDIR=${CROSSDIR} \ SKIPDIR=\"${NO_CROSS} libocurses/PSD.doc\" \ ${MAKE} install) cross-bin: ${CROSSOBJ} MACHINE=${TARGET} \ MACHINE_ARCH=${TARGET_ARCH} MACHINE_CPU=${TARGET_CPU}; \ export MACHINE MACHINE_ARCH MACHINE_CPU; \ for i in libexec bin sbin usr.bin usr.sbin; do \ (cd ${.CURDIR}/$$i; \ eval ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \ SKIPDIR=\"${BINUTILS} ${NO_CROSS}\" \ ${MAKE} depend all ; \ eval ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} DESTDIR=${CROSSDIR} \ SKIPDIR=\"${BINUTILS} ${NO_CROSS}\" \ ${MAKE} install); \ done cross-gnu: ${CROSSOBJ} MACHINE=${TARGET} \ MACHINE_ARCH=${TARGET_ARCH} MACHINE_CPU=${TARGET_CPU}; \ export MACHINE MACHINE_ARCH MACHINE_CPU; \ for i in gnu/lib gnu/usr.sbin gnu/usr.bin ; do \ (cd ${.CURDIR}/$$i; \ eval ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \ SKIPDIR=\"${NO_CROSS}\" \ ${MAKE} depend all ; \ eval ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} DESTDIR=${CROSSDIR} \ SKIPDIR=\"${NO_CROSS}\" \ ${MAKE} install); \ done cross-share: ${CROSSOBJ} MACHINE=${TARGET} \ MACHINE_ARCH=${TARGET_ARCH} MACHINE_CPU=${TARGET_CPU}; \ export MACHINE MACHINE_ARCH MACHINE_CPU; \ for i in share; do \ (cd ${.CURDIR}/$$i; \ eval ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \ SKIPDIR=\"${NO_CROSS}\" \ ${MAKE} depend all install); \ done cross-sys: ${CROSSOBJ} MACHINE=${TARGET} \ MACHINE_ARCH=${TARGET_ARCH} MACHINE_CPU=${TARGET_CPU}; \ export MACHINE MACHINE_ARCH MACHINE_CPU; \ for i in sys; do \ (cd ${.CURDIR}/$$i; \ eval ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \ SKIPDIR=\"${NO_CROSS}\" \ ${MAKE} depend all install); \ done cross-etc-root-var: ${CROSSOBJ} (cd ${.CURDIR}/etc && \ MACHINE=${TARGET} \ MACHINE_ARCH=${TARGET_ARCH} MACHINE_CPU=${TARGET_CPU} \ DESTDIR=${CROSSDIR} \ ${MAKE} distribution-etc-root-var) cross-depend: @(cd ${.CURDIR} && \ BSDOBJDIR=${CROSSDIR}/usr/obj \ BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \ SKIPDIR="${NO_CROSS}" \ ${MAKE} depend) cross-clean: @(cd ${.CURDIR} && \ BSDOBJDIR=${CROSSDIR}/usr/obj \ BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \ SKIPDIR="${NO_CROSS}" \ ${MAKE} clean) cross-cleandir: @(cd ${.CURDIR} && \ BSDOBJDIR=${CROSSDIR}/usr/obj \ BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \ SKIPDIR="${NO_CROSS}" \ ${MAKE} cleandir)