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