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