#!/usr/bin/env bash
#
# Copyright 2012 Yorba Foundation
#
# This software is licensed under the GNU LGPL (version 2.1 or later).
# See the COPYING file in this distribution. 

DEFAULT_PREFIX="/usr/local"

PREFIX=$DEFAULT_PREFIX

configure_help() {
    printf "Usage:\n"
    printf "\t./configure [OPTIONS]...\n"
    printf "\n"
    printf "Options:\n"
    
    printf "\t-h, --help\t\tPrint this help and exit.\n"
    
    printf "\t--prefix=PREFIX\t\tPrepend PREFIX to program installation paths.\n"
    printf "\t\t\t\t[%s]\n" $DEFAULT_PREFIX
    
    printf "\t--debug\n"
    printf "\t\t\t\tBuild for debugging.\n"
    
    printf "\t--disable-schemas-compile\n"
    printf "\t\t\t\tDisable compiling the GSettings schema.\n"
    
    printf "\t--disable-desktop-update\n"
    printf "\t\t\t\tDisable desktop database update.\n"
    
    printf "\t--disable-icon-update\n"
    printf "\t\t\t\tDisable icon cache update.\n"
    
    printf "\n"
}

abort() {
    printf "%s: Invalid argument %s\n" $0 $1
    configure_help
    exit 1
}

while [ $# != 0 ]
do
    option=`echo $1 | sed 's/=.*//'`
    if [ `echo $1 | grep '='` ]
    then
        value=`echo $1 | sed 's/.*=//'`
    fi

    case $option in
        -h | --help)        configure_help
                            exit 0
                            ;;
        
        --prefix)           if [ ! $value ]
                            then
                                abort $1
                            fi
                            
                            CMDLINE="${CMDLINE} -DCMAKE_INSTALL_PREFIX=${value}"
                            ;;
        
        --debug)
                            CMDLINE="${CMDLINE} -DDEBUG=ON"
                            ;;
        
        --disable-schemas-compile)
                            CMDLINE="${CMDLINE} -DGSETTINGS_COMPILE=OFF"
                            CMDLINE="${CMDLINE} -DGSETTINGS_COMPILE_IN_PLACE=OFF"
                            ;;
        
        --disable-icon-update)
                            CMDLINE="${CMDLINE} -DICON_UPDATE=OFF"
                            ;;
        
        --disable-desktop-update)
                            CMDLINE="${CMDLINE} -DDESKTOP_UPDATE=OFF"
                            ;;
        
        *)                  abort $option
                            ;;
    esac
    
    shift
done

# Verify cmake is installed
# TODO: Check for minimum version number
if ! cmake --version
then
    printf "cmake must be installed to configure and build.\n"
    exit 1
fi

# Simple check to verify this script is running in the root of the source tree
if ! [ -e Makefile.in ]
then
    printf "configure script must be executed in source directory (Makefile.in not found).\n"
    exit 1
fi

# Remove existing Makefile so it's not left around if configure fails
rm -f Makefile

# Remove the build folder to force Cmake to update its cache.
rm -fr build

if ! mkdir -p build
then
    printf "Unable to create build directory.\n"
    exit 1
fi

cd build

if ! cmake $CMDLINE ..
then
    printf "Unable to prepare build directory.\n"
    exit 1
fi

cd ..

if ! cp -f Makefile.in Makefile
then
    printf "Unable to prepare Makefile.\n"
    exit 1
fi

printf "Configured.  Type 'make' to build, 'make install' to install.\n"
