| #!/bin/sh |
| |
| # Time-stamp: <08/06/07 15:22:19 yeti> |
| |
| base=`cd \`dirname $0\`; echo $PWD` |
| |
| configmak=$base/build/Makefiles/gmake/config.mak |
| |
| write_option() { |
| target=`echo $1 | sed -e 's/^[^=]*=//'` |
| echo $2 := $3$target >> ${configmak} |
| } |
| |
| write_over_option() { |
| target=`echo $1 | sed -e 's/^[^=]*=//'` |
| echo $2 ?= $target >> ${configmak} |
| } |
| |
| print_help() { |
| cat <<EOF |
| Configuration utility. |
| |
| Usage: |
| |
| configure [options] |
| |
| Available options: |
| |
| --prefix=<dir> base install path (/usr/local/) |
| --bindir=<dir> install path for executables (PREFIX/bin) |
| --libdir=<dir> install path for libraries (PREFIX/lib) |
| --includedir=<dir> install path for headers (PREFIX/include) |
| |
| --target=<target> target platform (cross-compiling) |
| |
| --help print this help message and exit |
| |
| --with-stlport=<dir> use STLport in catalog <dir> |
| --without-stlport compile without STLport |
| --with-boost=<dir> use boost headers in catalog <dir> |
| --with-system-boost use boost installed on this system |
| --with-msvc=<dir> use MS VC from this catalog |
| --with-mssdk=<dir> use MS SDK from this catalog |
| --with-extra-cxxflags=<options> |
| pass extra options to C++ compiler |
| --with-extra-cflags=<options> |
| pass extra options to C compiler |
| --with-extra-ldflags=<options> |
| pass extra options to linker (via C/C++) |
| --use-static-gcc use static gcc libs instead of shared libgcc_s (useful for gcc compiler, |
| that was builded with --enable-shared [default]; if compiler was builded |
| with --disable-shared, static libraries will be used in any case) |
| --clean remove custom settings (file ${configmak}) |
| and use default values |
| --with-cxx=<name> use <name> as C++ compiler (use --target= for cross-compilation) |
| --with-cc=<name> use <name> as C compiler (use --target= for cross-compilation) |
| --use-compiler-family=<name> use compiler family; one of: |
| gcc GNU compilers (default) |
| icc Intel compilers |
| aCC HP's aCC compilers |
| CC SunPro's CC compilers |
| bcc Borland's compilers |
| --without-debug don't build debug variant |
| --without-stldebug don't build STLport's STLP_DEBUG mode |
| --enable-static build static |
| --disable-shared don't build shared |
| --with-lib-motif=<motif> |
| Use this option to customize the generated library name. |
| The motif will be used in the last place before version information, |
| separated by an underscore, ex: |
| stlportd_MOTIF.5.0.lib |
| stlportstld_static_MOTIF.5.1.lib |
| --without-thread Per default STLport libraries are built in order to be usable |
| in a multithreaded context. If you don't need this you can ask |
| for a not thread safe version with this option. |
| --without-rtti Disable RTTI when building libraries. |
| --with-static-rtl |
| --with-dynamic-rtl |
| Enables usage of static (libc.lib family) or dynamic (msvcrt.lib family) |
| C/C++ runtime library when linking with STLport. If you want your appli/dll |
| to link statically with STLport but using the dynamic C runtime use |
| --with-dynamic-rtl; if you want to link dynamicaly with STLport but using the |
| static C runtime use --with-static-rtl. See README.options for details. |
| Don't forget to signal the link method when building your appli or dll, in |
| stlport/stl/config/host.h set the following macro depending on the configure |
| option: |
| --with-static-rtl -> _STLP_USE_DYNAMIC_LIB" |
| --with-dynamic-rtl -> _STLP_USE_STATIC_LIB" |
| --windows-platform=<name> |
| Targetted OS when building for Windows; one of: |
| win95 Windows 95 |
| win98 Windows 98 |
| winxp Windows XP and later (default) |
| |
| Environment variables: |
| |
| \$CXX C++ compiler name (use --target= for cross-compilation) |
| \$CC C compiler name (use --target= for cross-compilation) |
| \$CXXFLAGS pass extra options to C++ compiler |
| \$CFLAGS pass extra options to C compiler |
| \$LDFLAGS pass extra options to linker (via C/C++) |
| |
| Options has preference over environment variables. |
| |
| EOF |
| } |
| |
| default_settings () { |
| # if [ "$boost_set" = "" ]; then |
| # write_option "${PWD}/external/boost" BOOST_DIR |
| # fi |
| |
| # if [ -z "${stlport_set}" ]; then |
| # write_over_option "$base" STLPORT_DIR |
| # fi |
| |
| # Set in Makefiles/gmake/top.mak |
| if [ -z "${compiler_family_set}" ]; then |
| # write_option gcc COMPILER_NAME |
| echo include gcc.mak > ${base}/build/lib/Makefile |
| echo include gcc.mak > ${base}/build/test/unit/Makefile |
| echo include gcc.mak > ${base}/build/test/eh/Makefile |
| fi |
| |
| # Set in Makefiles/gmake/targetdirs.mak |
| # if [ -z "${prefix_set}" ]; then |
| # write_option "/usr/local" BASE_INSTALL_DIR '${DESTDIR}' |
| # fi |
| } |
| |
| [ $# -eq 0 ] && { >${configmak}; default_settings; exit 0; } |
| |
| for a in $@ ; do |
| case $a in |
| --help) |
| print_help |
| exit 0 |
| ;; |
| --clean) |
| rm -f ${configmak} |
| exit 0 |
| ;; |
| esac |
| done |
| |
| >${configmak} |
| |
| while : |
| do |
| case $# in |
| 0) |
| break |
| ;; |
| esac |
| option="$1" |
| shift |
| case $option in |
| --target=*) |
| write_option "$option" TARGET_OS |
| target_set=y |
| ;; |
| --with-stlport=*) |
| write_option "$option" STLPORT_DIR |
| stlport_set=y |
| ;; |
| --without-stlport) |
| write_option 1 WITHOUT_STLPORT |
| stlport_set=y |
| ;; |
| --with-boost=*) |
| write_option "$option" BOOST_DIR |
| ;; |
| --with-system-boost) |
| write_option 1 USE_SYSTEM_BOOST |
| ;; |
| --with-msvc=*) |
| write_option "$option" MSVC_DIR |
| ;; |
| --with-mssdk=*) |
| write_option "$option" MSSDK_DIR |
| ;; |
| --with-extra-cxxflags=*) |
| write_option "$option" EXTRA_CXXFLAGS |
| cxxflags_set=y |
| ;; |
| --with-extra-cflags=*) |
| write_option "$option" EXTRA_CFLAGS |
| cflags_set=y |
| ;; |
| --with-extra-ldflags=*) |
| write_option "$option" EXTRA_LDFLAGS |
| ldflags_set=y |
| ;; |
| --with-lib-motif=*) |
| echo "Using $option in generated library names" |
| write_option "$option" LIB_MOTIF |
| ;; |
| --without-thread) |
| write_option 1 WITHOUT_THREAD |
| ;; |
| --without-rtti) |
| write_option 1 WITHOUT_RTTI |
| ;; |
| --with-dynamic-rtl) |
| write_option 1 WITH_DYNAMIC_RTL |
| ;; |
| --with-static-rtl) |
| write_option 1 WITH_STATIC_RTL |
| ;; |
| --use-static-gcc) |
| write_option 1 USE_STATIC_LIBGCC |
| ;; |
| --without-debug) |
| write_option 1 _NO_DBG_BUILD |
| ;; |
| --without-stldebug) |
| write_option 1 _NO_STLDBG_BUILD |
| ;; |
| --enable-static) |
| write_option 1 _STATIC_BUILD |
| ;; |
| --disable-shared) |
| write_option 1 _NO_SHARED_BUILD |
| ;; |
| --with-cxx=*) |
| write_option "$option" _FORCE_CXX |
| cxx_set=y |
| ;; |
| --with-cc=*) |
| write_option "$option" _FORCE_CC |
| cc_set=y |
| ;; |
| --use-compiler-family=*) |
| case `echo $option | sed -e 's/^[^=]*=//'` in |
| gcc|icc|aCC|CC|bcc|dmc) |
| target=`echo $option | sed -e 's/^[^=]*=//'` |
| echo COMPILER_NAME := $target >> ${configmak} |
| echo include $target.mak > ${base}/build/lib/Makefile |
| echo include $target.mak > ${base}/build/test/unit/Makefile |
| echo include $target.mak > ${base}/build/test/eh/Makefile |
| ;; |
| *) |
| echo "Not supported compilers family" |
| exit -1 |
| ;; |
| esac |
| compiler_family_set=y |
| ;; |
| --prefix=*) |
| write_option "$option" BASE_INSTALL_DIR '${DESTDIR}' |
| prefix_set=y |
| ;; |
| --bindir=*) |
| write_option "$option" INSTALL_BIN_DIR '${DESTDIR}' |
| ;; |
| --libdir=*) |
| write_option "$option" INSTALL_LIB_DIR '${DESTDIR}' |
| ;; |
| --includedir=*) |
| write_option "$option" INSTALL_HDR_DIR '${DESTDIR}' |
| ;; |
| --windows-platform=*) |
| case `echo $option | sed -e 's/^[^=]*=//'` in |
| win95) |
| write_option 0x0400 WINVER |
| ;; |
| win98) |
| write_option 0x0410 WINVER |
| ;; |
| winxp) |
| write_option 0x0501 WINVER |
| ;; |
| *) |
| echo "Not supported windows platform" |
| exit -1 |
| ;; |
| esac |
| ;; |
| *) |
| echo "Unknown configuration option '$option'" |
| exit -1 |
| ;; |
| esac |
| done |
| |
| if [ -n "${CXX}" ]; then |
| if [ -n "${cxx_set}" ]; then |
| echo "Both --with-cxx and \$CXX set, using the first" |
| elif [ -z "${target_set}" ]; then |
| write_option "${CXX}" _FORCE_CXX |
| else |
| echo "For cross-compilation with gcc use --target option only" |
| fi |
| if [ -z "${CC}" -a -z "${cc_set}" ]; then |
| echo "\$CXX set, but I don't see \$CC!" |
| fi |
| fi |
| |
| if [ -n "${CC}" ]; then |
| if [ -n "${cxx_set}" ]; then |
| echo "Both --with-cc and \$CC set, using the first" |
| else |
| write_option "${CC}" _FORCE_CC |
| fi |
| fi |
| |
| if [ -n "${CXXFLAGS}" ]; then |
| if [ -z "${cxxflags_set}" ]; then |
| write_option "${CXXFLAGS}" EXTRA_CXXFLAGS |
| else |
| echo "Both --with-extra-cxxflags and \$CXXFLAGS set, using the first" |
| fi |
| fi |
| |
| if [ -n "${CFLAGS}" ]; then |
| if [ -z "${cflags_set}" ]; then |
| write_option "${CFLAGS}" EXTRA_CFLAGS |
| else |
| echo "Both --with-extra-cflags and \$CFLAGS set, using the first" |
| fi |
| fi |
| |
| if [ -n "${LDFLAGS}" ]; then |
| if [ -z "${ldflags_set}" ]; then |
| write_option "${LDFLAGS}" EXTRA_LDFLAGS |
| else |
| echo "Both --with-extra-ldflags and \$LDFLAGS set, using the first" |
| fi |
| fi |
| |
| # default settings |
| |
| default_settings |