123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446 |
- #!/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='-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
|