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 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 64EOE 65 fi 66 67 exit $ec 68} 69 70# Parse arguments 71 72platform= 73debug=0 74release=1 75 76while test $# -ne 0 77do 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 97done 98 99if test x$platform = x 100then 101 usage 1 102fi 103 104# Go. 105 106rm -f config.cache 107rm -f config.log 108rm -f config.status 109 110DEBUG_CFLAGS='-g' 111DEBUG_CXXFLAGS='-g' 112 113if test x$configure = x 114then 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 132fi 133 134case $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='-FS -Zi -MDd' 269 DEBUG_CXXFLAGS='-FS -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 export CXXFLAGS 319 ;; 320 MSYS/MSVC) 321 THE_OS="MSYS" 322 THE_COMP="Microsoft Visual C++" 323 CC=cl; export CC 324 CXX=cl; export CXX 325 RELEASE_CFLAGS='-Gy -MD' 326 RELEASE_CXXFLAGS='-Gy -MD' 327 DEBUG_CFLAGS='-FS -Zi -MDd' 328 DEBUG_CXXFLAGS='-FS -Zi -MDd' 329 DEBUG_LDFLAGS='-DEBUG' 330 ;; 331 *BSD) 332 THE_OS="BSD" 333 THE_COMP="the GNU C++" 334 DEBUG_CFLAGS='-g -O0' 335 DEBUG_CXXFLAGS='-g -O0' 336 ;; 337 TRU64V5.1/CXX) 338 THE_OS="OSF1" 339 THE_COMP="Compaq cxx" 340 CC=cc; export CC 341 CXX=cxx; export CXX 342 ;; 343 QNX) 344 THE_OS="QNX" 345 THE_COMP="QNX cc" 346 CC=qcc; export CC 347 CXX=QCC; export CXX 348 ;; 349 zOS) 350 THE_OS="z/OS (OS/390)" 351 THE_COMP="z/OS C/C++" 352 CC=xlc; export CC 353 CXX=xlC; export CXX 354 RELEASE_CFLAGS="-O2 -Wc,'inline(AUTO,NOREPORT,1000,8000)'" 355 RELEASE_CXXFLAGS="-O2 -Wc,'inline(AUTO,NOREPORT,1000,8000)'" 356 ;; 357 zOSV1R2) 358 THE_OS="z/OS 1.2" 359 THE_COMP="z/OS 1.2 C/C++" 360 CC=cc; export CC 361 CXX=cxx; export CXX 362 export COMPILE_LINK_ENVVAR='_CXX_CICC_VER}=0x41020000 _C89_CVERSION=0x41020000 _CC_CVERSION=0x41020000 _CXX_PVERSION=0x41020000 _C89_PVERSION=0x41020000 _CC_PVERSION=0x41020000' 363 export _CXX_CVERSION=0x41020000 _C89_CVERSION=0x41020000 _CC_CVERSION=0x41020000 _CXX_PVERSION=0x41020000 _C89_PVERSION=0x41020000 _CC_PVERSION=0x41020000 364 export LDFLAGS="-Wl,'compat=pm3'" 365 export CFLAGS="-Wc,'target(zOSV1R2)'" 366 export CXXFLAGS="-Wc,'target(zOSV1R2)'" 367 RELEASE_CFLAGS="-2 -Wc,'inline(auto,noreport,500,4000)'" 368 RELEASE_CXXFLAGS="-2 -Wc,'inline(auto,noreport,500,4000)'" 369 ;; 370 *) 371 >&2 echo "$me: unrecognized platform \"$platform\" (use --help for help)" 372 exit 1;; 373esac 374 375 376# Tweak flags 377 378if test $release -eq 1 379then 380 if test "$RELEASE_CFLAGS" = "" 381 then 382 case $CC in 383 gcc|*/gcc|*-gcc-*|*/*-gcc-*) 384 RELEASE_CFLAGS=-O3 385 ;; 386 esac 387 fi 388 if test "$RELEASE_CFLAGS" != "" 389 then 390 CFLAGS="$RELEASE_CFLAGS $CFLAGS" 391 fi 392 if test "$RELEASE_CXXFLAGS" = "" 393 then 394 case $CXX in 395 g++|*/g++|*-g++-*|*/*-g++-*) 396 RELEASE_CXXFLAGS=-O3 397 ;; 398 esac 399 fi 400 if test "$RELEASE_CXXFLAGS" != "" 401 then 402 CXXFLAGS="$RELEASE_CXXFLAGS $CXXFLAGS" 403 fi 404 if test "$RELEASE_LDFLAGS" != "" 405 then 406 LDFLAGS="$RELEASE_LDFLAGS $LDFLAGS" 407 fi 408fi 409 410if test $debug -eq 1 411then 412 if test "$DEBUG_CFLAGS" != "" 413 then 414 CFLAGS="$DEBUG_CFLAGS $CFLAGS" 415 fi 416 if test "$DEBUG_CXXFLAGS" != "" 417 then 418 CXXFLAGS="$DEBUG_CXXFLAGS $CXXFLAGS" 419 fi 420 if test "$DEBUG_LDFLAGS" != "" 421 then 422 LDFLAGS="$DEBUG_LDFLAGS $LDFLAGS" 423 fi 424fi 425 426export CFLAGS 427export CXXFLAGS 428export LDFLAGS 429 430# Run configure 431 432echo "export CPP=$CPP CC=$CC CXX=$CXX CPPFLAGS=$CPPFLAGS CFLAGS=$CFLAGS CXXFLAGS=$CXXFLAGS LDFLAGS=$LDFLAGS MAKE=$MAKE" 433echo "Running ./configure $OPTS $@ for $THE_OS using $THE_COMP compiler" 434echo 435if $configure $OPTS $@ 436then 437 echo 438 echo If the result of the above commands looks okay to you, go to the directory 439 echo source in the ICU distribution to build ICU. Please remember that ICU needs 440 echo GNU make to build properly... 441else 442 echo $0: ./configure failed 443 exit 1 444fi 445