#!/bin/sh
#
# Build mingw win32 binutils for multiple targets
# armin 12 dec 2004
#
VER="2.15"
LOG="/usr/src/mkbinutils.log"
CC="gcc -mno-cygwin"
INSTDIR="/tmp/binutils"
export CC

log ()
{
  if [ "$1" = " " ]; then
    echo >> ${LOG}
  else
    D=`date +'%F %H:%M:%S:'`
    echo "${D} $1" >> ${LOG}
  fi
}

# powerpc-darwin does not work ?
TARGETS="i386-linux i386-freebsd i386-go32 i386-netbsd i386-solaris i386-netware \
         powerpc-freebsd powerpc-netbsd powerpc-linux  \
         powerpc-openbsd  \
         sparc-linux sparc-netbsd sparc-solaris"

if [ "$1" = "zip" ]; then
  P=`pwd`
  for TARGET in $TARGETS; do
    echo "${INSTDIR}-${TARGET}/bin/${TARGET}-ld.exe"
    if [ -f ${INSTDIR}-${TARGET}/bin/${TARGET}-ld.exe ]; then
      cd ${INSTDIR}-${TARGET}
      ZIPNAME="../binutils-${VER}-win32-${TARGET}.zip"
      [ -f $ZIPNAME ] && rm -f $ZIPNAME
      zip -9 -X $ZIPNAME bin/${TARGET}-as.exe bin/${TARGET}-ld.exe bin/${TARGET}-ar.exe bin/${TARGET}-objdump.exe bin/${TARGET}-strip.exe
    fi
  done
  cd $P
  exit
fi

cd binutils-${VER} || exit 1

for TARGET in $TARGETS; do
  log "starting build for $TARGET"
  if [ ! -f ../done_${TARGET} ]; then
    make distclean 2>&1 >/dev/null
    find -name config.cache -exec rm -f {} \;
    log "configuring $TARGET"
    ./configure --disable-nls --prefix=${INSTDIR}-$TARGET --host=i386-pc-mingw32 --target=$TARGET --disable-shared
    RES=$?
    if [ ! "$RES" = "0" ]; then
      log "configure failed for target $TARGET"
    else
      log "starting make for $TARGET"
      make && log "starting make install for $TARGET" && make install
      RES=$?
      if [ ! "$RES" = "0" ]; then
        log "make failed for target $TARGET"
      else
        touch ../done_${TARGET}
        log "$TARGET made OK"
        [ -d ${INSTDIR}-$TARGET/$TARGET ] && rm -rf ${INSTDIR}-$TARGET/$TARGET
        [ -d ${INSTDIR}-$TARGET/info ] && rm -rf ${INSTDIR}-$TARGET/info
        [ -d ${INSTDIR}-$TARGET/lib ] && rm -rf ${INSTDIR}-$TARGET/lib
        [ -d ${INSTDIR}-$TARGET/man ] && rm -rf ${INSTDIR}-$TARGET/man
        strip ${INSTDIR}-$TARGET/bin/*
      fi
    fi
  else
    log "Skipping $TARGET (already made)"
  fi
done

#./configure --disable-nls --prefix=/tmp/binutils-win32 --host=i386-pc-mingw32 --target=i386-netware --disable-shared || exit 1
#make && make install
cd ..
