runConfigure
上传用户:zhuqijet
上传日期:2013-06-25
资源大小:10074k
文件大小:20k
- #!/bin/sh
- #
- # The Apache Software License, Version 1.1
- #
- # Copyright (c) 1999-2001 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/>.
- #
- #
- # $Id: runConfigure,v 1.27 2003/05/12 09:44:19 gareth Exp $
- #
- #
- # runConfigure:
- # This script will run the "configure" script for the appropriate
- # platform. Only supported platforms are recognized.
- #
- # The following variables are defined and exported at the end of this
- # script.
- #
- # THREADS
- # BITSTOBUILD
- # TRANSCODER
- # MESSAGELOADER
- # NETACCESSOR
- # CC
- # CXX
- # CXXFLAGS
- # CFLAGS
- # LDFLAGS
- # LIBS
- #
- 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', 'beos', 'linux', 'freebsd', 'netbsd', 'solaris',
- 'hp-10', 'hp-11', 'openserver', 'unixware', 'os400', 'irix',
- 'ptx', 'tru64', 'macosx', 'cygwin', 'qnx')"
- echo " -c <C compiler name> (e.g. gcc, cc, xlc_r, qcc, icc or ecc)"
- echo " -x <C++ compiler name> (e.g. g++, CC, aCC, xlC_r, , QCC, icc or ecc)"
- echo " -d (specifies that you want to build debug version)"
- echo " -m <message loader> can be 'inmem', 'icu', 'MsgFile' or 'iconv'"
- echo " -n <net accessor> can be 'fileonly', 'libwww', 'socket' or 'native'"
- echo " -t <transcoder> can be 'icu', 'Iconv400', 'Iconv390', 'Uniconv390', 'IconvFBSD', 'IconvGNU' or 'native'"
- echo " -r <thread option> can be 'pthread' or 'dce' (AIX, HP-11, and Solaris) or 'sproc' (IRIX) or 'none'"
- echo " -b <bitsToBuild> (accepts '64', '32')"
- echo " -l <extra linker options>"
- echo " -z <extra compiler options>"
- echo " -P <install-prefix>"
- echo " -C <any one extra configure options>"
- 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
- # Check the command line parameters
- if test -x /usr/bin/getopt; then
- getoptErr=`getopt p:c:x:dm:n:t:r:b:l:z:P:C:h $*`
- else
- getoptErr=`getopts p:c:x:dm:n:t:r:b:l:z:P:C:h `$*``
- fi
- if [ $? != 0 ]
- then
- usage
- exit ${ERROR_EXIT_CODE}
- fi
- # Now get the command line parameters
- if test -x /usr/bin/getopt; then
- set -- `getopt p:c:x:dm:n:t:r:b:l:z:P:C:h $*`
- else
- set -- `getopts p:c:x:dm:n:t:r:b:l:z:P:C:h `$*``
- fi
- # Set up the default values for each parameter
- debug=off # by default debug is off
- transcoder=native # by default use native transcoder
- msgloader=inmem # by default use inmem message loader
- netaccessor=socket # by default use socket (can do HTTP URL's)
- thread=pthread # by default use POSIX threads
- configureoptions=""
- bitsToBuild=32 # by default 32 bit build assumed
- while [ $# -gt 0 ]
- do
- case $1 in
- -p)
- platform=$2; shift 2;;
- -c)
- ccompiler=$2; shift 2;;
- -x)
- cppcompiler=$2; shift 2;;
- -d)
- debug=on; shift;;
- -m)
- msgloader=$2; shift 2;;
- -n)
- netaccessor=$2; shift 2;;
- -t)
- transcoder=$2; shift 2;;
- -r)
- thread=$2; shift 2;;
- -b)
- bitsToBuild=$2; shift 2;;
- -z)
- compileroptions="$compileroptions $2"; shift 2;;
- -l)
- linkeroptions="$linkeroptions $2"; shift 2;;
- -P)
- configureoptions="$configureoptions --prefix=$2"; shift 2;;
- -C)
- configureoptions="$configureoptions $2"; shift 2;;
- -h)
- usage
- exit ${ERROR_EXIT_CODE};;
- --)
- shift; break;;
- *)
- echo "unknown option $1"
- usage
- exit ${ERROR_EXIT_CODE};;
- esac
- done
- echo "Generating makefiles with the following options ..."
- echo "Platform: $platform"
- echo "C Compiler: $ccompiler"
- echo "C++ Compiler: $cppcompiler"
- echo "Message Loader: $msgloader"
- echo "Net Accessor: $netaccessor"
- echo "Transcoder: $transcoder"
- echo "Thread option: $thread"
- echo "bitsToBuild option: $bitsToBuild"
- echo "Extra compile options: $compileroptions"
- echo "Extra link options: $linkeroptions"
- echo "Extra configure options: $configureoptions"
- #
- # Now check if the options are correct or not, bail out if incorrect
- #
- case $platform in
- aix | openserver | unixware | beos | linux | freebsd | netbsd | solaris | hp-10 | hp-11 | os400 | irix | ptx | tru64 | macosx | cygwin | qnx)
- # platform has been recognized
- ;;
- *)
- echo "I do not recognize the platform '$platform'. Please type '${0} -h' for help."
- exit ${ERROR_EXIT_CODE};;
- esac
- #
- # Enable debugging or not...
- #
- if test $debug = "off"; then
- echo "Debug is OFF"
- if test ${SYSOVR}o = "o"; then
- if test $platform = "os400"; then
- echo "NATIVE OS400 BUILD"
- debugflag="";
- elif test $platform = "irix"; then
- debugflag="-w -O2";
- elif test $platform = "aix"; then
- debugflag="-w -O2";
- else
- debugflag="-w -O";
- fi
- else
- echo "OVERRIDE FOR OS400 ON AIX"
- debugflag="";
- fi
- else
- echo "Debug is ON"
- debugflag="-g";
- fi
- #
- # Check for the threading option
- #
- if test $thread = "none"; then
- THREADS=none
- threadingDefines="-DAPP_NO_THREADS -DXML_USE_NO_THREADS"
- threadingLibs=""
- else
- THREADS=pthread
- threadingDefines="-DXML_USE_PTHREADS"
- threadingLibs="-lpthread"
- if test $platform = "hp-11"; then
- if test $thread; then
- case $thread in
- pthread)
- ;;
- dce)
- THREADS=dce ;
- threadingLibs="-lcma" ;
- threadingDefines="-D_PTHREADS_DRAFT4 -D_THREAD_SAFE -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 = "qnx"; then
- threadingLibs=""; ## QNX has pthread API in libc
- elif test $platform = "openserver"; then
- case $thread in
- pthread)
- if test $cppcompiler = "g++"; then
- threadingLibs="-Wl,-B,static,-l,pthread,-B,dynamic"
- fi
- ;;
- *)
- echo "I do not recognize the thread option '$thread'."
- echo "Please type '${0} -h' for help."
- exit ${ERROR_EXIT_CODE}
- ;;
- esac
- elif test $platform = "freebsd"; then
- threadingLibs="-pthread -lc_r"
- threadingDefines="-D_THREAD_SAFE -DXML_USE_PTHREADS"
- elif test $platform = "netbsd"; then
- threadingLibs="-pthread -lpthread"
- threadingDefines="-D_THREAD_SAFE -DXML_USE_PTHREADS"
- elif test $platform = "aix"; then
- aix_version=`./config.guess`;
- echo Found host system to be $aix_version
- case $aix_version in
- *4.3*)
- ## Linkflags control the use of libpthreads on AIX
- threadingLibs="-lpthreads_compat";;
- *)
- threadingLibs="-lpthreads";;
- esac
- if test $thread; then
- case $thread in
- pthread)
- ;;
- dce)
- THREADS=dce ;
- threadingDefines="-DXML_USE_DCE"
- case $aix_version in
- *4.3*)
- ## Linkflags control the use of libpthreads on AIX
- threadingLibs="-ldcelibc_r -ldcepthreads -lpthreads_compat";;
- *)
- threadingLibs="-lC_r -lC -ldcelibc_r -ldcepthreads";;
- esac
- ;;
- *)
- echo "I do not recognize the thread option '$thread'. Please type '${0} -h' for help." ;
- exit ${ERROR_EXIT_CODE};;
- esac
- fi
- elif test $platform = "ptx"; then
- threadingLibs=" "
- if test -z $XMLINSTALL; then
- XMLINSTALL=$ICUROOT ## use either the -C or the -P option now.
- fi
- elif test $platform = "hp-10"; then
- THREADS=dce
- threadingLibs="-lcma"
- threadingDefines="-DXML_USE_DCE"
- elif test $platform = "unixware"; then
- threadingLibs="" ## Linkflags control the use of threads on UnixWare
- elif test $platform = "solaris"; then
- if test $thread; then
- case $thread in
- pthread)
- ;;
- dce)
- THREADS=dce ;
- threadingLibs="-ldce";
- threadingDefines="-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 = "irix"; then
- if test $thread; then
- case $thread in
- pthread)
- ;;
- sproc)
- threadingLibs=" ";
- threadingDefines="-DXML_USE_SPROC" ;;
- *)
- echo "I do not recognize the thread option '$thread'. Please type '${0} -h' for help." ;
- exit ${ERROR_EXIT_CODE};;
- esac
- fi
- fi
- fi
- export THREADS
- #
- # Check for the bitsToBuild option
- #
- #
- # aix | beos | linux | hp-11 | solaris |
- # hp-10 | freebsd | netbsd | irix | openserver | unixware | os400 | ptx | tru64 | macosx
- #
- if test $bitsToBuild = 64; then
- bitstobuildDefines=" -DXML_BITSTOBUILD_64 "
- bitstobuildLink=" "
- if test $platform; then
- case $platform in
- solaris)
- bitstobuildDefines=" $bitstobuildDefines -xarch=v9 "
- bitstobuildLink=" -xarch=v9 " ;;
- aix)
- bitstobuildDefines=" $bitstobuildDefines -q64 -qwarn64 " ;;
- hp-11)
- bitstobuildDefines=" $bitstobuildDefines +DA2.0W "
- bitstobuildLink=" +DA2.0W " ;;
- linux)
- bitstobuildDefines=" $bitstobuildDefines " ;;
- *)
- ;;
- esac
- fi
- elif test $bitsToBuild = 32; then
- bitstobuildDefines=" "
- bitstobuildLink=" "
- else
- echo "I do not recognize the bitsToBuild '$bitsToBuild'. Please type '${0} -h' for help."
- exit ${ERROR_EXIT_CODE};
- fi
- #
- # to export in case it is needed in Makefile.in/Makefine.incl
- #
- BITSTOBUILD=$bitsToBuild
- export BITSTOBUILD
- #
- # Now check for what kind of transcoding service is desired.
- #
- transcodingDefines="-DXML_USE_NATIVE_TRANSCODER"
- TRANSCODER=NATIVE
- if test $transcoder; then
- case $transcoder in
- icu)
- if test ${ICUROOT}o = "o"; then
- echo '***Error*** ICUROOT environment variable not defined. Exiting...';
- exit ${ERROR_EXIT_CODE};
- fi
- transcodingDefines="-DXML_USE_ICU_TRANSCODER -I${ICUROOT}/include";
- transcodingLibs="-L${ICUROOT} -L${ICUROOT}/lib -L${ICUROOT}/data";
- TRANSCODER=ICU;;
- Iconv400)
- transcodingDefines="-DXML_USE_ICONV400_TRANSCODER" ;
- TRANSCODER=Iconv400 ;;
- Iconv390)
- transcodingDefines="-DXML_USE_ICONV390_TRANSCODER" ;
- TRANSCODER=Iconv390 ;;
- Uniconv390)
- transcodingDefines="-DXML_USE_UNICONV390_TRANSCODER" ;
- TRANSCODER=Uniconv390 ;;
- IconvFBSD)
- TRANSCODER=IconvFBSD ;
- transcodingDefines="-DXML_USE_LIBICONV -I/usr/local/include" ;;
- IconvGNU)
- TRANSCODER=IconvGNU ;
- transcodingDefines="-DXML_USE_GNU_TRANSCODER -I/usr/local/include" ;;
- native)
- if test $platform = "cygwin"; then
- TRANSCODER=Cygwin ;
- transcodingDefines="-DXML_USE_CYGWIN_TRANSCODER" ;
- elif test $platform = "freebsd"; then
- TRANSCODER=IconvFBSD ;
- fi ;;
- *)
- echo "I do not recognize the transcoder option '$transcoder'. Please type '${0} -h' for help."
- exit ${ERROR_EXIT_CODE};;
- esac
- fi
- export TRANSCODER
- #
- # Now check for the message loader
- #
- MESSAGELOADER=INMEM # By default use in-memory
- msgloaderDefines="-DXML_USE_INMEM_MESSAGELOADER"
- if test $msgloader ; then
- case $msgloader in
- icu | ICU)
- if test ${ICUROOT}o = "o" ; then
- echo '***Error*** ICUROOT environment variable not defined. Exiting...';
- exit ${ERROR_EXIT_CODE};
- fi
- MESSAGELOADER=ICU;
- msgloaderLibs="-L${ICUROOT} -L${ICUROOT}/lib -L${ICUROOT}/data -L${XERCESCROOT}/lib";
- msgloaderDefines="-DXML_USE_ICU_MESSAGELOADER -I${ICUROOT}/include";;
- inmem)
- ;;
- MsgFile)
- MESSAGELOADER=MSGFILE;
- msgloaderDefines="-DXML_USE_MSGFILE_MESSAGELOADER" ;;
- iconv)
- MESSAGELOADER=ICONV;
- msgloaderDefines="-DXML_USE_ICONV_MESSAGELOADER" ;;
- *)
- echo "I do not recognize the message loader option '$msgloader'. Please type '${0} -h' for help.";
- exit ${ERROR_EXIT_CODE};;
- esac
- fi
- export MESSAGELOADER
- #
- # Check for the type of net accessor
- #
- NETACCESSOR=Socket # By default use socket (does HTTP URL's)
- if test $netaccessor ; then
- case $netaccessor in
- fileonly)
- NETACCESSOR=FileOnly
- netaccessorDefines="" ;;
- socket)
- NETACCESSOR=Socket
- netaccessorDefines="-DXML_USE_NETACCESSOR_SOCKET"
- case $platform in
- unixware|openserver)
- netaccessorLibs="-lnsl -lsocket";;
- hp-11)
- netaccessorLibs="-lnsl";;
- aix)
- #netaccessorLibs="-lbsd";;
- netaccessorLibs="";;
- beos)
- netaccessorLibs="-lnet";;
- qnx)
- netaccessorLibs="-lsocket";;
- solaris)
- netaccessorLibs="-lnsl -lsocket"
- if test $thread = "dce"; then
- netaccessorLibs=""
- fi
- ;;
- *)
- ;;
- esac;;
- libwww)
- NETACCESSOR=LibWWW
- if test -z "`libwww-config --libs 2>/dev/null`" ; then
- echo "Netaccessor is libwww, but libwww-config is not found. Cannot proceed further."
- exit ${ERROR_EXIT_CODE};
- fi
- netaccessorDefines="-DXML_USE_NETACCESSOR_LIBWWW `libwww-config --cflags`"
- netaccessorLibs="`libwww-config --libs`"
- USELIBWWW=1;;
- native)
- if test $platform = "macosx"; then
- NETACCESSOR=NATIVE
- netaccessorDefines="-DXML_USE_NETACCESSOR_NATIVE"
- netaccessorLibs=""
- else
- echo "netaccessor option '$netaccessor' is supported on 'macosx' only."
- exit ${ERROR_EXIT_CODE}
- fi
- ;;
- *)
- echo "I do not recognize the netaccessor option '$netaccessor'. Please type '${0} -h' for help."
- exit ${ERROR_EXIT_CODE};;
- esac
- fi
- export NETACCESSOR
- #
- # Set the C compiler and C++ compiler environment variables
- #
- case $cppcompiler in
- xlC* | xlc* | g++ | c++ | cc | CC | aCC | icc | ICC | cxx | ecc | QCC )
- ;;
-
- '')
- echo "C++ compiler not specified...we'll assume that configure will find it..."
- ;;
- *)
- echo "I do not recognize the C++ compiler '$cppcompiler'. Continuing anyway..."
- ;;
- esac
- CC="$ccompiler"
- export CC
- CXX="$cppcompiler"
- export CXX
- #
- # Set the extra C and C++ compiler flags
- #
- # include the user defined CXXFLAGS/CFLAGS first in case they have
- # set an platform spefic flags
- #
- #
- # these defines are required when building the DLL
- #
- buildDefines="-DPROJ_XMLPARSER -DPROJ_XMLUTIL -DPROJ_PARSERS -DPROJ_SAX4C -DPROJ_SAX2 -DPROJ_DOM -DPROJ_VALIDATORS"
- CXXFLAGS="$CXXFLAGS $compileroptions $debugflag $buildDefines $transcodingDefines $msgloaderDefines $threadingDefines $netaccessorDefines $bitstobuildDefines"
- export CXXFLAGS
- CFLAGS="$CFLAGS $compileroptions $debugflag $buildDefines $transcodingDefines $msgloaderDefines $threadingDefines $netaccessorDefines $bitstobuildDefines"
- export CFLAGS
- # gcc crashes if optimisation is turned on in a Tru64 environment
- if test "$platform" = "tru64" -a "$CXX" = "g++"; then
- CXXFLAGS=`echo $CXXFLAGS | sed -e 's/-O[0-9]*//g'`
- CFLAGS=`echo $CFLAGS | sed -e 's/-O[0-9]*//g'`
- export CXXFLAGS CFLAGS
- fi
- LDFLAGS="$LDFLAGS $linkeroptions $bitstobuildLink"
- export LDFLAGS
- LIBS="$transcodingLibs $msgloaderLibs $threadingLibs $netaccessorLibs"
- export LIBS
- echo
- rm -f config.cache
- rm -f config.log
- rm -f config.status
- if test $platform = "os400"; then
- ./configure --host AS400-OS400 $configureoptions
- elif test $platform = "ptx"; then
- ./configure --prefix=$XMLINSTALL
- else
- sh ./configure $configureoptions
- fi
- # exit if configure failed
- if test $? != 0; then
- exit 1
- fi
- echo
- echo In future, you may also directly type the following commands to create the Makefiles.
- echo
- echo export TRANSCODER="$TRANSCODER"
- echo export MESSAGELOADER="$MESSAGELOADER"
- echo export NETACCESSOR="$NETACCESSOR"
- echo export THREADS="$THREADS"
- echo export BITSTOBUILD="$BITSTOBUILD"
- echo export CC="$CC"
- echo export CXX="$CXX"
- echo export CXXFLAGS="$CXXFLAGS"
- echo export CFLAGS="$CFLAGS"
- echo export LDFLAGS="$LDFLAGS"
- echo export LIBS="$LIBS"
- echo configure $configureoptions
- echo
- echo If the result of the above commands look OK to you, go to the directory
- echo ${XERCESCROOT}/src/xercesc and type "gmake" to make the XERCES-C system.
- exit 0;