1 #!/bin/sh 2 # Copyright (c) 1999-2014, International Business Machines Corporation and 3 # others. All Rights Reserved. 4 5 # runConfigureICU: This script will run the "configure" script for the appropriate platform 6 # Only supported platforms are recognized 7 8 me=`basename $0` 9 OPTS= 10 11 usage() 12 { 13 ec=0$1 14 if test $ec -eq 0 15 then 16 uletter=U 17 else 18 uletter=u 19 fi 20 21 echo "${uletter}sage: $me [ -h, --help ] [ --enable-debug | --disable-release ] platform [ configurearg ... ]" 22 if test $ec -eq 0 23 then 24 cat <<EOE 25 26 Options: -h, --help Print this message and exit 27 --enable-debug Enable support for debugging 28 --disable-release Disable presetting optimization flags 29 30 If you want to add custom CFLAGS or CXXFLAGS or similar, provide them _before_ 31 the runConfigureICU command: 32 33 CXXFLAGS=xyz path/to/runConfigureICU --enable-debug ... 34 35 The following names can be supplied as the argument for platform: 36 37 AIX Use the IBM Visual Age xlc_r/xlC_r compilers on AIX 38 AIX/GCC Use the GNU gcc/g++ compilers on AIX 39 Cygwin Use the GNU gcc/g++ compilers on Cygwin 40 Cygwin/MSVC Use the Microsoft Visual C++ compiler on Cygwin 41 Cygwin/MSVC2005 Use the Microsoft Visual C++ 2005 compiler on Cygwin 42 Cygwin/ICL Use the Intel C++ compiler on Cygwin 43 FreeBSD Use the clang/clang++ or GNU gcc/g++ compilers on FreeBSD 44 HP-UX/ACC Use the HP ANSI C/Advanced C++ compilers on HP-UX 11 45 IBMi Use the iCC compilers on IBM i, i5/OS, OS/400 46 Linux Use the clang/clang++ or GNU gcc/g++ compilers on Linux 47 Linux/gcc Use the GNU gcc/g++ compilers on Linux 48 Linux/ECC Use the Intel ECC compiler on Linux 49 Linux/ICC Use the Intel ICC compiler on Linux 50 Linux/VA Use the IBM Visual Age compiler on Power PC Linux 51 MacOSX Use the default compilers on MacOS X (Darwin) 52 MacOSX/GCC Use the GNU gcc/g++ compilers on MacOSX (Darwin) 53 MinGW Use the GNU gcc/g++ compilers on MinGW 54 MSYS/MSVC Use the Microsoft Visual C++ computer on MSYS 55 QNX Use the QNX QCC compiler on QNX/Neutrino 56 Solaris Use the Sun cc/CC compilers on Solaris 57 Solaris/GCC Use the GNU gcc/g++ compilers on Solaris 58 SolarisX86 Use the Sun cc/CC compilers on Solaris x86 59 TRU64V5.1/CXX Use the Compaq cxx compiler on Tru64 (OSF) 60 zOS Use the IBM cxx compiler on z/OS (os/390) 61 zOSV1R2 Use the IBM cxx compiler for z/OS 1.2 62 EOE 63 fi 64 65 exit $ec 66 } 67 68 # Parse arguments 69 70 platform= 71 debug=0 72 release=1 73 74 while test $# -ne 0 75 do 76 case "$1" in 77 -h|--help) 78 usage 0 79 ;; 80 --enable-debug) 81 debug=1 82 OPTS="$OPTS --enable-debug" 83 ;; 84 --disable-release) 85 release=0 86 OPTS="$OPTS --disable-release" 87 ;; 88 *) 89 platform="$1" 90 shift 91 break 92 ;; 93 esac 94 shift 95 done 96 97 if test x$platform = x 98 then 99 usage 1 100 fi 101 102 # Go. 103 104 rm -f config.cache 105 rm -f config.log 106 rm -f config.status 107 108 DEBUG_CFLAGS='-g' 109 DEBUG_CXXFLAGS='-g' 110 111 if test x$configure = x 112 then 113 if test -f ./configure 114 then 115 configuredir=. 116 else 117 configuredir=`echo $0 | sed 's,[^/]*$,,'` 118 if test x$configuredir = x$0 119 then 120 configuredir=. 121 fi 122 fi 123 124 if test x$configuredir = x 125 then 126 configuredir=. 127 fi 128 129 configure=$configuredir/configure 130 fi 131 132 case $platform in 133 AIX) 134 THE_OS=AIX 135 THE_COMP="xlC_r" 136 CC=`which xlc_r`; export CC 137 if [ ! -x $CC ]; then 138 echo "ERROR: xlc_r was not found, please check the PATH to make sure it is correct."; exit 1 139 fi 140 CXX=`which xlC_r`; export CXX 141 if [ ! -x $CXX ]; then 142 echo "ERROR: xlC_r was not found, please check the PATH to make sure it is correct."; exit 1 143 fi 144 RELEASE_CFLAGS="-O2 -qmaxmem=-1" 145 RELEASE_CXXFLAGS="-O2 -qmaxmem=-1" 146 ;; 147 AIX/GCC) 148 THE_OS=AIX 149 THE_COMP="the GNU C++" 150 CC=gcc; export CC 151 CXX=g++; export CXX 152 DEBUG_CFLAGS='-g -O0' 153 DEBUG_CXXFLAGS='-g -O0' 154 ;; 155 Solaris) 156 THE_OS=SOLARIS 157 THE_COMP="Sun's CC" 158 CC=`which cc`; export CC 159 CXX=`which CC`; export CXX 160 RELEASE_CFLAGS="-xO1 -xlibmil" 161 RELEASE_CXXFLAGS="-O4 -xlibmil" 162 ;; 163 Solaris/GCC) 164 THE_OS=SOLARIS 165 THE_COMP="the GNU C++" 166 CC=gcc; export CC 167 CXX=g++; export CXX 168 RELEASE_CFLAGS=-O1 169 RELEASE_CXXFLAGS=-O2 170 ;; 171 SolarisX86) 172 THE_OS="SOLARIS X86" 173 THE_COMP="Sun's CC" 174 CC=`which cc`; export CC 175 CXX=`which CC`; export CXX 176 LDFLAGS="${LDFLAGS} -lCrun";export LDFLAGS 177 RELEASE_CFLAGS=-xO3 178 RELEASE_CXXFLAGS=-O3 179 ;; 180 HP-UX/ACC) 181 THE_OS="HP-UX 11" 182 THE_COMP="aCC" 183 CC=cc; export CC 184 CXX=aCC; export CXX 185 RELEASE_CFLAGS='+O2 +Ofltacc' 186 RELEASE_CXXFLAGS='+O2 +Ofltacc' 187 ;; 188 IBMi) 189 THE_OS="IBM i" 190 THE_COMP="the iCC C++" 191 CC=icc; export CC 192 CXX=icc; export CXX 193 CPP="$CC -c -qpponly"; export CPP 194 MAKE=gmake; export MAKE 195 U_MAKE=gmake; export U_MAKE 196 # gmake is a .pgm and may not be on the path. Don't use a full path, just use gmake. 197 ac_cv_path_U_MAKE=gmake; export ac_cv_path_U_MAKE 198 RELEASE_CFLAGS='-O4' 199 RELEASE_CXXFLAGS='-O4' 200 ;; 201 Linux/ECC) 202 THE_OS="Linux" 203 THE_COMP="Intel ECC 7.1" 204 CC=ecc; export CC 205 CXX=ecpc; export CXX 206 RELEASE_CFLAGS='-O2' 207 RELEASE_CXXFLAGS='-O2' 208 ;; 209 Linux/ICC) 210 THE_OS="Linux" 211 CC=`which icc`; export CC 212 CXX=`which icpc`; export CXX 213 ICC_VER=`${CC} -v 2>&1` 214 RELEASE_CFLAGS='-O' 215 RELEASE_CXXFLAGS='-O' 216 export CFLAGS="-fp-model precise" 217 export CXXFLAGS="-fp-model precise" 218 if [ "${ICC_VER}" = "Version 9.0 " ]; then 219 RELEASE_CFLAGS='' 220 RELEASE_CXXFLAGS='' 221 export CFLAGS="${CFLAGS} -O0" 222 export CXXFLAGS="${CXXFLAGS} -O0" 223 echo "ICC 9.0 does not work with optimization- disabling optimizations" 224 fi 225 THE_COMP="Intel ${ICC_VER}" 226 ;; 227 Linux/VA) 228 THE_OS="Linux" 229 THE_COMP="IBM Visual Age C++ Compiler" 230 CC=`which xlc_r`; export CC 231 CXX=`which xlC_r`; export CXX 232 RELEASE_CFLAGS="-O2 -qmaxmem=-1" 233 RELEASE_CXXFLAGS="-O2 -qmaxmem=-1" 234 ;; 235 Linux/gcc) 236 THE_OS="Linux" 237 THE_COMP="the GNU C++" 238 CC=gcc; export CC 239 CXX=g++; export CXX 240 RELEASE_CFLAGS='-O3' 241 RELEASE_CXXFLAGS='-O3' 242 DEBUG_CFLAGS='-g' 243 DEBUG_CXXFLAGS='-g' 244 ;; 245 Linux*) 246 THE_OS="Linux" 247 THE_COMP="the clang or else GNU C++" 248 RELEASE_CFLAGS='-O3' 249 RELEASE_CXXFLAGS='-O3' 250 DEBUG_CFLAGS='-g' 251 DEBUG_CXXFLAGS='-g' 252 ;; 253 Cygwin) 254 THE_OS="Cygwin" 255 THE_COMP="the GNU C++" 256 RELEASE_CFLAGS='-O3' 257 RELEASE_CXXFLAGS='-O3' 258 ;; 259 Cygwin/MSVC) 260 THE_OS="Windows with Cygwin" 261 THE_COMP="Microsoft Visual C++" 262 CC=cl; export CC 263 CXX=cl; export CXX 264 RELEASE_CFLAGS='-Gy -MD' 265 RELEASE_CXXFLAGS='-Gy -MD' 266 DEBUG_CFLAGS='-Zi -MDd' 267 DEBUG_CXXFLAGS='-Zi -MDd' 268 DEBUG_LDFLAGS='-DEBUG' 269 ;; 270 Cygwin/MSVC2005) 271 THE_OS="Windows with Cygwin" 272 THE_COMP="Microsoft Visual C++ 2005" 273 CC=cl; export CC 274 CXX=cl; export CXX 275 RELEASE_CFLAGS='/Gy /MD' 276 RELEASE_CXXFLAGS='/Gy /MD' 277 DEBUG_CFLAGS='/Zi /MDd' 278 DEBUG_CXXFLAGS='/Zi /MDd' 279 DEBUG_LDFLAGS='/DEBUG' 280 ;; 281 Cygwin/ICL) 282 THE_OS="Windows with Cygwin" 283 THE_COMP="Intel C++" 284 CC=icl; export CC 285 CXX=icl; export CXX 286 # The Intel compiler has optimization bugs. So we disable optimization. 287 RELEASE_CFLAGS='/Od' 288 RELEASE_CXXFLAGS='/Od' 289 DEBUG_CFLAGS='/Zi' 290 DEBUG_CXXFLAGS='/Zi' 291 DEBUG_LDFLAGS='/DEBUG' 292 ;; 293 MacOSX) 294 THE_OS="MacOS X (Darwin)" 295 THE_COMP="the default" 296 RELEASE_CFLAGS='-O2' 297 RELEASE_CXXFLAGS='-O2' 298 DEBUG_CFLAGS='-g -O0' 299 DEBUG_CXXFLAGS='-g -O0' 300 ;; 301 MacOSX/GCC) 302 THE_OS="MacOS X (Darwin)" 303 THE_COMP="the GNU C++" 304 RELEASE_CFLAGS='-O2' 305 RELEASE_CXXFLAGS='-O2' 306 DEBUG_CFLAGS='-g -O0' 307 DEBUG_CXXFLAGS='-g -O0' 308 CC=gcc; export CC 309 CXX=g++; export CXX 310 ;; 311 MinGW) 312 THE_OS="MinGW" 313 THE_COMP="the GNU C++" 314 RELEASE_CFLAGS='-O3' 315 RELEASE_CXXFLAGS='-O3' 316 CXXFLAGS="--std=c++03" 317 export CXXFLAGS 318 ;; 319 MSYS/MSVC) 320 THE_OS="MSYS" 321 THE_COMP="Microsoft Visual C++" 322 CC=cl; export CC 323 CXX=cl; export CXX 324 RELEASE_CFLAGS='-Gy -MD' 325 RELEASE_CXXFLAGS='-Gy -MD' 326 DEBUG_CFLAGS='-Zi -MDd' 327 DEBUG_CXXFLAGS='-Zi -MDd' 328 DEBUG_LDFLAGS='-DEBUG' 329 ;; 330 *BSD) 331 THE_OS="BSD" 332 THE_COMP="the GNU C++" 333 DEBUG_CFLAGS='-g -O0' 334 DEBUG_CXXFLAGS='-g -O0' 335 ;; 336 TRU64V5.1/CXX) 337 THE_OS="OSF1" 338 THE_COMP="Compaq cxx" 339 CC=cc; export CC 340 CXX=cxx; export CXX 341 ;; 342 QNX) 343 THE_OS="QNX" 344 THE_COMP="QNX cc" 345 CC=qcc; export CC 346 CXX=QCC; export CXX 347 ;; 348 zOS) 349 THE_OS="z/OS (OS/390)" 350 THE_COMP="z/OS C/C++" 351 CC=xlc; export CC 352 CXX=xlC; export CXX 353 RELEASE_CFLAGS="-O2 -Wc,'inline(AUTO,NOREPORT,1000,8000)'" 354 RELEASE_CXXFLAGS="-O2 -Wc,'inline(AUTO,NOREPORT,1000,8000)'" 355 ;; 356 zOSV1R2) 357 THE_OS="z/OS 1.2" 358 THE_COMP="z/OS 1.2 C/C++" 359 CC=cc; export CC 360 CXX=cxx; export CXX 361 export COMPILE_LINK_ENVVAR='_CXX_CICC_VER}=0x41020000 _C89_CVERSION=0x41020000 _CC_CVERSION=0x41020000 _CXX_PVERSION=0x41020000 _C89_PVERSION=0x41020000 _CC_PVERSION=0x41020000' 362 export _CXX_CVERSION=0x41020000 _C89_CVERSION=0x41020000 _CC_CVERSION=0x41020000 _CXX_PVERSION=0x41020000 _C89_PVERSION=0x41020000 _CC_PVERSION=0x41020000 363 export LDFLAGS="-Wl,'compat=pm3'" 364 export CFLAGS="-Wc,'target(zOSV1R2)'" 365 export CXXFLAGS="-Wc,'target(zOSV1R2)'" 366 RELEASE_CFLAGS="-2 -Wc,'inline(auto,noreport,500,4000)'" 367 RELEASE_CXXFLAGS="-2 -Wc,'inline(auto,noreport,500,4000)'" 368 ;; 369 *) 370 >&2 echo "$me: unrecognized platform \"$platform\" (use --help for help)" 371 exit 1;; 372 esac 373 374 375 # Tweak flags 376 377 if test $release -eq 1 378 then 379 if test "$RELEASE_CFLAGS" = "" 380 then 381 case $CC in 382 gcc|*/gcc|*-gcc-*|*/*-gcc-*) 383 RELEASE_CFLAGS=-O3 384 ;; 385 esac 386 fi 387 if test "$RELEASE_CFLAGS" != "" 388 then 389 CFLAGS="$RELEASE_CFLAGS $CFLAGS" 390 fi 391 if test "$RELEASE_CXXFLAGS" = "" 392 then 393 case $CXX in 394 g++|*/g++|*-g++-*|*/*-g++-*) 395 RELEASE_CXXFLAGS=-O3 396 ;; 397 esac 398 fi 399 if test "$RELEASE_CXXFLAGS" != "" 400 then 401 CXXFLAGS="$RELEASE_CXXFLAGS $CXXFLAGS" 402 fi 403 if test "$RELEASE_LDFLAGS" != "" 404 then 405 LDFLAGS="$RELEASE_LDFLAGS $LDFLAGS" 406 fi 407 fi 408 409 if test $debug -eq 1 410 then 411 if test "$DEBUG_CFLAGS" != "" 412 then 413 CFLAGS="$DEBUG_CFLAGS $CFLAGS" 414 fi 415 if test "$DEBUG_CXXFLAGS" != "" 416 then 417 CXXFLAGS="$DEBUG_CXXFLAGS $CXXFLAGS" 418 fi 419 if test "$DEBUG_LDFLAGS" != "" 420 then 421 LDFLAGS="$DEBUG_LDFLAGS $LDFLAGS" 422 fi 423 fi 424 425 export CFLAGS 426 export CXXFLAGS 427 export LDFLAGS 428 429 # Run configure 430 431 echo "export CPP=$CPP CC=$CC CXX=$CXX CPPFLAGS=$CPPFLAGS CFLAGS=$CFLAGS CXXFLAGS=$CXXFLAGS LDFLAGS=$LDFLAGS MAKE=$MAKE" 432 echo "Running ./configure $OPTS $@ for $THE_OS using $THE_COMP compiler" 433 echo 434 if $configure $OPTS $@ 435 then 436 echo 437 echo If the result of the above commands looks okay to you, go to the directory 438 echo source in the ICU distribution to build ICU. Please remember that ICU needs 439 echo GNU make to build properly... 440 else 441 echo $0: ./configure failed 442 exit 1 443 fi 444