Home | History | Annotate | Download | only in icu4c
      1 #!/bin/sh
      2 # Copyright (c) 1999-2011, International Business Machines Corporation and
      3 # others. All Rights Reserved.
      4 
      5 # runConfigureICU: This script will run the "configure" script for the appropriate platform
      6 # Only supported platforms are recognized
      7 
      8 me=`basename $0`
      9 OPTS=
     10 
     11 usage()
     12 {
     13     ec=0$1
     14     if test $ec -eq 0
     15     then
     16         uletter=U
     17     else
     18         uletter=u
     19     fi
     20 
     21     echo "${uletter}sage: $me [ -h, --help ]  [ --enable-debug | --disable-release ] platform [ configurearg ... ]"
     22     if test $ec -eq 0
     23     then
     24         cat <<EOE
     25 
     26 Options: -h, --help         Print this message and exit
     27          --enable-debug     Enable support for debugging
     28          --disable-release  Disable presetting optimization flags
     29 
     30 The following names can be supplied as the argument for platform:
     31 
     32     AIX                 Use the IBM Visual Age xlc_r/xlC_r compilers on AIX
     33     AIX/GCC             Use the GNU gcc/g++ compilers on AIX
     34     Cygwin              Use the GNU gcc/g++ compilers on Cygwin
     35     Cygwin/MSVC         Use the Microsoft Visual C++ compiler on Cygwin
     36     Cygwin/MSVC2005     Use the Microsoft Visual C++ 2005 compiler on Cygwin
     37     Cygwin/ICL          Use the Intel C++ compiler on Cygwin
     38     FreeBSD             Use the GNU gcc/g++ compilers on Free BSD
     39     HP-UX/ACC           Use the HP ANSI C/Advanced C++ compilers on HP-UX 11
     40     IBMi                Use the iCC compilers on IBM i, i5/OS, OS/400
     41     Linux               Use the GNU gcc/g++ compilers on Linux
     42     Linux/ECC           Use the Intel ECC compiler on Linux
     43     Linux/ICC           Use the Intel ICC compiler on Linux
     44     Linux/VA            Use the IBM Visual Age compiler on Power PC Linux
     45     MacOSX              Use the GNU gcc/g++ compilers on MacOS X (Darwin)
     46     MinGW               Use the GNU gcc/g++ compilers on MinGW
     47     QNX                 Use the QNX QCC compiler on QNX/Neutrino
     48     Solaris             Use the Sun cc/CC compilers on Solaris
     49     Solaris/GCC         Use the GNU gcc/g++ compilers on Solaris
     50     SolarisX86          Use the Sun cc/CC compilers on Solaris x86
     51     TRU64V5.1/CXX       Use the Compaq cxx compiler on Tru64 (OSF)
     52     zOS                 Use the IBM cxx compiler on z/OS (os/390)
     53     zOSV1R2             Use the IBM cxx compiler for z/OS 1.2
     54 EOE
     55     fi
     56 
     57     exit $ec
     58 }
     59 
     60 # Parse arguments
     61 
     62 platform=
     63 debug=0
     64 release=1
     65 
     66 while test $# -ne 0
     67 do
     68     case "$1" in
     69     -h|--help)
     70         usage 0
     71         ;;
     72     --enable-debug)
     73         debug=1
     74         OPTS="$OPTS --enable-debug"
     75         ;;
     76     --disable-release)
     77         release=0
     78         OPTS="$OPTS --disable-release"
     79         ;;
     80     *)
     81         platform="$1"
     82         shift
     83         break
     84         ;;
     85     esac
     86     shift
     87 done
     88 
     89 if test x$platform = x
     90 then
     91    usage 1
     92 fi
     93 
     94 # Go.
     95 
     96 rm -f config.cache
     97 rm -f config.log
     98 rm -f config.status
     99 
    100 DEBUG_CFLAGS='-g'
    101 DEBUG_CXXFLAGS='-g'
    102 
    103 if test x$configure = x
    104 then
    105     if test -f ./configure
    106     then
    107         configuredir=.
    108     else
    109         configuredir=`echo $0 | sed 's,[^/]*$,,'`
    110         if test x$configuredir = x$0
    111         then
    112             configuredir=.
    113         fi
    114     fi
    115 
    116     if test x$configuredir = x
    117     then
    118         configuredir=.
    119     fi
    120 
    121     configure=$configuredir/configure
    122 fi
    123 
    124 case $platform in
    125     AIX)
    126         THE_OS=AIX
    127         THE_COMP="xlC_r"
    128         CC=`which xlc_r`; export CC
    129         if [ ! -x $CC ]; then
    130            echo "ERROR: xlc_r was not found, please check the PATH to make sure it is correct."; exit 1
    131         fi
    132         CXX=`which xlC_r`; export CXX
    133         if [ ! -x $CXX ]; then
    134            echo "ERROR: xlC_r was not found, please check the PATH to make sure it is correct."; exit 1
    135         fi
    136         RELEASE_CFLAGS="-O2 -qmaxmem=-1"
    137         RELEASE_CXXFLAGS="-O2 -qmaxmem=-1"
    138         ;;
    139     AIX/GCC)
    140         THE_OS=AIX
    141         THE_COMP="the GNU C++"
    142         CC=gcc; export CC
    143         CXX=g++; export CXX
    144         DEBUG_CFLAGS='-g -O0'
    145         DEBUG_CXFLAGS='-g -O0'
    146         ;;
    147     Solaris)
    148         THE_OS=SOLARIS
    149         THE_COMP="Sun's CC"
    150         CC=`which cc`; export CC
    151         CXX=`which CC`; export CXX
    152         RELEASE_CFLAGS="-xO1 -xlibmil"
    153         RELEASE_CXXFLAGS="-O4 -xlibmil"
    154         ;;
    155     Solaris/GCC)
    156         THE_OS=SOLARIS
    157         THE_COMP="the GNU C++"
    158         CC=gcc; export CC
    159         CXX=g++; export CXX
    160         RELEASE_CFLAGS=-O1
    161         RELEASE_CXXFLAGS=-O3
    162         ;;
    163     SolarisX86)
    164         THE_OS="SOLARIS X86"
    165         THE_COMP="Sun's CC"
    166         CC=`which cc`; export CC
    167         CXX=`which CC`; export CXX
    168         LDFLAGS="${LDFLAGS} -lCrun";export LDFLAGS
    169         RELEASE_CFLAGS=-xO3
    170         RELEASE_CXXFLAGS=-O3
    171         ;;
    172     HP-UX/ACC)
    173         THE_OS="HP-UX 11"
    174         THE_COMP="aCC"
    175         CC=cc; export CC
    176         CXX=aCC; export CXX
    177         RELEASE_CFLAGS='+O2 +Ofltacc'
    178         RELEASE_CXXFLAGS='+O2 +Ofltacc'
    179         ;;
    180     IBMi)
    181         THE_OS="IBM i"
    182         THE_COMP="the iCC C++"
    183         CC=icc; export CC
    184         CXX=icc; export CXX
    185         CPP="$CC -c -qpponly"; export CPP
    186         MAKE=gmake; export MAKE
    187         U_MAKE=gmake; export U_MAKE
    188         # gmake is a .pgm and may not be on the path.  Don't use a full path, just use gmake.
    189         ac_cv_path_U_MAKE=gmake; export ac_cv_path_U_MAKE
    190         RELEASE_CFLAGS='-O4'
    191         RELEASE_CXXFLAGS='-O4'
    192         ;;
    193     Linux/ECC)
    194         THE_OS="Linux"
    195         THE_COMP="Intel ECC 7.1"
    196         CC=ecc; export CC
    197         CXX=ecpc; export CXX
    198         RELEASE_CFLAGS='-O2'
    199         RELEASE_CXXFLAGS='-O2'
    200         ;;
    201     Linux/ICC)
    202         THE_OS="Linux"
    203         CC=`which icc`; export CC
    204         CXX=`which icpc`; export CXX
    205 	ICC_VER=`${CC} -v 2>&1`
    206         RELEASE_CFLAGS='-O'
    207         RELEASE_CXXFLAGS='-O'
    208         export CFLAGS="-fp-model precise"
    209         export CXXFLAGS="-fp-model precise"
    210 	if [ "${ICC_VER}" = "Version 9.0 " ]; then
    211 		RELEASE_CFLAGS=''
    212 		RELEASE_CXXFLAGS=''
    213 		export CFLAGS="${CFLAGS} -O0"
    214 		export CXXFLAGS="${CXXFLAGS} -O0"
    215 		echo "ICC 9.0 does not work with optimization- disabling optimizations"
    216 	fi
    217         THE_COMP="Intel ${ICC_VER}"
    218         ;;
    219     Linux/VA)
    220         THE_OS="Linux"
    221         THE_COMP="IBM Visual Age C++ Compiler"
    222         CC=`which xlc_r`; export CC
    223         CXX=`which xlC_r`; export CXX
    224         RELEASE_CFLAGS="-O2 -qmaxmem=-1"
    225         RELEASE_CXXFLAGS="-O2 -qmaxmem=-1"
    226         ;;
    227     Linux*)
    228         THE_OS="Linux"
    229         THE_COMP="the GNU C++"
    230         CC=gcc; export CC
    231         CXX=g++; export CXX
    232         DEBUG_CFLAGS='-g -O0'
    233         DEBUG_CXFLAGS='-g -O0'
    234         ;;
    235     Cygwin)
    236         THE_OS="Cygwin"
    237         THE_COMP="the GNU C++"
    238         RELEASE_CFLAGS='-O3'
    239         RELEASE_CXXFLAGS='-O3'
    240         ;;
    241     Cygwin/MSVC)
    242         THE_OS="Windows with Cygwin"
    243         THE_COMP="Microsoft Visual C++"
    244         CC=cl; export CC
    245         CXX=cl; export CXX
    246         RELEASE_CFLAGS='/Gy /MD'
    247         RELEASE_CXXFLAGS='/Gy /MD'
    248         DEBUG_CFLAGS='/Zi /MDd'
    249         DEBUG_CXXFLAGS='/Zi /MDd'
    250         DEBUG_LDFLAGS='/DEBUG'
    251         ;;
    252     Cygwin/MSVC2005)
    253         THE_OS="Windows with Cygwin"
    254         THE_COMP="Microsoft Visual C++ 2005"
    255         CC=cl; export CC
    256         CXX=cl; export CXX
    257         RELEASE_CFLAGS='/Gy /MD'
    258         RELEASE_CXXFLAGS='/Gy /MD'
    259         DEBUG_CFLAGS='/Zi /MDd'
    260         DEBUG_CXXFLAGS='/Zi /MDd'
    261         DEBUG_LDFLAGS='/DEBUG'
    262         ;;
    263     Cygwin/ICL)
    264         THE_OS="Windows with Cygwin"
    265         THE_COMP="Intel C++"
    266         CC=icl; export CC
    267         CXX=icl; export CXX
    268         # The Intel compiler has optimization bugs. So we disable optimization.
    269         RELEASE_CFLAGS='/Od'
    270         RELEASE_CXXFLAGS='/Od'
    271         DEBUG_CFLAGS='/Zi'
    272         DEBUG_CXXFLAGS='/Zi'
    273         DEBUG_LDFLAGS='/DEBUG'
    274         ;;
    275     MacOSX)
    276         THE_OS="MacOS X (Darwin)"
    277         THE_COMP="the GNU C++"
    278         RELEASE_CFLAGS='-O2'
    279         RELEASE_CXXFLAGS='-O2'
    280         DEBUG_CFLAGS='-g -O0'
    281         DEBUG_CXXFLAGS='-g -O0'
    282         ;;
    283     MinGW)
    284         THE_OS="MinGW"
    285         THE_COMP="the GNU C++"
    286         RELEASE_CFLAGS='-O3'
    287         RELEASE_CXXFLAGS='-O3'
    288         ;;
    289     *BSD)
    290         THE_OS="BSD"
    291         THE_COMP="the GNU C++"
    292         CC=gcc; export CC
    293         CXX=g++; export CXX
    294         DEBUG_CFLAGS='-g -O0'
    295         DEBUG_CXFLAGS='-g -O0'
    296         ;;
    297     TRU64V5.1/CXX)
    298         THE_OS="OSF1"
    299         THE_COMP="Compaq cxx"
    300         CC=cc; export CC
    301         CXX=cxx; export CXX
    302         ;;
    303     QNX)
    304         THE_OS="QNX"
    305         THE_COMP="QNX cc"
    306         CC=qcc; export CC
    307         CXX=QCC; export CXX
    308         ;;
    309     zOS)
    310         THE_OS="z/OS (OS/390)"
    311         THE_COMP="z/OS C/C++"
    312         CC=cc; export CC
    313         CXX=cxx; export CXX
    314         RELEASE_CFLAGS="-2 -Wc,'inline(auto,noreport,500,4000)'"
    315         RELEASE_CXXFLAGS="-2 -Wc,'inline(auto,noreport,500,4000)'"
    316         ;;
    317     zOSV1R2)
    318         THE_OS="z/OS 1.2"
    319         THE_COMP="z/OS 1.2 C/C++"
    320         CC=cc; export CC
    321         CXX=cxx; export CXX
    322         export COMPILE_LINK_ENVVAR='_CXX_CICC_VER}=0x41020000 _C89_CVERSION=0x41020000 _CC_CVERSION=0x41020000 _CXX_PVERSION=0x41020000 _C89_PVERSION=0x41020000 _CC_PVERSION=0x41020000'
    323         export _CXX_CVERSION=0x41020000 _C89_CVERSION=0x41020000 _CC_CVERSION=0x41020000 _CXX_PVERSION=0x41020000 _C89_PVERSION=0x41020000 _CC_PVERSION=0x41020000
    324         export LDFLAGS="-Wl,'compat=pm3'"
    325         export CFLAGS="-Wc,'target(zOSV1R2)'"
    326         export CXXFLAGS="-Wc,'target(zOSV1R2)'"
    327         RELEASE_CFLAGS="-2 -Wc,'inline(auto,noreport,500,4000)'"
    328         RELEASE_CXXFLAGS="-2 -Wc,'inline(auto,noreport,500,4000)'"
    329         ;;
    330     *)
    331         >&2 echo "$me: unrecognized platform \"$platform\" (use --help for help)"
    332         exit 1;;
    333 esac
    334 
    335 
    336 # Tweak flags
    337 
    338 if test $release -eq 1
    339 then
    340     if test "$RELEASE_CFLAGS" = ""
    341     then
    342         case $CC in
    343             gcc|*/gcc|*-gcc-*|*/*-gcc-*)
    344                 RELEASE_CFLAGS=-O3
    345                 ;;
    346         esac
    347     fi
    348     if test "$RELEASE_CFLAGS" != ""
    349     then
    350         CFLAGS="$CFLAGS $RELEASE_CFLAGS"
    351     fi
    352     if test "$RELEASE_CXXFLAGS" = ""
    353     then
    354         case $CXX in
    355             g++|*/g++|*-g++-*|*/*-g++-*)
    356                 RELEASE_CXXFLAGS=-O3
    357                 ;;
    358         esac
    359     fi
    360     if test "$RELEASE_CXXFLAGS" != ""
    361     then
    362         CXXFLAGS="$CXXFLAGS $RELEASE_CXXFLAGS"
    363     fi
    364     if test "$RELEASE_LDFLAGS" != ""
    365     then
    366         LDFLAGS="$LDFLAGS $RELEASE_LDFLAGS"
    367     fi
    368 fi
    369 
    370 if test $debug -eq 1
    371 then
    372     if test "$DEBUG_CFLAGS" != ""
    373     then
    374         CFLAGS="$CFLAGS $DEBUG_CFLAGS"
    375     fi
    376     if test "$DEBUG_CXXFLAGS" != ""
    377     then
    378         CXXFLAGS="$CXXFLAGS $DEBUG_CXXFLAGS"
    379     fi
    380     if test "$DEBUG_LDFLAGS" != ""
    381     then
    382         LDFLAGS="$LDFLAGS $DEBUG_LDFLAGS"
    383     fi
    384 fi
    385 
    386 export CFLAGS
    387 export CXXFLAGS
    388 export LDFLAGS
    389 
    390 # Run configure
    391 
    392 echo "export CPP=$CPP CC=$CC CXX=$CXX CPPFLAGS=$CPPFLAGS CFLAGS=$CFLAGS CXXFLAGS=$CXXFLAGS LDFLAGS=$LDFLAGS MAKE=$MAKE"
    393 echo "Running ./configure $OPTS $@ for $THE_OS using $THE_COMP compiler"
    394 echo
    395 if $configure $OPTS $@
    396 then
    397 	echo
    398 	echo If the result of the above commands looks okay to you, go to the directory
    399 	echo source in the ICU distribution to build ICU. Please remember that ICU needs
    400 	echo GNU make to build properly...
    401 else
    402 	echo $0: ./configure failed
    403 	exit 1
    404 fi
    405