445 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			445 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
#!/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 XL xlclang/xlclang 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 XL 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="xlclang"
 | 
						|
        CC=`which xlclang`; export CC
 | 
						|
        if [ ! -x $CC ]; then
 | 
						|
           echo "ERROR: xlclang was not found, please check the PATH to make sure it is correct."; exit 1
 | 
						|
        fi
 | 
						|
        CXX=`which xlclang++`; export CXX
 | 
						|
        if [ ! -x $CXX ]; then
 | 
						|
           echo "ERROR: xlclang++ was not found, please check the PATH to make sure it is correct."; exit 1
 | 
						|
        fi
 | 
						|
        RELEASE_CFLAGS="-O3 -qstrict=ieeefp"
 | 
						|
        RELEASE_CXXFLAGS="-O3 -qstrict=ieeefp"
 | 
						|
        ;;
 | 
						|
    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 XL C++ Compiler"
 | 
						|
        CC=`which xlclang`; export CC
 | 
						|
        CXX=`which xlclang++`; export CXX
 | 
						|
        RELEASE_CFLAGS="-O3"
 | 
						|
        RELEASE_CXXFLAGS="-O3"
 | 
						|
        ;;
 | 
						|
    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
 |