| #!/bin/sh | |
| # Copyright (C) 2016 and later: Unicode, Inc. and others. | |
| # License & terms of use: http://www.unicode.org/copyright.html | |
| # 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='-FS -Zi -MDd' | |
| DEBUG_CXXFLAGS='-FS -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' | |
| 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='-FS -Zi -MDd' | |
| DEBUG_CXXFLAGS='-FS -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 |