| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455 |
- #! /bin/sh
- #
- # configure
- #
- # 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=<config_name>
- Use the given build configuration.
- Available configurations are:
- $(ls -C "$base"/build/config/)
- --prefix=<install_prefix>
- Use the given install directory for make install.
- Default is /usr/local.
- --no-prefix
- Do not use /usr/local as default install directory and do not
- define POCO_PREFIX.
- --stdcxx-base=<apache_stdcxx_install_prefix>
- 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.
- --minimal
- Build only Foundation, XML, JSON, Util and Net.
- --typical (default)
- Build only Foundation, XML, JSON, Util, Net, Crypto, NetSSL, Data/SQLite and Zip.
- --everything
- Build everything.
- --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.
- --no-ipv6
- Compile with -DPOCO_NET_NO_IPv6.
- For systems that don't support IPv6.
- --no-soo
- Compile with -DPOCO_NO_SOO.
- Disables small object optimization.
- --no-sqlparser
- Compile with -DPOCO_DATA_NO_SQL_PARSER
- Disables compilation of the SQLParser.
- --sqlite-fts=<path>
- Compile with -DPOCO_DATA_SQLITE_FTS.
- Compile SQLite with Full Text Search support.
- --sqlite-thread-safe=<value>
- Compile with -DSQLITE_THREADSAFE=<value>.
- Valid values are:
- - 0 single-thread, no thread safety
- - 1 serial access, highest thread safety
- - 2 multi-threaded, without session sharing support
- --omit=<component>{,<component>}
- Do not build the specified component(s).
- Example: --omit=Data/MySQL,Data/ODBC,Zip
- --include-path=<path>
- Add search path for header files.
- --library-path=<path>
- Add search path for library files.
- --odbc-lib=<path>
- Specify the directory where ODBC library is located.
- --odbc-include=<path>
- Specify the directory where ODBC header files are located.
- --mysql-lib=<path>
- Specify the directory where MySQL library is located.
- --mysql-include=<path>
- Specify the directory where MySQL header files are located.
- --pgsql-lib=<path>
- Specify the directory where PostgreSQL library is located.
- --pgsql-include=<path>
- Specify the directory where PostgreSQL header files are located.
- --cflags=<flags>
- Pass additional flags to compiler.
- Example: --cflags=-wall
- --ldflags=<flags>
- Pass additional flags to linker.
- Example: --ldflags=-latomic
- --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")" || exit
- base=$(pwd)
- cd "$build" || exit
- tests=1
- samples=1
- noprefix=0
- flags=""
- ldflags=""
- includepath=""
- librarypath=""
- odbclib=""
- odbcinclude=""
- unbundled=""
- static=""
- shared=""
- nosqlparser=
- omitMinimal="Crypto NetSSL_OpenSSL Zip Data Data/SQLite Data/ODBC Data/MySQL Data/PostgreSQL MongoDB Redis PDF DNSSD DNSSD/Avahi DNSSD/Bonjour CppParser PageCompiler"
- omitTypical="Data/ODBC Data/MySQL Data/PostgreSQL MongoDB Redis PDF DNSSD DNSSD/Avahi DNSSD/Bonjour CppParser"
- omit=$omitTypical
- # parse arguments
- while [ $# -ge 1 ]; do
- case "$1" in
- --config=*)
- config="$(echo "${1}" | awk '{print substr($0,10)}')" ;;
- --prefix=*)
- prefix="$(echo "${1}" | awk '{print substr($0,10)}')" ;;
- --no-prefix)
- noprefix=1 ;;
- --stdcxx-base=*)
- stdcxx_base="$(echo "${1}" | awk '{print substr($0,15)}')" ;;
- --omit=*)
- omit="$(echo "${1}" | awk '{print substr($0,8)}' | tr ',;' ' ')" ;;
- --include-path=*)
- includepath="$(echo "${1}" | awk '{print substr($0,16)}' | tr ',;' ' ')" ;;
- --library-path=*)
- librarypath="$(echo "${1}" | awk '{print substr($0,16)}' | tr ',;' ' ')" ;;
- --odbc-lib=*)
- odbclib="$(echo "${1}" | awk '{print substr($0,12)}')" ;;
- --odbc-include=*)
- odbcinclude="$(echo "${1}" | awk '{print substr($0,16)}')" ;;
- --mysql-lib=*)
- mysqllib="$(echo "${1}" | awk '{print substr($0,13)}')" ;;
- --mysql-include=*)
- mysqlinclude="$(echo "${1}" | awk '{print substr($0,17)}')" ;;
- --pgsql-lib=*)
- pgsqllib="$(echo "${1}" | awk '{print substr($0,13)}')" ;;
- --pgsql-include=*)
- pgsqlinclude="$(echo "${1}" | awk '{print substr($0,17)}')" ;;
- --cflags=*)
- flags="$flags $(echo "${1}" | awk '{print substr($0,10)}')" ;;
- --ldflags=*)
- ldflags="$ldflags $(echo "${1}" | awk '{print substr($0,11)}')" ;;
- --no-samples)
- samples="" ;;
- --no-tests)
- tests="" ;;
- --no-wstring)
- flags="$flags -DPOCO_NO_WSTRING" ;;
- --no-fpenvironment)
- flags="$flags -DPOCO_NO_FPENVIRONMENT" ;;
- --no-sharedmemory)
- flags="$flags -DPOCO_NO_SHAREDMEMORY" ;;
- --no-sharedlibs)
- flags="$flags -DPOCO_NO_SHAREDLIBS" ;;
- --no-ipv6)
- flags="$flags -DPOCO_NET_NO_IPv6" ;;
- --no-soo)
- flags="$flags -DPOCO_NO_SOO" ;;
- --no-sqlparser)
- flags="$flags -DPOCO_DATA_NO_SQL_PARSER"
- nosqlparser=1
- ;;
- --sqlite-thread-safe=*)
- flags="$flags -DSQLITE_THREADSAFE=$(echo "${1}" | awk '{print substr($0,22)}')" ;;
- --sqlite-fts)
- flags="$flags -DSQLITE_ENABLE_FTS5 -DSQLITE_ENABLE_FTS3_PARENTHESIS" ;;
- --poquito)
- flags="$flags -DPOCO_NO_FILECHANNEL -DPOCO_NO_SPLITTERCHANNEL -DPOCO_NO_SYSLOGCHANNEL -DPOCO_UTIL_NO_INIFILECONFIGURATION -DPOCO_UTIL_NO_JSONCONFIGURATION -DPOCO_UTIL_NO_XMLCONFIGURATION" ;;
- --unbundled)
- flags="$flags -DPOCO_UNBUNDLED"
- unbundled=1
- ;;
- --minimal)
- omit=$omitMinimal ;;
- --typical)
- omit=$omitTypical ;;
- --everything)
- omit="" ;;
- --static)
- static=1 ;;
- --shared)
- shared=1 ;;
- --help)
- showhelp
- exit 0
- ;;
- *)
- showhelp
- exit 1
- ;;
- esac
- shift
- done
- # autodetect build environment
- # ...special cases for CYGWIN or MinGW
- if [ "$config" = "" ] ; then
- config=$(uname)
- case "$config" in
- CYGWIN*)
- config=CYGWIN ;;
- MINGW*)
- config=MinGW ;;
- esac
- 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 [ -z "$prefix" ] ; then
- if [ $noprefix -eq 0 ] ; then
- prefix=/usr/local
- fi
- 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 [ -n "$static" ] && [ -n "$shared" ] ; then
- linkmode=BOTH
- elif [ -n "$static" ] ; then
- linkmode=STATIC
- elif [ -n "$shared" ] ; then
- linkmode=SHARED
- else
- linkmode=""
- fi
- # create config.make
- echo '# config.make generated by configure script' > "$build"/config.make
- {
- echo "POCO_CONFIG = $config"
- echo "POCO_BASE = $base"
- echo "POCO_BUILD = $build"
- echo "POCO_FLAGS = $flags"
- echo "POCO_LDFLAGS = $ldflags"
- } >> "$build"/config.make
- if [ -n "$prefix" ] ; then
- echo "POCO_PREFIX = $prefix" >>"$build"/config.make
- fi
- echo "OMIT = $omit" >>"$build"/config.make
- if [ -n "$stdcxx_base" ] ; then
- echo "STDCXX_BASE = $stdcxx_base" >>"$build"/config.make
- fi
- if [ -n "$includepath" ] ; then
- echo "POCO_ADD_INCLUDE = $includepath" >>"$build"/config.make
- fi
- if [ -n "$librarypath" ] ; then
- echo "POCO_ADD_LIBRARY = $librarypath" >>"$build"/config.make
- fi
- if [ -n "$odbclib" ] ; then
- echo "POCO_ODBC_LIB = $odbclib" >>"$build"/config.make
- fi
- if [ -n "$odbcinclude" ] ; then
- echo "POCO_ODBC_INCLUDE = $odbcinclude" >>"$build"/config.make
- fi
- if [ -n "$mysqllib" ] ; then
- echo "POCO_MYSQL_LIB = $mysqllib" >>"$build"/config.make
- fi
- if [ -n "$mysqlinclude" ] ; then
- echo "POCO_MYSQL_INCLUDE = $mysqlinclude" >>"$build"/config.make
- fi
- if [ -n "$pgsqllib" ] ; then
- echo "POCO_PGSQL_LIB = $pgsqllib" >>"$build"/config.make
- fi
- if [ -n "$pgsqlinclude" ] ; then
- echo "POCO_PGSQL_INCLUDE = $pgsqlinclude" >>"$build"/config.make
- fi
- if [ -n "$unbundled" ] ; then
- echo "POCO_UNBUNDLED = 1" >>"$build"/config.make
- fi
- if [ -n "$linkmode" ] ; then
- echo "LINKMODE = $linkmode" >>"$build"/config.make
- fi
- if [ -n "$nosqlparser" ] ; then
- echo "POCO_DATA_NO_SQL_PARSER = $nosqlparser" >>"$build"/config.make
- fi
- cat <<__EOF__ >>"$build"/config.make
- export POCO_CONFIG
- export POCO_BASE
- export POCO_BUILD
- export POCO_FLAGS
- export POCO_LDFLAGS
- __EOF__
- if [ -n "$prefix" ] ; then
- echo "export POCO_PREFIX" >>"$build"/config.make
- fi
- if [ -n "$stdcxx_base" ] ; then
- echo "export STDCXX_BASE" >>"$build"/config.make
- fi
- if [ -n "$includepath" ] ; then
- echo "export POCO_ADD_INCLUDE" >>"$build"/config.make
- fi
- if [ -n "$librarypath" ] ; then
- echo "export POCO_ADD_LIBRARY" >>"$build"/config.make
- fi
- if [ -n "$odbclib" ] ; then
- echo "export POCO_ODBC_LIB" >>"$build"/config.make
- fi
- if [ -n "$odbcinclude" ] ; then
- echo "export POCO_ODBC_INCLUDE" >>"$build"/config.make
- fi
- if [ -n "$mysqllib" ] ; then
- echo "export POCO_MYSQL_LIB" >>"$build"/config.make
- fi
- if [ -n "$mysqlinclude" ] ; then
- echo "export POCO_MYSQL_INCLUDE" >>"$build"/config.make
- fi
- if [ -n "$pgsqllib" ] ; then
- echo "export POCO_PGSQL_LIB" >>"$build"/config.make
- fi
- if [ -n "$pgsqlinclude" ] ; then
- echo "export POCO_PGSQL_INCLUDE" >>"$build"/config.make
- fi
- if [ -n "$unbundled" ] ; then
- echo "export POCO_UNBUNDLED" >>"$build"/config.make
- fi
- if [ -n "$linkmode" ] ; then
- echo "export LINKMODE" >>"$build"/config.make
- fi
- if [ -n "$nosqlparser" ] ; then
- echo "export POCO_DATA_NO_SQL_PARSER" >>"$build"/config.make
- fi
- # create config.build
- echo '# config.build generated by configure script' >"$build"/config.build
- cat <<__EOF__ >>"$build"/config.build
- TESTS = $tests
- SAMPLES = $samples
- __EOF__
- echo "Configured for $config"
- echo "======================"
- echo
- cat "$build"/config.make
- echo
- cat "$build"/config.build
- echo
- echo "======================"
|