#!/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