Home | History | Annotate | Download | only in icu4c
      1 # -*-autoconf-*-
      2 AC_COPYRIGHT([ Copyright (c) 1999-2010, International Business Machines Corporation and others. All Rights Reserved. ])
      3 # configure.in for ICU
      4 # Stephen F. Booth, heavily modified by Yves and others
      5 
      6 # Check for autoconf version
      7 AC_PREREQ(2.67)
      8 
      9 
     10 # Process this file with autoconf to produce a configure script
     11 AC_INIT
     12 AC_CONFIG_SRCDIR([common/unicode/utypes.h])
     13 
     14 AC_CONFIG_HEADERS(common/icucfg.h)
     15 PACKAGE="icu"
     16 AC_SUBST(PACKAGE)
     17 
     18 # Use custom echo test for newline option
     19 # Current autoconf (2.65) gives incorrect echo newline option
     20 # for icu-config
     21 # This may be removed later - mow (June 17, 2010)
     22 ICU_ECHO_C= ICU_ECHO_N= ICU_ECHO_T=
     23 case `/bin/sh -c "echo -n x"` in
     24 -n*)
     25   case `/bin/sh -c "echo 'x\c'"` in
     26   *c*) ICU_ECHO_T=' ';;     # ECHO_T is single tab character.
     27   *)   ICU_ECHO_C='\c';;
     28   esac;;
     29 *)
     30   ICU_ECHO_N='-n';;
     31 esac
     32 AC_SUBST(ICU_ECHO_N)
     33 AC_SUBST(ICU_ECHO_C)
     34 AC_SUBST(ICU_ECHO_T)
     35 
     36 AC_MSG_CHECKING(for ICU version numbers)
     37 
     38 # Get the ICU version from uversion.h or other headers
     39 geticuversion() {
     40     [sed -n 's/^[ 	]*#[ 	]*define[ 	]*U_ICU_VERSION[ 	]*"\([^"]*\)".*/\1/p' "$@"]
     41 }
     42 getuversion() {
     43     [sed -n 's/^[ 	]*#[ 	]*define[ 	]*U_UNICODE_VERSION[ 	]*"\([^"]*\)".*/\1/p' "$@"]
     44 }
     45 VERSION=`geticuversion $srcdir/common/unicode/uvernum.h`
     46 if test x"$VERSION" = x; then
     47     VERSION=`geticuversion $srcdir/common/unicode/*.h`
     48     if test x"$VERSION" = x; then
     49         AC_MSG_ERROR([Cannot determine ICU version number from uvernum.h header file])
     50     fi
     51 fi
     52 
     53 UNICODE_VERSION=`getuversion $srcdir/common/unicode/uchar.h`
     54 if test x"$UNICODE_VERSION" = x; then
     55     UNICODE_VERSION=`getuversion $srcdir/common/unicode/*.h`
     56     if test x"$UNICODE_VERSION" = x; then
     57         AC_MSG_ERROR([Cannot determine Unicode version number from uchar.h header file])
     58     fi
     59 fi
     60 # Compute a reasonable library version from the release version. This is
     61 # very bad, but that's wanted... We want to make sure that the LIB_VERSION
     62 # has at least a dot in it, so we'll add a .0 if needed.
     63 [LIB_VERSION=`echo $VERSION | sed -e 's/\.//' -e 's/^\([^.]*\)$/\1.0/'`]
     64 LIB_VERSION_MAJOR=`echo $LIB_VERSION | sed 's/\..*//'`
     65 AC_SUBST(VERSION)
     66 AC_SUBST(LIB_VERSION)
     67 AC_SUBST(LIB_VERSION_MAJOR)
     68 AC_MSG_RESULT([release $VERSION, library $LIB_VERSION, unicode version $UNICODE_VERSION])
     69 
     70 AC_SUBST(UNICODE_VERSION)
     71 
     72 # Determine the host system
     73 AC_CANONICAL_SYSTEM
     74 
     75 AC_SUBST(CPPFLAGS)
     76 
     77 # This variable is needed on z/OS because the C++ compiler only recognizes .C
     78 _CXX_CXXSUFFIX=cpp
     79 export _CXX_CXXSUFFIX
     80 
     81 # Check whether to build debug libraries
     82 AC_MSG_CHECKING([whether to build debug libraries])
     83 enabled=no
     84 ENABLE_DEBUG=0
     85 AC_ARG_ENABLE(debug,
     86     [  --enable-debug          build debug libraries [default=no]],
     87     [ case "${enableval}" in
     88          yes|"") enabled=yes; ENABLE_DEBUG=1 ;;
     89          *) ;;   
     90     esac],  
     91 )
     92 AC_MSG_RESULT($enabled)
     93 AC_SUBST(ENABLE_DEBUG)
     94 
     95 # Check whether to build release libraries
     96 AC_MSG_CHECKING([whether to build release libraries])
     97 enabled=yes
     98 ENABLE_RELEASE=1
     99 AC_ARG_ENABLE(release,
    100     [  --enable-release        build release libraries [default=yes]],
    101     [ case "${enableval}" in
    102          no) enabled=no; ENABLE_RELEASE=0 ;;
    103          *) ;;   
    104     esac],  
    105 )
    106 AC_MSG_RESULT($enabled)
    107 AC_SUBST(ENABLE_RELEASE)
    108 
    109 # Don't use the default C/CXXFLags
    110 : ${CFLAGS=""}
    111 : ${CXXFLAGS=""}
    112 
    113 # Checks for programs
    114 AC_PROG_CC
    115 AC_PROG_CXX
    116 
    117 # Ensure that if CXXFLAGS/CFLAGS were not set when calling configure, set it correctly based on (enable/disable) debug or release option
    118 # The release mode use is the default one for autoconf
    119 if test "$GCC" = yes; then
    120     if test "$CFLAGS" = ""; then
    121         if test "$ENABLE_DEBUG" = 1; then
    122             CFLAGS=-g
    123         fi
    124         if test "$ENABLE_RELEASE" = 1; then
    125             CFLAGS="$CFLAGS -O2"
    126         fi
    127     fi
    128     if test "$CXXFLAGS" = ""; then
    129         if test "$ENABLE_DEBUG" = 1; then
    130             CXXFLAGS=-g
    131         fi
    132         if test "$ENABLE_RELEASE" = 1; then
    133             CXXFLAGS="$CXXFLAGS -O2"
    134         fi
    135     fi
    136 fi
    137 
    138 AC_PROG_CPP
    139 
    140 AC_PROG_INSTALL
    141 
    142 AC_SUBST(cross_compiling)
    143 
    144 dnl use the pld hack to get ac_fn_cxx_try_link defined globally and not local
    145 AC_LANG_PUSH([C++])
    146 AC_LINK_IFELSE([AC_LANG_PROGRAM()])
    147 AC_LANG_POP([C++])
    148 
    149 # make sure install is relative to srcdir - if a script
    150 if test "$srcdir" = "."; then
    151   # If srcdir isn't just ., then (srcdir) is already prepended.
    152   if test "${ac_install_sh}" = "${INSTALL}"; then
    153    INSTALL="\\\$(top_srcdir)/${ac_install_sh}"
    154   fi
    155 fi
    156 
    157 #AC_CHECK_PROG(AUTOCONF, autoconf, autoconf, true)
    158 #AC_CHECK_PROG(STRIP, strip, strip, true)
    159 
    160 # Check for the platform make
    161 AC_PATH_PROGS(U_MAKE, gmake gnumake, make)
    162 AC_SUBST(U_MAKE)
    163 
    164 
    165 AC_ARG_WITH(cross-build,
    166 	[  --with-cross-build=dir specify an absolute path to the build directory of an ICU built for the current platform [default=no cross dir]],
    167 	[cross_buildroot="${withval}"], 
    168         [cross_buildroot=""])
    169 
    170 if test "X$cross_buildroot" = "X"; then
    171     if test "$cross_compiling" = "yes"; then
    172         AC_MSG_ERROR([Error! Cross compiling but no --with-cross-build option specified - please supply the path to an executable ICU's build root])
    173 	dnl '
    174     fi
    175 else
    176     if test -f "${cross_buildroot}/config/icucross.mk"; then
    177         AC_MSG_RESULT([Using cross buildroot: $cross_buildroot])
    178     else
    179         if test -d "${cross_buildroot}"; then
    180             AC_MSG_ERROR([${cross_buildroot}/config/icucross.mk not found. Please build ICU in ${cross_buildroot} first.])
    181         else
    182             AC_MSG_ERROR([No such directory ${cross_buildroot} supplied as the argument to --with-cross-build. Use an absolute path.])
    183         fi
    184     fi
    185 fi
    186 AC_SUBST(cross_buildroot)
    187 
    188 # Check for doxygen to generate documentation
    189 AC_PATH_PROG(DOXYGEN,doxygen,,$PATH:/usr/local/bin:/usr/bin)
    190 
    191 # Check that the linker is usable
    192 ICU_PROG_LINK
    193 
    194 # Determine the executable suffix
    195 # We don't use AC_EXEEXT because some compilers output separate debugging
    196 # files, which confuses the AC_EXEEXT macro.
    197 AC_MSG_CHECKING(checking for executable suffix)
    198 case "${host}" in
    199     *-*-cygwin*|*-*-mingw*)  EXEEXT=.exe ;;
    200     *)      EXEEXT="" ;;
    201 esac
    202 ac_exeext=$EXEEXT
    203 AC_MSG_RESULT($EXEEXT)
    204 AC_SUBST(EXEEXT)
    205 
    206 # Determine how strict we want to be when compiling
    207 AC_CHECK_STRICT_COMPILE
    208 
    209 # Check if we can build and use 64-bit libraries
    210 AC_CHECK_64BIT_LIBS
    211 AC_SUBST(ARFLAGS)
    212 AC_SUBST(COMPILE_LINK_ENVVAR)
    213 
    214 # Determine the Makefile fragment
    215 ICU_CHECK_MH_FRAG
    216 
    217 # Checks for libraries and other host specific stuff
    218 # On HP/UX, don't link to -lm from a shared lib because it isn't
    219 #  PIC (at least on 10.2)
    220 case "${host}" in
    221 	*-*-hpux*) 	AC_CHECK_LIB(m, floor, LIB_M="-lm") ;;
    222 	
    223 	*) 		AC_CHECK_LIB(m, floor) 
    224 			LIB_M="" ;;
    225 esac
    226 AC_SUBST(LIB_M)
    227 
    228 # Check whether to build shared libraries
    229 AC_MSG_CHECKING([whether to build shared libraries])
    230 enabled=no
    231 AC_ARG_ENABLE(shared,
    232     [  --enable-shared         build shared libraries [default=yes]],
    233     [ case "${enableval}" in
    234 	     yes|"") enabled=yes; ENABLE_SHARED=YES ;;
    235 	     no);;
    236 	     *) ;;
    237     esac],
    238     [enabled=yes; ENABLE_SHARED=YES]
    239 )
    240 AC_MSG_RESULT($enabled)
    241 AC_SUBST(ENABLE_SHARED)
    242 
    243 # Check whether to build static libraries
    244 AC_MSG_CHECKING([whether to build static libraries])
    245 enabled=no
    246 AC_ARG_ENABLE(static,
    247     [  --enable-static         build static libraries [default=no]],
    248     [ case "${enableval}" in
    249 	     yes|"") enabled=yes; ENABLE_STATIC=YES ;;
    250 	     no) ;;
    251 	     *) ;;
    252     esac],
    253 )
    254 AC_MSG_RESULT($enabled)
    255 AC_SUBST(ENABLE_STATIC)
    256 
    257 # Check whether to enable auto cleanup of libraries
    258 AC_MSG_CHECKING([whether to enable auto cleanup of libraries])
    259 enabled=no
    260 UCLN_NO_AUTO_CLEANUP=1
    261 AC_ARG_ENABLE(auto-cleanup,
    262     [  --enable-auto-cleanup   enable auto cleanup of libraries [default=no]],
    263     [ case "${enableval}" in
    264          yes) enabled=yes; UCLN_NO_AUTO_CLEANUP=0 ;;
    265          *) ;;
    266     esac],
    267 )
    268 AC_MSG_RESULT($enabled)
    269 AC_SUBST(UCLN_NO_AUTO_CLEANUP)
    270 
    271 # MSVC floating-point option
    272 MSVC_RELEASE_FLAG=""
    273 if test $enabled = yes
    274 then  
    275     if test $icu_cv_host_frag = mh-cygwin-msvc
    276     then
    277         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
    278     #if defined _MSC_VER && _MSC_VER >= 1400
    279     #else
    280     Microsoft Visual C++ < 2005
    281     #endif
    282         ]], [[]])],[MSVC_RELEASE_FLAG="/fp:precise"],[MSVC_RELEASE_FLAG="/Op"])
    283         
    284         CFLAGS="${CFLAGS} ${MSVC_RELEASE_FLAG}"
    285         CXXFLAGS="${CXXFLAGS} ${MSVC_RELEASE_FLAG}"
    286     fi
    287 fi
    288 
    289 # Check whether to enabled draft APIs
    290 AC_MSG_CHECKING([whether to enable draft APIs])
    291 enabled=yes
    292 U_DEFAULT_SHOW_DRAFT=1
    293 AC_ARG_ENABLE(draft,
    294     [  --enable-draft          enable draft APIs (and internal APIs) [default=yes]],
    295     [ case "${enableval}" in
    296          no) enabled=no; U_DEFAULT_SHOW_DRAFT=0 ;;
    297          *) ;;
    298     esac],
    299 )
    300 AC_MSG_RESULT($enabled)
    301 # Make sure that we can use draft API in ICU.
    302 if test "$U_DEFAULT_SHOW_DRAFT" = 0; then
    303     CPPFLAGS="$CPPFLAGS -DU_SHOW_DRAFT_API"
    304 fi
    305 AC_SUBST(U_DEFAULT_SHOW_DRAFT)
    306 
    307 # Check if we can hide variables from 
    308 AC_MSG_CHECKING([for library API export])
    309 SHAREDLIBEXPORT=no
    310 U_USE_GCC_VISIBILITY_ATTRIBUTE=0
    311 OLD_CFLAGS="${CFLAGS}"
    312 OLD_CXXFLAGS="${CXXFLAGS}"
    313 if test "$ac_cv_c_compiler_gnu" = yes; then
    314     LIBCFLAGS="-fvisibility=hidden"
    315     LIBCXXFLAGS="-fvisibility=hidden"
    316     CFLAGS="${CFLAGS} ${LIBCFLAGS}"
    317     CXXFLAGS="${CXXFLAGS} ${LIBCXXFLAGS}"
    318     AC_LINK_IFELSE([AC_LANG_PROGRAM([[__attribute__ ((visibility ("default"))) void f(void);
    319 #include <stdlib.h>]], [[exit(0);]])],[SHAREDLIBEXPORT=yes],[SHAREDLIBEXPORT=no])
    320     if test "$SHAREDLIBEXPORT" = no; then
    321         LIBCFLAGS=
    322         LIBCXXFLAGS=
    323     else
    324         U_USE_GCC_VISIBILITY_ATTRIBUTE=1
    325     fi
    326 else
    327     case "${host}" in
    328     *-*-solaris*)
    329         LIBCFLAGS="-xldscope=hidden"
    330         LIBCXXFLAGS="-xldscope=hidden"
    331         CFLAGS="${CFLAGS} ${LIBCFLAGS}"
    332         CXXFLAGS="${CXXFLAGS} ${LIBCXXFLAGS}"
    333         AC_LINK_IFELSE([AC_LANG_PROGRAM([[__global void f(void);
    334 #include <stdlib.h>]], [[exit(0);]])],[SHAREDLIBEXPORT=yes],[SHAREDLIBEXPORT=no])
    335         if test "$SHAREDLIBEXPORT" = no; then
    336             LIBCFLAGS=
    337             LIBCXXFLAGS=
    338         fi
    339         ;;
    340     *-*-hpux*)
    341         # ICU isn't set up to follow the HP syntax yet.
    342         ;;
    343     *)
    344     esac
    345 fi
    346 # Restore to their original state because the Intel compiler chokes
    347 # on this option when checking for the wchar_t size, but the
    348 # option otherwise works.
    349 CFLAGS="${OLD_CFLAGS}"
    350 CXXFLAGS="${OLD_CXXFLAGS}"
    351 AC_MSG_RESULT($SHAREDLIBEXPORT)
    352 AC_SUBST(U_USE_GCC_VISIBILITY_ATTRIBUTE)
    353 AC_SUBST(LIBCFLAGS)
    354 AC_SUBST(LIBCXXFLAGS)
    355 
    356 AC_PROG_RANLIB
    357 
    358 # look for 'ar' the proper way
    359 #AC_PATH_PROG(AR,ar,[echo archiver ar not found re-run configure ; false],$PATH:/bin:/usr/bin:/usr/ccs/bin)
    360 AC_CHECK_TOOL(AR, ar)
    361 if test "x$AR" = "x"; then
    362   AC_MSG_ERROR(Archiver ar not found. Set AR= or fix PATH)
    363 fi
    364 
    365 
    366 AC_MSG_CHECKING([whether to enable renaming of symbols])
    367 enabled=yes
    368 U_DISABLE_RENAMING=0
    369 AC_ARG_ENABLE(renaming,
    370     [  --enable-renaming       add a version suffix to symbols [default=yes]],
    371     [ case "${enableval}" in
    372 	     yes|"") enabled=yes ;;
    373 	     no) enabled=no; U_DISABLE_RENAMING=1 ;;
    374 	     *) ;;
    375     esac],
    376 )
    377 AC_MSG_RESULT($enabled)
    378 AC_SUBST(U_DISABLE_RENAMING)
    379 
    380 AC_MSG_CHECKING([whether to enable function and data tracing])
    381 enabled=no
    382 U_ENABLE_TRACING=0
    383 AC_ARG_ENABLE(tracing,
    384     [  --enable-tracing        enable function and data tracing [default=no]],
    385     [ case "${enableval}" in
    386 	     yes|"") enabled=yes; U_ENABLE_TRACING=1 ;;
    387 	     no) enabled=no; U_ENABLE_TRACING=0 ;;
    388 	     *) ;;
    389     esac],
    390 )
    391 AC_MSG_RESULT($enabled)
    392 AC_SUBST(U_ENABLE_TRACING)
    393 
    394 
    395 U_ENABLE_DYLOAD=1
    396 AC_MSG_CHECKING([whether to enable dynamic loading of plugins])
    397 enabled=check
    398 AC_ARG_ENABLE(dyload,
    399     [  --disable-dyload        disable dynamic loading [default=no]],
    400     [ case "${enableval}" in
    401 	     yes|"") 
    402 		     U_ENABLE_DYLOAD=1
    403 		     enabled=check ;;
    404 	     no) 
    405 	     	 U_ENABLE_DYLOAD=0;
    406 	     	 enabled=disabled ;;
    407 	     *) ;;
    408     esac],
    409 )
    410 AC_SUBST(U_ENABLE_DYLOAD)
    411 
    412 # goes into icucfg.h
    413 AC_CHECK_HEADERS([dlfcn.h])
    414 U_CHECK_DYLOAD=0
    415 #AC_MSG_RESULT($enabled)
    416 if test "$enabled" = "check"; then
    417     AC_SEARCH_LIBS([dlopen], [dl])
    418     AC_CHECK_FUNCS([dlopen])
    419     U_CHECK_DYLOAD=1
    420 fi
    421 AC_SUBST(U_CHECK_DYLOAD)
    422 
    423 # Check for miscellanous functions.
    424 # These only go into common/icucfg.h and are NOT exported with ICU builds.
    425 # So, use for putil / tools only.
    426 # Note that this will generate HAVE_GETTIMEOFDAY, not U_HAVE_GETTIMEOFDAY
    427 # rerun 'autoheader' to regenerate icucfg.h.in
    428 AC_CHECK_FUNCS([gettimeofday])
    429 
    430 # Check whether to use the evil rpath or not
    431 AC_ARG_ENABLE(rpath,
    432     [  --enable-rpath          use rpath when linking [default is only if necessary]],
    433     [ case "${enableval}" in
    434 	     yes|"") ENABLE_RPATH=YES ;;
    435 	     no) ;;
    436 	     *) ;;
    437     esac],
    438     [ENABLE_RPATH=NO]
    439 )
    440 AC_SUBST(ENABLE_RPATH)
    441 
    442 
    443 # set up U_INLINE.  
    444 # Copy the definition of AC_C_INLINE, with slight mods.
    445 #
    446 AC_CACHE_CHECK([for definition of U_INLINE for C], ac_cv_c_inline,
    447 [ac_cv_c_inline=no
    448 for ac_kw in inline __inline__ __inline; do
    449   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[return 0;} $ac_kw int foo() {]])],[ac_cv_c_inline=$ac_kw; break],[])
    450   done
    451   ])
    452 case "$ac_cv_c_inline" in
    453       yes)       U_INLINE= "inline" ;;
    454 	  no )       U_INLINE= ;;
    455 	    *)       U_INLINE=$ac_cv_c_inline ;;
    456 esac
    457 AC_SUBST(U_INLINE)
    458 
    459 # set up U_HAVE_STD_STRING.
    460 # Copy the definition of AC_C_INLINE, with slight mods.
    461 #
    462 U_HAVE_STD_STRING=0
    463 AC_LANG_PUSH([C++])
    464 AC_MSG_CHECKING([[if we have a C++ compiler]])
    465 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[cxx_okay=yes],[cxx_okay=no])
    466 if test $cxx_okay = yes
    467 then
    468 	AC_MSG_RESULT([[congratulations]])
    469 else
    470 	AC_MSG_RESULT([[no]])
    471 	AC_MSG_ERROR([[C++ compiler $CXX does not work or no compiler found]])
    472 fi
    473 
    474 AC_MSG_CHECKING([[if #include <string> works]])
    475 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <string>]], [[]])], [ac_cv_header_stdstring=yes], [ac_cv_header_stdstring=no])
    476 AC_MSG_RESULT($ac_cv_header_stdstring)
    477 if test $ac_cv_header_stdstring = yes
    478 then
    479 	U_HAVE_STD_STRING=1
    480 fi
    481 AC_SUBST(U_HAVE_STD_STRING)
    482 AC_LANG_POP([C++])
    483 
    484 threads=true
    485 
    486 # Enable/disable threads
    487 AC_ARG_ENABLE(threads,
    488 	[  --enable-threads        build ICU with thread safety [default=yes]],
    489 	[case "${enableval}" in
    490 		yes) threads=true ;;
    491 		no)  threads=false ;;
    492 		*) AC_MSG_ERROR(bad value ${enableval} for --enable-threads) ;;
    493 		esac], 
    494 	threads=true)
    495 ICU_CONDITIONAL(THREADS, test "$threads" = true)
    496 
    497 ICU_USE_THREADS=0
    498 OLD_LIBS=${LIBS}
    499 
    500 if test $threads = true; then
    501   # For Compaq Tru64 (OSF1), we must look for pthread_attr_init
    502   # and must do this before seaching for pthread_mutex_destroy, or
    503   # we will pick up libpthreads.so not libpthread.so
    504   # If this fails, then we must test for HPUX specials, before
    505   # moving on to a more generic test
    506  
    507   AC_CHECK_LIB(pthread, pthread_attr_init)
    508   if test $ac_cv_lib_pthread_pthread_attr_init = yes; then
    509     ICU_USE_THREADS=1
    510   else
    511     # Locate the right library for POSIX threads. We look for the
    512     # symbols in the libraries first, because on Solaris libc provides
    513     # pthread_create but libpthread has the real code :(
    514     # AIX uses libpthreads instead of libpthread, and HP/UX uses libpthread
    515     # FreeBSD users may need libpthread if they do not have libc_r.
    516 
    517     AC_SEARCH_LIBS_FIRST(pthread_mutex_destroy, pthread pthreads c_r )
    518 
    519     if test "$ac_cv_search_pthread_mutex_destroy" != no; then
    520       ICU_USE_THREADS=1
    521     else
    522       # For HP 11
    523       AC_CHECK_LIB(pthread, pthread_mutex_init)
    524       if test $ac_cv_lib_pthread_pthread_mutex_init = yes; then
    525         ICU_USE_THREADS=1
    526       fi
    527     fi
    528 
    529     AC_CHECK_FUNC(pthread_mutex_lock)
    530 
    531     if test $ac_cv_func_pthread_mutex_lock = yes; then
    532       ICU_USE_THREADS=1
    533     fi
    534   fi
    535   # Check to see if we are using CygWin with MSVC
    536   case "${host}" in
    537   *-pc-cygwin*|*-pc-mingw*)
    538     # For gcc, the thread options are set by mh-mingw/mh-cygwin
    539     # For msvc, the thread options are set by runConfigureICU
    540     ICU_USE_THREADS=1
    541     ;;
    542   *-*-hpux*)
    543     # Add -mt because it does several nice things on newer compilers.
    544     case "${icu_cv_host_frag}" in
    545       mh-hpux-acc)
    546         OLD_CXXFLAGS="${CXXFLAGS}"
    547         CXXFLAGS="${CXXFLAGS} -mt"
    548         if test x"`${CXX} ${CXXFLAGS} 2>&1`" != x""; then
    549            CXXFLAGS="${OLD_CXXFLAGS}"
    550        fi
    551       ;;
    552     esac
    553     ;;
    554   *-*-solaris*)
    555     case "${icu_cv_host_frag}" in
    556       mh-solaris)
    557            LIBS="${LIBS} -mt"
    558       ;;
    559     esac
    560     ;;
    561   esac
    562 fi
    563 
    564 AC_SUBST(ICU_USE_THREADS)
    565 
    566 AC_ARG_ENABLE(weak-threads,
    567 	[  --enable-weak-threads   weakly reference the threading library [default=no]],
    568 	[case "${enableval}" in
    569 		yes)
    570             LIB_THREAD="${LIBS%${OLD_LIBS}}"
    571             LIBS=${OLD_LIBS}
    572             ;;
    573 		no)  ;;
    574 		*) AC_MSG_ERROR(bad value ${enableval} for --enable-weak-threads) ;;
    575 		esac])
    576 AC_SUBST(LIB_THREAD)
    577 
    578 # Check for mmap()
    579 
    580 # The AC_FUNC_MMAP macro doesn't work properly.  It seems to be too specific.
    581 # Do this check instead.
    582 HAVE_MMAP=0
    583 AC_MSG_CHECKING([for mmap])
    584 AC_CACHE_VAL(ac_cv_func_mmap_ok,
    585     [AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <unistd.h>
    586 #include <sys/mman.h>
    587 #include <sys/stat.h>
    588 #include <fcntl.h>], [mmap((void *)0, 0, PROT_READ, 0, 0, 0);])],[ac_cv_func_mmap_ok=yes],[ac_cv_func_mmap_ok=no])] )
    589 AC_MSG_RESULT($ac_cv_func_mmap_ok)
    590 if test $ac_cv_func_mmap_ok = yes
    591 then
    592     HAVE_MMAP=1
    593 fi
    594 AC_SUBST(HAVE_MMAP)
    595 
    596 AC_MSG_CHECKING([for genccode assembly])
    597 
    598 # Check to see if genccode can generate simple assembly.
    599 GENCCODE_ASSEMBLY=
    600 case "${host}" in
    601 *-linux*|i*86-*-*bsd*|i*86-pc-gnu)
    602     if test "$GCC" = yes; then
    603         # We're using gcc, and the simple -a gcc command line works for genccode
    604         GENCCODE_ASSEMBLY="-a gcc"
    605     fi ;;
    606 i*86-*-solaris*)
    607     if test "$GCC" = yes; then
    608         # When using gcc, look if we're also using GNU as.
    609         # When using GNU as, the simple -a gcc command line works for genccode.
    610         asv=`"${CC}" -print-prog-name=as 2>/dev/null`
    611         asv=`"${asv}" --version 2>/dev/null`
    612         case "X${asv}" in
    613         X*GNU*) GENCCODE_ASSEMBLY="-a gcc" ;;
    614         X*) GENCCODE_ASSEMBLY="-a sun-x86" ;;
    615         esac
    616         unset asv
    617     else
    618         GENCCODE_ASSEMBLY="-a sun-x86"
    619     fi ;;
    620 sparc-*-solaris*)
    621     GENCCODE_ASSEMBLY="-a sun"
    622     ;;
    623 ia64-*-hpux*)
    624     GENCCODE_ASSEMBLY="-a aCC-ia64"
    625     ;;
    626 esac
    627 AC_SUBST(GENCCODE_ASSEMBLY)
    628 
    629 AC_MSG_RESULT($GENCCODE_ASSEMBLY)
    630 
    631 # Checks for header files
    632 AC_CHECK_HEADERS(inttypes.h)
    633 if test $ac_cv_header_inttypes_h = no; then
    634  U_HAVE_INTTYPES_H=0
    635 else
    636  U_HAVE_INTTYPES_H=1
    637 fi
    638 if test "$CC" = ccc; then
    639  AC_MSG_RESULT("C compiler set to CCC ${CC}" )
    640  case "${host}" in
    641         alpha*-*-*) U_HAVE_INTTYPES_H=0;
    642  esac
    643 fi
    644 
    645 AC_SUBST(U_HAVE_INTTYPES_H)
    646 
    647 AC_CHECK_HEADERS(dirent.h)
    648 if test $ac_cv_header_dirent_h = no; then
    649  U_HAVE_DIRENT_H=0
    650 else
    651  U_HAVE_DIRENT_H=1
    652 fi
    653 
    654 AC_SUBST(U_HAVE_DIRENT_H)
    655 
    656 
    657 AC_ARG_WITH(iostream,
    658 	[  --with-iostream=version specify the version of iostream to use (none, old, std, auto) [default=auto]],
    659 	[case "${withval}" in
    660 		none) streams=none ;;
    661 		old) streams=198506 ;;
    662 		std) streams=199711 ;;
    663 		auto) streams= ;;
    664 		*) AC_MSG_ERROR(bad value ${withval} for --with-iostream) ;;
    665 		esac], 
    666         [streams=])
    667 
    668 U_IOSTREAM_SOURCE=0
    669 if test x$streams != xnone
    670 then
    671     AC_LANG_PUSH(C++)
    672     OLD_CXXFLAGS="${CXXFLAGS}"
    673     case "${icu_cv_host_frag}" in
    674         mh-hpux-acc)
    675             CXXFLAGS="${CXXFLAGS} -AA"
    676         ;;
    677     esac
    678     AC_MSG_CHECKING([for iostream usability])
    679     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <iostream>]], [[]])],[ac_cv_header_iostream=yes],[ac_cv_header_iostream=no])
    680     if test $icu_cv_host_frag = mh-cygwin-msvc
    681     then
    682         # <iostream> is always there on Windows.
    683         # We do this to prevent the C++ preprocessor from being used because
    684         # autoconf can't deal with the Windows C++ preprocessor 
    685         ac_cv_header_iostream=yes
    686     fi
    687     AC_MSG_RESULT($ac_cv_header_iostream)
    688     if test $ac_cv_header_iostream = yes
    689     then
    690         U_IOSTREAM_SOURCE=199711
    691     else
    692         CXXFLAGS="${OLD_CXXFLAGS}"
    693         AC_MSG_CHECKING([whether ostream in iostream.h is really defined])
    694         AC_CACHE_VAL(ac_cv_iostream_ok,
    695             AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <iostream.h>]], [[ostream &testout = cout; testout << "test" << endl;]])],[ac_cv_iostream_ok=yes],[ac_cv_iostream_ok=no]))
    696         AC_MSG_RESULT($ac_cv_iostream_ok)
    697         if test $ac_cv_iostream_ok = yes
    698         then
    699             U_IOSTREAM_SOURCE=198506
    700         fi
    701     fi
    702     if test x$streams != x
    703     then
    704         if test $U_IOSTREAM_SOURCE -ge $streams
    705         then
    706             U_IOSTREAM_SOURCE=$streams
    707             case "${icu_cv_host_frag}" in
    708                 mh-hpux-acc)
    709                     if test $U_IOSTREAM_SOURCE -lt 199711; then
    710                         CXXFLAGS=${OLD_CXXFLAGS}
    711                     fi
    712                 ;;
    713             esac
    714         else
    715             AC_MSG_ERROR(${withval} iostream is not available)
    716         fi
    717     fi
    718 fi
    719 AC_SUBST(U_IOSTREAM_SOURCE)
    720 AC_LANG_POP
    721 
    722 # Check for endianness
    723 AC_C_BIGENDIAN()
    724 if test $ac_cv_c_bigendian = no; then
    725 U_IS_BIG_ENDIAN=0
    726 U_ENDIAN_CHAR="l"
    727 else
    728 U_IS_BIG_ENDIAN=1
    729 U_ENDIAN_CHAR="b"
    730 fi
    731 AC_SUBST(U_IS_BIG_ENDIAN)
    732 
    733 # Do various POSIX related checks
    734 U_HAVE_NL_LANGINFO_CODESET=0
    735 U_NL_LANGINFO_CODESET=-1
    736 AC_CHECK_FUNC(nl_langinfo,[U_HAVE_NL_LANGINFO=1],[U_HAVE_NL_LANGINFO=0])
    737 dnl AC_SUBST(U_HAVE_NL_LANGINFO)
    738 if test $U_HAVE_NL_LANGINFO -eq 1; then
    739   AC_CACHE_CHECK([for nl_langinfo's argument to obtain the codeset],
    740   ac_cv_nl_langinfo_codeset,
    741   [ac_cv_nl_langinfo_codeset="unknown"
    742   for a in CODESET _NL_CTYPE_CODESET_NAME; do
    743   AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <langinfo.h>]], [[nl_langinfo($a);]])],[ac_cv_nl_langinfo_codeset="$a"; break],[])]
    744   done)
    745   if test x$ac_cv_nl_langinfo_codeset != xunknown
    746   then
    747       U_HAVE_NL_LANGINFO_CODESET=1
    748       U_NL_LANGINFO_CODESET=$ac_cv_nl_langinfo_codeset
    749   fi
    750 fi
    751 AC_SUBST(U_HAVE_NL_LANGINFO_CODESET)
    752 AC_SUBST(U_NL_LANGINFO_CODESET)
    753 
    754 # Namespace support checks
    755 AC_LANG(C++)
    756 AC_MSG_CHECKING([for namespace support])
    757 AC_CACHE_VAL(ac_cv_namespace_ok,
    758     [AC_LINK_IFELSE([AC_LANG_PROGRAM([namespace x_version {void f(){}}
    759     namespace x = x_version;
    760     using namespace x_version;
    761     ], [f();])],[ac_cv_namespace_ok=yes],[ac_cv_namespace_ok=no])] )
    762 AC_MSG_RESULT($ac_cv_namespace_ok)
    763 U_HAVE_NAMESPACE=1
    764 if test $ac_cv_namespace_ok = no
    765 then
    766     U_HAVE_NAMESPACE=0
    767 fi
    768 AC_SUBST(U_HAVE_NAMESPACE)
    769 
    770 AC_MSG_CHECKING([for properly overriding new and delete])
    771 U_OVERRIDE_CXX_ALLOCATION=0
    772 U_HAVE_PLACEMENT_NEW=0
    773 AC_CACHE_VAL(ac_cv_override_cxx_allocation_ok,
    774     [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <stdlib.h>
    775     class UMemory {
    776     public:
    777     void *operator new(size_t size) {return malloc(size);}
    778     void *operator new[](size_t size) {return malloc(size);}
    779     void operator delete(void *p) {free(p);}
    780     void operator delete[](void *p) {free(p);}
    781     };
    782     ]], [])],[ac_cv_override_cxx_allocation_ok=yes],[ac_cv_override_cxx_allocation_ok=no])] )
    783 AC_MSG_RESULT($ac_cv_override_cxx_allocation_ok)
    784 if test $ac_cv_override_cxx_allocation_ok = yes
    785 then
    786     U_OVERRIDE_CXX_ALLOCATION=1
    787     AC_MSG_CHECKING([for placement new and delete])
    788     AC_CACHE_VAL(ac_cv_override_placement_new_ok,
    789         [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <stdlib.h>
    790         class UMemory {
    791         public:
    792         void *operator new(size_t size) {return malloc(size);}
    793         void *operator new[](size_t size) {return malloc(size);}
    794         void operator delete(void *p) {free(p);}
    795         void operator delete[](void *p) {free(p);}
    796         void * operator new(size_t, void *ptr) { return ptr; }
    797         void operator delete(void *, void *) {}
    798         };
    799         ]], [])],[ac_cv_override_placement_new_ok=yes],[ac_cv_override_placement_new_ok=no])] )
    800     AC_MSG_RESULT($ac_cv_override_placement_new_ok)
    801     if test $ac_cv_override_placement_new_ok = yes
    802     then
    803         U_HAVE_PLACEMENT_NEW=1
    804     fi
    805 fi
    806 AC_SUBST(U_OVERRIDE_CXX_ALLOCATION)
    807 AC_SUBST(U_HAVE_PLACEMENT_NEW)
    808 
    809 # gcc atomic built-in functions check
    810 # AC_TRY_LINK([], [int foo, bar; bar = __sync_val_compare_and_swap(&foo, 0, 1);],, 
    811 AC_LANG(C)
    812 AC_MSG_CHECKING([for gcc atomic functions])
    813 AC_LINK_IFELSE([AC_LANG_PROGRAM(
    814     [[
    815         void *p;
    816         int   i;
    817     ]],
    818     [[
    819         __sync_fetch_and_add(&i, 1);
    820         __sync_fetch_and_sub(&i, 1);
    821         __sync_val_compare_and_swap(&p, 0, 0);
    822     ]]
    823 )],
    824 [U_HAVE_GCC_ATOMICS=1; AC_MSG_RESULT([yes])],
    825 [U_HAVE_GCC_ATOMICS=0; AC_MSG_RESULT([no])])
    826 AC_SUBST(U_HAVE_GCC_ATOMICS)
    827 
    828 AC_LANG(C)
    829 AC_CHECK_FUNC(popen)
    830 if test x$ac_cv_func_popen = xyes
    831 then
    832      U_HAVE_POPEN=1
    833 else
    834      U_HAVE_POPEN=0
    835 fi
    836 AC_SUBST(U_HAVE_POPEN)
    837 
    838 AC_CHECK_FUNC(tzset)
    839 U_HAVE_TZSET=0
    840 if test x$ac_cv_func_tzset = xyes
    841 then
    842     U_TZSET=tzset
    843     U_HAVE_TZSET=1
    844 else
    845     AC_CHECK_FUNC(_tzset)
    846     if test x$ac_cv_func__tzset = xyes
    847     then
    848         U_TZSET=_tzset
    849         U_HAVE_TZSET=1
    850     fi
    851 fi
    852 AC_SUBST(U_HAVE_TZSET)
    853 AC_SUBST(U_TZSET)
    854 
    855 U_HAVE_TZNAME=0
    856 AC_CACHE_CHECK(for tzname,ac_cv_var_tzname,
    857 [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#ifndef __USE_POSIX
    858 #define __USE_POSIX
    859 #endif
    860 #include <stdlib.h>
    861 #include <time.h>
    862 #ifndef tzname /* For SGI.  */
    863 extern char *tzname[]; /* RS6000 and others reject char **tzname.  */
    864 #endif]], [atoi(*tzname);])],[ac_cv_var_tzname=yes],[ac_cv_var_tzname=no])])
    865 if test $ac_cv_var_tzname = yes; then
    866   U_TZNAME=tzname
    867   U_HAVE_TZNAME=1
    868 else
    869   AC_CACHE_CHECK(for _tzname,ac_cv_var__tzname,
    870   [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <stdlib.h>
    871   #include <time.h>
    872   extern char *_tzname[];]], [atoi(*_tzname);])],[ac_cv_var__tzname=yes],[ac_cv_var__tzname=no])])
    873     if test $ac_cv_var__tzname = yes; then
    874       U_TZNAME=_tzname
    875       U_HAVE_TZNAME=1
    876     fi
    877 fi
    878 AC_SUBST(U_HAVE_TZNAME)
    879 AC_SUBST(U_TZNAME)
    880 
    881 AC_CACHE_CHECK(for timezone,ac_cv_var_timezone,
    882 [AC_LINK_IFELSE([AC_LANG_PROGRAM([#ifndef __USE_POSIX
    883 #define __USE_POSIX
    884 #endif
    885 #ifndef __USE_XOPEN
    886 #define __USE_XOPEN
    887 #endif
    888 #include <time.h>
    889 ], [[timezone = 1;]])],[ac_cv_var_timezone=yes],[ac_cv_var_timezone=no])])
    890 U_HAVE_TIMEZONE=0
    891 if test $ac_cv_var_timezone = yes; then
    892   U_TIMEZONE=timezone
    893   U_HAVE_TIMEZONE=1
    894 else
    895   AC_CACHE_CHECK(for __timezone,ac_cv_var___timezone,
    896   [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <time.h>]], [[__timezone = 1;]])],[ac_cv_var___timezone=yes],[ac_cv_var___timezone=no])])
    897   if test $ac_cv_var___timezone = yes; then
    898     U_TIMEZONE=__timezone
    899     U_HAVE_TIMEZONE=1
    900   else
    901     AC_CACHE_CHECK(for _timezone,ac_cv_var__timezone,
    902     [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <time.h>]], [[_timezone = 1;]])],[ac_cv_var__timezone=yes],[ac_cv_var__timezone=no])])
    903     if test $ac_cv_var__timezone = yes; then
    904       U_TIMEZONE=_timezone
    905       U_HAVE_TIMEZONE=1
    906     fi
    907   fi
    908 fi
    909 AC_SUBST(U_HAVE_TIMEZONE)
    910 AC_SUBST(U_TIMEZONE)
    911 
    912 # Checks for typedefs
    913 AC_CHECK_TYPE(int8_t,signed char)
    914 AC_CHECK_TYPE(uint8_t,unsigned char)
    915 AC_CHECK_TYPE(int16_t,signed short)
    916 AC_CHECK_TYPE(uint16_t,unsigned short)
    917 AC_CHECK_TYPE(int32_t,signed long)
    918 AC_CHECK_TYPE(uint32_t,unsigned long)
    919 AC_CHECK_TYPE(int64_t,signed long long)
    920 AC_CHECK_TYPE(uint64_t,unsigned long long)
    921 
    922 if test $ac_cv_type_int8_t = no; then
    923 HAVE_INT8_T=0
    924 else
    925 HAVE_INT8_T=1
    926 fi
    927 AC_SUBST(HAVE_INT8_T)
    928 
    929 if test $ac_cv_type_uint8_t = no; then
    930 HAVE_UINT8_T=0
    931 else
    932 HAVE_UINT8_T=1
    933 fi
    934 AC_SUBST(HAVE_UINT8_T)
    935 
    936 if test $ac_cv_type_int16_t = no; then
    937 HAVE_INT16_T=0
    938 else
    939 HAVE_INT16_T=1
    940 fi
    941 AC_SUBST(HAVE_INT16_T)
    942 
    943 if test $ac_cv_type_uint16_t = no; then
    944 HAVE_UINT16_T=0
    945 else
    946 HAVE_UINT16_T=1
    947 fi
    948 AC_SUBST(HAVE_UINT16_T)
    949 
    950 if test $ac_cv_type_int32_t = no; then
    951 HAVE_INT32_T=0
    952 else
    953 HAVE_INT32_T=1
    954 fi
    955 AC_SUBST(HAVE_INT32_T)
    956 
    957 if test $ac_cv_type_uint32_t = no; then
    958 HAVE_UINT32_T=0
    959 else
    960 HAVE_UINT32_T=1
    961 fi
    962 AC_SUBST(HAVE_UINT32_T)
    963 
    964 if test $ac_cv_type_int64_t = no; then
    965 HAVE_INT64_T=0
    966 else
    967 HAVE_INT64_T=1
    968 fi
    969 AC_SUBST(HAVE_INT64_T)
    970 
    971 if test $ac_cv_type_uint64_t = no; then
    972 HAVE_UINT64_T=0
    973 else
    974 HAVE_UINT64_T=1
    975 fi
    976 AC_SUBST(HAVE_UINT64_T)
    977 
    978 # Do various wchar_t related checks
    979 AC_CHECK_HEADER(wchar.h)
    980 if test "$ac_cv_header_wchar_h" = no
    981 then
    982     U_HAVE_WCHAR_H=0
    983     U_HAVE_WCSCPY=0
    984 else
    985     AC_DEFINE([HAVE_WCHAR_H], [1], [wchar.h was found.])
    986     U_HAVE_WCHAR_H=1
    987     # Some broken systems have wchar.h but not some of its functions...
    988     AC_SEARCH_LIBS(wcscpy, wcs w)
    989     if test "$ac_cv_search_wcscpy" != no; then
    990       U_HAVE_WCSCPY=1
    991     else
    992       U_HAVE_WCSCPY=0
    993     fi
    994 fi
    995 AC_SUBST(U_HAVE_WCHAR_H)
    996 AC_SUBST(U_HAVE_WCSCPY)
    997 
    998 AC_CHECK_SIZEOF([wchar_t], 0, [
    999 #if STDC_HEADERS
   1000 #include <stddef.h>
   1001 #endif
   1002 #include <stdlib.h>
   1003 #if HAVE_WCHAR_H
   1004 #include <string.h>
   1005 #include <wchar.h>
   1006 #endif])
   1007 U_SIZEOF_WCHAR_T=$ac_cv_sizeof_wchar_t
   1008 # We do this check to verify that everything is okay.
   1009 if test $U_SIZEOF_WCHAR_T = 0; then
   1010     if test $U_HAVE_WCHAR_H=1; then
   1011        AC_MSG_ERROR(There is wchar.h but the size of wchar_t is 0)
   1012     fi
   1013 fi
   1014 AC_SUBST(U_SIZEOF_WCHAR_T)
   1015 
   1016 AC_MSG_CHECKING([for UTF-16 string literal support])
   1017 U_CHECK_UTF16_STRING=1
   1018 CHECK_UTF16_STRING_RESULT="unknown"
   1019 
   1020 case "${host}" in
   1021 *-*-aix*|powerpc64-*-linux*)
   1022     if test "$ac_cv_c_compiler_gnu" = no; then
   1023         OLD_CFLAGS="${CFLAGS}"
   1024         OLD_CXXFLAGS="${CXXFLAGS}"
   1025         CFLAGS="${CFLAGS} -qutf"
   1026         CXXFLAGS="${CXXFLAGS} -qutf"
   1027         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[const unsigned short hello[] = u"hello";]], [[]])],[U_CHECK_UTF16_STRING=1],[U_CHECK_UTF16_STRING=0])
   1028         if test "$U_CHECK_UTF16_STRING" = 0; then
   1029             CFLAGS="${OLD_CFLAGS}"
   1030             CXXFLAGS="${OLD_CXXFLAGS}"
   1031         else
   1032             CHECK_UTF16_STRING_RESULT="-qutf"
   1033         fi
   1034     fi
   1035     ;;
   1036 *-*-solaris*)
   1037     if test "$ac_cv_c_compiler_gnu" = no; then
   1038         OLD_CFLAGS="${CFLAGS}"
   1039         OLD_CXXFLAGS="${CXXFLAGS}"
   1040         CFLAGS="${CFLAGS} -xustr=ascii_utf16_ushort"
   1041         CXXFLAGS="${CXXFLAGS} -xustr=ascii_utf16_ushort"
   1042         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[const unsigned short hello[] = U"hello";]], [[]])],[U_CHECK_UTF16_STRING=1],[U_CHECK_UTF16_STRING=0])
   1043         if test "$U_CHECK_UTF16_STRING" = 0; then
   1044             CFLAGS="${OLD_CFLAGS}"
   1045             CXXFLAGS="${OLD_CXXFLAGS}"
   1046         else
   1047             CHECK_UTF16_STRING_RESULT="-xustr=ascii_utf16_ushort"
   1048 
   1049             # Since we can't detect the availability of this UTF-16 syntax at compile time,
   1050             # we depend on configure telling us that we can use it.
   1051             # Since we can't ensure ICU users use -xustr=ascii_utf16_ushort,
   1052             # we only use this macro within ICU.
   1053             # If an ICU user uses icu-config, this feature will be enabled.
   1054             CPPFLAGS="${CPPFLAGS} -DU_CHECK_UTF16_STRING=1"
   1055             U_CHECK_UTF16_STRING=0
   1056         fi
   1057     fi
   1058     ;;
   1059 *-*-hpux*)
   1060     if test "$ac_cv_c_compiler_gnu" = no; then
   1061         # The option will be detected at compile time without additional compiler options.
   1062         CHECK_UTF16_STRING_RESULT="available"
   1063     fi
   1064     ;;
   1065 *-*-cygwin)
   1066     # wchar_t can be used
   1067     CHECK_UTF16_STRING_RESULT="available"
   1068     ;;
   1069 *)
   1070     ;;
   1071 esac
   1072 
   1073 # GCC >= 4.4 supports UTF16 string literals. The CFLAGS and CXXFLAGS may change in the future.
   1074 # Since we have to use a different standard, if strict is enable, don't enable UTF16 string literals.
   1075 U_CHECK_GNUC_UTF16_STRING=0
   1076 if test "$ac_use_strict_options" = no && test "$CHECK_UTF16_STRING_RESULT" = "unknown"; then
   1077     if test "$ac_cv_c_compiler_gnu" = yes; then
   1078         OLD_CFLAGS="${CFLAGS}"
   1079         OLD_CXXFLAGS="${CXXFLAGS}"
   1080         CFLAGS="${CFLAGS} -std=gnu99 -D_GCC_"
   1081         CXXFLAGS="${CXXFLAGS} -std=c++0x"
   1082         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
   1083 #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)
   1084 #ifdef _GCC_
   1085 typedef __CHAR16_TYPE__ char16_t;
   1086 #endif
   1087 char16_t test[] = u"This is a UTF16 literal string.";
   1088 #else
   1089 GCC IS TOO OLD!
   1090 #endif
   1091         ]], [[]])],[U_CHECK_UTF16_STRING=1],[U_CHECK_UTF16_STRING=0])
   1092         if test "$U_CHECK_UTF16_STRING" = 1; then
   1093             CHECK_UTF16_STRING_RESULT="available";
   1094             U_CHECK_GNUC_UTF16_STRING=1
   1095         else
   1096             CFLAGS="${OLD_CFLAGS}"
   1097             CXXFLAGS="${OLD_CXXFLAGS}"
   1098         fi
   1099     fi
   1100 fi
   1101 AC_SUBST(U_CHECK_GNUC_UTF16_STRING)
   1102 
   1103 AC_MSG_RESULT($CHECK_UTF16_STRING_RESULT)
   1104 AC_SUBST(U_CHECK_UTF16_STRING)
   1105 
   1106 # Enable/disable extras
   1107 AC_ARG_ENABLE(extras,
   1108 	[  --enable-extras         build ICU extras [default=yes]],
   1109 	[case "${enableval}" in
   1110 		yes) extras=true ;;
   1111 		no)  extras=false ;;
   1112 		*) AC_MSG_ERROR(bad value ${enableval} for --enable-extras) ;;
   1113 		esac], 
   1114 	extras=true)
   1115 ICU_CONDITIONAL(EXTRAS, test "$extras" = true)
   1116 AC_ARG_ENABLE(icuio,
   1117 	[  --enable-icuio          build ICU's icuio library [default=yes]],
   1118 	[case "${enableval}" in
   1119 		yes) icuio=true ;;
   1120 		no)  icuio=false ;;
   1121 		*) AC_MSG_ERROR(bad value ${enableval} for --enable-icuio) ;;
   1122 		esac], 
   1123 	icuio=true)
   1124 ICU_CONDITIONAL(ICUIO, test "$icuio" = true)
   1125 
   1126 # Enable/disable layout
   1127 AC_ARG_ENABLE(layout,
   1128 	[  --enable-layout         build ICU's layout library [default=yes]],
   1129 	[case "${enableval}" in
   1130 		yes) layout=true ;;
   1131 		no)  layout=false ;;
   1132 		*) AC_MSG_ERROR(bad value ${enableval} for --enable-layout) ;;
   1133 		esac], 
   1134 	layout=true)
   1135 ICU_CONDITIONAL(LAYOUT, test "$layout" = true)
   1136 
   1137 AC_ARG_WITH(data-packaging,
   1138 	[  --with-data-packaging=type specify how to package ICU data (files, archive, library, static, auto) [default=auto]],
   1139 	[case "${withval}" in
   1140                 files|archive|library) datapackaging=$withval ;;
   1141 		auto) datapackaging=$withval ;;
   1142 		common) datapackaging=archive ;;
   1143 		dll) datapackaging=library ;;
   1144 		static) datapackaging=static ;;
   1145 		*) AC_MSG_ERROR(bad value ${withval} for --with-data-packaging) ;;
   1146 		esac], 
   1147         [datapackaging=])
   1148 
   1149 # Note:  'thesysconfdir' is an evaluated version, for Man pages, so also for thedatadir, thelibdir, etc.. 
   1150 # thesysconfdir=`eval echo $sysconfdir`
   1151 dnl# AC_SUBST(thesysconfdir)
   1152 dnl# thelibdir=`test "x$exec_prefix" = xNONE && exec_prefix="$prefix"; eval echo $libdir`
   1153 dnl# AC_SUBST(thelibdir)
   1154 thedatadir=`eval echo $datadir`
   1155 dnl# AC_SUBST(thedatadir)
   1156 # Always put raw data files in share/icu/{version}, etc.   Never use lib/icu/{version} for data files.. Actual shared libraries will go in {libdir}. 
   1157 pkgicudatadir=$datadir
   1158 thepkgicudatadir=$thedatadir
   1159 AC_SUBST(pkgicudatadir)
   1160 AC_SUBST(thepkgicudatadir)
   1161 
   1162 dnl# Shouldn't need the AC_SUBST
   1163 
   1164 if test x"$datapackaging" = x -o x"$datapackaging" = xauto; then
   1165 	# default to library
   1166 	datapackaging=library
   1167 	if test "$ENABLE_STATIC" = "YES"; then
   1168 		if test "$ENABLE_SHARED" != "YES"; then
   1169 			datapackaging=static
   1170 		fi
   1171 	fi
   1172 fi
   1173 
   1174 datapackaging_dir=`eval echo $thedatadir`"/icu/${VERSION}"
   1175 
   1176 datapackaging_msg="(No explaination for mode $datapackaging.)"
   1177 
   1178 datapackaging_msg_path="ICU will look in $datapackaging_dir which is the installation location. Call u_setDataDirectory() or use the ICU_DATA environment variable to override."
   1179 datapackaging_msg_set="ICU will use the linked data library. If linked with the stub library located in stubdata/, the application can use udata_setCommonData() or set a data path to override." 
   1180 datapackaging_howfound="(unknown)"
   1181 
   1182 case "$datapackaging" in
   1183     files)
   1184     DATA_PACKAGING_MODE=files
   1185     datapackaging_msg="ICU data will be stored in individual files."
   1186     datapackaging_howfound="$datapackaging_msg_path"
   1187     ;;
   1188     archive)
   1189     DATA_PACKAGING_MODE=common
   1190     datapackaging_msg="ICU data will be stored in a single .dat file."
   1191     datapackaging_howfound="$datapackaging_msg_path"
   1192     ;;
   1193     library)
   1194     DATA_PACKAGING_MODE=dll
   1195     datapackaging_msg="ICU data will be linked with ICU."
   1196     if test "$ENABLE_STATIC" = "YES"; then
   1197         datapackaging_msg="$datapackaging_msg A static data library will be built. "
   1198     fi
   1199     if test "$ENABLE_SHARED" = "YES"; then
   1200         datapackaging_msg="$datapackaging_msg A shared data library will be built. "
   1201     fi
   1202     datapackaging_howfound="$datapackaging_msg_set"
   1203     ;;
   1204     static)
   1205     DATA_PACKAGING_MODE=static
   1206     datapackaging_msg="ICU data will be stored in a static library."
   1207     datapackaging_howfound="$datapackaging_msg_set"
   1208     ;;
   1209 esac
   1210 AC_SUBST(DATA_PACKAGING_MODE)
   1211 
   1212 # Sets a library suffix
   1213 AC_MSG_CHECKING([for a library suffix to use])
   1214 AC_ARG_WITH(library-suffix,
   1215 	[  --with-library-suffix=suffix    tag a suffix to the library names [default=]],
   1216 	[ICULIBSUFFIX="${withval}"],
   1217 	[ICULIBSUFFIX=])
   1218 msg=$ICULIBSUFFIX
   1219 if test "$msg" = ""; then
   1220     msg=none
   1221 fi
   1222 AC_MSG_RESULT($msg)
   1223 AC_SUBST(ICULIBSUFFIX)
   1224 if test "$ICULIBSUFFIX" != ""
   1225 then
   1226     U_HAVE_LIB_SUFFIX=1
   1227     ICULIBSUFFIXCNAME=`echo _$ICULIBSUFFIX | sed 's/[^A-Za-z0-9_]/_/g'`
   1228 else
   1229     U_HAVE_LIB_SUFFIX=0
   1230 fi
   1231 AC_SUBST(U_HAVE_LIB_SUFFIX)
   1232 AC_SUBST(ICULIBSUFFIXCNAME)
   1233 
   1234 # Enable/disable tests
   1235 AC_ARG_ENABLE(tests,
   1236 	[  --enable-tests          build ICU tests [default=yes]],
   1237 	[case "${enableval}" in
   1238 		yes) tests=true ;;
   1239 		no)  tests=false ;;
   1240 		*) AC_MSG_ERROR(bad value ${enableval} for --enable-tests) ;;
   1241 		esac], 
   1242 	tests=true)
   1243 ICU_CONDITIONAL(TESTS, test "$tests" = true)
   1244 
   1245 # Enable/disable samples
   1246 AC_ARG_ENABLE(samples,
   1247 	[  --enable-samples        build ICU samples [default=yes]  
   1248 
   1249 Additionally, the variable FORCE_LIBS may be set before calling configure.
   1250 If set, it will REPLACE any automatic list of libraries.],
   1251 	[case "${enableval}" in
   1252 		yes) samples=true ;;
   1253 		no)  samples=false ;;
   1254 		*) AC_MSG_ERROR(bad value ${enableval} for --enable-samples) ;;
   1255 		esac], 
   1256 	samples=true)
   1257 ICU_CONDITIONAL(SAMPLES, test "$samples" = true)
   1258 
   1259 ICUDATA_CHAR=$U_ENDIAN_CHAR
   1260 
   1261 # Platform-specific Makefile setup
   1262 # set ICUDATA_CHAR to 'e' for any EBCDIC (which should be big endian) platform.
   1263 case "${host}" in
   1264 	*-*-solaris*) 	platform=U_SOLARIS ;;
   1265 	*-*-linux*|*-*-gnu|*-*-k*bsd*-gnu|*-*-kopensolaris*-gnu)        platform=U_LINUX ;;
   1266 	*-*-*bsd*|*-*-dragonfly*) 	platform=U_BSD ;;
   1267 	*-*-aix*) 	platform=U_AIX ;;
   1268 	*-*-hpux*) 	platform=U_HPUX ;;
   1269 	*-apple-darwin*|*-apple-rhapsody*)	platform=U_DARWIN ;;
   1270 	*-*-cygwin*|*-*-mingw*)	platform=U_CYGWIN ;;
   1271 	*-*ibm-openedition*|*-*-os390*)	platform=OS390
   1272 			if test "${ICU_ENABLE_ASCII_STRINGS}" != "1"; then
   1273 				ICUDATA_CHAR="e"
   1274 			fi ;;
   1275 	*-*-os400*)	platform=OS400
   1276 			if test "${ICU_ENABLE_ASCII_STRINGS}" != "1"; then
   1277 				ICUDATA_CHAR="e"
   1278 			fi ;;
   1279 	*-*-nto*)	platform=U_QNX ;;
   1280 	*-dec-osf*) 	platform=U_OSF ;;
   1281 	*-*-beos)		platform=U_BEOS ;;
   1282 	*-*-irix*)		platform=U_IRIX ;;
   1283 	*-ncr-*)		platform=U_MPRAS ;;
   1284 	*) 		platform=U_UNKNOWN_PLATFORM ;;
   1285 esac
   1286 AC_SUBST(ICUDATA_CHAR)
   1287 AC_SUBST(platform)
   1288 platform_make_fragment_name="$icu_cv_host_frag"
   1289 platform_make_fragment='$(top_srcdir)/config/'"$platform_make_fragment_name"
   1290 AC_SUBST(platform_make_fragment_name)
   1291 AC_SUBST(platform_make_fragment)
   1292 
   1293 if test "${FORCE_LIBS}" != ""; then
   1294    echo " *** Overriding automatically chosen [LIBS=$LIBS], using instead [FORCE_LIBS=${FORCE_LIBS}]"  1>&6
   1295    LIBS=${FORCE_LIBS}
   1296 fi
   1297 
   1298 
   1299 # Now that we're done using CPPFLAGS etc. for tests, we can change it
   1300 # for build.
   1301 
   1302 if test $ICU_USE_THREADS -ne 0
   1303 then
   1304     CPPFLAGS="$CPPFLAGS \$(THREADSCPPFLAGS)"
   1305     CFLAGS="$CFLAGS \$(THREADSCFLAGS)"
   1306     CXXFLAGS="$CXXFLAGS \$(THREADSCXXFLAGS)"
   1307 fi
   1308 
   1309 # output the Makefiles
   1310 AC_CONFIG_FILES([icudefs.mk \
   1311 		Makefile \
   1312 		data/pkgdataMakefile \
   1313 		config/Makefile.inc \
   1314 		config/icu.pc \
   1315 		config/pkgdataMakefile \
   1316 		data/Makefile \
   1317 		stubdata/Makefile \
   1318 		common/Makefile \
   1319 		i18n/Makefile \
   1320 		layout/Makefile \
   1321 		layoutex/Makefile \
   1322 		io/Makefile \
   1323 		extra/Makefile \
   1324 		extra/uconv/Makefile \
   1325 		extra/uconv/pkgdataMakefile \
   1326 		extra/scrptrun/Makefile \
   1327 		tools/Makefile \
   1328 		tools/ctestfw/Makefile \
   1329 		tools/toolutil/Makefile \
   1330 		tools/makeconv/Makefile \
   1331 		tools/genrb/Makefile \
   1332 		tools/genccode/Makefile \
   1333 		tools/gencmn/Makefile \
   1334 		tools/gencnval/Makefile \
   1335 		tools/genctd/Makefile \
   1336 		tools/gentest/Makefile \
   1337 		tools/gennorm2/Makefile \
   1338 		tools/genbrk/Makefile \
   1339 		tools/gensprep/Makefile \
   1340 		tools/icuinfo/Makefile \
   1341 		tools/icupkg/Makefile \
   1342 		tools/icuswap/Makefile \
   1343 		tools/pkgdata/Makefile \
   1344 		tools/tzcode/Makefile \
   1345 		tools/gencfu/Makefile \
   1346 		test/Makefile \
   1347 		test/compat/Makefile \
   1348 		test/testdata/Makefile \
   1349 		test/testdata/pkgdataMakefile \
   1350 		test/hdrtst/Makefile \
   1351 		test/intltest/Makefile \
   1352 		test/cintltst/Makefile \
   1353 		test/iotest/Makefile \
   1354 		test/letest/Makefile \
   1355 		test/perf/Makefile \
   1356 		test/perf/collationperf/Makefile \
   1357 		test/perf/ubrkperf/Makefile \
   1358 		test/perf/charperf/Makefile \
   1359 		test/perf/convperf/Makefile \
   1360 		test/perf/normperf/Makefile \
   1361 		test/perf/DateFmtPerf/Makefile \
   1362 		test/perf/strsrchperf/Makefile \
   1363 		test/perf/unisetperf/Makefile \
   1364 		test/perf/usetperf/Makefile \
   1365 		test/perf/ustrperf/Makefile \
   1366 		test/perf/utfperf/Makefile \
   1367 		test/perf/utrie2perf/Makefile \
   1368 		samples/Makefile samples/date/Makefile \
   1369 		samples/cal/Makefile samples/layout/Makefile \
   1370 		common/unicode/platform.h])
   1371 AC_OUTPUT
   1372 
   1373 echo 
   1374 echo "ICU for C/C++ $VERSION is ready to be built."
   1375 echo "=== Important Notes: ==="
   1376 
   1377 if test $ICU_USE_THREADS = 0; then
   1378   echo
   1379   echo  "** ICU was configured without mutex or thread support. Multithread-safe operation will not be tested. If this is unexpected, then run configure with --enable-threads=yes or check the messages [above] to see why thread support was not found." 1>&6
   1380   echo
   1381 fi
   1382 
   1383 echo "Data Packaging: $datapackaging"
   1384 echo " This means: $datapackaging_msg"
   1385 echo " To locate data: $datapackaging_howfound"
   1386 
   1387 if test -n "`$U_MAKE -v 2>&1 | grep '^GNU Make'`"; then
   1388 echo "Building ICU: Use a GNU make such as $U_MAKE to build ICU."
   1389 else
   1390 echo "** WARNING: $U_MAKE may not be GNU make."
   1391 echo "This may cause ICU to fail to build. Please make sure that GNU make"
   1392 echo "is in your PATH so that the configure script can detect its location."
   1393 fi
   1394 
   1395 AC_MSG_CHECKING([the version of "$U_MAKE"])
   1396 if "$U_MAKE" -f "$srcdir/config/gmakever.mk" PLATFORM="$platform"; then
   1397 AC_MSG_RESULT([ok])
   1398 else
   1399 AC_MSG_RESULT([too old or test failed - try upgrading GNU Make])
   1400 fi
   1401 
   1402 $as_unset _CXX_CXXSUFFIX
   1403