#!/bin/sh

# runConfigureICU: This script will run the "configure" script for the appropriate platform
# Only supported platforms are recognized

me=`basename $0`

usage()
{
    ec=0$1
    if test $ec -eq 0
    then
        uletter=U
    else
 	uletter=u
    fi
    
    echo "${uletter}sage: $me [ -h, --help ]  [ --enable-debug | --disable-release ] platform [ configurearg ... ]"
    if test $ec -eq 0
    then
	cat <<EOE

Options: -h, --help         Print this message and exit
         --enable-debug	    Enable support for debugging
	 --disable-release  Disable presetting optimization flags

The following names can be supplied as the argument for platform:

    AIX4.1.5xlC             Use xlC on AIX 4.1.5
    AIX4.3xlC               Use xlC on AIX 4.3
    AIX4.3VA                Use the VA compiler on AIX 4.3
    SOLARISCC               Use Sun's CC compiler on Solaris 
    SOL2.7CC                Same as above
    SOLARISGCC              Use the GNU C++ compiler on Solaris
    SOLARISX86              Use Sun's CC compiler on Solaris x86
    LinuxRedHat5.2          Use the GNU C++ compiler on Linux
    LinuxRedHat6.0          Same as above
    HP/UX10.2CC             Use HP's C++ compiler on HP-UX 10.2
    HP/UX10.2ACC            Use the Advanced C++ compiler on HP-UX 10.2
    HP/UX11CC               Use HP's C++ compiler on HP-UX 11
    HP/UX11ACC              Use the Advanced C++ compiler on HP-UX 11
    PTX                     Use C++ on Dynix/PTX v4.5
    ALPHA/LINUXGCC	    Use GCC on Alpha/Linux systems
    ALPHA/LINUXCCC	    Use Compaq C compiler on Alpha/Linux systems
EOE
    fi

    exit $ec
}

# Parse arguments

platform=
debug=0
release=1

while test $# -ne 0
do
    case "$1" in
	-h|--help)
	    usage 0
	    ;;
	--enable-debug)
	    debug=1
	    release=0
	    ;;
	--disable-release)
	    debug=0
	    release=0
	    ;;
	*)
	    platform="$1"
	    shift
	    break
	    ;;
    esac
    shift
done

if test x$platform = x
then
   usage 1
fi

# Go.

rm -f config.cache
rm -f config.log
rm -f config.status

DEBUG_CFLAGS='-g'
DEBUG_CXXFLAGS='-g'

if test x$configure = x
then
    if test -f ./configure
    then
        configuredir=.
    else
        configuredir=`echo $0 | sed 's,[^/]*$,,'`
        if test x$configuredir = x$0
        then
            configuredir=.
        fi
    fi

    if test x$configuredir = x
    then
        configuredir=.
    fi

    configure=$configuredir/configure
fi

case $platform in
        AIX4.1.5xlC)
		THE_OS=AIX
		THE_COMP=xlC
                CC=/usr/lpp/xlC/bin/xlc; export CC
                CXX=/usr/lpp/xlC/bin/xlC_r; export CXX
		RELEASE_CFLAGS="-qignerrno"
		RELEASE_CXXFLAGS="-qignerrno"
                #CPPFLAGS=-I/usr/lpp/xlC/include; export CPPFLAGS
                #LDFLAGS=-L/usr/lpp/xlC/lib; export LDFLAGS
		;;
        AIX4.3xlC)
		THE_OS=AIX
		THE_COMP=xlC
                CC=/usr/ibmcxx/bin/xlc; export CC
                CXX=/usr/ibmcxx/bin/xlC_r; export CXX
		RELEASE_CFLAGS="-qignerrno"
		RELEASE_CXXFLAGS="-qignerrno"
                #CPPFLAGS=-I/usr/lpp/xlC/include; export CPPFLAGS
                #LDFLAGS=-L/usr/lpp/xlC/lib; export LDFLAGS
		;;
        AIX4.3VA)
		THE_OS=AIX
		THE_COMP=xlC
                CC=/usr/vacpp/bin/xlc; export CC
                CXX=/usr/vacpp/bin/xlC_r; export CXX
		#RELEASE_CFLAGS=-O2
		#RELEASE_CXXFLAGS=-O2
                #CPPFLAGS=-I/usr/lpp/xlC/include; export CPPFLAGS
                #LDFLAGS=-L/usr/lpp/xlC/lib; export LDFLAGS
                ;;
        SOL2.7CC)
		THE_OS="SOLARIS 2.7"
		THE_COMP="Sun's CC"
                CC=/usr/local/SUNWspro/bin/cc; export CC
                CXX=/usr/local/SUNWspro/bin/CC; export CXX 
		RELEASE_CFLAGS=-xO3
		RELEASE_CXXFLAGS=-O3
                ;;
        SOLARISX86)
		THE_OS="SOLARIS X86"
		THE_COMP="Sun's CC"
                CC=cc; export CC
                CXX=CC; export CXX
                CXX_FLAGS="-w -O";export CXX_FLAGS
                C_FLAGS="-w -O";export C_FLAGS
                LDFLAGS="-L -lCrun";export LDFLAGS
		RELEASE_CFLAGS=-xO3
		RELEASE_CXXFLAGS=-O3
                ;;
        SOLARISCC)
		THE_OS=SOLARIS
		THE_COMP="Sun's CC"
                CC=/usr/local/SUNWspro/bin/cc; export CC
                CXX=/usr/local/SUNWspro/bin/CC; export CXX
		RELEASE_CFLAGS=-xO3
		RELEASE_CXXFLAGS=-O3
                ;;
        SOLARISGCC)
		THE_OS=SOLARIS
		THE_COMP="the GNU C++"
                CXXFLAGS=-I/usr/local/include/g++; export CXXFLAGS
		LDFLAGS=-R/usr/local/lib; export LDFLAGS
                ;;
        LinuxRedHat*)
		THE_OS=Linux
		THE_COMP="the GNU C++"
                CXX=g++; export CXX 
		CC=gcc; export CC
		;;
        HP/UX10.2CC)
		THE_OS="HP-UX 10.2"
		THE_COMP="HP's CC"
		CC=cc; export CC
		CXX=CC; export CXX
		RELEASE_CFLAGS='+O2 +Ofltacc'
		RELEASE_CXXFLAGS='+O2 +Ofltacc'
		;;
        HP/UX10.2ACC)
		THE_OS="HP-UX 10.2"
		THE_COMP="aCC"
		CC=cc; export CC
		CXX=aCC; export CXX
		RELEASE_CFLAGS='+O2 +Ofltacc'
		RELEASE_CXXFLAGS='+O2 +Ofltacc'
		;;
        HP/UX11CC)
		THE_OS="HP-UX 11"
		THE_COMP="HP's CC"
                CC=cc; export CC
		CXX=/opt/CC/bin/CC; export CXX
		RELEASE_CFLAGS='+O2 +Ofltacc'
		RELEASE_CXXFLAGS='+O2 +Ofltacc'
                ;;
        HP/UX11ACC)
		THE_OS="HP-UX 11"
		THE_COMP="aCC"
                CC=cc; export CC
		CXX=/opt/aCC/bin/aCC; export CXX
		RELEASE_CFLAGS='+O2 +Ofltacc'
		RELEASE_CXXFLAGS='+O2 +Ofltacc'
		;;
        PTX)
		THE_OS="PTX"
		THE_COMP="C++"
                CC=cc; export CC
		CXX=c++; export CXX
		if test ${XMLINSTALL}o = "o"; then 
		    XMLINSTALL=/usr/local; export XMLINSTALL
		fi
		configure="$configure --prefix=$XMLINSTALL"
		;;
	ALPHA/LINUXCCC)
		THE_OS="Linux"
		THE_COMP="Compaq's CC"
		CC=ccc; export CC
		CXX=cxx; export CXX
		;;
	ALPHA/LINUXGCC)
		THE_OS="Linux"
                THE_COMP="the GNU C++"
                CXX=g++; export CXX
                CC=gcc; export CC
		;;
        *)
                >&2 echo "$me: unrecognized platform \"$platform\" (use --help for help)"
                exit 1;;
esac


# Tweak flags

if test $release -eq 1
then
    if test "$RELEASE_CFLAGS" = ""
    then
        case $CC in
            gcc|*/gcc|*-gcc-*|*/*-gcc-*)
                RELEASE_CFLAGS=-O3
                ;;
        esac
    fi
    if test "$RELEASE_CFLAGS" != ""
    then
        CFLAGS="$CFLAGS $RELEASE_CFLAGS"
    fi
    export CFLAGS
    if test "$RELEASE_CXXFLAGS" = ""
    then
        case $CXX in
            g++|*/g++|*-g++-*|*/*-g++-*)
                RELEASE_CXXFLAGS=-O
                ;;
        esac
    fi
    if test "$RELEASE_CXXFLAGS" != ""
    then
        CXXFLAGS="$CXXFLAGS $RELEASE_CXXFLAGS"
    fi
    export CXXFLAGS
fi

if test $debug -eq 1
then
    if test "$DEBUG_CFLAGS" != ""
    then
        CFLAGS="$CFLAGS $DEBUG_CFLAGS"
    fi
    export CFLAGS
    if test "$DEBUG_CXXFLAGS" != ""
    then
        CXXFLAGS="$CXXFLAGS $DEBUG_CXXFLAGS"
    fi
    export CXXFLAGS
fi

# Run configure

echo Running ./configure "$@" for $THE_OS using $THE_COMP compiler
echo
$configure "$@"
echo
echo If the result of the above commands looks okay to you, go to the directory
echo source in the ICU distribution to build ICU. Please remember that ICU needs
echo GNU make to build properly...