#!/bin/sh

LIBS="x11"
USE_XINERAMA="xinerama"
USE_XRANDR="xrandr"
USE_IMLIB2="imlib2"
USE_XFT="xft freetype2"
OS=`uname -s`
PREFIX=/usr/local
MANPREFIX="$PREFIX/man"
XDG_CONFIG_DIR="$PREFIX/etc/xdg"

while true; do
    case "$1" in
        --without-xinerama)
	    USE_XINERAMA="";  shift;;
        --without-imlib2)
            USE_IMLIB2="";  shift;;
	--without-xft)
	    USE_XFT="";  shift;;
	--prefix)
	    [ -z "$2" ] && echo "Missing argument" && exit 1
	    PREFIX=$2; shift 2;;
	--man-prefix)
	    [ -z "$2" ] && echo "Missing argument" && exit 1
	    MANPREFIX=$2; shift 2;;
	--xdg-config-dir)
	    [ -z "$2" ] && echo "Missing argument" && exit 1
	    XDG_CONFIG_DIR=$2; shift 2;;
	--help|-h)
	    echo "Usage: ./configure [options]
	--without-xinerama		: compile without xinerama support
        --without-imlib2                : compile without imlib2 support
	--without-xft			: compile without xft support
	--prefix DIRECTORY		: install binary with specified prefix (default $PREFIX)
	--man-prefix DIRECTORY		: install binary with specified prefix (default $PREFIX)
	--xdg-config-dir DIRECTORY	: install configuration to specified directory (default $XDG_CONFIG_DIR)"
	    exit 0;;
	*) break;;
    esac
done

LIBS="$LIBS $USE_XINERAMA $USE_IMLIB2 $USE_XFT"

which pkg-config > /dev/null 2>&1

if [ $? -eq 0 ];
then
    CFLAGS=`pkg-config --cflags-only-I $LIBS`
    LDFLAGS=`pkg-config --libs $LIBS`
else
	# Try to use some known paths
    case $OS in
	FreeBSD)
	    CFLAGS="-I/usr/local/include -I/usr/local/include/freetype2"
	    LDFLAGS="-L/usr/local/lib";;
	OpenBSD)
	    CFLAGS="-I/usr/X11R6/include -I/usr/local/include -I/usr/local/include/freetype2"
	    LDFLAGS="-L/usr/X11R6/lib -L/usr/local/lib";;
	NetBSD)
	    CFLAGS="-I/usr/X11R7/include -I/usr/pkg/include -I/usr/local/include/freetype2"
	    LDFLAGS="-L/usr/X11R7/lib -L/usr/pkg/lib";;
	Linux)
	    CFLAGS=""
	    LDFLAGS=""
	    ;;
	*)
	    echo "No default CFLAGS and LDFLAGS found for your OS, feel free to contribute or install pkg-config :)"
	    exit 1;;
    esac

    LDFLAGS="$LDFLAGS -lX11"

    [ -n "$USE_XINERAMA" ] && LDFLAGS="$LDFLAGS -lXinerama"
    [ -n "$USE_IMLIB2" ] && LDFLAGS="$LDFLAGS -lImlib2"
    [ -n "$USE_XFT" ] && LDFLAGS="$LDFLAGS -lxft -lfreetype"
fi

[ -n "$USE_XINERAMA" ] && CFLAGS="$CFLAGS -DHAVE_XINERAMA"
[ -n "$USE_IMLIB2" ] && CFLAGS="$CFLAGS -DHAVE_IMLIB2"
[ -n "$USE_XFT" ] && CFLAGS="$CFLAGS -DHAVE_XFT"

# Debian hardening options http://wiki.debian.org/Hardening
which dpkg-buildflags > /dev/null 2>&1
if [ $? -eq 0 ];
then
    CFLAGS="$CFLAGS -D_FORTIFY_SOURCE=2 `dpkg-buildflags --get CFLAGS`"
    LDFLAGS="$LDFLAGS `dpkg-buildflags --get LDFLAGS`"
fi

cat > Makefile << EOF
PREFIX=$PREFIX
XDG_CONFIG_DIR=$XDG_CONFIG_DIR
MANPREFIX=$MANPREFIX

CFLAGS+=$CFLAGS
LDFLAGS+=$LDFLAGS

EOF

cat Makefile.in >> Makefile

echo "Compilation resume:
OS=$OS
CFLAGS=$CFLAGS
LDFLAGS=$LDFLAGS
PREFIX=$PREFIX
MANPREFIX=$MANPREFIX
XDG_CONFIG_DIR=$XDG_CONFIG_DIR

You can run 'make' now :-)
"
