Home | History | Annotate | Download | only in icu4c
      1 #!/bin/sh
      2 # Copyright (c) 1999-2012, 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=-O2
    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         DEBUG_CFLAGS='-g -O0'
    231         DEBUG_CXFLAGS='-g -O0'
    232         ;;
    233     Cygwin)
    234         THE_OS="Cygwin"
    235         THE_COMP="the GNU C++"
    236         RELEASE_CFLAGS='-O3'
    237         RELEASE_CXXFLAGS='-O3'
    238         ;;
    239     Cygwin/MSVC)
    240         THE_OS="Windows with Cygwin"
    241         THE_COMP="Microsoft Visual C++"
    242         CC=cl; export CC
    243         CXX=cl; export CXX
    244         RELEASE_CFLAGS='/Gy /MD'
    245         RELEASE_CXXFLAGS='/Gy /MD'
    246         DEBUG_CFLAGS='/Zi /MDd'
    247         DEBUG_CXXFLAGS='/Zi /MDd'
    248         DEBUG_LDFLAGS='/DEBUG'
    249         ;;
    250     Cygwin/MSVC2005)
    251         THE_OS="Windows with Cygwin"
    252         THE_COMP="Microsoft Visual C++ 2005"
    253         CC=cl; export CC
    254         CXX=cl; export CXX
    255         RELEASE_CFLAGS='/Gy /MD'
    256         RELEASE_CXXFLAGS='/Gy /MD'
    257         DEBUG_CFLAGS='/Zi /MDd'
    258         DEBUG_CXXFLAGS='/Zi /MDd'
    259         DEBUG_LDFLAGS='/DEBUG'
    260         ;;
    261     Cygwin/ICL)
    262         THE_OS="Windows with Cygwin"
    263         THE_COMP="Intel C++"
    264         CC=icl; export CC
    265         CXX=icl; export CXX
    266         # The Intel compiler has optimization bugs. So we disable optimization.
    267         RELEASE_CFLAGS='/Od'
    268         RELEASE_CXXFLAGS='/Od'
    269         DEBUG_CFLAGS='/Zi'
    270         DEBUG_CXXFLAGS='/Zi'
    271         DEBUG_LDFLAGS='/DEBUG'
    272         ;;
    273     MacOSX)
    274         THE_OS="MacOS X (Darwin)"
    275         THE_COMP="the GNU C++"
    276         RELEASE_CFLAGS='-O2'
    277         RELEASE_CXXFLAGS='-O2'
    278         DEBUG_CFLAGS='-g -O0'
    279         DEBUG_CXXFLAGS='-g -O0'
    280         ;;
    281     MinGW)
    282         THE_OS="MinGW"
    283         THE_COMP="the GNU C++"
    284         RELEASE_CFLAGS='-O3'
    285         RELEASE_CXXFLAGS='-O3'
    286         ;;
    287     *BSD)
    288         THE_OS="BSD"
    289         THE_COMP="the GNU C++"
    290         CC=gcc; export CC
    291         CXX=g++; export CXX
    292         DEBUG_CFLAGS='-g -O0'
    293         DEBUG_CXFLAGS='-g -O0'
    294         ;;
    295     TRU64V5.1/CXX)
    296         THE_OS="OSF1"
    297         THE_COMP="Compaq cxx"
    298         CC=cc; export CC
    299         CXX=cxx; export CXX
    300         ;;
    301     QNX)
    302         THE_OS="QNX"
    303         THE_COMP="QNX cc"
    304         CC=qcc; export CC
    305         CXX=QCC; export CXX
    306         ;;
    307     zOS)
    308         THE_OS="z/OS (OS/390)"
    309         THE_COMP="z/OS C/C++"
    310         CC=xlc; export CC
    311         CXX=xlC; export CXX
    312         RELEASE_CFLAGS="-O2 -Wc,'inline(AUTO,NOREPORT,1000,8000)'"
    313         RELEASE_CXXFLAGS="-O2 -Wc,'inline(AUTO,NOREPORT,1000,8000)'"
    314         ;;
    315     zOSV1R2)
    316         THE_OS="z/OS 1.2"
    317         THE_COMP="z/OS 1.2 C/C++"
    318         CC=cc; export CC
    319         CXX=cxx; export CXX
    320         export COMPILE_LINK_ENVVAR='_CXX_CICC_VER}=0x41020000 _C89_CVERSION=0x41020000 _CC_CVERSION=0x41020000 _CXX_PVERSION=0x41020000 _C89_PVERSION=0x41020000 _CC_PVERSION=0x41020000'
    321         export _CXX_CVERSION=0x41020000 _C89_CVERSION=0x41020000 _CC_CVERSION=0x41020000 _CXX_PVERSION=0x41020000 _C89_PVERSION=0x41020000 _CC_PVERSION=0x41020000
    322         export LDFLAGS="-Wl,'compat=pm3'"
    323         export CFLAGS="-Wc,'target(zOSV1R2)'"
    324         export CXXFLAGS="-Wc,'target(zOSV1R2)'"
    325         RELEASE_CFLAGS="-2 -Wc,'inline(auto,noreport,500,4000)'"
    326         RELEASE_CXXFLAGS="-2 -Wc,'inline(auto,noreport,500,4000)'"
    327         ;;
    328     *)
    329         >&2 echo "$me: unrecognized platform \"$platform\" (use --help for help)"
    330         exit 1;;
    331 esac
    332 
    333 
    334 # Tweak flags
    335 
    336 if test $release -eq 1
    337 then
    338     if test "$RELEASE_CFLAGS" = ""
    339     then
    340         case $CC in
    341             gcc|*/gcc|*-gcc-*|*/*-gcc-*)
    342                 RELEASE_CFLAGS=-O3
    343                 ;;
    344         esac
    345     fi
    346     if test "$RELEASE_CFLAGS" != ""
    347     then
    348         CFLAGS="$CFLAGS $RELEASE_CFLAGS"
    349     fi
    350     if test "$RELEASE_CXXFLAGS" = ""
    351     then
    352         case $CXX in
    353             g++|*/g++|*-g++-*|*/*-g++-*)
    354                 RELEASE_CXXFLAGS=-O3
    355                 ;;
    356         esac
    357     fi
    358     if test "$RELEASE_CXXFLAGS" != ""
    359     then
    360         CXXFLAGS="$CXXFLAGS $RELEASE_CXXFLAGS"
    361     fi
    362     if test "$RELEASE_LDFLAGS" != ""
    363     then
    364         LDFLAGS="$LDFLAGS $RELEASE_LDFLAGS"
    365     fi
    366 fi
    367 
    368 if test $debug -eq 1
    369 then
    370     if test "$DEBUG_CFLAGS" != ""
    371     then
    372         CFLAGS="$CFLAGS $DEBUG_CFLAGS"
    373     fi
    374     if test "$DEBUG_CXXFLAGS" != ""
    375     then
    376         CXXFLAGS="$CXXFLAGS $DEBUG_CXXFLAGS"
    377     fi
    378     if test "$DEBUG_LDFLAGS" != ""
    379     then
    380         LDFLAGS="$LDFLAGS $DEBUG_LDFLAGS"
    381     fi
    382 fi
    383 
    384 export CFLAGS
    385 export CXXFLAGS
    386 export LDFLAGS
    387 
    388 # Run configure
    389 
    390 echo "export CPP=$CPP CC=$CC CXX=$CXX CPPFLAGS=$CPPFLAGS CFLAGS=$CFLAGS CXXFLAGS=$CXXFLAGS LDFLAGS=$LDFLAGS MAKE=$MAKE"
    391 echo "Running ./configure $OPTS $@ for $THE_OS using $THE_COMP compiler"
    392 echo
    393 if $configure $OPTS $@
    394 then
    395 	echo
    396 	echo If the result of the above commands looks okay to you, go to the directory
    397 	echo source in the ICU distribution to build ICU. Please remember that ICU needs
    398 	echo GNU make to build properly...
    399 else
    400 	echo $0: ./configure failed
    401 	exit 1
    402 fi
    403