#!/bin/sh


#
# The Apache Software License, Version 1.1
#
# Copyright (c) 1999-2000 The Apache Software Foundation.  All rights
# reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
#
# 1. Redistributions of source code must retain the above copyright
#    notice, this list of conditions and the following disclaimer.
#
# 2. Redistributions in binary form must reproduce the above copyright
#    notice, this list of conditions and the following disclaimer in
#    the documentation and/or other materials provided with the
#    distribution.
#
# 3. The end-user documentation included with the redistribution,
#    if any, must include the following acknowledgment:
#       "This product includes software developed by the
#        Apache Software Foundation (http://www.apache.org/)."
#    Alternately, this acknowledgment may appear in the software itself,
#    if and wherever such third-party acknowledgments normally appear.
#
# 4. The names "Xerces" and "Apache Software Foundation" must
#    not be used to endorse or promote products derived from this
#    software without prior written permission. For written
#    permission, please contact apache\@apache.org.
#
# 5. Products derived from this software may not be called "Apache",
#    nor may "Apache" appear in their name, without prior written
#    permission of the Apache Software Foundation.
#
# THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
# ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
# ====================================================================
#
# This software consists of voluntary contributions made by many
# individuals on behalf of the Apache Software Foundation, and was
# originally based on software copyright (c) 1999, International
# Business Machines, Inc., http://www.ibm.com .  For more information
# on the Apache Software Foundation, please see
# <http://www.apache.org/>.
#
#
# $Log$
# Revision 1.7  2000/05/10 01:13:52  abagchi
# Now detects AIX version and introduces -lpthreads_compat accordingly
#
# Revision 1.6  2000/04/12 20:33:08  abagchi
# Included some more PTX changes
#
# Revision 1.5  2000/04/04 20:10:16  abagchi
# Added PTX support
#
# Revision 1.4  2000/02/29 02:19:11  rahulj
# No more compilation errors under HPUX 11.0. We do not build
# DOMMemTest as it crashes the aCC compiler.
#
# Revision 1.3  2000/02/26 07:20:18  rahulj
#  - The threading tests now work on HPUX.
#  - Under HPUX 10.20 we do no build DOMMemTest and DOMTest.
#    It crashes the compiler.
#  - One could not write more worse makefiles than what exists for the
#    tests. Hopefully, I will get bugged enough to fix them oneday.
#
# Revision 1.2  2000/02/06 07:48:34  rahulj
# Year 2K copyright swat.
#
# Revision 1.1  2000/01/31 22:21:53  aruna1
# initial checkin
#
#
# runConfigure : This script will run the "configure" script for the appropriate platform
# Only supported platforms are recognized

usage()
{
    echo "runConfigure: Helper script to run \"configure\" for one of the supported platforms"
    echo "Usage: runConfigure \"options\""
    echo "       where options may be any of the following:"
    echo "       -p <platform> (accepts 'aix', 'linux', 'solaris', 'hp-10', 'hp-11', 'ptx')"
    echo "       -c <C compiler name> (e.g. gcc or xlc_r)"
    echo "       -x <C++ compiler name> (e.g. g++ or xlC_r)"
    echo "       -d (specifies that you want to build debug version)"
    echo "       -r <thread option> can be 'pthread' or 'dce' (only used on HP-11)"
    echo "       -h (get help on the above commands)"
}

ERROR_EXIT_CODE=1

if test ${1}o = "o"; then
   usage
   exit ${ERROR_EXIT_CODE}
fi

if test ${XERCESCROOT}o = "o"; then
   echo ERROR : You have not set your XERCESCROOT environment variable
   echo Though this environment variable has nothing to do with creating makefiles,
   echo this is just a general warning to prevent you from pitfalls in future. Please
   echo set an environment variable called XERCESCROOT to indicate where you installed
   echo the XERCES-C files, and run this command again to proceed. See the documentation
   echo for an example if you are still confused.
   exit ${ERROR_EXIT_CODE}
fi

if test $1 = "-h"; then
   usage
   exit ${ERROR_EXIT_CODE}
fi

# Get the command line parameters
set -- `getopt p:c:x:dm:n:t:r:l:z:h $*`
if [ $? != 0 ]
   then
   usage
   exit ${ERROR_EXIT_CODE}
fi

# Set up the default values for each parameter
debug=off                # by default debug is off
transcoder=native        # by default use native transcoder
msgloader=iconv          # by default use native transcoder
netaccessor=fileonly     # by default use fileonly

for i in $*
   do
   case $i in
   -p)
        platform=$2; shift 2;;

   -c)
        ccompiler=$2; shift 2;;

   -x)
        cppcompiler=$2; shift 2;;

   -r)
        thread=$2; shift 2;;

   -d)
        debug=on; shift;;

   -h)
        usage
        exit ${ERROR_EXIT_CODE};;

   --)
        shift; break;;
   esac
done

echo "Generating makefiles with the following options ..."
echo "Platform: $platform"
echo "C Compiler: $ccompiler"
echo "C++ Compiler: $cppcompiler"
echo "Thread option: $thread"

if test $debug = "off"; then
    echo "Debug is OFF"
    debugflag="-O";
else
    echo "Debug is ON"
    debugflag="-g";
fi

# Now check if the options are correct or not, bail out if incorrect
case $platform in
   aix | linux | solaris | hp-10 | hp-11 | ptx)
       # platform has been recognized
       ;;
   *)
      echo "I do not recognize the platform '$platform'. Please type '${0} -h' for help."
      exit ${ERROR_EXIT_CODE};;
esac

# Set the C compiler and C++ compiler environment variables

case $cppcompiler in
   xlC | xlc | xlC_r | xlc_r)
       standardLibFlags="-L/usr/lpp/xlC/lib -lC";;

   g++ | c++)
if test $platform = "ptx"; then
	if test -z $XMLINSTALL; then
		XMLINSTALL=$ICUROOT
	fi	
       standardLibFlags="-L${XMLINSTALL}/lib -lc";
else
       standardLibFlags="-L/usr/local/lib -lc";
fi
	;;

   cc | CC)
       standardLibFlags="-L/usr/lib -L/usr/ccs/lib -lC";;

   acc | aCC)
       standardLibFlags="";;

   *)
      echo "I do not recognize the C++ compiler '$cppcompiler'. Continuing anyway ..."
      ;;
esac

CC=$ccompiler
export CC

CXX=$cppcompiler
export CXX


#
# Check for the threading option only for hp-11
#

threadingLibs="-lpthread"
if test $platform = "hp-11"; then
    if test $thread; then
    case $thread in
       pthread)
           ;;

       dce)
           threadingLibs="-lcma";
           threadingDefines="-D_PTHREADS_DRAFT4 -DXML_USE_DCE" ;;

       *)
           echo "I do not recognize the thread option '$thread'. Please type '${0} -h' for help."
           exit ${ERROR_EXIT_CODE};;
    esac
    fi
elif test $platform = "aix"; then
    aix_version=`./config.guess`;
    echo Found host system to be $aix_version
    case $aix_version in
       *4.3*)
          threadingLibs="-lpthreads_compat -lpthreads";;
       *)
          threadingLibs="-lpthreads";;
    esac
elif test $platform = "ptx"; then
    threadingLibs=" "
elif test $platform = "hp-10"; then
    threadingLibs="-lcma"
    threadingDefines="-DXML_USE_DCE"
fi

#
# Set the extra C and C++ compiler flags before invoking configure.
#

CXXFLAGS="$debugflag $compileroption $threadingDefines"
export CXXFLAGS

CFLAGS="$debugflag $compileroption $threadingDefines"
export CFLAGS

LIBS="$threadingLibs $standardLibFlags"
export LIBS

if test $platform = "ptx"; then
if test ${XMLINSTALL}o = "o"; then
XMLINSTALL = /usr/local; export XMLINSTALL
fi
fi

echo
rm -f config.cache
rm -f config.log
rm -f config.status
./configure

echo
echo In future, you may also directly type the following commands to create the Makefiles.
echo
echo export CC=$CC
echo export CXX=$CXX
echo export CXXFLAGS=$CXXFLAGS
echo export CFLAGS=$CFLAGS
echo export LIBS=$LIBS
echo export LDFLAGS=$LDFLAGS
echo configure

echo
echo If the result of the above commands look OK to you, go to the directory
echo ${XERCESCROOT}/tests and type \"gmake\" to make the XERCES-C system.

exit 0;

