#!/bin/bash

MAC_SDK=""
MAC_ARCH=""
MAC_GCC_VERSION=4.2.1
DEST_PREFIX="$(pwd)"
GCC_PREFIX=""

#Platform options
case "$(uname)" in
  Linux) PLATFORM=LINUX ;;
  SunOS) PLATFORM=LINUX ;;
  Darwin) PLATFORM=MAC ;;
  MINGW*) PLATFORM=MINGW ;;
  *)
    echo "Unknown platform $(uname)"
    exit 2
  ;;
esac

while [ "$1" ]; do
  case "$1" in
    "-dest-prefix" | "--dest-prefix")
      shift
      DEST_PREFIX="$1"
    ;;
    "-win32" | "--win32")
      PLATFORM="MINGW"
    ;;
    "-mac-sdk" | "--mac-sdk")
      shift
      PLATFORM="MAC"
      MAC_SDK=$1
    ;;
    "-mac-arch" | "--mac-arch")
      shift
      PLATFORM="MAC"
      MAC_ARCH=$1
    ;;
  esac
  shift
done

case "$PLATFORM" in
  "LINUX")
    GCC_PREFIX=
    CFLAGS="-fPIC -O2 -funroll-loops -fexpensive-optimizations"
  ;;
  "MINGW")
    GCC_PREFIX="i686-mingw32-"
    CFLAGS="-O2 -funroll-loops -fexpensive-optimizations"
  ;;
  "MAC")
    case "$MAC_ARCH" in
      "")
        MAC_ARCH="-arch x86_64"
        GCC_PREFIX="i686-apple-darwin10"
      ;;
      "x86")
        MAC_ARCH="-arch i386"
        GCC_PREFIX="i686-apple-darwin10"
      ;;
      "ppc")
        MAC_ARCH="-arch ppc"
        GCC_PREFIX="powerpc-apple-darwin10"
      ;;
    esac
    if echo "$MAC_SDK" | grep -q "10.5"; then
      MACOSX_DEPLOYMENT_TARGET=10.5
      ISYSTEM="-isystem /usr/lib/gcc/${GCC_PREFIX}/${MAC_GCC_VERSION}/include"
    else
      MACOSX_DEPLOYMENT_TARGET=
      ISYSTEM=
    fi
    GCC_PREFIX=
    CFLAGS="${MAC_ARCH} -isysroot ${MAC_SDK} $ISYSTEM -fPIC -O2 -funroll-loops -fexpensive-optimizations"
    LDFLAGS="-isysroot ${MAC_SDK} -Wl,-syslibroot,${MAC_SDK}"
  ;;
esac

# Create a wrapper Makefile
(
cat << END
export GCC_PREFIX=$GCC_PREFIX
export CFLAGS=$CFLAGS
export FFLAGS=$CFLAGS
export LDFLAGS=$LDFLAGS
export MACOSX_DEPLOYMENT_TARGET=$MACOSX_DEPLOYMENT_TARGET

first: $DEST_PREFIX/lib/libdfftpack.a
$DEST_PREFIX/lib/libdfftpack.a: Makefile
	make clean
	make -C src
	[ -d $DEST_PREFIX/lib ] || mkdir -p $DEST_PREFIX/lib
	cp src/libdfftpack.a $DEST_PREFIX/lib
	\$(GCC_PREFIX)ranlib $DEST_PREFIX/lib/libdfftpack.a
release: first
debug: first
clean:
	make -C src clean
install: first
END
) > new_Makefile
if ! diff new_Makefile Makefile; then
  mv new_Makefile Makefile
else
  rm new_Makefile
fi

