#!/bin/sh
-# Copyright (c) 1999-2004, International Business Machines Corporation and
+# 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
--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:
- AIX4.3xlC Use IBM's xlC on AIX 4.3
- AIX4.3xlC_nothreads Use IBM's xlC on AIX 4.3 with no multithreading
- AIX4.3VA Use IBM's Visual Age xlC_r compiler on AIX 4.3
- AIXGCC Use GCC on AIX
- ALPHA/LINUXGCC Use GCC on Alpha/Linux systems
- ALPHA/LINUXCCC Use Compaq C compiler on Alpha/Linux systems
- BeOS Use the GNU C++ compiler on BeOS
- Cygwin Use the GNU C++ compiler on Cygwin
- Cygwin/MSVC Use the Microsoft Visual C++ compiler on Cygwin
- FreeBSD Use the GNU C++ compiler on Free BSD
- HP-UX11ACC Use the Advanced C++ compiler on HP-UX 11
- HP-UX11CC Use HP's C++ compiler on HP-UX 11
- LinuxRedHat Use the GNU C++ compiler on Linux
- LINUX/ECC Use the Intel ECC compiler on Linux
- LINUX/ICC Use the Intel ICC compiler on Linux
- LINUX/VA Use IBM's Visual Age compiler on Power PC Linux
- MacOSX Use the GNU C++ compiler on MacOS X (Darwin)
- QNX Use QNX's QCC compiler on QNX/Neutrino
- SOLARISCC Use Sun's CC compiler on Solaris
- SOLARISCC/W4.2 Use Sun's Workshop 4.2 CC compiler on Solaris
- SOLARISGCC Use the GNU C++ compiler on Solaris
- SOLARISX86 Use Sun's CC compiler on Solaris x86
- TRU64V5.1/CXX Use Compaq's cxx compiler on Tru64 (OSF)
- zOS Use IBM's cxx compiler on z/OS (os/390)
- zOSV1R2 Use IBM's cxx compiler for z/OS 1.2
- OS390V2R10 Use IBM's cxx compiler for OS/390 2.10
+ 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
fi
case $platform in
- AIX4.3xlC)
- THE_OS=AIX
- THE_COMP="xlC_r"
- CC=/usr/ibmcxx/bin/xlc_r; export CC
- CXX=/usr/ibmcxx/bin/xlC_r; export CXX
- RELEASE_CFLAGS="-O -qmaxmem=-1"
- RELEASE_CXXFLAGS="-O -qmaxmem=-1"
- ;;
- AIX4.3xlC_nothreads)
- THE_OS=AIX
- THE_COMP="xlC"
- CC=/usr/ibmcxx/bin/xlc; export CC
- CXX=/usr/ibmcxx/bin/xlC; export CXX
- AIX_SHLIB=/usr/ibmcxx/bin/makeC++SharedLib; export AIX_SHLIB
- RELEASE_CFLAGS="-O -qmaxmem=-1"
- RELEASE_CXXFLAGS="-O -qmaxmem=-1"
- OPTS="$OPTS --enable-threads=no"
- ;;
- AIX4.3VA)
+ 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"
- #LDFLAGS=-L/usr/lpp/xlC/lib; export LDFLAGS
;;
-# For no threads use --enable-threads=no. Visual Age makes no distinction between xlC and xlC_r or any other _r programs.
- AIXGCC)
+ AIX/GCC)
THE_OS=AIX
- THE_COMP="gcc"
- CC=`which gcc`; export CC
- CXX=`which g++`; export CXX
- ;;
- SOLARISX86)
- THE_OS="SOLARIS X86"
- THE_COMP="Sun's CC"
- CC=`which cc`; export CC
- CXX=`which CC`; export CXX
- CXX_FLAGS="-w";export CXX_FLAGS
- C_FLAGS="-w";export C_FLAGS
- LDFLAGS="-L -lCrun";export LDFLAGS
- RELEASE_CFLAGS=-xO3
- RELEASE_CXXFLAGS=-O3
+ THE_COMP="the GNU C++"
+ CC=gcc; export CC
+ CXX=g++; export CXX
+ DEBUG_CFLAGS='-g -O0'
+ DEBUG_CXXFLAGS='-g -O0'
;;
- SOLARISCC)
+ Solaris)
THE_OS=SOLARIS
THE_COMP="Sun's CC"
CC=`which cc`; export CC
CXX=`which CC`; export CXX
- RELEASE_CFLAGS=-xO4
- RELEASE_CXXFLAGS=-O4
+ RELEASE_CFLAGS="-xO1 -xlibmil"
+ RELEASE_CXXFLAGS="-O4 -xlibmil"
;;
- SOLARISCC/W4.2)
+ 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
- RELEASE_CFLAGS=-x04
- RELEASE_CXXFLAGS="-O4 +d"
- ;;
- SOLARISGCC)
- THE_OS=SOLARIS
- THE_COMP="the GNU C++"
- CXXFLAGS="$CXXFLAGS -I/usr/local/include/g++"; export CXXFLAGS
- LDFLAGS="$LDFLAGS -R/usr/local/lib"; export LDFLAGS
- RELEASE_CXXFLAGS=-O
- RELEASE_CFLAGS=-O3
- ;;
- HP-UX11CC)
- THE_OS="HP-UX 11"
- THE_COMP="HP's CC"
- CC=cc; export CC
- CXX=CC; export CXX
- RELEASE_CFLAGS='+O2 +Ofltacc'
- RELEASE_CXXFLAGS='+O2 +Ofltacc'
+ LDFLAGS="${LDFLAGS} -lCrun";export LDFLAGS
+ RELEASE_CFLAGS=-xO3
+ RELEASE_CXXFLAGS=-O3
;;
- HP-UX11ACC)
+ HP-UX/ACC)
THE_OS="HP-UX 11"
THE_COMP="aCC"
CC=cc; export CC
RELEASE_CFLAGS='+O2 +Ofltacc'
RELEASE_CXXFLAGS='+O2 +Ofltacc'
;;
- TRU64V5.1/CXX)
- THE_OS="OSF1"
- THE_COMP="Compaq cxx"
- CC=cc; export CC
- CXX=cxx; export CXX
- ;;
- ALPHA/LINUXCCC)
- THE_OS="Linux"
- THE_COMP="Compaq's CC"
- CC=ccc; export CC
- CXX=cxx; export CXX
+ 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'
;;
- ALPHA/LINUXGCC)
- THE_OS="Linux"
- THE_COMP="the GNU C++"
- CC=gcc; export CC
- CXX=g++; export CXX
- ;;
- LinuxRedHat*)
- THE_OS="Linux"
- THE_COMP="the GNU C++"
- CC=gcc; export CC
- CXX=g++; export CXX
- ;;
- LINUX/ECC)
+ Linux/ECC)
THE_OS="Linux"
THE_COMP="Intel ECC 7.1"
CC=ecc; export CC
RELEASE_CFLAGS='-O2'
RELEASE_CXXFLAGS='-O2'
;;
- LINUX/ICC)
+ Linux/ICC)
THE_OS="Linux"
- THE_COMP="Intel ICC 6.0"
- CC=icc; export CC
- CXX=icpc; export CXX
- RELEASE_CFLAGS='-O0'
- RELEASE_CXXFLAGS='-O0'
+ 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)
+ Linux/VA)
THE_OS="Linux"
THE_COMP="IBM Visual Age C++ Compiler"
CC=`which xlc_r`; export CC
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++"
THE_COMP="Microsoft Visual C++"
CC=cl; export CC
CXX=cl; export CXX
- RELEASE_CFLAGS='/O2 /Ob2'
- RELEASE_CXXFLAGS='/O2 /Ob2'
- # The real debug flags are defined by the mh file because configure can't handle them.
- DEBUG_CFLAGS=
- DEBUG_CXXFLAGS=
+ 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++"
- CC=gcc; export CC
- CXX=g++; export CXX
+ 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"
CC=qcc; export CC
CXX=QCC; export CXX
;;
- BeOS)
- THE_OS="BeOS"
- THE_COMP="the GNU C++"
- OPTIMIZATIONS="-fdefault-inline -fdefer-pop -fforce-mem -fforce-addr \
- -finline -finline-functions \
- -fkeep-inline-functions -fkeep-static-consts -fbranch-count-reg \
- -ffunction-cse -fstrength-reduce -fthread-jumps -fcse-follow-jumps \
- -fcse-skip-blocks -frerun-cse-after-loop -frerun-loop-opt \
- -fexpensive-optimizations -foptimize-register-move -fregmove \
- -fschedule-insns -fschedule-insns2 -ffloat-store -funroll-loops \
- -fmove-all-movables -freduce-all-givs -fpeephole \
- -funroll-all-loops -ffunction-sections -fdata-sections"
- RELEASE_CFLAGS="$OPTIMIZATIONS"
- RELEASE_CXXFLAGS="$OPTIMIZATIONS"
- ;;
zOS)
THE_OS="z/OS (OS/390)"
- THE_COMP="z/OS 1.2 (through OS/390 v2r10) C/C++"
- CC=cc; export CC
- CXX=cxx; export CXX
- export RELEASE_CFLAGS='-2'
- export RELEASE_CXXFLAGS='-2'
+ 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_CVERSION=0x41020000 _C89_CVERSION=0x41020000 _CC_CVERSION=0x41020000 _CXX_PVERSION=0x41020000 _C89_PVERSION=0x41020000 _CC_PVERSION=0x41020000'
+ 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)"'
- export RELEASE_CFLAGS='-2'
- export RELEASE_CXXFLAGS='-2'
- ;;
- OS390V2R10)
- THE_OS="OS/390 2.10"
- THE_COMP="OS/390 2.10 C/C++"
- CC=cc; export CC
- CXX=cxx; export CXX
- export COMPILE_LINK_ENVVAR='_CXX_CVERSION=0x220A0000 _C89_CVERSION=0x220A0000 _CC_CVERSION=0x220A0000 _CXX_PVERSION=0x220A0000 _C89_PVERSION=0x220A0000 _CC_PVERSION=0x220A0000'
- export _CXX_CVERSION=0x220A0000 _C89_CVERSION=0x220A0000 _CC_CVERSION=0x220A0000 _CXX_PVERSION=0x220A0000 _C89_PVERSION=0x220A0000 _CC_PVERSION=0x220A0000
- export LDFLAGS=-Wl,"compat=pm3"
- export CFLAGS='-Wc,"target(OSV2R10)"'
- export CXXFLAGS='-Wc,"target(OSV2R10)"'
- export RELEASE_CFLAGS='-2'
- export RELEASE_CXXFLAGS='-2'
+ 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)"
fi
if test "$RELEASE_CFLAGS" != ""
then
- CFLAGS="$CFLAGS $RELEASE_CFLAGS"
+ CFLAGS="$RELEASE_CFLAGS $CFLAGS"
fi
- export CFLAGS
if test "$RELEASE_CXXFLAGS" = ""
then
case $CXX in
g++|*/g++|*-g++-*|*/*-g++-*)
- RELEASE_CXXFLAGS=-O
+ RELEASE_CXXFLAGS=-O3
;;
esac
fi
if test "$RELEASE_CXXFLAGS" != ""
then
- CXXFLAGS="$CXXFLAGS $RELEASE_CXXFLAGS"
+ CXXFLAGS="$RELEASE_CXXFLAGS $CXXFLAGS"
+ fi
+ if test "$RELEASE_LDFLAGS" != ""
+ then
+ LDFLAGS="$RELEASE_LDFLAGS $LDFLAGS"
fi
- export CXXFLAGS
fi
if test $debug -eq 1
then
if test "$DEBUG_CFLAGS" != ""
then
- CFLAGS="$CFLAGS $DEBUG_CFLAGS"
+ CFLAGS="$DEBUG_CFLAGS $CFLAGS"
fi
- export CFLAGS
if test "$DEBUG_CXXFLAGS" != ""
then
- CXXFLAGS="$CXXFLAGS $DEBUG_CXXFLAGS"
+ CXXFLAGS="$DEBUG_CXXFLAGS $CXXFLAGS"
fi
- export CXXFLAGS
if test "$DEBUG_LDFLAGS" != ""
then
- LDFLAGS="$LDFLAGS $DEBUG_LDFLAGS"
+ LDFLAGS="$DEBUG_LDFLAGS $LDFLAGS"
fi
- export LDFLAGS
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
-$configure $OPTS $@
-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...
+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