|  | #!/bin/sh | 
|  | # Copyright (c) 1999-2015, International Business Machines Corporation and | 
|  | # others. All Rights Reserved. | 
|  |  | 
|  | # runConfigureICU: This script will run the "configure" script for the appropriate platform | 
|  | # Only supported platforms are recognized | 
|  |  | 
|  | me=`basename $0` | 
|  | OPTS= | 
|  |  | 
|  | usage() | 
|  | { | 
|  | ec=0$1 | 
|  | if test $ec -eq 0 | 
|  | then | 
|  | uletter=U | 
|  | else | 
|  | uletter=u | 
|  | fi | 
|  |  | 
|  | echo "${uletter}sage: $me [ -h, --help ]  [ --enable-debug | --disable-release ] platform [ configurearg ... ]" | 
|  | if test $ec -eq 0 | 
|  | then | 
|  | cat <<EOE | 
|  |  | 
|  | Options: -h, --help         Print this message and exit | 
|  | --enable-debug     Enable support for debugging | 
|  | --disable-release  Disable presetting optimization flags | 
|  |  | 
|  | If you want to add custom CFLAGS or CXXFLAGS or similar, provide them _before_ | 
|  | the runConfigureICU command: | 
|  |  | 
|  | CXXFLAGS=xyz path/to/runConfigureICU --enable-debug ... | 
|  |  | 
|  | The following names can be supplied as the argument for platform: | 
|  |  | 
|  | AIX                 Use the IBM Visual Age xlc_r/xlC_r compilers on AIX | 
|  | AIX/GCC             Use the GNU gcc/g++ compilers on AIX | 
|  | Cygwin              Use the GNU gcc/g++ compilers on Cygwin | 
|  | Cygwin/MSVC         Use the Microsoft Visual C++ compiler on Cygwin | 
|  | Cygwin/MSVC2005     Use the Microsoft Visual C++ 2005 compiler on Cygwin | 
|  | Cygwin/ICL          Use the Intel C++ compiler on Cygwin | 
|  | FreeBSD             Use the clang/clang++ or GNU gcc/g++ compilers on FreeBSD | 
|  | HP-UX/ACC           Use the HP ANSI C/Advanced C++ compilers on HP-UX 11 | 
|  | IBMi                Use the iCC compilers on IBM i, i5/OS, OS/400 | 
|  | Linux               Use the clang/clang++ or GNU gcc/g++ compilers on Linux | 
|  | Linux/gcc           Use the GNU gcc/g++ compilers on Linux | 
|  | Linux/ECC           Use the Intel ECC compiler on Linux | 
|  | Linux/ICC           Use the Intel ICC compiler on Linux | 
|  | Linux/VA            Use the IBM Visual Age compiler on Power PC Linux | 
|  | MacOSX              Use the default compilers on MacOS X (Darwin) | 
|  | MacOSX/GCC          Use the GNU gcc/g++ compilers on MacOSX (Darwin) | 
|  | MinGW               Use the GNU gcc/g++ compilers on MinGW | 
|  | MSYS/MSVC           Use the Microsoft Visual C++ computer on MSYS | 
|  | QNX                 Use the QNX QCC compiler on QNX/Neutrino | 
|  | Solaris             Use the Sun cc/CC compilers on Solaris | 
|  | Solaris/GCC         Use the GNU gcc/g++ compilers on Solaris | 
|  | SolarisX86          Use the Sun cc/CC compilers on Solaris x86 | 
|  | TRU64V5.1/CXX       Use the Compaq cxx compiler on Tru64 (OSF) | 
|  | zOS                 Use the IBM cxx compiler on z/OS (os/390) | 
|  | zOSV1R2             Use the IBM cxx compiler for z/OS 1.2 | 
|  | EOE | 
|  | fi | 
|  |  | 
|  | exit $ec | 
|  | } | 
|  |  | 
|  | # Parse arguments | 
|  |  | 
|  | platform= | 
|  | debug=0 | 
|  | release=1 | 
|  |  | 
|  | while test $# -ne 0 | 
|  | do | 
|  | case "$1" in | 
|  | -h|--help) | 
|  | usage 0 | 
|  | ;; | 
|  | --enable-debug) | 
|  | debug=1 | 
|  | OPTS="$OPTS --enable-debug" | 
|  | ;; | 
|  | --disable-release) | 
|  | release=0 | 
|  | OPTS="$OPTS --disable-release" | 
|  | ;; | 
|  | *) | 
|  | platform="$1" | 
|  | shift | 
|  | break | 
|  | ;; | 
|  | esac | 
|  | shift | 
|  | done | 
|  |  | 
|  | if test x$platform = x | 
|  | then | 
|  | usage 1 | 
|  | fi | 
|  |  | 
|  | # Go. | 
|  |  | 
|  | rm -f config.cache | 
|  | rm -f config.log | 
|  | rm -f config.status | 
|  |  | 
|  | DEBUG_CFLAGS='-g' | 
|  | DEBUG_CXXFLAGS='-g' | 
|  |  | 
|  | if test x$configure = x | 
|  | then | 
|  | if test -f ./configure | 
|  | then | 
|  | configuredir=. | 
|  | else | 
|  | configuredir=`echo $0 | sed 's,[^/]*$,,'` | 
|  | if test x$configuredir = x$0 | 
|  | then | 
|  | configuredir=. | 
|  | fi | 
|  | fi | 
|  |  | 
|  | if test x$configuredir = x | 
|  | then | 
|  | configuredir=. | 
|  | fi | 
|  |  | 
|  | configure=$configuredir/configure | 
|  | fi | 
|  |  | 
|  | case $platform in | 
|  | AIX) | 
|  | THE_OS=AIX | 
|  | THE_COMP="xlC_r" | 
|  | CC=`which xlc_r`; export CC | 
|  | if [ ! -x $CC ]; then | 
|  | echo "ERROR: xlc_r was not found, please check the PATH to make sure it is correct."; exit 1 | 
|  | fi | 
|  | CXX=`which xlC_r`; export CXX | 
|  | if [ ! -x $CXX ]; then | 
|  | echo "ERROR: xlC_r was not found, please check the PATH to make sure it is correct."; exit 1 | 
|  | fi | 
|  | RELEASE_CFLAGS="-O2 -qmaxmem=-1" | 
|  | RELEASE_CXXFLAGS="-O2 -qmaxmem=-1" | 
|  | ;; | 
|  | AIX/GCC) | 
|  | THE_OS=AIX | 
|  | THE_COMP="the GNU C++" | 
|  | CC=gcc; export CC | 
|  | CXX=g++; export CXX | 
|  | DEBUG_CFLAGS='-g -O0' | 
|  | DEBUG_CXXFLAGS='-g -O0' | 
|  | ;; | 
|  | Solaris) | 
|  | THE_OS=SOLARIS | 
|  | THE_COMP="Sun's CC" | 
|  | CC=`which cc`; export CC | 
|  | CXX=`which CC`; export CXX | 
|  | RELEASE_CFLAGS="-xO1 -xlibmil" | 
|  | RELEASE_CXXFLAGS="-O4 -xlibmil" | 
|  | ;; | 
|  | Solaris/GCC) | 
|  | THE_OS=SOLARIS | 
|  | THE_COMP="the GNU C++" | 
|  | CC=gcc; export CC | 
|  | CXX=g++; export CXX | 
|  | RELEASE_CFLAGS=-O1 | 
|  | RELEASE_CXXFLAGS=-O2 | 
|  | ;; | 
|  | SolarisX86) | 
|  | THE_OS="SOLARIS X86" | 
|  | THE_COMP="Sun's CC" | 
|  | CC=`which cc`; export CC | 
|  | CXX=`which CC`; export CXX | 
|  | LDFLAGS="${LDFLAGS} -lCrun";export LDFLAGS | 
|  | RELEASE_CFLAGS=-xO3 | 
|  | RELEASE_CXXFLAGS=-O3 | 
|  | ;; | 
|  | HP-UX/ACC) | 
|  | THE_OS="HP-UX 11" | 
|  | THE_COMP="aCC" | 
|  | CC=cc; export CC | 
|  | CXX=aCC; export CXX | 
|  | RELEASE_CFLAGS='+O2 +Ofltacc' | 
|  | RELEASE_CXXFLAGS='+O2 +Ofltacc' | 
|  | ;; | 
|  | IBMi) | 
|  | THE_OS="IBM i" | 
|  | THE_COMP="the iCC C++" | 
|  | CC=icc; export CC | 
|  | CXX=icc; export CXX | 
|  | CPP="$CC -c -qpponly"; export CPP | 
|  | MAKE=gmake; export MAKE | 
|  | U_MAKE=gmake; export U_MAKE | 
|  | # gmake is a .pgm and may not be on the path.  Don't use a full path, just use gmake. | 
|  | ac_cv_path_U_MAKE=gmake; export ac_cv_path_U_MAKE | 
|  | RELEASE_CFLAGS='-O4' | 
|  | RELEASE_CXXFLAGS='-O4' | 
|  | ;; | 
|  | Linux/ECC) | 
|  | THE_OS="Linux" | 
|  | THE_COMP="Intel ECC 7.1" | 
|  | CC=ecc; export CC | 
|  | CXX=ecpc; export CXX | 
|  | RELEASE_CFLAGS='-O2' | 
|  | RELEASE_CXXFLAGS='-O2' | 
|  | ;; | 
|  | Linux/ICC) | 
|  | THE_OS="Linux" | 
|  | CC=`which icc`; export CC | 
|  | CXX=`which icpc`; export CXX | 
|  | ICC_VER=`${CC} -v 2>&1` | 
|  | RELEASE_CFLAGS='-O' | 
|  | RELEASE_CXXFLAGS='-O' | 
|  | export CFLAGS="-fp-model precise" | 
|  | export CXXFLAGS="-fp-model precise" | 
|  | if [ "${ICC_VER}" = "Version 9.0 " ]; then | 
|  | RELEASE_CFLAGS='' | 
|  | RELEASE_CXXFLAGS='' | 
|  | export CFLAGS="${CFLAGS} -O0" | 
|  | export CXXFLAGS="${CXXFLAGS} -O0" | 
|  | echo "ICC 9.0 does not work with optimization- disabling optimizations" | 
|  | fi | 
|  | THE_COMP="Intel ${ICC_VER}" | 
|  | ;; | 
|  | Linux/VA) | 
|  | THE_OS="Linux" | 
|  | THE_COMP="IBM Visual Age C++ Compiler" | 
|  | CC=`which xlc_r`; export CC | 
|  | CXX=`which xlC_r`; export CXX | 
|  | RELEASE_CFLAGS="-O2 -qmaxmem=-1" | 
|  | RELEASE_CXXFLAGS="-O2 -qmaxmem=-1" | 
|  | ;; | 
|  | Linux/gcc) | 
|  | THE_OS="Linux" | 
|  | THE_COMP="the GNU C++" | 
|  | CC=gcc; export CC | 
|  | CXX=g++; export CXX | 
|  | RELEASE_CFLAGS='-O3' | 
|  | RELEASE_CXXFLAGS='-O3' | 
|  | DEBUG_CFLAGS='-g' | 
|  | DEBUG_CXXFLAGS='-g' | 
|  | ;; | 
|  | Linux*) | 
|  | THE_OS="Linux" | 
|  | THE_COMP="the clang or else GNU C++" | 
|  | RELEASE_CFLAGS='-O3' | 
|  | RELEASE_CXXFLAGS='-O3' | 
|  | DEBUG_CFLAGS='-g' | 
|  | DEBUG_CXXFLAGS='-g' | 
|  | ;; | 
|  | Cygwin) | 
|  | THE_OS="Cygwin" | 
|  | THE_COMP="the GNU C++" | 
|  | RELEASE_CFLAGS='-O3' | 
|  | RELEASE_CXXFLAGS='-O3' | 
|  | ;; | 
|  | Cygwin/MSVC) | 
|  | THE_OS="Windows with Cygwin" | 
|  | THE_COMP="Microsoft Visual C++" | 
|  | CC=cl; export CC | 
|  | CXX=cl; export CXX | 
|  | RELEASE_CFLAGS='-Gy -MD' | 
|  | RELEASE_CXXFLAGS='-Gy -MD' | 
|  | DEBUG_CFLAGS='-Zi -MDd' | 
|  | DEBUG_CXXFLAGS='-Zi -MDd' | 
|  | DEBUG_LDFLAGS='-DEBUG' | 
|  | ;; | 
|  | Cygwin/MSVC2005) | 
|  | THE_OS="Windows with Cygwin" | 
|  | THE_COMP="Microsoft Visual C++ 2005" | 
|  | CC=cl; export CC | 
|  | CXX=cl; export CXX | 
|  | RELEASE_CFLAGS='/Gy /MD' | 
|  | RELEASE_CXXFLAGS='/Gy /MD' | 
|  | DEBUG_CFLAGS='/Zi /MDd' | 
|  | DEBUG_CXXFLAGS='/Zi /MDd' | 
|  | DEBUG_LDFLAGS='/DEBUG' | 
|  | ;; | 
|  | Cygwin/ICL) | 
|  | THE_OS="Windows with Cygwin" | 
|  | THE_COMP="Intel C++" | 
|  | CC=icl; export CC | 
|  | CXX=icl; export CXX | 
|  | # The Intel compiler has optimization bugs. So we disable optimization. | 
|  | RELEASE_CFLAGS='/Od' | 
|  | RELEASE_CXXFLAGS='/Od' | 
|  | DEBUG_CFLAGS='/Zi' | 
|  | DEBUG_CXXFLAGS='/Zi' | 
|  | DEBUG_LDFLAGS='/DEBUG' | 
|  | ;; | 
|  | MacOSX) | 
|  | THE_OS="MacOS X (Darwin)" | 
|  | THE_COMP="the default" | 
|  | RELEASE_CFLAGS='-O2' | 
|  | RELEASE_CXXFLAGS='-O2' | 
|  | DEBUG_CFLAGS='-g -O0' | 
|  | DEBUG_CXXFLAGS='-g -O0' | 
|  | ;; | 
|  | MacOSX/GCC) | 
|  | THE_OS="MacOS X (Darwin)" | 
|  | THE_COMP="the GNU C++" | 
|  | RELEASE_CFLAGS='-O2' | 
|  | RELEASE_CXXFLAGS='-O2' | 
|  | DEBUG_CFLAGS='-g -O0' | 
|  | DEBUG_CXXFLAGS='-g -O0' | 
|  | CC=gcc; export CC | 
|  | CXX=g++; export CXX | 
|  | ;; | 
|  | MinGW) | 
|  | THE_OS="MinGW" | 
|  | THE_COMP="the GNU C++" | 
|  | RELEASE_CFLAGS='-O3' | 
|  | RELEASE_CXXFLAGS='-O3' | 
|  | CXXFLAGS="--std=c++03" | 
|  | export CXXFLAGS | 
|  | ;; | 
|  | MSYS/MSVC) | 
|  | THE_OS="MSYS" | 
|  | THE_COMP="Microsoft Visual C++" | 
|  | CC=cl; export CC | 
|  | CXX=cl; export CXX | 
|  | RELEASE_CFLAGS='-Gy -MD' | 
|  | RELEASE_CXXFLAGS='-Gy -MD' | 
|  | DEBUG_CFLAGS='-Zi -MDd' | 
|  | DEBUG_CXXFLAGS='-Zi -MDd' | 
|  | DEBUG_LDFLAGS='-DEBUG' | 
|  | ;; | 
|  | *BSD) | 
|  | THE_OS="BSD" | 
|  | THE_COMP="the GNU C++" | 
|  | DEBUG_CFLAGS='-g -O0' | 
|  | DEBUG_CXXFLAGS='-g -O0' | 
|  | ;; | 
|  | TRU64V5.1/CXX) | 
|  | THE_OS="OSF1" | 
|  | THE_COMP="Compaq cxx" | 
|  | CC=cc; export CC | 
|  | CXX=cxx; export CXX | 
|  | ;; | 
|  | QNX) | 
|  | THE_OS="QNX" | 
|  | THE_COMP="QNX cc" | 
|  | CC=qcc; export CC | 
|  | CXX=QCC; export CXX | 
|  | ;; | 
|  | zOS) | 
|  | THE_OS="z/OS (OS/390)" | 
|  | THE_COMP="z/OS C/C++" | 
|  | CC=xlc; export CC | 
|  | CXX=xlC; export CXX | 
|  | RELEASE_CFLAGS="-O2 -Wc,'inline(AUTO,NOREPORT,1000,8000)'" | 
|  | RELEASE_CXXFLAGS="-O2 -Wc,'inline(AUTO,NOREPORT,1000,8000)'" | 
|  | ;; | 
|  | zOSV1R2) | 
|  | THE_OS="z/OS 1.2" | 
|  | THE_COMP="z/OS 1.2 C/C++" | 
|  | CC=cc; export CC | 
|  | CXX=cxx; export CXX | 
|  | export COMPILE_LINK_ENVVAR='_CXX_CICC_VER}=0x41020000 _C89_CVERSION=0x41020000 _CC_CVERSION=0x41020000 _CXX_PVERSION=0x41020000 _C89_PVERSION=0x41020000 _CC_PVERSION=0x41020000' | 
|  | export _CXX_CVERSION=0x41020000 _C89_CVERSION=0x41020000 _CC_CVERSION=0x41020000 _CXX_PVERSION=0x41020000 _C89_PVERSION=0x41020000 _CC_PVERSION=0x41020000 | 
|  | export LDFLAGS="-Wl,'compat=pm3'" | 
|  | export CFLAGS="-Wc,'target(zOSV1R2)'" | 
|  | export CXXFLAGS="-Wc,'target(zOSV1R2)'" | 
|  | RELEASE_CFLAGS="-2 -Wc,'inline(auto,noreport,500,4000)'" | 
|  | RELEASE_CXXFLAGS="-2 -Wc,'inline(auto,noreport,500,4000)'" | 
|  | ;; | 
|  | *) | 
|  | >&2 echo "$me: unrecognized platform \"$platform\" (use --help for help)" | 
|  | exit 1;; | 
|  | esac | 
|  |  | 
|  |  | 
|  | # Tweak flags | 
|  |  | 
|  | if test $release -eq 1 | 
|  | then | 
|  | if test "$RELEASE_CFLAGS" = "" | 
|  | then | 
|  | case $CC in | 
|  | gcc|*/gcc|*-gcc-*|*/*-gcc-*) | 
|  | RELEASE_CFLAGS=-O3 | 
|  | ;; | 
|  | esac | 
|  | fi | 
|  | if test "$RELEASE_CFLAGS" != "" | 
|  | then | 
|  | CFLAGS="$RELEASE_CFLAGS $CFLAGS" | 
|  | fi | 
|  | if test "$RELEASE_CXXFLAGS" = "" | 
|  | then | 
|  | case $CXX in | 
|  | g++|*/g++|*-g++-*|*/*-g++-*) | 
|  | RELEASE_CXXFLAGS=-O3 | 
|  | ;; | 
|  | esac | 
|  | fi | 
|  | if test "$RELEASE_CXXFLAGS" != "" | 
|  | then | 
|  | CXXFLAGS="$RELEASE_CXXFLAGS $CXXFLAGS" | 
|  | fi | 
|  | if test "$RELEASE_LDFLAGS" != "" | 
|  | then | 
|  | LDFLAGS="$RELEASE_LDFLAGS $LDFLAGS" | 
|  | fi | 
|  | fi | 
|  |  | 
|  | if test $debug -eq 1 | 
|  | then | 
|  | if test "$DEBUG_CFLAGS" != "" | 
|  | then | 
|  | CFLAGS="$DEBUG_CFLAGS $CFLAGS" | 
|  | fi | 
|  | if test "$DEBUG_CXXFLAGS" != "" | 
|  | then | 
|  | CXXFLAGS="$DEBUG_CXXFLAGS $CXXFLAGS" | 
|  | fi | 
|  | if test "$DEBUG_LDFLAGS" != "" | 
|  | then | 
|  | LDFLAGS="$DEBUG_LDFLAGS $LDFLAGS" | 
|  | fi | 
|  | fi | 
|  |  | 
|  | export CFLAGS | 
|  | export CXXFLAGS | 
|  | export LDFLAGS | 
|  |  | 
|  | # Run configure | 
|  |  | 
|  | echo "export CPP=$CPP CC=$CC CXX=$CXX CPPFLAGS=$CPPFLAGS CFLAGS=$CFLAGS CXXFLAGS=$CXXFLAGS LDFLAGS=$LDFLAGS MAKE=$MAKE" | 
|  | echo "Running ./configure $OPTS $@ for $THE_OS using $THE_COMP compiler" | 
|  | echo | 
|  | if $configure $OPTS $@ | 
|  | then | 
|  | echo | 
|  | echo If the result of the above commands looks okay to you, go to the directory | 
|  | echo source in the ICU distribution to build ICU. Please remember that ICU needs | 
|  | echo GNU make to build properly... | 
|  | else | 
|  | echo $0: ./configure failed | 
|  | exit 1 | 
|  | fi |