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