1 #!/bin/sh 2 3 # Time-stamp: <08/06/07 15:22:19 yeti> 4 5 base=`cd \`dirname $0\`; echo $PWD` 6 7 configmak=$base/build/Makefiles/gmake/config.mak 8 9 write_option() { 10 target=`echo $1 | sed -e 's/^[^=]*=//'` 11 echo $2 := $3$target >> ${configmak} 12 } 13 14 write_over_option() { 15 target=`echo $1 | sed -e 's/^[^=]*=//'` 16 echo $2 ?= $target >> ${configmak} 17 } 18 19 print_help() { 20 cat <<EOF 21 Configuration utility. 22 23 Usage: 24 25 configure [options] 26 27 Available options: 28 29 --prefix=<dir> base install path (/usr/local/) 30 --bindir=<dir> install path for executables (PREFIX/bin) 31 --libdir=<dir> install path for libraries (PREFIX/lib) 32 --includedir=<dir> install path for headers (PREFIX/include) 33 34 --target=<target> target platform (cross-compiling) 35 36 --help print this help message and exit 37 38 --with-stlport=<dir> use STLport in catalog <dir> 39 --without-stlport compile without STLport 40 --with-boost=<dir> use boost headers in catalog <dir> 41 --with-system-boost use boost installed on this system 42 --with-msvc=<dir> use MS VC from this catalog 43 --with-mssdk=<dir> use MS SDK from this catalog 44 --with-extra-cxxflags=<options> 45 pass extra options to C++ compiler 46 --with-extra-cflags=<options> 47 pass extra options to C compiler 48 --with-extra-ldflags=<options> 49 pass extra options to linker (via C/C++) 50 --use-static-gcc use static gcc libs instead of shared libgcc_s (useful for gcc compiler, 51 that was builded with --enable-shared [default]; if compiler was builded 52 with --disable-shared, static libraries will be used in any case) 53 --clean remove custom settings (file ${configmak}) 54 and use default values 55 --with-cxx=<name> use <name> as C++ compiler (use --target= for cross-compilation) 56 --with-cc=<name> use <name> as C compiler (use --target= for cross-compilation) 57 --use-compiler-family=<name> use compiler family; one of: 58 gcc GNU compilers (default) 59 icc Intel compilers 60 aCC HP's aCC compilers 61 CC SunPro's CC compilers 62 bcc Borland's compilers 63 --without-debug don't build debug variant 64 --without-stldebug don't build STLport's STLP_DEBUG mode 65 --enable-static build static 66 --disable-shared don't build shared 67 --with-lib-motif=<motif> 68 Use this option to customize the generated library name. 69 The motif will be used in the last place before version information, 70 separated by an underscore, ex: 71 stlportd_MOTIF.5.0.lib 72 stlportstld_static_MOTIF.5.1.lib 73 --without-thread Per default STLport libraries are built in order to be usable 74 in a multithreaded context. If you don't need this you can ask 75 for a not thread safe version with this option. 76 --without-rtti Disable RTTI when building libraries. 77 --with-static-rtl 78 --with-dynamic-rtl 79 Enables usage of static (libc.lib family) or dynamic (msvcrt.lib family) 80 C/C++ runtime library when linking with STLport. If you want your appli/dll 81 to link statically with STLport but using the dynamic C runtime use 82 --with-dynamic-rtl; if you want to link dynamicaly with STLport but using the 83 static C runtime use --with-static-rtl. See README.options for details. 84 Don't forget to signal the link method when building your appli or dll, in 85 stlport/stl/config/host.h set the following macro depending on the configure 86 option: 87 --with-static-rtl -> _STLP_USE_DYNAMIC_LIB" 88 --with-dynamic-rtl -> _STLP_USE_STATIC_LIB" 89 --windows-platform=<name> 90 Targetted OS when building for Windows; one of: 91 win95 Windows 95 92 win98 Windows 98 93 winxp Windows XP and later (default) 94 95 Environment variables: 96 97 \$CXX C++ compiler name (use --target= for cross-compilation) 98 \$CC C compiler name (use --target= for cross-compilation) 99 \$CXXFLAGS pass extra options to C++ compiler 100 \$CFLAGS pass extra options to C compiler 101 \$LDFLAGS pass extra options to linker (via C/C++) 102 103 Options has preference over environment variables. 104 105 EOF 106 } 107 108 default_settings () { 109 # if [ "$boost_set" = "" ]; then 110 # write_option "${PWD}/external/boost" BOOST_DIR 111 # fi 112 113 # if [ -z "${stlport_set}" ]; then 114 # write_over_option "$base" STLPORT_DIR 115 # fi 116 117 # Set in Makefiles/gmake/top.mak 118 if [ -z "${compiler_family_set}" ]; then 119 # write_option gcc COMPILER_NAME 120 echo include gcc.mak > ${base}/build/lib/Makefile 121 echo include gcc.mak > ${base}/build/test/unit/Makefile 122 echo include gcc.mak > ${base}/build/test/eh/Makefile 123 fi 124 125 # Set in Makefiles/gmake/targetdirs.mak 126 # if [ -z "${prefix_set}" ]; then 127 # write_option "/usr/local" BASE_INSTALL_DIR '${DESTDIR}' 128 # fi 129 } 130 131 [ $# -eq 0 ] && { >${configmak}; default_settings; exit 0; } 132 133 for a in $@ ; do 134 case $a in 135 --help) 136 print_help 137 exit 0 138 ;; 139 --clean) 140 rm -f ${configmak} 141 exit 0 142 ;; 143 esac 144 done 145 146 >${configmak} 147 148 while : 149 do 150 case $# in 151 0) 152 break 153 ;; 154 esac 155 option="$1" 156 shift 157 case $option in 158 --target=*) 159 write_option "$option" TARGET_OS 160 target_set=y 161 ;; 162 --with-stlport=*) 163 write_option "$option" STLPORT_DIR 164 stlport_set=y 165 ;; 166 --without-stlport) 167 write_option 1 WITHOUT_STLPORT 168 stlport_set=y 169 ;; 170 --with-boost=*) 171 write_option "$option" BOOST_DIR 172 ;; 173 --with-system-boost) 174 write_option 1 USE_SYSTEM_BOOST 175 ;; 176 --with-msvc=*) 177 write_option "$option" MSVC_DIR 178 ;; 179 --with-mssdk=*) 180 write_option "$option" MSSDK_DIR 181 ;; 182 --with-extra-cxxflags=*) 183 write_option "$option" EXTRA_CXXFLAGS 184 cxxflags_set=y 185 ;; 186 --with-extra-cflags=*) 187 write_option "$option" EXTRA_CFLAGS 188 cflags_set=y 189 ;; 190 --with-extra-ldflags=*) 191 write_option "$option" EXTRA_LDFLAGS 192 ldflags_set=y 193 ;; 194 --with-lib-motif=*) 195 echo "Using $option in generated library names" 196 write_option "$option" LIB_MOTIF 197 ;; 198 --without-thread) 199 write_option 1 WITHOUT_THREAD 200 ;; 201 --without-rtti) 202 write_option 1 WITHOUT_RTTI 203 ;; 204 --with-dynamic-rtl) 205 write_option 1 WITH_DYNAMIC_RTL 206 ;; 207 --with-static-rtl) 208 write_option 1 WITH_STATIC_RTL 209 ;; 210 --use-static-gcc) 211 write_option 1 USE_STATIC_LIBGCC 212 ;; 213 --without-debug) 214 write_option 1 _NO_DBG_BUILD 215 ;; 216 --without-stldebug) 217 write_option 1 _NO_STLDBG_BUILD 218 ;; 219 --enable-static) 220 write_option 1 _STATIC_BUILD 221 ;; 222 --disable-shared) 223 write_option 1 _NO_SHARED_BUILD 224 ;; 225 --with-cxx=*) 226 write_option "$option" _FORCE_CXX 227 cxx_set=y 228 ;; 229 --with-cc=*) 230 write_option "$option" _FORCE_CC 231 cc_set=y 232 ;; 233 --use-compiler-family=*) 234 case `echo $option | sed -e 's/^[^=]*=//'` in 235 gcc|icc|aCC|CC|bcc|dmc) 236 target=`echo $option | sed -e 's/^[^=]*=//'` 237 echo COMPILER_NAME := $target >> ${configmak} 238 echo include $target.mak > ${base}/build/lib/Makefile 239 echo include $target.mak > ${base}/build/test/unit/Makefile 240 echo include $target.mak > ${base}/build/test/eh/Makefile 241 ;; 242 *) 243 echo "Not supported compilers family" 244 exit -1 245 ;; 246 esac 247 compiler_family_set=y 248 ;; 249 --prefix=*) 250 write_option "$option" BASE_INSTALL_DIR '${DESTDIR}' 251 prefix_set=y 252 ;; 253 --bindir=*) 254 write_option "$option" INSTALL_BIN_DIR '${DESTDIR}' 255 ;; 256 --libdir=*) 257 write_option "$option" INSTALL_LIB_DIR '${DESTDIR}' 258 ;; 259 --includedir=*) 260 write_option "$option" INSTALL_HDR_DIR '${DESTDIR}' 261 ;; 262 --windows-platform=*) 263 case `echo $option | sed -e 's/^[^=]*=//'` in 264 win95) 265 write_option 0x0400 WINVER 266 ;; 267 win98) 268 write_option 0x0410 WINVER 269 ;; 270 winxp) 271 write_option 0x0501 WINVER 272 ;; 273 *) 274 echo "Not supported windows platform" 275 exit -1 276 ;; 277 esac 278 ;; 279 *) 280 echo "Unknown configuration option '$option'" 281 exit -1 282 ;; 283 esac 284 done 285 286 if [ -n "${CXX}" ]; then 287 if [ -n "${cxx_set}" ]; then 288 echo "Both --with-cxx and \$CXX set, using the first" 289 elif [ -z "${target_set}" ]; then 290 write_option "${CXX}" _FORCE_CXX 291 else 292 echo "For cross-compilation with gcc use --target option only" 293 fi 294 if [ -z "${CC}" -a -z "${cc_set}" ]; then 295 echo "\$CXX set, but I don't see \$CC!" 296 fi 297 fi 298 299 if [ -n "${CC}" ]; then 300 if [ -n "${cxx_set}" ]; then 301 echo "Both --with-cc and \$CC set, using the first" 302 else 303 write_option "${CC}" _FORCE_CC 304 fi 305 fi 306 307 if [ -n "${CXXFLAGS}" ]; then 308 if [ -z "${cxxflags_set}" ]; then 309 write_option "${CXXFLAGS}" EXTRA_CXXFLAGS 310 else 311 echo "Both --with-extra-cxxflags and \$CXXFLAGS set, using the first" 312 fi 313 fi 314 315 if [ -n "${CFLAGS}" ]; then 316 if [ -z "${cflags_set}" ]; then 317 write_option "${CFLAGS}" EXTRA_CFLAGS 318 else 319 echo "Both --with-extra-cflags and \$CFLAGS set, using the first" 320 fi 321 fi 322 323 if [ -n "${LDFLAGS}" ]; then 324 if [ -z "${ldflags_set}" ]; then 325 write_option "${LDFLAGS}" EXTRA_LDFLAGS 326 else 327 echo "Both --with-extra-ldflags and \$LDFLAGS set, using the first" 328 fi 329 fi 330 331 # default settings 332 333 default_settings 334