#!/bin/bash

MAC_SDK=""
MAC_ARCH="x86"
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="-O2 -Wall -fPIC"
  ;;
  "MINGW")
    GCC_PREFIX="i686-mingw32-"
    CFLAGS="-O2 -Wall"
  ;;
  "MAC")
    case "$MAC_ARCH" in
      "x86")
        MAC_ARCH=i386
        GCC_PREFIX="i686-apple-darwin9"
      ;;
      "ppc")
        GCC_PREFIX="powerpc-apple-darwin9"
      ;;
    esac
    if echo "$MAC_SDK" | grep -q "10.4u"; then
      MACOSX_DEPLOYMENT_TARGET=10.4
      ISYSTEM="-isystem /usr/lib/gcc/${GCC_PREFIX}/${MAC_GCC_VERSION}/include"
    else
      MACOSX_DEPLOYMENT_TARGET=
      ISYSTEM=
    fi
    GCC_PREFIX=
    CFLAGS="-arch ${MAC_ARCH} -isysroot ${MAC_SDK} $ISYSTEM -fPIC -O2 -Wall"
    LDFLAGS="-isysroot ${MAC_SDK} -Wl,-syslibroot,${MAC_SDK}"
  ;;
esac

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

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

