#!/bin/bash
# From http://users.pcnet.ro/pchitescu/konq-e/xconfigure
#########################################################################
# wrapper for calling automake configuration files in a cross-compile
# environment
#########################################################################

#########################################################################
# set environment
#########################################################################
# for the picky ones
prefix=${PREFIX:=/usr/local/arm/2.95.3/}
target=${TARGET:=arm-linux}
cc=${CC:=$target-gcc}
gcc=${GCC:=$target-gcc}
ccc=${CCC:=$target-g++}
cxx=${CXX:=$target-g++}
#arch=${ARCH:="cpu=strongarm1100"}
arch=${ARCH:="cpu=strongarm"}
xlibs=${XLIBS:=$prefix/X11R6/lib}
as=${AS:=$target-as}
ld=${LD:=$target-ld}
ar=${AR:=$target-ar}
ranlib=${RANLIB:=$target-ranlib}
strip=${STRIP:=$target-strip}

set_host="--host=i386-slackware-linux"
set_prefix="--prefix=$prefix"
set_target="--target=$target"
set_libs="--libdir=$prefix/$target/lib"
set_xlibs="--x-libraries=$xlibs"
set_inc="--includedir=$prefix/$target/include"
set_oinc="--oldincludedir=$prefix/include"
set_einc="--with-extra-includes=$prefix/include"
set_elib="--with-extra-libs=$prefix/lib"

CROSS_COMPILE=1
BUILD_CC=gcc

#########################################################################
# usage function
#########################################################################
usage() {
  cat <<EOF
usage: $0 [path-to-configure-script] [configure options]

default options:
    --prefix=$prefix
    --target=$target
    --x-libraries=$xlibs

default environment:
    CROSS_COMPILE: $CROSS_COMPILE
    CFLAGS:        $CFLAGS
    LDFLAGS:       $LDFLAGS
    ARCH:          $ARCH
EOF
}

#########################################################################
# check path
#########################################################################
case "$PATH" in
    *$prefix/bin*) ;;
    *)             PATH="$PATH:$prefix/bin"
                   ;;
esac

#########################################################################
# set cflags
#########################################################################
case "$CFLAGS" in
    "") CFLAGS="-O2 -pipe -m$arch -DPTYS_ARE_GETPT -DPTYS_ARE_SEARCHED"
	;;
    *)  case "$CFLAGS" in
	    *-m*) ;;
	    *)    CFLAGS="$CFLAGS -m$arch"
		  ;;
        esac
	;;
esac

export CC GCC CXX AS LD AR BUILD_CC CFLAGS CROSS_COMPILE PATH

#########################################################################
# first parameter no option => must be the path to original
# configure script
#########################################################################
call_configure="./configure"
if [ -n "$1" ]
then
    case "$1" in
	--*) ;;
	*/configure) call_configure=$1
	             shift
	             ;;
        *)           call_configure="$1/configure"
	             shift
                     ;;
    esac
fi

#########################################################################
# configure script found/executable?
#########################################################################
if [ ! -x "$call_configure" ]
then
    echo "configure script not found or not executable" >&2
    usage
    exit 1
fi

for opt in $@
do
    case "$opt" in
	--prefix=*) set_prefix=
		   ;;
        --target=*) set_target=
	           ;;
        --host=*) set_host=
	           ;;
        --libdir=*) set_libs=
	           ;;
        --x-libraries=*) set_xlibs=
	           ;;
	--includedir=*) set_inc=
	           ;;
	--oldincludedir=*) set_oinc=
	           ;;
    esac
done


#########################################################################
# call the original configure script
#########################################################################

$call_configure $set_prefix $set_target $set_host $set_libs $set_xlibs $set_inc $set_oinc $set_einc $set_elib $@
