#!/bin/sh # # A script to build the crossutils for a set of platforms. # Note:cygwin seems to like to have all platforms qualified. # BASE=~ # where to store the built tree of binutils? DESTDIR=${BASE}/cross # directory where logs go LOGDIR=${BASE}/logs # where can I decrunch and build? WORKDIR=${BASE}/buildme # where is the binutils archive? BINUTILSPATH=~ # what is it's base name? BINUTILSBASE=binutils # what is the version part of the archive? BINUTILSVERSION=2.14 # is binutils archive gz or bz2? BINUTILS_GZIP=no # what i6868 platform do you want/need to build for? MYINTEL=i686 # target info, OSes per processor with "WIN" as special case BSD="freebsd netbsd openbsd" TARGETS_WIN="cygwin mingw32 msdosdjgpp" TARGETS_I386="${BSD} linux solaris darwin" TARGETS_X86_64="${BSD} linux" TARGETS_POWERPC="${BSD} linux darwin" TARGETS_SPARC="${BSD} linux solaris" #TARGETS_M68k= # I use the below because my default system is dual proc. #EXTRAOPT=-j 4 ########################################################################### # don't edit below # # # # LD_FLAGS="${LD_FLAGS} -static" LDFLAGS="${LD_FLAGS} -s" CFLAGS="${CFLAGS} -static" CPPFLAGS="${CPPFLAGS} -static" CXXFLAGS="${CXXFLAGS} -static" # # Make a list of targets # TARGETS="" for OS in ${TARGETS_WIN}; do TARGETS="${TARGETS} ${MYINTEL}-${OS}" done; for OS in ${TARGETS_I386}; do TARGETS="${TARGETS} ${MYINTEL}-${OS}" done; for OS in ${TARGETS_X86_64}; do TARGETS="${TARGETS} x86_64-${OS}" done; for OS in ${TARGETS_POWERPC}; do TARGETS="${TARGETS} powerpc-${OS}" done; for OS in ${TARGETS_SPARC}; do TARGETS="${TARGETS} sparc-${OS}" done; for OS in ${TARGETS_M68K}; do TARGETS="${TARGETS} m68k-${OS}" done; # # force slash # DESTDIR=${DESTDIR%/}/ WORKDIR=${WORKDIR%/}/ LOGDIR=${LOGDIR%/}/ BINUTILSPATH=${BINUTILSPATH%/}/ BINUTILSARCHIVE=${BINUTILSPATH}${BINUTILSBASE}-${BINUTILSVERSION} MAKE=make # # Make sure they exist # mkdir -p $DESTDIR mkdir -p $WORKDIR mkdir -p $LOGDIR # # BSD? -> gmake # SYSTEM=`uname -s` case "$SYSTEM" in *BSD*) MAKE=gmake ;; *bsd*) MAKE=gmake ;; esac # # tar.gz or .tar.bz2 ? # if [ $BINUTILS_GZIP = "no" ] ; then BINUTILSARCHIVE=${BINUTILSARCHIVE}.tar.bz2 else BINUTILSARCHIVE=${BINUTILSARCHIVE}.tar.gz fi # # depack or clean dir # cd ${WORKDIR} if [ ! -d ${WORKDIR}${BINUTILSBASE}-${BINUTILSVERSION} ]; then if [ $BINUTILS_GZIP = "no" ]; then bzip2 -dc $BINUTILSARCHIVE |tar xvf - > ${LOGDIR}log-extract else tar xvzf $BINUTILSARCHIVE > ${LOGDIR}log-extract fi if [ ! $? = 0 ]; then echo DECRUNCHING OF ${BINUTILSARCHIVE} failed exit fi else echo It seams that you already have a build directory. Skipping. cd ${WORKDIR}${BINUTILSBASE}-${BINUTILSVERSION} ${MAKE} clean >/dev/null fi cd ${WORKDIR}${BINUTILSBASE}-${BINUTILSVERSION} # # build loop. # FAILURES="" for a in $TARGETS; do if [ ! -f ${DESTDIR}bin/${a}-as ] ; then rm ./config.cache find ./ -type f -name config.cache -exec /bin/rm {} \; echo Building $a { ./configure --disable-nls --disable-shared --target=$a --prefix=${DESTDIR} && ${MAKE} $(EXTRAOPT) && ${MAKE} install && ${MAKE} clean; } > ${LOGDIR}log-${a} 2>&1 if [ ! $? = 0 ]; then echo $a FAILES! FAILURES="${FAILURES} ${a}" fi fi done; echo Failed targets: ${FAILURES}