#!/bin/bash

MAC_SDK=""
MAC_ARCH=""
MAC_GCC_VERSION=4.2.1
DEST_PREFIX="$(pwd)"
PREFIX="/usr/local/Geopsy.org"
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
    "-prefix" | "--prefix")
      shift
      PREFIX=$1
    ;;
    "-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"
  ;;
  "MINGW")
    GCC_PREFIX="i686-mingw32-"
    CFLAGS=""
  ;;
  "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"
    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/libmseed.a
$DEST_PREFIX/lib/libmseed.a: Makefile
	make clean
	make -C src
	[ -d $DEST_PREFIX/lib ] || mkdir -p $DEST_PREFIX/lib
	cp src/libmseed.a $DEST_PREFIX/lib
	\$(GCC_PREFIX)ranlib $DEST_PREFIX/lib/libmseed.a
	[ -d $DEST_PREFIX/include/mseed ] || mkdir -p $DEST_PREFIX/include/mseed
	rm -f $DEST_PREFIX/include/mseed.h
	ln -s $PWD/src/mseed.h $DEST_PREFIX/include
	cp src/libmseed.h $DEST_PREFIX/include/mseed
	cp src/lmplatform.h $DEST_PREFIX/include/mseed
release: first
debug: first
clean:
	make -C src clean
install: first
	[ -d \$(INSTALL_ROOT)$PREFIX/lib ] || mkdir -p \$(INSTALL_ROOT)$PREFIX/lib
	cp $DEST_PREFIX/lib/libmseed.a \$(INSTALL_ROOT)$PREFIX/lib
	\$(GCC_PREFIX)ranlib \$(INSTALL_ROOT)$PREFIX/lib/libmseed.a
	[ -d \$(INSTALL_ROOT)$PREFIX/include/mseed ] || mkdir -p \$(INSTALL_ROOT)$PREFIX/include/mseed
	rm -f \$(INSTALL_ROOT)$PREFIX/include/mseed.h
	cp src/mseed.h \$(INSTALL_ROOT)$PREFIX/include
	cp src/libmseed.h \$(INSTALL_ROOT)$PREFIX/include/mseed
	cp src/lmplatform.h \$(INSTALL_ROOT)$PREFIX/include/mseed
END
) > new_Makefile
if ! diff new_Makefile Makefile; then
  mv new_Makefile Makefile
else
  rm new_Makefile
fi

