Annotation of src/Makefile.cross, Revision 1.1
1.1 ! espie 1: # $OpenBSD$
! 2:
! 3: cross-tools: cross-includes cross-binutils cross-gcc cross-lib
! 4: cross-distrib: cross-tools cross-bin cross-etc-root-var
! 5:
! 6: CROSSCPPFLAGS?= -nostdinc -I${CROSSDIR}/usr/include
! 7: CROSSLDFLAGS?= -nostdlib -L${CROSSDIR}/usr/lib -static
! 8: CROSSCFLAGS?= ${CROSSCPPFLAGS}
! 9: CROSSCXXFLAGS?= ${CROSSCPPFLAGS}
! 10: LDSTATIC?= -static
! 11:
! 12: CROSSDIR= ${DESTDIR}/usr/cross/${TARGET}
! 13: CROSSENV= AR=${CROSSDIR}/usr/bin/ar AS=${CROSSDIR}/usr/bin/as \
! 14: CC=${CROSSDIR}/usr/bin/cc CPP=${CROSSDIR}/usr/bin/cpp \
! 15: CXX=${CROSSDIR}/usr/bin/c++ \
! 16: LD=${CROSSDIR}/usr/bin/ld NM=${CROSSDIR}/usr/bin/nm \
! 17: LORDER=/usr/bin/lorder RANLIB=${CROSSDIR}/usr/bin/ranlib \
! 18: SIZE=${CROSSDIR}/usr/bin/size STRIP=${CROSSDIR}/usr/bin/strip \
! 19: HOSTCC=\"${CC}\" HOSTCXX=\"${CXX}\" NOMAN= DESTDIR=${CROSSDIR} \
! 20: HOSTCFLAGS=\"${CFLAGS}\" HOSTCXXFLAGS=\"${CXXFLAGS}\" \
! 21: HOSTLDFLAGS=\"${LDFLAGS} \" \
! 22: CFLAGS=\"${CROSSCFLAGS}\" CPPFLAGS=\"${CROSSCPPFLAGS}\" \
! 23: CXXFLAGS=\"${CROSSCXXFLAGS}\" \
! 24: LDFLAGS=\"${CROSSLDFLAGS}\"
! 25: CROSSPATH= ${PATH}:${CROSSDIR}/usr/bin
! 26: CROSSLANGS?= c c++
! 27:
! 28: CROSSDIRS= ${CROSSDIR}/.dirs_done
! 29: CROSSOBJ= ${CROSSDIR}/usr/obj/.obj_done
! 30: CROSSINCLUDES= ${CROSSDIR}/usr/include/.includes_done
! 31: CROSSBINUTILS= ${CROSSDIR}/usr/bin/.binutils_done
! 32: CROSSGCC= ${CROSSDIR}/usr/bin/.gcc_done
! 33: NO_CROSS= isakmpd tn3270 less sudo openssl libkeynote libssl \
! 34: photurisd keynote sectok ssh
! 35:
! 36: cross-dirs: ${CROSSDIRS}
! 37: cross-obj: ${CROSSOBJ}
! 38: cross-includes: ${CROSSINCLUDES}
! 39: cross-binutils: ${CROSSBINUTILS}
! 40: cross-gcc: ${CROSSGCC}
! 41:
! 42: cross-env:
! 43: @echo ${CROSSENV} MACHINE=${TARGET} \
! 44: MACHINE_ARCH=`cat ${CROSSDIR}/TARGET_ARCH`
! 45:
! 46: ${CROSSDIRS}:
! 47: @-mkdir -p ${CROSSDIR}
! 48: @case ${TARGET} in \
! 49: alpha|amd64|hppa|hppa64|i386|m68k|m88k|powerpc|sparc|sparc64|vax) \
! 50: echo ${TARGET} ;;\
! 51: amiga|hp300|mac68k|mvme68k) \
! 52: echo m68k ;;\
! 53: luna88k|mvme88k) \
! 54: echo m88k ;;\
! 55: macppc|mvmeppc) \
! 56: echo powerpc ;;\
! 57: sgi) \
! 58: echo mips64 ;;\
! 59: *) \
! 60: (echo Unknown arch ${TARGET} >&2) ; exit 1;; \
! 61: esac > ${CROSSDIR}/TARGET_ARCH
! 62: @echo TARGET_ARCH is `cat ${CROSSDIR}/TARGET_ARCH`
! 63: @eval `grep '^osr=' sys/conf/newvers.sh`; \
! 64: sed "s/\$$/-unknown-openbsd$$osr/" ${CROSSDIR}/TARGET_ARCH > \
! 65: ${CROSSDIR}/TARGET_CANON
! 66: @-mkdir -p ${CROSSDIR}
! 67: @-mkdir -p ${CROSSDIR}/usr/`cat ${CROSSDIR}/TARGET_CANON`
! 68: @ln -sf ${CROSSDIR}/usr/include \
! 69: ${CROSSDIR}/usr/`cat ${CROSSDIR}/TARGET_CANON`/include
! 70: @ln -sf ${CROSSDIR}/usr/lib \
! 71: ${CROSSDIR}/usr/`cat ${CROSSDIR}/TARGET_CANON`/lib
! 72: @-mkdir -p ${CROSSDIR}/usr/`cat ${CROSSDIR}/TARGET_CANON`/bin
! 73: @(cd ${.CURDIR}/etc && DESTDIR=${CROSSDIR} ${MAKE} distrib-dirs)
! 74: @touch ${CROSSDIRS}
! 75:
! 76: ${CROSSOBJ}: ${CROSSDIRS}
! 77: @-mkdir -p ${CROSSDIR}/usr/obj
! 78: @(cd ${.CURDIR} && \
! 79: BSDOBJDIR=${CROSSDIR}/usr/obj \
! 80: MACHINE=${TARGET} \
! 81: MACHINE_ARCH=`cat ${CROSSDIR}/TARGET_ARCH` \
! 82: BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
! 83: ${MAKE} obj)
! 84: @touch ${CROSSOBJ}
! 85:
! 86: ${CROSSINCLUDES}: ${CROSSOBJ}
! 87: @-mkdir -p ${CROSSDIR}/usr/include
! 88: @(cd ${.CURDIR}/include && \
! 89: MACHINE=${TARGET} MACHINE_ARCH=`cat ${CROSSDIR}/TARGET_ARCH` \
! 90: MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
! 91: ${MAKE} prereq && \
! 92: MACHINE=${TARGET} MACHINE_ARCH=`cat ${CROSSDIR}/TARGET_ARCH` \
! 93: MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
! 94: ${MAKE} DESTDIR=${CROSSDIR} includes)
! 95: @touch ${CROSSINCLUDES}
! 96:
! 97: .if ${MACHINE_ARCH} == "m68k" || ${MACHINE_ARCH} == "m88k" || \
! 98: ${MACHINE_ARCH} == "vax"
! 99: BINUTILS= ar as ld nm ranlib objcopy objdump strings strip
! 100: NEW_BINUTILS?= No
! 101: .else
! 102: BINUTILS= ar as gasp ld nm objcopy objdump ranlib readelf size \
! 103: strings strip
! 104: NEW_BINUTILS?= Yes
! 105: .endif
! 106:
! 107: ${CROSSBINUTILS}: ${CROSSINCLUDES}
! 108: .if ${NEW_BINUTILS:L} == "yes"
! 109: (cd ${.CURDIR}/gnu/usr.bin/binutils; \
! 110: MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
! 111: TARGET_ARCH=`cat ${CROSSDIR}/TARGET_ARCH` \
! 112: ${MAKE} -f Makefile.bsd-wrapper depend && \
! 113: MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
! 114: TARGET_ARCH=`cat ${CROSSDIR}/TARGET_ARCH` \
! 115: ${MAKE} -f Makefile.bsd-wrapper all && \
! 116: DESTDIR=${CROSSDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
! 117: ${MAKE} -f Makefile.bsd-wrapper install)
! 118: .else
! 119: (cd ${.CURDIR}/gnu/usr.bin/gas; \
! 120: TARGET_MACHINE_ARCH=`cat ${CROSSDIR}/TARGET_ARCH` \
! 121: MAKEOBJDIR=obj.${MACHINE}.${TARGET} ${MAKE} depend all; \
! 122: TARGET_MACHINE_ARCH=`cat ${CROSSDIR}/TARGET_ARCH` \
! 123: DESTDIR=${CROSSDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
! 124: ${MAKE} NOMAN= install)
! 125: ln -sf ${CROSSDIR}/usr/bin/as \
! 126: ${CROSSDIR}/usr/`cat ${CROSSDIR}/TARGET_CANON`/bin/as
! 127: (cd ${.CURDIR}/gnu/usr.bin/ld; \
! 128: TARGET_MACHINE_ARCH=`cat ${CROSSDIR}/TARGET_ARCH` \
! 129: MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
! 130: ${MAKE} NOPIC= NOMAN= depend all; \
! 131: TARGET_MACHINE_ARCH=`cat ${CROSSDIR}/TARGET_ARCH` \
! 132: DESTDIR=${CROSSDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
! 133: ${MAKE} NOPIC= NOMAN= install)
! 134: ln -sf ${CROSSDIR}/usr/bin/ld \
! 135: ${CROSSDIR}/usr/`cat ${CROSSDIR}/TARGET_CANON`/bin/ld
! 136: (cd ${.CURDIR}/usr.bin/ar; \
! 137: MAKEOBJDIR=obj.${MACHINE}.${TARGET} ${MAKE} NOMAN= depend all; \
! 138: DESTDIR=${CROSSDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
! 139: ${MAKE} NOMAN= install)
! 140: ln -sf ${CROSSDIR}/usr/bin/ar \
! 141: ${CROSSDIR}/usr/`cat ${CROSSDIR}/TARGET_CANON`/bin/ar
! 142: (cd ${.CURDIR}/usr.bin/ranlib; \
! 143: MAKEOBJDIR=obj.${MACHINE}.${TARGET} ${MAKE} NOMAN= depend all; \
! 144: DESTDIR=${CROSSDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
! 145: ${MAKE} NOMAN= install)
! 146: ln -sf ${CROSSDIR}/usr/bin/ranlib \
! 147: ${CROSSDIR}/usr/`cat ${CROSSDIR}/TARGET_CANON`/bin/ranlib
! 148: (cd ${.CURDIR}/usr.bin/strip; \
! 149: MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
! 150: ${MAKE} TARGET_MACHINE_ARCH=`cat ${CROSSDIR}/TARGET_ARCH` \
! 151: NOMAN= depend all; \
! 152: DESTDIR=${CROSSDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
! 153: ${MAKE} TARGET_MACHINE_ARCH=`cat ${CROSSDIR}/TARGET_ARCH` \
! 154: NOMAN= install)
! 155: ln -sf ${CROSSDIR}/usr/bin/strip \
! 156: ${CROSSDIR}/usr/`cat ${CROSSDIR}/TARGET_CANON`/bin/strip
! 157: .endif
! 158: @for cmd in ${BINUTILS}; do \
! 159: if [ ! -e ${CROSSDIR}/usr/bin/$$cmd -a \
! 160: -e ${CROSSDIR}/usr/bin/`cat ${CROSSDIR}/TARGET_CANON`-$$cmd ]; then \
! 161: ln -sf ${CROSSDIR}/usr/bin/`cat ${CROSSDIR}/TARGET_CANON`-$$cmd \
! 162: ${CROSSDIR}/usr/bin/$$cmd ;\
! 163: elif [ -e ${CROSSDIR}/usr/bin/$$cmd -a \
! 164: ! -e ${CROSSDIR}/usr/bin/`cat ${CROSSDIR}/TARGET_CANON`-$$cmd ]; then \
! 165: ln -sf ${CROSSDIR}/usr/bin/$$cmd \
! 166: ${CROSSDIR}/usr/bin/`cat ${CROSSDIR}/TARGET_CANON`-$$cmd; \
! 167: fi ;\
! 168: if [ -e ${CROSSDIR}/usr/bin/$$cmd -a \
! 169: ! -e ${CROSSDIR}/usr/`cat ${CROSSDIR}/TARGET_CANON`/bin/$$cmd ]; then \
! 170: ln -sf ${CROSSDIR}/usr/bin/$$cmd \
! 171: ${CROSSDIR}/usr/`cat ${CROSSDIR}/TARGET_CANON`/bin/$$cmd; \
! 172: fi ;\
! 173: done
! 174: @touch ${CROSSBINUTILS}
! 175:
! 176: # bsd.own.mk can't do it for us
! 177: .if ${TARGET} == "amd64" || ${TARGET} == "cats" || \
! 178: ${TARGET} == "hppa" || ${TARGET} == "hppa64" || \
! 179: ${TARGET} == "i386" || \
! 180: ${TARGET} == "sparc64" || ${TARGET} == "sgi"
! 181: USE_GCC3=yes
! 182: .else
! 183: USE_GCC3=no
! 184: .endif
! 185:
! 186: ${CROSSGCC}: ${CROSSBINUTILS}
! 187: .if ${USE_GCC3:L} == "yes"
! 188: (cd ${.CURDIR}/gnu/usr.bin/gcc; \
! 189: MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
! 190: TARGET_ARCH=`cat ${CROSSDIR}/TARGET_ARCH` CROSSDIR=${CROSSDIR} \
! 191: ${MAKE} -f Makefile.bsd-wrapper depend && \
! 192: MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
! 193: TARGET_ARCH=`cat ${CROSSDIR}/TARGET_ARCH` CROSSDIR=${CROSSDIR} \
! 194: ${MAKE} -f Makefile.bsd-wrapper all && \
! 195: DESTDIR=${CROSSDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
! 196: ${MAKE} -f Makefile.bsd-wrapper install)
! 197: ln -sf ${CROSSDIR}/usr/bin/`cat ${CROSSDIR}/TARGET_CANON`-g++ \
! 198: ${CROSSDIR}/usr/bin/c++
! 199: ln -sf ${CROSSDIR}/usr/libexec/cpp \
! 200: ${CROSSDIR}/usr/bin/cpp
! 201: .else
! 202: (cd ${CROSSDIR}/usr/obj/gnu/egcs/gcc; \
! 203: /bin/sh ${.CURDIR}/gnu/egcs/gcc/configure \
! 204: --with-gnu-as --with-gnu-ld --prefix ${CROSSDIR}/usr \
! 205: --target `cat ${CROSSDIR}/TARGET_CANON` \
! 206: --enable-languages="c,c++" --enable-cpp --disable-nls \
! 207: --with-gxx-include-dir=${CROSSDIR}/usr/include/g++ && \
! 208: PATH=${CROSSPATH} ${MAKE} BISON=yacc LANGUAGES="${CROSSLANGS}" \
! 209: CFLAGS="${CFLAGS} -I${.CURDIR}/gnu/lib/libiberty/include" \
! 210: LIBIBERTY_INCLUDES=${.CURDIR}/gnu/lib/libiberty/include \
! 211: DEMANGLER_PROG= DEMANGLE_H= LDFLAGS="${LDSTATIC}" build_infodir=. \
! 212: GCC_FOR_TARGET="./xgcc -B./ -I${CROSSDIR}/usr/include" && \
! 213: ${MAKE} BISON=yacc LANGUAGES="${CROSSLANGS}" LDFLAGS="${LDSTATIC}" \
! 214: GCC_FOR_TARGET="./xgcc -B./ -I${CROSSDIR}/usr/include" \
! 215: CFLAGS="${CFLAGS} -I${.CURDIR}/gnu/lib/libiberty/include" \
! 216: LIBIBERTY_INCLUDES=${.CURDIR}/gnu/lib/libiberty/include \
! 217: build_infodir=. INSTALL_MAN= INSTALL_HEADERS_DIR= install)
! 218: ln -sf ${CROSSDIR}/usr/bin/`cat ${CROSSDIR}/TARGET_CANON`-gcc \
! 219: ${CROSSDIR}/usr/bin/cc
! 220: ln -sf ${CROSSDIR}/usr/bin/`cat ${CROSSDIR}/TARGET_CANON`-g++ \
! 221: ${CROSSDIR}/usr/bin/c++
! 222: ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \
! 223: ${CROSSDIR}/usr/obj/gnu/egcs/gcc/cpp \
! 224: ${CROSSDIR}/usr/libexec/cpp
! 225: sed -e 's#/usr/libexec/cpp#${CROSSDIR}/usr/libexec/cpp#' \
! 226: -e 's#/usr/include#${CROSSDIR}/usr/include#' \
! 227: ${.CURDIR}/usr.bin/cpp/cpp.sh > ${CROSSDIR}/usr/bin/cpp
! 228: chmod ${BINMODE} ${CROSSDIR}/usr/bin/cpp
! 229: chown ${BINOWN}:${BINGRP} ${CROSSDIR}/usr/bin/cpp
! 230: .endif
! 231: @touch ${CROSSGCC}
! 232:
! 233: # XXX MAKEOBJDIR maybe should be obj.${TARGET} here, revisit later
! 234: cross-lib: ${CROSSGCC}
! 235: MACHINE=${TARGET} MACHINE_ARCH=`cat ${CROSSDIR}/TARGET_ARCH`; \
! 236: export MACHINE MACHINE_ARCH; \
! 237: (cd ${.CURDIR}/lib; \
! 238: for lib in csu libc; do \
! 239: (cd $$lib; \
! 240: eval ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
! 241: ${MAKE} depend all install); \
! 242: done; \
! 243: eval ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
! 244: SKIPDIR=\"${NO_CROSS} libocurses/PSD.doc\" \
! 245: ${MAKE} depend all install)
! 246:
! 247: cross-bin: ${CROSSOBJ}
! 248: MACHINE=${TARGET} MACHINE_ARCH=`cat ${CROSSDIR}/TARGET_ARCH`; \
! 249: export MACHINE MACHINE_ARCH; \
! 250: for i in libexec bin sbin usr.bin usr.sbin; do \
! 251: (cd ${.CURDIR}/$$i; \
! 252: eval ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
! 253: SKIPDIR=\"${BINUTILS} ${NO_CROSS}\" \
! 254: ${MAKE} depend all install); \
! 255: done
! 256:
! 257: cross-etc-root-var: ${CROSSOBJ}
! 258: (cd ${.CURDIR}/etc && \
! 259: DESTDIR=${CROSSDIR} ${MAKE} distribution-etc-root-var)
! 260:
! 261: cross-depend:
! 262: @(cd ${.CURDIR} && \
! 263: BSDOBJDIR=${CROSSDIR}/usr/obj \
! 264: BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
! 265: SKIPDIR="${NO_CROSS}" \
! 266: ${MAKE} depend)
! 267:
! 268: cross-clean:
! 269: @(cd ${.CURDIR} && \
! 270: BSDOBJDIR=${CROSSDIR}/usr/obj \
! 271: BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
! 272: SKIPDIR="${NO_CROSS}" \
! 273: ${MAKE} clean)
! 274:
! 275: cross-cleandir:
! 276: @(cd ${.CURDIR} && \
! 277: BSDOBJDIR=${CROSSDIR}/usr/obj \
! 278: BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
! 279: SKIPDIR="${NO_CROSS}" \
! 280: ${MAKE} cleandir)
! 281: