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