#!/bin/sh
#
#  rharchive
#
#  The Radio Helsinki Archive Daemon
#
#
#  Copyright (C) 2010-2011 Christian Pointner <equinox@helsinki.at>
#
#  This file is part of rharchive.
#
#  rharchive is free software: you can redistribute it and/or modify
#  it under the terms of the GNU General Public License as published by
#  the Free Software Foundation, either version 3 of the License, or
#  any later version.
#
#  rharchive is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#  GNU General Public License for more details.
#
#  You should have received a copy of the GNU General Public License
#  along with rharchive. If not, see <http://www.gnu.org/licenses/>.
#

set -e

TARGET=`uname -s`
EBUILD_COMPAT=0

PREFIX='/usr/local'
BINDIR=''
MANDIR=''
INSTALLMANPAGE=1
USE_CLANG=0

print_usage() {
  echo "configure --help                    print this"
  echo "          --target=<TARGET>         build target i.e. Linux (default: autodetect)"
  echo "          --prefix=<PREFIX>         the installation prefix (default: /usr/local)"
  echo "          --bindir=<DIR>            the path to the bin directory (default: $PREFIX/bin)"
  echo "          --mandir=<DIR>            the path to the system man pages (default: $PREFIX/share/man)"
  echo "          --no-manpage              dont't install manpage"
  echo "          --use-clang               use clang/llvm as compiler/linker"
}

for arg
do
  case $arg in
  --target=*)
    TARGET=${arg#--target=}
  ;;
  --prefix=*)
    PREFIX=${arg#--prefix=}
  ;;
  --bindir=*)
    BINDIR=${arg#--bindir=}
  ;;
  --mandir=*)
    MANDIR=${arg#--mandir=}
  ;;
  --no-manpage)
    INSTALLMANPAGE=0
  ;;
  --use-clang)
    USE_CLANG=1
  ;;
  --ebuild-compat)
    EBUILD_COMPAT=1
  ;;
  --help)
    print_usage
    exit 0
  ;;
  *)
    ERRORS="$ERRORS $arg"
  ;;
  esac
done

if [ -n "$ERRORS" ] && [ $EBUILD_COMPAT -ne 1 ]; then
  for error in $ERRORS; do
    echo "Unknown argument: $error"
  done

  print_usage
  exit 1
fi

if [ $USE_CLANG -eq 0 ]; then
  CFLAGS='-g -Wall -O2'
  LDFLAGS='-g -Wall -O2'
  COMPILER='gcc'
else
  CFLAGS='-g -O2'
  LDFLAGS='-g -O2'
  COMPILER='clang'
fi

CFLAGS="$CFLAGS $(pkg-config --cflags gstreamer-0.10) -DGST_DISABLE_DEPRECATED"
LDFLAGS="$LDFLAGS $(pkg-config --libs gstreamer-0.10)"

rm -f include.mk
rm -f config.h
case $TARGET in
  Linux)
  ;;
  OpenBSD|FreeBSD|NetBSD|GNU/kFreeBSD)
    CFLAGS=$CFLAGS' -I/usr/local/include'
    LDFLAGS=$LDFLAGS' -L/usr/local/lib'
  ;;
  *)
    echo "platform not supported"
    exit 1;
  ;;
esac

if [ -z "$BINDIR" ]; then
  BINDIR=$PREFIX/bin
fi

if [ -z "$MANDIR" ]; then
  MANDIR=$PREFIX/share/man
fi

cat > include.mk <<EOF
# this file was created automatically
# do not edit this file directly
# use ./configure instead

TARGET := '$TARGET'
CC := $COMPILER
CFLAGS := $CFLAGS
LDFLAGS := $LDFLAGS
STRIP := strip
INSTALL := install
RAGEL := ragel

PREFIX := '$PREFIX'
BINDIR := '$BINDIR'
EOF

if [ $INSTALLMANPAGE -eq 1 ]; then
    echo "MANDIR := '$MANDIR'" >> include.mk
    echo "installing manpage"
else
    echo "not installing manpage"
fi

VERSION=`cat ../version`
if which svn >/dev/null; then
    SVN_REV=`svn info 2> /dev/null | grep "^Revision: " | awk '{print($2)}'`
    if [ -n "$SVN_REV" ]; then
        VERSION="$VERSION (svn$SVN_REV)"
    fi
fi

HOSTNAME=`hostname`
DATE=`date +"%d.%m.%Y %H:%M:%S %Z"`

cat > config.h <<EOF
/*
 * rharchive config header
 *
 * this file was created automatically
 * do not edit this file directly
 * use ./configure instead
 */

#ifndef RHARCHIVE_config_h_INCLUDED
#define RHARCHIVE_config_h_INCLUDED

#define VERSION_STRING_0 "rharchive version $VERSION"
#define VERSION_STRING_1 "built on $HOSTNAME, $DATE"

#define TARGET "$TARGET"
#define PREFIX "$PREFIX"
#define BINDIR "$BINDIR"

#endif
EOF

exit 0