Makefile.cross revision 1.1
1# $OpenBSD: Makefile.cross,v 1.1 2005/01/09 20:36:20 espie Exp $ 2 3cross-tools: cross-includes cross-binutils cross-gcc cross-lib 4cross-distrib: cross-tools cross-bin cross-etc-root-var 5 6CROSSCPPFLAGS?= -nostdinc -I${CROSSDIR}/usr/include 7CROSSLDFLAGS?= -nostdlib -L${CROSSDIR}/usr/lib -static 8CROSSCFLAGS?= ${CROSSCPPFLAGS} 9CROSSCXXFLAGS?= ${CROSSCPPFLAGS} 10LDSTATIC?= -static 11 12CROSSDIR= ${DESTDIR}/usr/cross/${TARGET} 13CROSSENV= 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}\" 25CROSSPATH= ${PATH}:${CROSSDIR}/usr/bin 26CROSSLANGS?= c c++ 27 28CROSSDIRS= ${CROSSDIR}/.dirs_done 29CROSSOBJ= ${CROSSDIR}/usr/obj/.obj_done 30CROSSINCLUDES= ${CROSSDIR}/usr/include/.includes_done 31CROSSBINUTILS= ${CROSSDIR}/usr/bin/.binutils_done 32CROSSGCC= ${CROSSDIR}/usr/bin/.gcc_done 33NO_CROSS= isakmpd tn3270 less sudo openssl libkeynote libssl \ 34 photurisd keynote sectok ssh 35 36cross-dirs: ${CROSSDIRS} 37cross-obj: ${CROSSOBJ} 38cross-includes: ${CROSSINCLUDES} 39cross-binutils: ${CROSSBINUTILS} 40cross-gcc: ${CROSSGCC} 41 42cross-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" 99BINUTILS= ar as ld nm ranlib objcopy objdump strings strip 100NEW_BINUTILS?= No 101.else 102BINUTILS= ar as gasp ld nm objcopy objdump ranlib readelf size \ 103 strings strip 104NEW_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" 181USE_GCC3=yes 182.else 183USE_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 234cross-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 247cross-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 257cross-etc-root-var: ${CROSSOBJ} 258 (cd ${.CURDIR}/etc && \ 259 DESTDIR=${CROSSDIR} ${MAKE} distribution-etc-root-var) 260 261cross-depend: 262 @(cd ${.CURDIR} && \ 263 BSDOBJDIR=${CROSSDIR}/usr/obj \ 264 BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \ 265 SKIPDIR="${NO_CROSS}" \ 266 ${MAKE} depend) 267 268cross-clean: 269 @(cd ${.CURDIR} && \ 270 BSDOBJDIR=${CROSSDIR}/usr/obj \ 271 BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \ 272 SKIPDIR="${NO_CROSS}" \ 273 ${MAKE} clean) 274 275cross-cleandir: 276 @(cd ${.CURDIR} && \ 277 BSDOBJDIR=${CROSSDIR}/usr/obj \ 278 BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \ 279 SKIPDIR="${NO_CROSS}" \ 280 ${MAKE} cleandir) 281 282