#!/bin/sh

PATH=/bin:/usr/bin:/usr/local/bin

if [ $# -ne 2 ]
then
  echo "usage: $0 <Version> <Installation Directory>"
  exit 1
fi

INSTPREFIX_BASE=/tmp/postgresql
PREFIX=$2
VERSION=$1
WD=`pwd`

SRCDIR="${PREFIX}/i386"
DESTDIR="${PREFIX}/result"

_process_folder ()
{
  local currdir=${1}
  local indent="${2}  "
  cd ${SRCDIR}/${currdir}

  local FILES=`ls -A`
  local FILE=test
  for FILE in ${FILES}
  do
    cd ${SRCDIR}/${currdir}
    echo "${indent}Processing: ${currdir}/${FILE}"
    local TYPE=`file ${FILE} 2>/dev/null` || exit 1
    local IS_DIR=`echo ${TYPE} | grep directory`
    local IS_OBJ=`echo ${TYPE} | grep "Mach-O"`
    if [ x"${IS_DIR}" != x"" ]; then
      mkdir -p ${DESTDIR}/${currdir}/${FILE}
      _process_folder "${currdir}/${FILE}" "${indent}"
    elif [ x"${IS_OBJ}" != x"" ]; then
      lipo -create -output "${DESTDIR}/${currdir}/${FILE}" "${PREFIX}/i386/${currdir}/${FILE}" "${PREFIX}/x86_64/${currdir}/${FILE}" 
    else
      cp "${FILE}" "${DESTDIR}/${currdir}/"
    fi
  done
}

_process_files ()
{
  cd ${SRCDIR}
  local FILES=`ls -A`
  for FILE in ${FILES}
  do
    cd ${SRCDIR}
    echo "  Processing: ${FILE}"
    local TYPE=`file ${FILE} 2>/dev/null` || exit 1
    local IS_DIR=`echo ${TYPE} | grep directory`
    local IS_OBJ=`echo ${TYPE} | grep "Mach-O"`
    if [ x"${IS_DIR}" != x"" ]; then
      mkdir -p ${DESTDIR}/${FILE}
      _process_folder "${FILE}" "  "
    elif [ x"${IS_OBJ}" != x"" ]; then
      lipo -create -output "/${FILE}" "${PREFIX}/i386/${FILE}" "${PREFIX}/x86_64/${FILE}" 
    else
      cp "${FILE}" "${DESTDIR}/"
    fi
  done
}

rm -rf postgresql-$VERSION
if [ ! -d postgresql-$VERSION ]; then
  tar -jxf postgresql-$VERSION.tar.bz2
fi
cd postgresql-$VERSION

for ARCH in i386 x86_64
do
  cd $WD/postgresql-$VERSION
  make distclean
  CFLAGS="-isysroot /Developer/SDKs/MacOSX10.7.sdk -mmacosx-version-min=10.7 -O2 -arch ${ARCH}" ./configure --prefix=$PREFIX --with-openssl --with-perl --with-python --with-tcl --with-bonjour --with-krb5 || exit 1

  make -j 2 || exit 1
  make DESTDIR=${PREFIX}/${ARCH} install || exit 1

  cd contrib
  make all || exit 1
  make DESTDIR=${PREFIX}/${ARCH} install || exit 1
done

DESTDIR=${PREFIX}/result
mkdir -p ${DESTDIR}
SRCDIR=${PREFIX}/i386

_process_files 

mv ${PREFIX}/result/${PREFIX}/* ${PREFIX}/
rm -rf ${PREFIX}/result
rm -rf ${PREFIX}/i386
rm -rf ${PREFIX}/x86_64


cd $WD
