#!/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: runConfigure,v $
# Revision 1.10  2001/10/18 18:16:47  tng
# Use opt2 on AIX platform.
#
# Revision 1.9  2001/06/09 18:06:50  jberry
# Add MacOS build support for tests
#
# Revision 1.8  2001/02/13 13:10:50  tng
# Update samples/tests files for on UnixWare 7.1.1 with gcc 2.95.  Add UNIXWARE platform defines to Makefile.incl, add recognition of sysv5uw7 to configure.in, and add unixware as recognized platform to runConfigure.  Updated by Hiram Clawson.
#
# 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', 'unixware', 'linux', 'solaris', 'hp-10', 'hp-11', 'ptx', 'macosx')"
    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"
    if test $platform = "irix"; then
       debugflag="-O2";
    elif test $platform = "aix"; then
       debugflag="-O2";
    else
    debugflag="-O";
    fi
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 | unixware | linux | solaris | hp-10 | hp-11 | ptx | macosx)
       # 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"
elif test $platform = "unixware"; then
    threadingLibs="-pthread"
    threadingDefines="-pthread"
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;

