#! /bin/bash

source "buildutils.sh"

# PACKAGE ####################################################################

PACKAGE=QGLViewer
DEPENDENCIES=Qt

# SETUP ######################################################################

set -e
cd `dirname "$0"`
PREFIX=`pwd`

if [ -e ".${PACKAGE}-BUILT" ]; then
    exit 0
fi

# DEPENDENCIES ###############################################################

build_deps $DEPENDENCIES

# FETCH SOURCE ###############################################################

mkdir -p build
cd build

PACKAGE_URL_REF="${PACKAGE}_URL"
PACKAGE_URL="${!PACKAGE_URL_REF}"
PACKAGE_DIR_REF="${PACKAGE}_DIR"
PACKAGE_DIR="${!PACKAGE_DIR_REF}"
PACKAGE_VER_REF="${PACKAGE}_VER"
PACKAGE_VER="${!PACKAGE_VER_REF}"
PACKAGE_EXTRACT_REF="${PACKAGE}_EXTRACT"
PACKAGE_EXTRACT="${!PACKAGE_EXTRACT_REF}"
PACKAGE_FILENAME=`basename ${PACKAGE_URL}`

if [ ! -e "${PACKAGE_FILENAME}" ]; then
    echo "Fetching ${PACKAGE_URL} ..."
    curl -L -O "${PACKAGE_URL}"
fi

echo "Extracting ${PACKAGE_FILENAME} ..."
${PACKAGE_EXTRACT} "${PACKAGE_FILENAME}"

echo "Building ${PACKAGE} ..."
cd ${PACKAGE_DIR}

# BUILD STEPS ###############################################################

if [ x"${ARCH}" = x"Darwin" ]; then
    export MACOSX_DEPLOYMENT_TARGET=$CMAKE_OSX_DEPLOYMENT_TARGET
    export MACOSX_SYSROOT=$CMAKE_OSX_SYSROOT
    MACOSX_ARCHFLAGS=""
    for archflag in $CMAKE_OSX_ARCHITECTURES; do
        MACOSX_ARCHFLAGS+="-arch $archflag "
        if [ x"${archflag}" = x"i386" ]; then
          MACOSX_ARCHFLAGS_FOR_QMAKE+=" x86"
        else
          MACOSX_ARCHFLAGS_FOR_QMAKE+=" $archflag"
        fi
    done;
    export MACOSX_ARCHFLAGS
    export CFLAGS="-isysroot $MACOSX_SYSROOT $MACOSX_ARCHFLAGS -mmacosx-version-min=$MACOSX_DEPLOYMENT_TARGET $CFLAGS"
    export CXXFLAGS="-isysroot $MACOSX_SYSROOT $MACOSX_ARCHFLAGS -mmacosx-version-min=$MACOSX_DEPLOYMENT_TARGET $CXXFLAGS"
    export LDFLAGS="$MACOSX_ARCHFLAGS -mmacosx-version-min=$MACOSX_DEPLOYMENT_TARGET $LDFLAGS"

    # Force a dylib installation on OS X
    patch -p1 <<EOF
$ diff -Nauw libQGLViewer-2.3.5/QGLViewer/QGLViewer.pro.original libQGLViewer-2.3.5/QGLViewer/QGLViewer.pro
--- libQGLViewer-2.3.5/QGLViewer/QGLViewer.pro	2009-08-17 16:45:40.000000000 +0100
+++ libQGLViewer-2.3.5/QGLViewer/QGLViewer.pro.original	2009-08-17 16:43:45.000000000 +0100
@@ -147,8 +147,8 @@
     QMAKE_LIBS_OPENGL *= -lglut
   }

-  MOC_DIR = .moc
-  OBJECTS_DIR = .obj
+  #MOC_DIR = .moc # REMOVED BY UTOPIA BUILD SYSTEM
+  #OBJECTS_DIR = .obj # REMOVED BY UTOPIA BUILD SYSTEM

   # Adds a -P option so that "make install" as root creates files owned by root and links are preserved.
   # This is not a standard option, and it may have to be removed on old Unix flavors.
@@ -235,7 +235,8 @@
 # -------------------
 macx|darwin-g++ {
   # This setting creates a Mac framework. Comment out this line to create a dylib instead.
-  !staticlib: CONFIG *= lib_bundle
+  #!staticlib: CONFIG *= lib_bundle # REMOVED BY UTOPIA BUILD SYSTEM
+  CONFIG += $MACOSX_ARCHFLAGS_FOR_QMAKE

   include.files *= qglviewer.icns

EOF
elif [ x"${ARCH}" = x"Windows" ]; then
    # Force a release install on win32
    patch -p1 <<'EOF'
$ diff -Nauw libQGLViewer-2.3.5/QGLViewer/QGLViewer.pro.original libQGLViewer-2.3.5/QGLViewer/QGLViewer.pro
--- libQGLViewer-2.3.5/QGLViewer/QGLViewer.pro	2009-08-17 16:45:40.000000000 +0100
+++ libQGLViewer-2.3.5/QGLViewer/QGLViewer.pro.original	2009-08-17 16:43:45.000000000 +0100
@@ -275,7 +275,6 @@
 #               ---------------------
 win32 {
   # Windows requires a debug lib version to link against debug applications
-  CONFIG *= debug_and_release build_all

   # Needed by Intel C++, (icl.exe) so that WINGDIAPI is a defined symbol in gl.h.
   DEFINES *= WIN32
@@ -302,6 +301,10 @@
       QMAKE_CXXFLAGS *= -EHs
     }
   }
+  include.path = $${INCLUDE_DIR}/QGLViewer
+  include.files = $${QGL_HEADERS}
+  target.path = $${LIB_DIR}
+  INSTALLS *= target include
 }

 contains( QT_VERSION, "^4.*" ) {
EOF
    PATH=${PREFIX}/Qt/bin:$PATH
	MKSPEC="-spec win32-g++"
fi

cd QGLViewer

cat >>QGLViewer.pro <<'EOF'
# FOLLOWING CODE ADDED BY UTOPIA BUILD SYSTEM
CONFIG -= debug release
CONFIG *= debug_and_release build_all

build_pass:CONFIG(Debug, Release|Debug) {
  unix: TARGET = $$join(TARGET,,,_debug)
  else: TARGET = $$join(TARGET,,,d)
}
EOF

PATH=${PREFIX}/bin:$PATH

echo qmake PREFIX="$PREFIX/build" \
      LIB_DIR="$PREFIX/lib" INCLUDE_DIR="$PREFIX/include" \
      DOC_DIR="$PREFIX/share" DEFINES=NO_VECTORIAL_RENDER $MKSPEC

qmake PREFIX="$PREFIX/build" \
      LIB_DIR="$PREFIX/lib" INCLUDE_DIR="$PREFIX/include" \
      DOC_DIR="$PREFIX/share" DEFINES=NO_VECTORIAL_RENDER $MKSPEC

make
make install

if [ x"${ARCH}" = x"Darwin" ]; then
    install_name_tool -id "$PREFIX/lib/libQGLViewer.${PACKAGE_VER}.dylib" "$PREFIX/lib/libQGLViewer.${PACKAGE_VER}.dylib"
    install_name_tool -id "$PREFIX/lib/libQGLViewer_debug.${PACKAGE_VER}.dylib" "$PREFIX/lib/libQGLViewer_debug.${PACKAGE_VER}.dylib"
fi

##############################################################################

cd "${PREFIX}"
touch ".${PACKAGE}-BUILT"

##############################################################################
