Newer
Older
#! /bin/sh
#
# Copyright 1999-2001,2004 The Apache Software Foundation.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
#
#
# $Id$
#
#
# 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
# TRANSCODER
# MESSAGELOADER
# NETACCESSOR
# CC
# CXX
# CXXFLAGS
# CFLAGS
# LDFLAGS
# LIBS
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', 'os390', 'irix', 'ptx', 'tru64', 'macosx', 'cygwin',
'qnx', 'interix', 'mingw-msys')
echo " -c <C compiler name> (e.g. gcc, cc, xlc_r, qcc, icc, icpc or ecc)
[default is make default; cc for gnu make]"
echo " -x <C++ compiler name> (e.g. g++, CC, aCC, aCC05, xlC_r, xlC_rv5compat, QCC,
icc, icpc or ecc) [default is make default; g++ for gnu make]"
echo " -d (specifies that you want to build debug version)
[default: no debug]"
echo " -m <message loader> can be 'inmem', 'icu', 'MsgFile' or
'iconv' [default: inmem]"
echo " -n <net accessor> can be 'fileonly', 'libwww', 'socket' or
'native' [default: socket]"
echo " -t <transcoder> can be 'icu', 'Iconv400', 'Uniconv390',
'IconvFBSD', 'IconvGNU' or 'native'
[default: native]"
echo " -r <thread option> can be 'pthread' or 'dce'
(AIX, HP-11, and Solaris) or 'sproc' (IRIX) or 'none'
[default: pthread]"
echo " -b <bitsToBuild> (accepts '64', '32')" [default: 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
echo makefiles, this is just a general warning to prevent you from
echo pitfalls in future. To use this script other than for -h output please
echo set an environment variable called XERCESCROOT to indicate where you
echo installed the XERCES-C files, and run this command again to proceed.
echo See the documentation for an example if you are still confused.
if test $1 != "-h"; then
exit ${ERROR_EXIT_CODE}
fi
echo
fi
if test $1 = "-h"; 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=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
# Check the command line parameters
if test -x /usr/bin/getopt -o -x bin/getopt; then
#
# os400 Users will need to comment out the next line.
getoptErr=`getopt p:c:x:dm:n:t:r:b:l:z:P:C:h $*`
if [ $? != 0 ]
then
usage
exit ${ERROR_EXIT_CODE}
fi
# Now get the command line parameters
set -- `getopt p:c:x:dm:n:t:r:b:l:z:P:C:h $*`
while [ $# -gt 0 ]
do
case $1 in
-p)
platform=$2; shift 2;;
-x)
cppcompiler=$2; shift 2;;
-n)
netaccessor=$2; shift 2;;
-t)
transcoder=$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};;
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
*)
echo "unknown option $1"
usage
exit ${ERROR_EXIT_CODE};;
esac
done
else
while getopts "p:c:x:dm:n:t:r:b:l:z:P:C:h" switch; do
case $switch in
p)
platform=$OPTARG;;
c)
ccompiler=$OPTARG;;
x)
cppcompiler=$OPTARG;;
d)
debug=on;;
m)
msgloader=$OPTARG;;
n)
netaccessor=$OPTARG;;
t)
transcoder=$OPTARG;;
r)
thread=$OPTARG;;
b)
bitsToBuild=$OPTARG;;
z)
compileroptions="$compileroptions $OPTARG";;
l)
linkeroptions="$linkeroptions $OPTARG";;
P)
configureoptions="$configureoptions --prefix=$OPTARG";;
C)
configureoptions="$configureoptions $OPTARG";;
h)
usage
exit ${ERROR_EXIT_CODE};;
*)
echo "unknown option -$switch $OPTARG"
usage
exit ${ERROR_EXIT_CODE};;
esac
done
fi
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 "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 | os390 | irix | ptx | tru64 | macosx | cygwin | qnx | interix | mingw-msys)
# 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";
debugflag="-w -O2";
elif test $platform = "os390"; then
debugflag="";
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=""
if test $platform = "os400"; then
threadingDefines="-DXML_USE_PTHREADS"
fi
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
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"
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
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 = "os390"; then
threadingLibs=""
threadingDefines="-D_OPEN_THREADS"
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." ;
elif test $platform = "mingw-msys"; then
Alberto Massari
committed
threadingLibs="-mthreads"
threadingDefines="-mthreads"
#
# Check for the bitsToBuild option
#
#
Tinny Ng
committed
# aix | beos | linux | hp-11 | solaris |
# hp-10 | freebsd | netbsd | irix | openserver | unixware | os400 | ptx | tru64 | macosx
if test $platform; then
case $platform in
solaris)
bitstobuildDefines=" $bitstobuildDefines -xarch=v9 "
bitstobuildLink=" -xarch=v9 " ;;
bitstobuildDefines=" $bitstobuildDefines -q64 -qwarn64 " ;;
if test $cppcompiler; then
case $cppcompiler in
aCC)
bitstobuildDefines=" $bitstobuildDefines +DA2.0W "
bitstobuildLink=" +DA2.0W " ;;
aCC05)
bitstobuildDefines=" $bitstobuildDefines +DD64 "
bitstobuildLink=" +DD64 " ;;
*)
;;
esac
fi ;;
if test $cppcompiler; then
case $cppcompiler in
xlC*)
bitstobuildDefines=" $bitstobuildDefines -q64 -qwarn64 "
bitstobuildLink=" -q64 " ;;
*)
;;
esac
fi ;;
*)
;;
esac
fi
elif test $bitsToBuild = 32; then
bitstobuildDefines=" "
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" ;
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" ;;
if test $platform = "cygwin"; then
TRANSCODER=Cygwin ;
transcodingDefines="-DXML_USE_CYGWIN_TRANSCODER" ;
elif test $platform = "mingw-msys"; 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
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";;
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
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="";;
Tinny Ng
committed
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_rv5compat)
CXX="xlC_r"
CXXVER="v5compat"
;;
xlC* | xlc* | g++ | c++ | cc | CC | aCC | icc | icpc | ICC | cxx | ecc | QCC )
aCC05)
CXX="aCC"
CXXVER="aCC05"
;;
'')
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
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_DEPRECATED_DOM -DPROJ_VALIDATORS"
CXXFLAGS="$CXXFLAGS $compileroptions $debugflag $buildDefines $transcodingDefines $msgloaderDefines $threadingDefines $netaccessorDefines $bitstobuildDefines"
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
LIBS="$transcodingLibs $msgloaderLibs $threadingLibs $netaccessorLibs"
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
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 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.