#! /bin/sh # # configure # # $Id: //poco/1.4/dist/configure#2 $ # # Configuration script for POCO. # # Invoke configure --help for help. # showhelp() { cat << ENDHELP usage: configure {options} Configure the POCO C++ Libraries. Options: --help Display this help screen. --config= Use the given build configuration. Available configurations are: `ls -C $base/build/config/` --prefix= Use the given install directory for make install. Default is /usr/local. --stdcxx-base= If (and only if) the $base/build/config selected with --config uses the Apache stdcxx library, then apache_stdcxx_install_prefix specifies the base directory where stdcxx is installed. --no-tests Do not build testsuites. --no-samples Do not build samples. --no-wstring Compile with -DPOCO_NO_WSTRING. Useful if your C++ compiler does not support std::wstring (such as uClibc-based systems). --no-fpenvironment Compile with -DPOCO_NO_FPENVIRONMENT. Useful if your C++ compiler has incomplete floating-point support (such as uClibc-based systems). --no-sharedmemory Compile with -DPOCO_NO_SHAREDMEMORY. For systems that don't support shared memory API's, like uClibc-based Linux systems. --no-sharedlibs Compile with -DPOCO_NO_SHAREDLIBS. For systems that don't support shared library loading. --omit={,} Do not build the specified component(s). Example: --omit=Data/MySQL,Data/ODBC,Zip --include-path= Add search path for header files. --library-path= Add search path for library files. --cflags= Pass additional flags to compiler. Example: --cflags=-wall --poquito Omit a few features for smaller codesize when linking statically for embedded targets. --unbundled Use system-provided zlib, pcre, expat and sqlite instead of bundled ones. --static Build static libraries. Overrides default mode, which depends upon target. Can be specified together with --shared to build both. --shared Build shared libraries. Overrides default mode, which depends upon target. Can be specified together with --static to build both. ENDHELP } # save cwd build=`pwd` # get directory where we are located cd `dirname $0` base=`pwd` cd $build if [ `uname` = "QNX" ] ; then EXPR=expr NOTFOUND=0 else EXPR="expr --" NOTFOUND="" fi tests="tests" samples="samples" flags="" omit="" includepath="" librarypath="" unbundled="" static="" shared="" # parse arguments while [ "$1" != "" ] ; do val=`$EXPR "$1" : '--config=\(.*\)'` if [ "$val" != "$NOTFOUND" ] ; then config=$val fi val=`$EXPR "$1" : '--prefix=\(.*\)'` if [ "$val" != "$NOTFOUND" ] ; then prefix=$val fi val=`$EXPR $1 : '--stdcxx-base=\(.*\)'` if [ "$val" != "$NOTFOUND" ] ; then stdcxx_base=$val fi val=`$EXPR "$1" : '--omit=\(.*\)'` if [ "$val" != "$NOTFOUND" ] ; then omit="$omit `echo $val | tr ',;' ' '`" fi val=`$EXPR "$1" : '--include-path=\(.*\)'` if [ "$val" != "$NOTFOUND" ] ; then includepath="$includepath `echo $val | tr ',;' ' '`" fi val=`$EXPR "$1" : '--library-path=\(.*\)'` if [ "$val" != "$NOTFOUND" ] ; then librarypath="$librarypath `echo $val | tr ',;' ' '`" fi val=`$EXPR "$1" : '--cflags=\(.*\)'` if [ "$val" != "$NOTFOUND" ] ; then flags="$flags $val" fi if [ "$1" = "--no-samples" ] ; then samples="" fi if [ "$1" = "--no-tests" ] ; then tests="" fi if [ "$1" = "--no-wstring" ] ; then flags="$flags -DPOCO_NO_WSTRING" fi if [ "$1" = "--no-fpenvironment" ] ; then flags="$flags -DPOCO_NO_FPENVIRONMENT" fi if [ "$1" = "--no-sharedmemory" ] ; then flags="$flags -DPOCO_NO_SHAREDMEMORY" fi if [ "$1" = "--no-sharedlibs" ] ; then flags="$flags -DPOCO_NO_SHAREDLIBS" fi if [ "$1" = "--poquito" ] ; then flags="$flags -DPOCO_NO_FILECHANNEL -DPOCO_NO_SPLITTERCHANNEL -DPOCO_NO_SYSLOGCHANNEL -DPOCO_UTIL_NO_INIFILECONFIGURATION -DPOCO_UTIL_NO_XMLCONFIGURATION" fi if [ "$1" = "--unbundled" ] ; then flags="$flags -DPOCO_UNBUNDLED" unbundled=1 fi if [ "$1" = "--static" ] ; then static=1 fi if [ "$1" = "--shared" ] ; then shared=1 fi if [ "$1" = "--help" ] ; then showhelp exit 0 fi shift done # autodetect build environment # ...special cases for CYGWIN or MinGW if [ "$config" = "" ] ; then config=`uname` cyg=`$EXPR $config : '\(CYGWIN\).*'` if [ "$cyg" = "CYGWIN" ] ; then config=CYGWIN else ming=`$EXPR $config : '\(MINGW\).*'` if [ "$ming" = "MINGW" ] ; then config=MinGW fi fi fi if [ ! -f "$base/build/config/$config" ] ; then echo "Unknown configuration: $config" echo "Please use the --config option to specify another build configuration" echo "The following configurations are available:" ls $base/build/config exit 1 fi if [ "$prefix" = "" ] ; then prefix=/usr/local fi # check for patches if [ -d $base/patches/$config ] ; then echo "NOTE: There are patches for your configuration available. Please apply them before compiling." fi # copy Makefile to build dir if [ "$base" != "$build" ] ; then cp $base/Makefile $build fi if [ "$static" != "" -a "$shared" != "" ] ; then linkmode=BOTH elif [ "$static" != "" ] ; then linkmode=STATIC elif [ "$shared" != "" ] ; then linkmode=SHARED else linkmode="" fi # create config.make echo '# config.make generated by configure script' >$build/config.make echo "POCO_CONFIG = $config" >>$build/config.make echo "POCO_BASE = $base" >>$build/config.make echo "POCO_BUILD = $build" >>$build/config.make echo "POCO_PREFIX = $prefix" >>$build/config.make echo "POCO_FLAGS = $flags" >>$build/config.make echo "OMIT = $omit" >>$build/config.make if [ "$stdcxx_base" != "" ] ; then echo "STDCXX_BASE = $stdcxx_base" >>$build/config.make fi if [ "$includepath" != "" ] ; then echo "POCO_ADD_INCLUDE = $includepath" >>$build/config.make fi if [ "$librarypath" != "" ] ; then echo "POCO_ADD_LIBRARY = $librarypath" >>$build/config.make fi if [ "$unbundled" != "" ] ; then echo "POCO_UNBUNDLED = 1" >>$build/config.make fi if [ "$linkmode" != "" ] ; then echo "LINKMODE = $linkmode" >>$build/config.make fi echo "export POCO_CONFIG" >>$build/config.make echo "export POCO_BASE" >>$build/config.make echo "export POCO_BUILD" >>$build/config.make echo "export POCO_PREFIX" >>$build/config.make echo "export POCO_FLAGS" >>$build/config.make if [ "$stdcxx_base" != "" ] ; then echo "export STDCXX_BASE" >>$build/config.make fi if [ "$includepath" != "" ] ; then echo "export POCO_ADD_INCLUDE" >>$build/config.make fi if [ "$librarypath" != "" ] ; then echo "export POCO_ADD_LIBRARY" >>$build/config.make fi if [ "$unbundled" != "" ] ; then echo "export POCO_UNBUNDLED" >>$build/config.make fi if [ "$linkmode" != "" ] ; then echo "export LINKMODE" >>$build/config.make fi echo ".PHONY: poco" >>$build/config.make echo "poco: libexecs $tests $samples" >>$build/config.make echo "Configured for $config"