123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476 |
- # -*-autoconf-*-
- AC_COPYRIGHT([ Copyright (C) 2016 and later: Unicode, Inc. and others. License & terms of use: http://www.unicode.org/copyright.html ])
- # AC_COPYRIGHT([ Copyright (c) 1999-2015, International Business Machines Corporation and others. All Rights Reserved. ])
- # configure.in for ICU
- # Stephen F. Booth, heavily modified by Yves and others
- # NOTE: please use 'autoreconf' to rebuild, otherwise 'aclocal && autoconf'.
- # Check for autoconf version
- AC_PREREQ(2.69)
- # Process this file with autoreconf to produce a configure script
- AC_INIT([ICU],
- m4_esyscmd_s([sed -n 's/^[ ]*#[ ]*define[ ]*U_ICU_VERSION[ ]*"\([^"]*\)".*/\1/p' "./common/unicode/uvernum.h]"),
- [http://icu-project.org/bugs],
- [International Components for Unicode],
- [http://icu-project.org])
- AC_CONFIG_MACRO_DIR([config/m4])
- AC_CONFIG_SRCDIR([common/unicode/utypes.h])
- PACKAGE="icu"
- AC_SUBST(PACKAGE)
- # Use custom echo test for newline option
- # Current autoconf (2.65) gives incorrect echo newline option
- # for icu-config
- # This may be removed later - mow (June 17, 2010)
- ICU_ECHO_C= ICU_ECHO_N= ICU_ECHO_T=
- case `/bin/sh -c "echo -n x"` in
- -n*)
- case `/bin/sh -c "echo 'x\c'"` in
- *c*) ICU_ECHO_T=' ';; # ECHO_T is single tab character.
- *) ICU_ECHO_C='\c';;
- esac;;
- *)
- ICU_ECHO_N='-n';;
- esac
- AC_SUBST(ICU_ECHO_N)
- AC_SUBST(ICU_ECHO_C)
- AC_SUBST(ICU_ECHO_T)
- AC_MSG_CHECKING(for ICU version numbers)
- # Get the ICU version from uversion.h or other headers
- geticuversion() {
- [sed -n 's/^[ ]*#[ ]*define[ ]*U_ICU_VERSION[ ]*"\([^"]*\)".*/\1/p' "$@"]
- }
- getuversion() {
- [sed -n 's/^[ ]*#[ ]*define[ ]*U_UNICODE_VERSION[ ]*"\([^"]*\)".*/\1/p' "$@"]
- }
- VERSION=`geticuversion $srcdir/common/unicode/uvernum.h`
- if test x"$VERSION" = x; then
- as_fn_error $? "Cannot determine ICU version number from uvernum.h header file" "$LINENO" 5
- fi
- #TODO: IcuBug:8502
- #if test "$VERSION" != "$PACKAGE_VERSION"; then
- # AC_MSG_ERROR([configure was generated for $PACKAGE_VERSION but uvernum.h has $VERSION - please rerun autoconf])
- #fi
- UNICODE_VERSION=`getuversion $srcdir/common/unicode/uchar.h`
- if test x"$UNICODE_VERSION" = x; then
- AC_MSG_ERROR([Cannot determine Unicode version number from uchar.h header file])
- fi
- # Compute a reasonable library version from the release version. This is
- # very bad, but that's wanted... We want to make sure that the LIB_VERSION
- # has at least a dot in it, so we'll add a .0 if needed.
- #[LIB_VERSION=`echo $VERSION | sed -e 's/\.//' -e 's/^\([^.]*\)$/\1.0/'`]
- LIB_VERSION=$VERSION
- LIB_VERSION_MAJOR=`echo $LIB_VERSION | sed 's/\..*//'`
- AC_SUBST(VERSION)
- AC_SUBST(LIB_VERSION)
- AC_SUBST(LIB_VERSION_MAJOR)
- AC_MSG_RESULT([release $VERSION, library $LIB_VERSION, unicode version $UNICODE_VERSION])
- AC_SUBST(UNICODE_VERSION)
- # Determine the host system
- AC_CANONICAL_HOST
- AC_SUBST(CPPFLAGS)
- # This variable is needed on z/OS because the C++ compiler only recognizes .C
- _CXX_CXXSUFFIX=cpp
- export _CXX_CXXSUFFIX
- # Accumulate #defines
- # CONFIG_CPPFLAGS: These are defines that are set for ICU Build time only.
- # They are only needed for building ICU itself. Example: platform stuff
- CONFIG_CPPFLAGS=""
- # UCONFIG_CPPFLAGS: These are defines which are set for ICU build time,
- # and also a notice is output that they need to be set
- # for end-users of ICU also. uconfig.h.prepend is generated
- # with, for example, "#define U_DISABLE_RENAMING 1"
- # Example: ICU configuration stuff
- UCONFIG_CPPFLAGS=""
- # UCONFIG_CFLAGS: contains a copy of anything that needs to be set by end users
- # such as -std
- UCONFIG_CFLAGS=""
- # Check whether to build debug libraries
- AC_MSG_CHECKING([whether to build debug libraries])
- enabled=no
- ENABLE_DEBUG=0
- AC_ARG_ENABLE(debug,
- [ --enable-debug build debug libraries and enable the U_DEBUG define [default=no]],
- [ case "${enableval}" in
- yes|"") enabled=yes; ENABLE_DEBUG=1; CONFIG_CPPFLAGS="$CONFIG_CPPFLAGS -DU_DEBUG=1" ;;
- *) ;;
- esac],
- )
- AC_MSG_RESULT($enabled)
- AC_SUBST(ENABLE_DEBUG)
- # Check whether to build release libraries
- AC_MSG_CHECKING([whether to build release libraries])
- enabled=yes
- ENABLE_RELEASE=1
- AC_ARG_ENABLE(release,
- [ --enable-release build release libraries [default=yes]],
- [ case "${enableval}" in
- no) enabled=no; ENABLE_RELEASE=0 ;;
- *) ;;
- esac],
- )
- AC_MSG_RESULT($enabled)
- AC_SUBST(ENABLE_RELEASE)
- # Don't use the default C/CXXFLags
- : ${CFLAGS=""}
- : ${CXXFLAGS=""}
- # Checks for compilers
- AC_PROG_CC([clang gcc cc c99 c89 xlc_r xlc cl.exe icc])
- # Make sure that we try clang++ first, which provides C++11 support.
- # The g++ compiler is less likely to support C++11.
- AC_PROG_CXX([clang++ g++ c++ gpp xlC_r xlC aCC CC cxx cc++ cl.exe icc FCC KCC RCC])
- # pkg-config is needed for harfbuzz support
- PKG_PROG_PKG_CONFIG([0.20])
- PKG_CHECK_MODULES(ICULEHB, icu-le-hb, have_icu_le_hb=true, :)
- # Ensure that if CXXFLAGS/CFLAGS were not set when calling configure, set it correctly based on (enable/disable) debug or release option
- # The release mode use is the default one for autoconf
- if test "$GCC" = yes; then
- if test "$CFLAGS" = ""; then
- if test "$ENABLE_DEBUG" = 1; then
- CFLAGS=-g
- fi
- if test "$ENABLE_RELEASE" = 1; then
- CFLAGS="$CFLAGS -O2"
- fi
- fi
- if test "$CXXFLAGS" = ""; then
- if test "$ENABLE_DEBUG" = 1; then
- CXXFLAGS=-g
- fi
- if test "$ENABLE_RELEASE" = 1; then
- CXXFLAGS="$CXXFLAGS -O2"
- fi
- fi
- fi
- AC_PROG_CPP
- AC_PROG_INSTALL
- AC_SUBST(cross_compiling)
- dnl use the pld hack to get ac_fn_cxx_try_link defined globally and not local
- AC_LANG_PUSH([C++])
- AC_LINK_IFELSE([AC_LANG_PROGRAM()])
- AC_LANG_POP([C++])
- # make sure install is relative to srcdir - if a script
- if test "$srcdir" = "."; then
- # If srcdir isn't just ., then (srcdir) is already prepended.
- if test "${ac_install_sh}" = "${INSTALL}"; then
- INSTALL="\\\$(top_srcdir)/${ac_install_sh}"
- fi
- fi
- #AC_CHECK_PROG(AUTOCONF, autoconf, autoconf, true)
- #AC_CHECK_PROG(STRIP, strip, strip, true)
- # Check for the platform make
- AC_PATH_PROGS(U_MAKE, gmake gnumake, make)
- AC_SUBST(U_MAKE)
- AC_ARG_WITH(cross-build,
- [ --with-cross-build=dir specify an absolute path to the build directory of an ICU built for the current platform [default=no cross dir]],
- [cross_buildroot="${withval}"],
- [cross_buildroot=""])
- if test "X$cross_buildroot" = "X"; then
- if test "$cross_compiling" = "yes"; then
- AC_MSG_ERROR([Error! Cross compiling but no --with-cross-build option specified - please supply the path to an executable ICU's build root])
- dnl '
- fi
- else
- if test -f "${cross_buildroot}/config/icucross.mk"; then
- AC_MSG_RESULT([Using cross buildroot: $cross_buildroot])
- else
- if test -d "${cross_buildroot}"; then
- AC_MSG_ERROR([${cross_buildroot}/config/icucross.mk not found. Please build ICU in ${cross_buildroot} first.])
- else
- AC_MSG_ERROR([No such directory ${cross_buildroot} supplied as the argument to --with-cross-build. Use an absolute path.])
- fi
- fi
- fi
- AC_SUBST(cross_buildroot)
- # Check for doxygen to generate documentation
- AC_PATH_PROG(DOXYGEN,doxygen,,$PATH:/usr/local/bin:/usr/bin)
- # Check that the linker is usable
- ICU_PROG_LINK
- # Determine the executable suffix
- # We don't use AC_EXEEXT because some compilers output separate debugging
- # files, which confuses the AC_EXEEXT macro.
- AC_MSG_CHECKING(checking for executable suffix)
- case "${host}" in
- *-*-cygwin*|*-*-mingw*) EXEEXT=.exe ;;
- *) EXEEXT="" ;;
- esac
- ac_exeext=$EXEEXT
- AC_MSG_RESULT($EXEEXT)
- AC_SUBST(EXEEXT)
- # Determine how strict we want to be when compiling
- AC_CHECK_STRICT_COMPILE
- # Check if we can build and use 64-bit libraries
- AC_CHECK_64BIT_LIBS
- AC_SUBST(ARFLAGS)
- AC_SUBST(COMPILE_LINK_ENVVAR)
- # Determine the Makefile fragment
- ICU_CHECK_MH_FRAG
- # Checks for libraries and other host specific stuff
- # On HP/UX, don't link to -lm from a shared lib because it isn't
- # PIC (at least on 10.2)
- case "${host}" in
- *-*-hpux*) AC_CHECK_LIB(m, floor, LIB_M="-lm") ;;
- *) AC_CHECK_LIB(m, floor)
- LIB_M="" ;;
- esac
- AC_SUBST(LIB_M)
- # Check whether to build shared libraries
- AC_MSG_CHECKING([whether to build shared libraries])
- enabled=no
- AC_ARG_ENABLE(shared,
- [ --enable-shared build shared libraries [default=yes]],
- [ case "${enableval}" in
- yes|"") enabled=yes; ENABLE_SHARED=YES ;;
- no);;
- *) ;;
- esac],
- [enabled=yes; ENABLE_SHARED=YES]
- )
- AC_MSG_RESULT($enabled)
- AC_SUBST(ENABLE_SHARED)
- # Check whether to build static libraries
- AC_MSG_CHECKING([whether to build static libraries])
- enabled=no
- AC_ARG_ENABLE(static,
- [ --enable-static build static libraries [default=no]],
- [ case "${enableval}" in
- yes|"") enabled=yes; ENABLE_STATIC=YES ;;
- no) ;;
- *) ;;
- esac],
- )
- AC_MSG_RESULT($enabled)
- AC_SUBST(ENABLE_STATIC)
- # When building release static library, there might be some optimization flags we can use
- if test "$ENABLE_STATIC" = "YES"; then
- if test "$ENABLE_SHARED" != "YES"; then
- if test "$ENABLE_RELEASE" = 1; then
- AC_MSG_CHECKING([whether we can use static library optimization option])
- CHECK_STATIC_OPT_FLAG=no
- OLD_CPPFLAGS="${CPPFLAGS}"
- OLD_LDFLAGS="${LDFLAGS}"
- case "${host}" in
- *-linux*|i*86-*-*bsd*|i*86-pc-gnu)
- if test "$GCC" = yes; then
- CPPFLAGS="${CPPFLAGS} -ffunction-sections -fdata-sections"
- LDFLAGS="${LDFLAGS} -Wl,--gc-sections"
- fi
- ;;
- *)
- ;;
- esac
- AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])], [CHECK_STATIC_OPT_FLAG=yes], [CHECK_STATIC_OPT_FLAG=no])
- AC_MSG_RESULT($CHECK_STATIC_OPT_FLAG)
- if test "$CHECK_STATIC_OPT_FLAG" = no; then
- CPPFLAGS="${OLD_CPPFLAGS}"
- LDFLAGS="${OLD_LDFLAGS}"
- fi
- fi
- fi
- fi
- # Check whether to enable auto cleanup of libraries
- AC_MSG_CHECKING([whether to enable auto cleanup of libraries])
- enabled=no
- UCLN_NO_AUTO_CLEANUP=1
- AC_ARG_ENABLE(auto-cleanup,
- [ --enable-auto-cleanup enable auto cleanup of libraries [default=no]],
- [ case "${enableval}" in
- yes) enabled=yes;
- CONFIG_CPPFLAGS="$CONFIG_CPPFLAGS -DUCLN_NO_AUTO_CLEANUP=0";
- UCLN_NO_AUTO_CLEANUP=0
- ;;
- *) ;;
- esac],
- )
- AC_MSG_RESULT($enabled)
- AC_SUBST(UCLN_NO_AUTO_CLEANUP)
- # MSVC floating-point option
- MSVC_RELEASE_FLAG=""
- if test $enabled = yes
- then
- if test $icu_cv_host_frag = mh-cygwin-msvc -o $icu_cv_host_frag = mh-msys-msvc
- then
- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
- #if defined _MSC_VER && _MSC_VER >= 1400
- #else
- Microsoft Visual C++ < 2005
- #endif
- ]], [[]])],[MSVC_RELEASE_FLAG="/fp:precise"],[MSVC_RELEASE_FLAG="/Op"])
- CFLAGS="${CFLAGS} ${MSVC_RELEASE_FLAG}"
- CXXFLAGS="${CXXFLAGS} ${MSVC_RELEASE_FLAG}"
- fi
- fi
- # Check whether to enabled draft APIs
- AC_MSG_CHECKING([whether to enable draft APIs])
- enabled=yes
- U_DEFAULT_SHOW_DRAFT=1
- AC_ARG_ENABLE(draft,
- [ --enable-draft enable draft APIs (and internal APIs) [default=yes]],
- [ case "${enableval}" in
- no) enabled=no; U_DEFAULT_SHOW_DRAFT=0;
- CONFIG_CPPFLAGS="$CONFIG_CPPFLAGS -DU_DEFAULT_SHOW_DRAFT=0"
- ;;
- *) ;;
- esac],
- )
- AC_MSG_RESULT($enabled)
- # Make sure that we can use draft API in ICU.
- if test "$U_DEFAULT_SHOW_DRAFT" = 0; then
- CONFIG_CPPFLAGS="$CONFIG_CPPFLAGS -DU_SHOW_DRAFT_API"
- fi
- AC_SUBST(U_DEFAULT_SHOW_DRAFT)
- AC_PROG_RANLIB
- # look for 'ar' the proper way
- AC_CHECK_TOOL(AR, ar, false)
- AC_MSG_CHECKING([whether to enable renaming of symbols])
- enabled=yes
- U_DISABLE_RENAMING=0
- AC_ARG_ENABLE(renaming,
- [ --enable-renaming add a version suffix to symbols [default=yes]],
- [ case "${enableval}" in
- yes|"") enabled=yes ;;
- no) enabled=no; U_DISABLE_RENAMING=1;
- UCONFIG_CPPFLAGS="${UCONFIG_CPPFLAGS} -DU_DISABLE_RENAMING=1"
- ;;
- *) ;;
- esac],
- )
- AC_MSG_RESULT($enabled)
- AC_SUBST(U_DISABLE_RENAMING)
- AC_MSG_CHECKING([whether to enable function and data tracing])
- enabled=no
- U_ENABLE_TRACING=0
- AC_ARG_ENABLE(tracing,
- [ --enable-tracing enable function and data tracing [default=no]],
- [ case "${enableval}" in
- yes|"") enabled=yes;
- CONFIG_CPPFLAGS="$CONFIG_CPPFLAGS -DU_ENABLE_TRACING=1";
- U_ENABLE_TRACING=1 ;;
- no) enabled=no; U_ENABLE_TRACING=0 ;;
- *) ;;
- esac],
- )
- AC_MSG_RESULT($enabled)
- AC_SUBST(U_ENABLE_TRACING)
- # check if elf.h is present.
- AC_CHECK_HEADERS([elf.h])
- if test "x$ac_cv_header_elf_h" = "xyes"; then
- CONFIG_CPPFLAGS="$CONFIG_CPPFLAGS -DU_HAVE_ELF_H=1";
- fi
- # Enable/disable plugins
- AC_ARG_ENABLE(plugins,
- [ --enable-plugins enable plugins [default=no]],
- [case "${enableval}" in
- yes) plugins=true ;;
- no) plugins=false ;;
- *) AC_MSG_ERROR(bad value ${enableval} for --enable-plugins) ;;
- esac],
- plugins=false)
- ICU_CONDITIONAL(PLUGINS, test "$plugins" = true)
- if test "x$plugins" = "xtrue"; then
- UCONFIG_CPPFLAGS="$UCONFIG_CPPFLAGS -DUCONFIG_ENABLE_PLUGINS=1"
- fi
- U_ENABLE_DYLOAD=1
- enable=yes
- AC_MSG_CHECKING([whether to enable dynamic loading of plugins. Ignored if plugins disabled.])
- AC_ARG_ENABLE(dyload,
- [ --disable-dyload disable dynamic loading [default=no]],
- [ case "${enableval}" in
- yes|"")
- U_ENABLE_DYLOAD=1
- enable=yes
- ;;
- no)
- U_ENABLE_DYLOAD=0;
- enable=no;
- CONFIG_CPPFLAGS="$CONFIG_CPPFLAGS -DU_ENABLE_DYLOAD=0";
- ;;
- *) ;;
- esac],
- )
- AC_MSG_RESULT($enable)
- AC_SUBST(U_ENABLE_DYLOAD)
- if test "$enable" = "yes"; then
- AC_CHECK_HEADERS([dlfcn.h])
- #AC_MSG_RESULT($enabled)
- AC_SEARCH_LIBS([dlopen], [dl])
- AC_CHECK_FUNCS([dlopen])
- if test "x$ac_cv_func_dlopen" != xyes; then
- CONFIG_CPPFLAGS="$CONFIG_CPPFLAGS -DHAVE_DLOPEN=0"
- fi
- fi
- # Check for miscellanous functions.
- # So, use for putil / tools only.
- # Note that this will generate HAVE_GETTIMEOFDAY, not U_HAVE_GETTIMEOFDAY
- AC_CHECK_FUNCS([gettimeofday])
- # Check whether to use the evil rpath or not
- AC_ARG_ENABLE(rpath,
- [ --enable-rpath use rpath when linking [default is only if necessary]],
- [ case "${enableval}" in
- yes|"") ENABLE_RPATH=YES ;;
- no) ;;
- *) ;;
- esac],
- [ENABLE_RPATH=NO]
- )
- AC_SUBST(ENABLE_RPATH)
- AC_LANG_PUSH([C++])
- AC_MSG_CHECKING([[if we have a C++ compiler]])
- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[cxx_okay=yes],[cxx_okay=no])
- if test $cxx_okay = yes
- then
- AC_MSG_RESULT([[Good]])
- else
- AC_MSG_RESULT([[no]])
- AC_MSG_ERROR([[C++ compiler $CXX does not work or no compiler found]])
- fi
- if [[ "$GXX" = yes ]]; then
- # if CXXFLAGS does not have a "-std=" setting, set it now to -std=c++0x,
- # and check that the compiler still works.
- if ! echo "$CXXFLAGS" | grep '\-std=' >/dev/null 2>&1; then
- OLD_CXXFLAGS="${CXXFLAGS}"
- CXXFLAGS="$CXXFLAGS --std=c++0x"
- AC_MSG_CHECKING([[if we have a C++11 compiler]])
- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[cxx11_okay=yes],[cxx11_okay=no])
- AC_MSG_RESULT($cxx11_okay)
- if [[ $cxx11_okay = yes ]]; then
- AC_MSG_NOTICE([Adding CXXFLAGS option --std=c++0x])
- UCONFIG_CXXFLAGS="${UCONFIG_CXXFLAGS} --std=c++0x"
- else
- CXXFLAGS="$OLD_CXXFLAGS"
- fi
- case "${host}" in
- *-*-solaris*)
- CXXFLAGS="$OLD_CXXFLAGS"
- ;;
- esac
- fi
- fi
- AC_MSG_CHECKING([[if #include <string> works]])
- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <string>]], [[]])], [ac_cv_header_stdstring=yes], [ac_cv_header_stdstring=no])
- AC_MSG_RESULT($ac_cv_header_stdstring)
- if test $ac_cv_header_stdstring = yes
- then
- U_HAVE_STD_STRING=1
- else
- U_HAVE_STD_STRING=0
- CONFIG_CPPFLAGS="${CONFIG_CPPFLAGS} -DU_HAVE_STD_STRING=0"
- fi
- AC_SUBST(U_HAVE_STD_STRING)
- AC_MSG_CHECKING([[if #include <atomic> works]])
- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <atomic>]], [[]])], [ac_cv_header_atomic=yes], [ac_cv_header_atomic=no])
- AC_MSG_RESULT($ac_cv_header_atomic)
- if test $ac_cv_header_atomic = yes
- then
- U_HAVE_ATOMIC=1
- else
- U_HAVE_ATOMIC=0
- fi
- # Make this available via CPPFLAGS
- CONFIG_CPPFLAGS="${CONFIG_CPPFLAGS} -DU_HAVE_ATOMIC=${U_HAVE_ATOMIC}"
- AC_SUBST(U_HAVE_ATOMIC)
- AC_LANG_POP([C++])
- # Always build ICU with multi-threading support.
- OLD_LIBS=${LIBS}
- # For Compaq Tru64 (OSF1), we must look for pthread_attr_init
- # and must do this before seaching for pthread_mutex_destroy, or
- # we will pick up libpthreads.so not libpthread.so
- # If this fails, then we must test for HPUX specials, before
- # moving on to a more generic test
- AC_CHECK_LIB(pthread, pthread_attr_init)
- if test $ac_cv_lib_pthread_pthread_attr_init = yes; then
- :
- else
- # Locate the right library for POSIX threads. We look for the
- # symbols in the libraries first, because on Solaris libc provides
- # pthread_create but libpthread has the real code :(
- # AIX uses libpthreads instead of libpthread, and HP/UX uses libpthread
- # FreeBSD users may need libpthread if they do not have libc_r.
- AC_SEARCH_LIBS_FIRST(pthread_mutex_destroy, pthread pthreads c_r )
- if test "$ac_cv_search_pthread_mutex_destroy" != no; then
- :
- else
- # For HP 11
- AC_CHECK_LIB(pthread, pthread_mutex_init)
- if test $ac_cv_lib_pthread_pthread_mutex_init = yes; then
- :
- fi
- fi
- AC_CHECK_FUNC(pthread_mutex_lock)
- if test $ac_cv_func_pthread_mutex_lock = yes; then
- :
- fi
- fi
- # Check to see if we are using CygWin with MSVC
- case "${host}" in
- *-pc-cygwin*|*-pc-mingw*)
- # For gcc, the thread options are set by mh-mingw/mh-cygwin
- # For msvc, the thread options are set by runConfigureICU
- :
- ;;
- *-*-hpux*)
- # Add -mt because it does several nice things on newer compilers.
- case "${icu_cv_host_frag}" in
- mh-hpux-acc)
- OLD_CXXFLAGS="${CXXFLAGS}"
- CXXFLAGS="${CXXFLAGS} -mt"
- if test x"`${CXX} ${CXXFLAGS} 2>&1`" != x""; then
- CXXFLAGS="${OLD_CXXFLAGS}"
- else
- UCONFIG_CXXFLAGS="${UCONFIG_CXXFLAGS} -mt"
- fi
- ;;
- esac
- ;;
- *-*-solaris*)
- case "${icu_cv_host_frag}" in
- mh-solaris)
- LIBS="${LIBS} -mt"
- ;;
- esac
- ;;
- esac
- AC_ARG_ENABLE(weak-threads,
- [ --enable-weak-threads weakly reference the threading library [default=no]],
- [case "${enableval}" in
- yes)
- LIB_THREAD="${LIBS%${OLD_LIBS}}"
- LIBS=${OLD_LIBS}
- ;;
- no) ;;
- *) AC_MSG_ERROR(bad value ${enableval} for --enable-weak-threads) ;;
- esac])
- AC_SUBST(LIB_THREAD)
- # Check for mmap()
- # The AC_FUNC_MMAP macro doesn't work properly. It seems to be too specific.
- # Do this check instead.
- HAVE_MMAP=0
- AC_MSG_CHECKING([for mmap])
- AC_CACHE_VAL(ac_cv_func_mmap_ok,
- [AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <unistd.h>
- #include <sys/mman.h>
- #include <sys/stat.h>
- #include <fcntl.h>], [mmap((void *)0, 0, PROT_READ, 0, 0, 0);])],[ac_cv_func_mmap_ok=yes],[ac_cv_func_mmap_ok=no])] )
- AC_MSG_RESULT($ac_cv_func_mmap_ok)
- if test $ac_cv_func_mmap_ok = yes
- then
- HAVE_MMAP=1
- else
- CONFIG_CPPFLAGS="${CONFIG_CPPFLAGS} -DU_HAVE_MMAP=0"
- fi
- AC_SUBST(HAVE_MMAP)
- AC_MSG_CHECKING([for genccode assembly])
- # Check to see if genccode can generate simple assembly.
- GENCCODE_ASSEMBLY=
- case "${host}" in
- *-linux*|*-kfreebsd*-gnu*|i*86-*-*bsd*|i*86-pc-gnu)
- if test "$GCC" = yes; then
- # We're using gcc, and the simple -a gcc command line works for genccode
- GENCCODE_ASSEMBLY="-a gcc"
- fi ;;
- i*86-*-solaris*)
- if test "$GCC" = yes; then
- # When using gcc, look if we're also using GNU as.
- # When using GNU as, the simple -a gcc command line works for genccode.
- asv=`"${CC}" -print-prog-name=as 2>/dev/null`
- asv=`"${asv}" --version 2>/dev/null`
- case "X${asv}" in
- X*GNU*) GENCCODE_ASSEMBLY="-a gcc" ;;
- X*) GENCCODE_ASSEMBLY="-a sun-x86" ;;
- esac
- unset asv
- else
- GENCCODE_ASSEMBLY="-a sun-x86"
- fi ;;
- sparc-*-solaris*)
- GENCCODE_ASSEMBLY="-a sun"
- ;;
- ia64-*-hpux*)
- # There has been some issues with building ICU data on HPUX ia64 aCC
- # when using the assemble code setting below. For now, build without
- # assemble code for this platform. This will increase the build time.
- # GENCCODE_ASSEMBLY="-a aCC-ia64"
- ;;
- esac
- AC_SUBST(GENCCODE_ASSEMBLY)
- AC_MSG_RESULT($GENCCODE_ASSEMBLY)
- # Checks for header files
- AC_CHECK_HEADERS(inttypes.h)
- if test $ac_cv_header_inttypes_h = no; then
- U_HAVE_INTTYPES_H=0
- CONFIG_CPPFLAGS="${CONFIG_CPPFLAGS} -DU_HAVE_INTTYPES_H=0"
- else
- U_HAVE_INTTYPES_H=1
- fi
- if test "$CC" = ccc; then
- AC_MSG_RESULT("C compiler set to CCC ${CC}" )
- case "${host}" in
- alpha*-*-*) U_HAVE_INTTYPES_H=0;
- CONFIG_CPPFLAGS="${CONFIG_CPPFLAGS} -DU_HAVE_INTTYPES_H=0"
- esac
- fi
- AC_SUBST(U_HAVE_INTTYPES_H)
- AC_CHECK_HEADERS(dirent.h)
- if test $ac_cv_header_dirent_h = no; then
- U_HAVE_DIRENT_H=0
- CONFIG_CPPFLAGS="${CONFIG_CPPFLAGS} -DU_HAVE_DIRENT_H=0"
- else
- U_HAVE_DIRENT_H=1
- fi
- AC_SUBST(U_HAVE_DIRENT_H)
- # Check for endianness
- AC_C_BIGENDIAN()
- if test $ac_cv_c_bigendian = no; then
- U_IS_BIG_ENDIAN=0
- U_ENDIAN_CHAR="l"
- else
- U_IS_BIG_ENDIAN=1
- U_ENDIAN_CHAR="b"
- fi
- AC_SUBST(U_IS_BIG_ENDIAN)
- # Do various POSIX related checks
- U_HAVE_NL_LANGINFO_CODESET=0
- U_NL_LANGINFO_CODESET=-1
- AC_CHECK_FUNC(nl_langinfo,[U_HAVE_NL_LANGINFO=1],[U_HAVE_NL_LANGINFO=0])
- dnl AC_SUBST(U_HAVE_NL_LANGINFO)
- if test $U_HAVE_NL_LANGINFO -eq 1; then
- AC_CACHE_CHECK([for nl_langinfo's argument to obtain the codeset],
- ac_cv_nl_langinfo_codeset,
- [ac_cv_nl_langinfo_codeset="unknown"
- for a in CODESET _NL_CTYPE_CODESET_NAME; do
- AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <langinfo.h>]], [[nl_langinfo($a);]])],[ac_cv_nl_langinfo_codeset="$a"; break],[])]
- done)
- if test x$ac_cv_nl_langinfo_codeset != xunknown
- then
- U_HAVE_NL_LANGINFO_CODESET=1
- U_NL_LANGINFO_CODESET=$ac_cv_nl_langinfo_codeset
- if test "x${ac_cv_nl_langinfo_codeset}" != "xCODESET"
- then
- CONFIG_CPPFLAGS="${CONFIG_CPPFLAGS} -DNL_LANGINFO_CODESET=${ac_cv_nl_langinfo_codeset}"
- fi
- else
- CONFIG_CPPFLAGS="${CONFIG_CPPFLAGS} -DU_HAVE_NL_LANGINFO_CODESET=0"
- fi
- fi
- AC_SUBST(U_HAVE_NL_LANGINFO_CODESET)
- AC_SUBST(U_NL_LANGINFO_CODESET)
- # Namespace support checks
- AC_LANG(C++)
- AC_MSG_CHECKING([for namespace support])
- AC_CACHE_VAL(ac_cv_namespace_ok,
- [AC_LINK_IFELSE([AC_LANG_PROGRAM([namespace x_version {void f(){}}
- namespace x = x_version;
- using namespace x_version;
- ], [f();])],[ac_cv_namespace_ok=yes],[ac_cv_namespace_ok=no])] )
- AC_MSG_RESULT($ac_cv_namespace_ok)
- if test $ac_cv_namespace_ok = no
- then
- AC_MSG_ERROR(Namespace support is required to build ICU.)
- fi
- AC_MSG_CHECKING([for properly overriding new and delete])
- U_OVERRIDE_CXX_ALLOCATION=0
- U_HAVE_PLACEMENT_NEW=0
- AC_CACHE_VAL(ac_cv_override_cxx_allocation_ok,
- [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <stdlib.h>
- class UMemory {
- public:
- void *operator new(size_t size) {return malloc(size);}
- void *operator new[](size_t size) {return malloc(size);}
- void operator delete(void *p) {free(p);}
- void operator delete[](void *p) {free(p);}
- };
- ]], [])],[ac_cv_override_cxx_allocation_ok=yes],[ac_cv_override_cxx_allocation_ok=no])] )
- AC_MSG_RESULT($ac_cv_override_cxx_allocation_ok)
- if test $ac_cv_override_cxx_allocation_ok = yes
- then
- U_OVERRIDE_CXX_ALLOCATION=1
- AC_MSG_CHECKING([for placement new and delete])
- AC_CACHE_VAL(ac_cv_override_placement_new_ok,
- [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <stdlib.h>
- class UMemory {
- public:
- void *operator new(size_t size) {return malloc(size);}
- void *operator new[](size_t size) {return malloc(size);}
- void operator delete(void *p) {free(p);}
- void operator delete[](void *p) {free(p);}
- void * operator new(size_t, void *ptr) { return ptr; }
- void operator delete(void *, void *) {}
- };
- ]], [])],[ac_cv_override_placement_new_ok=yes],[ac_cv_override_placement_new_ok=no])] )
- AC_MSG_RESULT($ac_cv_override_placement_new_ok)
- if test $ac_cv_override_placement_new_ok = yes
- then
- U_HAVE_PLACEMENT_NEW=1
- else
- CONFIG_CPPFLAGS="${CONFIG_CPPFLAGS} -DU_HAVE_PLACEMENT_NEW=0"
- fi
- else
- CONFIG_CPPFLAGS="${CONFIG_CPPFLAGS} -DU_OVERRIDE_CXX_ALLOCATION=0"
- fi
- AC_SUBST(U_OVERRIDE_CXX_ALLOCATION)
- AC_SUBST(U_HAVE_PLACEMENT_NEW)
- AC_LANG(C)
- AC_CHECK_FUNC(popen)
- if test x$ac_cv_func_popen = xyes
- then
- U_HAVE_POPEN=1
- else
- CONFIG_CPPFLAGS="${CONFIG_CPPFLAGS} -DU_HAVE_POPEN=0"
- U_HAVE_POPEN=0
- fi
- AC_SUBST(U_HAVE_POPEN)
- AC_CHECK_FUNC(tzset)
- U_HAVE_TZSET=0
- if test x$ac_cv_func_tzset = xyes
- then
- U_TZSET=tzset
- U_HAVE_TZSET=1
- else
- AC_CHECK_FUNC(_tzset)
- if test x$ac_cv_func__tzset = xyes
- then
- U_TZSET=_tzset
- U_HAVE_TZSET=1
- else
- CONFIG_CPPFLAGS="${CONFIG_CPPFLAGS} -DU_HAVE_TZSET=0"
- fi
- fi
- AC_SUBST(U_HAVE_TZSET)
- AC_SUBST(U_TZSET)
- U_HAVE_TZNAME=0
- AC_CACHE_CHECK(for tzname,ac_cv_var_tzname,
- [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#ifndef _XOPEN_SOURCE
- #define _XOPEN_SOURCE
- #endif
- #include <stdlib.h>
- #include <time.h>
- #ifndef tzname /* For SGI. */
- extern char *tzname[]; /* RS6000 and others reject char **tzname. */
- #endif]], [atoi(*tzname);])],[ac_cv_var_tzname=yes],[ac_cv_var_tzname=no])])
- if test $ac_cv_var_tzname = yes; then
- U_TZNAME=tzname
- U_HAVE_TZNAME=1
- else
- AC_CACHE_CHECK(for _tzname,ac_cv_var__tzname,
- [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <stdlib.h>
- #include <time.h>
- extern char *_tzname[];]], [atoi(*_tzname);])],[ac_cv_var__tzname=yes],[ac_cv_var__tzname=no])])
- if test $ac_cv_var__tzname = yes; then
- U_TZNAME=_tzname
- U_HAVE_TZNAME=1
- else
- CONFIG_CPPFLAGS="${CONFIG_CPPFLAGS} -DU_HAVE_TZNAME=0"
- fi
- fi
- AC_SUBST(U_HAVE_TZNAME)
- AC_SUBST(U_TZNAME)
- AC_CACHE_CHECK(for timezone,ac_cv_var_timezone,
- [AC_LINK_IFELSE([AC_LANG_PROGRAM([#ifndef _XOPEN_SOURCE
- #define _XOPEN_SOURCE
- #endif
- #include <time.h>
- ], [[timezone = 1;]])],[ac_cv_var_timezone=yes],[ac_cv_var_timezone=no])])
- U_HAVE_TIMEZONE=0
- if test $ac_cv_var_timezone = yes; then
- U_TIMEZONE=timezone
- U_HAVE_TIMEZONE=1
- else
- AC_CACHE_CHECK(for __timezone,ac_cv_var___timezone,
- [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <time.h>]], [[__timezone = 1;]])],[ac_cv_var___timezone=yes],[ac_cv_var___timezone=no])])
- if test $ac_cv_var___timezone = yes; then
- U_TIMEZONE=__timezone
- U_HAVE_TIMEZONE=1
- else
- AC_CACHE_CHECK(for _timezone,ac_cv_var__timezone,
- [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <time.h>]], [[_timezone = 1;]])],[ac_cv_var__timezone=yes],[ac_cv_var__timezone=no])])
- if test $ac_cv_var__timezone = yes; then
- U_TIMEZONE=_timezone
- U_HAVE_TIMEZONE=1
- else
- CONFIG_CPPFLAGS="${CONFIG_CPPFLAGS} -DU_HAVE_TIMEZONE=0"
- fi
- fi
- fi
- AC_SUBST(U_HAVE_TIMEZONE)
- AC_SUBST(U_TIMEZONE)
- AC_CHECK_FUNC(strtod_l)
- if test x$ac_cv_func_strtod_l = xyes
- then
- CONFIG_CPPFLAGS="${CONFIG_CPPFLAGS} -DU_HAVE_STRTOD_L=1"
- U_HAVE_STRTOD_L=1
- else
- CONFIG_CPPFLAGS="${CONFIG_CPPFLAGS} -DU_HAVE_STRTOD_L=0"
- U_HAVE_STRTOD_L=0
- fi
- AC_SUBST(U_HAVE_STRTOD_L)
- # Checks for typedefs
- AC_CHECK_TYPE(int8_t,signed char)
- AC_CHECK_TYPE(uint8_t,unsigned char)
- AC_CHECK_TYPE(int16_t,signed short)
- AC_CHECK_TYPE(uint16_t,unsigned short)
- AC_CHECK_TYPE(int32_t,signed long)
- AC_CHECK_TYPE(uint32_t,unsigned long)
- AC_CHECK_TYPE(int64_t,signed long long)
- AC_CHECK_TYPE(uint64_t,unsigned long long)
- if test $ac_cv_type_int8_t = no; then
- CONFIG_CPPFLAGS="${CONFIG_CPPFLAGS} -DU_HAVE_INT8_T=0"
- fi
- if test $ac_cv_type_uint8_t = no; then
- CONFIG_CPPFLAGS="${CONFIG_CPPFLAGS} -DU_HAVE_UINT8_T=0"
- fi
- if test $ac_cv_type_int16_t = no; then
- CONFIG_CPPFLAGS="${CONFIG_CPPFLAGS} -DU_HAVE_INT16_T=0"
- fi
- if test $ac_cv_type_uint16_t = no; then
- CONFIG_CPPFLAGS="${CONFIG_CPPFLAGS} -DU_HAVE_UINT16_T=0"
- fi
- if test $ac_cv_type_int32_t = no; then
- CONFIG_CPPFLAGS="${CONFIG_CPPFLAGS} -DU_HAVE_INT32_T=0"
- fi
- if test $ac_cv_type_uint32_t = no; then
- CONFIG_CPPFLAGS="${CONFIG_CPPFLAGS} -DU_HAVE_UINT32_T=0"
- fi
- if test $ac_cv_type_int64_t = no; then
- CONFIG_CPPFLAGS="${CONFIG_CPPFLAGS} -DU_HAVE_INT64_T=0"
- fi
- if test $ac_cv_type_uint64_t = no; then
- CONFIG_CPPFLAGS="${CONFIG_CPPFLAGS} -DU_HAVE_UINT64_T=0"
- fi
- # Do various wchar_t related checks
- AC_CHECK_HEADER(wchar.h)
- if test "$ac_cv_header_wchar_h" = no
- then
- U_HAVE_WCHAR_H=0
- U_HAVE_WCSCPY=0
- CONFIG_CPPFLAGS="${CONFIG_CPPFLAGS} -DU_HAVE_WCHAR_H=0 -DU_HAVE_WCSCPY=0"
- else
- AC_DEFINE([HAVE_WCHAR_H], [1], [wchar.h was found.])
- U_HAVE_WCHAR_H=1
- # Some broken systems have wchar.h but not some of its functions...
- AC_SEARCH_LIBS(wcscpy, wcs w)
- if test "$ac_cv_search_wcscpy" != no; then
- U_HAVE_WCSCPY=1
- else
- U_HAVE_WCSCPY=0
- CONFIG_CPPFLAGS="${CONFIG_CPPFLAGS} -DU_HAVE_WCSCPY=0"
- fi
- fi
- AC_SUBST(U_HAVE_WCHAR_H)
- AC_SUBST(U_HAVE_WCSCPY)
- AC_CHECK_SIZEOF([wchar_t], 0, [
- #if STDC_HEADERS
- #include <stddef.h>
- #endif
- #include <stdlib.h>
- #if HAVE_WCHAR_H
- #include <string.h>
- #include <wchar.h>
- #endif])
- U_SIZEOF_WCHAR_T=$ac_cv_sizeof_wchar_t
- # We do this check to verify that everything is okay.
- if test $U_SIZEOF_WCHAR_T = 0; then
- if test $U_HAVE_WCHAR_H=1; then
- AC_MSG_ERROR(There is wchar.h but the size of wchar_t is 0)
- fi
- fi
- AC_MSG_CHECKING([for UTF-16 string literal support])
- U_CHECK_UTF16_STRING=1
- CHECK_UTF16_STRING_RESULT="unknown"
- case "${host}" in
- *-*-aix*|powerpc64-*-linux*)
- if test "$GCC" = no; then
- OLD_CFLAGS="${CFLAGS}"
- OLD_CXXFLAGS="${CXXFLAGS}"
- CFLAGS="${CFLAGS} -qutf"
- CXXFLAGS="${CXXFLAGS} -qutf"
- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[const unsigned short hello[] = u"hello";]], [[]])],[U_CHECK_UTF16_STRING=1],[U_CHECK_UTF16_STRING=0])
- if test "$U_CHECK_UTF16_STRING" = 0; then
- CFLAGS="${OLD_CFLAGS}"
- CXXFLAGS="${OLD_CXXFLAGS}"
- else
- UCONFIG_CXXFLAGS="${UCONFIG_CXXFLAGS} -qutf"
- CHECK_UTF16_STRING_RESULT="-qutf"
- fi
- fi
- ;;
- *-*-solaris*)
- if test "$GCC" = no; then
- OLD_CFLAGS="${CFLAGS}"
- OLD_CXXFLAGS="${CXXFLAGS}"
- CFLAGS="${CFLAGS} -xustr=ascii_utf16_ushort"
- CXXFLAGS="${CXXFLAGS} -xustr=ascii_utf16_ushort"
- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[const unsigned short hello[] = U"hello";]], [[]])],[U_CHECK_UTF16_STRING=1],[U_CHECK_UTF16_STRING=0])
- if test "$U_CHECK_UTF16_STRING" = 0; then
- CFLAGS="${OLD_CFLAGS}"
- CXXFLAGS="${OLD_CXXFLAGS}"
- else
- CHECK_UTF16_STRING_RESULT="-xustr=ascii_utf16_ushort"
- UCONFIG_CXXFLAGS="${UCONFIG_CXXFLAGS} -xustr=ascii_utf16_ushort"
- UCONFIG_CFLAGS="${UCONFIG_CFLAGS} -xustr=ascii_utf16_ushort"
- # Since we can't detect the availability of this UTF-16 syntax at compile time,
- # we depend on configure telling us that we can use it.
- # Since we can't ensure ICU users use -xustr=ascii_utf16_ushort,
- # we only use this macro within ICU.
- # If an ICU user uses icu-config, this feature will be enabled.
- CONFIG_CPPFLAGS="${CONFIG_CPPFLAGS} -DU_CHECK_UTF16_STRING=1"
- U_CHECK_UTF16_STRING=0
- fi
- fi
- ;;
- *-*-hpux*)
- if test "$GCC" = no; then
- # The option will be detected at compile time without additional compiler options.
- CHECK_UTF16_STRING_RESULT="available"
- fi
- ;;
- *-*-cygwin)
- # wchar_t can be used
- CHECK_UTF16_STRING_RESULT="available"
- ;;
- *)
- ;;
- esac
- # GCC >= 4.4 supports UTF16 string literals. The CFLAGS and CXXFLAGS may change in the future.
- if test "$CHECK_UTF16_STRING_RESULT" = "unknown"; then
- if test "$GCC" = yes; then
- OLD_CFLAGS="${CFLAGS}"
- CFLAGS="${CFLAGS} -std=gnu99"
- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
- static const char16_t test[] = u"This is a UTF16 literal string.";
- ]], [[]])],[CC_UTF16_STRING=1],[CC_UTF16_STRING=0])
- if test "$CC_UTF16_STRING" = 1; then
- UCONFIG_CFLAGS="${UCONFIG_CFLAGS} -std=gnu99"
- CHECK_UTF16_STRING_RESULT="C only";
- else
- CFLAGS="${OLD_CFLAGS}"
- fi
- fi
- if test "$GXX" = yes; then
- # -Wno-return-type-c-linkage is desired so that stable ICU API is not warned about.
- AC_LANG_PUSH([C++])
- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
- static const char16_t test[] = u"This is a UTF16 literal string.";
- ]], [[]])],[CXX_UTF16_STRING=1],[CXX_UTF16_STRING=0])
- AC_LANG_POP([C++])
- if test "$CXX_UTF16_STRING" = 1; then
- if test "$CC_UTF16_STRING" = 1; then
- CHECK_UTF16_STRING_RESULT="available";
- else
- CHECK_UTF16_STRING_RESULT="C++ only";
- fi
- fi
- fi
- fi
- AC_MSG_RESULT($CHECK_UTF16_STRING_RESULT)
- # Enable/disable extras
- AC_ARG_ENABLE(extras,
- [ --enable-extras build ICU extras [default=yes]],
- [case "${enableval}" in
- yes) extras=true ;;
- no) extras=false ;;
- *) AC_MSG_ERROR(bad value ${enableval} for --enable-extras) ;;
- esac],
- extras=true)
- ICU_CONDITIONAL(EXTRAS, test "$extras" = true)
- AC_ARG_ENABLE(icuio,
- [ --enable-icuio build ICU's icuio library [default=yes]],
- [case "${enableval}" in
- yes) icuio=true ;;
- no) icuio=false ;;
- *) AC_MSG_ERROR(bad value ${enableval} for --enable-icuio) ;;
- esac],
- icuio=true)
- ICU_CONDITIONAL(ICUIO, test "$icuio" = true)
- # Enable/disable layoutex
- AC_ARG_ENABLE(layoutex,
- [ --enable-layoutex build ICU's Paragraph Layout library [default=yes].
- icu-le-hb must be installed via pkg-config. See http://harfbuzz.org],
- [case "${enableval}" in
- yes) layoutex=$have_icu_le_hb ;;
- no) layoutex=false ;;
- *) AC_MSG_ERROR(bad value ${enableval} for --enable-layoutex) ;;
- esac],
- layoutex=$have_icu_le_hb)
- ICU_CONDITIONAL(LAYOUTEX, test "$layoutex" = true)
- # Enable/disable layout
- AC_ARG_ENABLE(layout,
- [],
- [case "${enableval}" in
- yes) AC_MSG_ERROR(The ICU Layout Engine has been removed.) ;;
- no) ;;
- *) ;;
- esac],
- )
- # Enable/disable tools
- AC_ARG_ENABLE(tools,
- [ --enable-tools build ICU's tools [default=yes]],
- [case "${enableval}" in
- yes) tools=true ;;
- no) tools=false ;;
- *) AC_MSG_ERROR(bad value ${enableval} for --enable-tools) ;;
- esac],
- tools=true)
- ICU_CONDITIONAL(TOOLS, test "$tools" = true)
- AC_ARG_WITH(data-packaging,
- [ --with-data-packaging specify how to package ICU data. Possible values:
- files raw files (.res, etc)
- archive build a single icudtXX.dat file
- library shared library (.dll/.so/etc.)
- static static library (.a/.lib/etc.)
- auto build shared if possible (default)
- See http://userguide.icu-project.org/icudata for more info.],
- [case "${withval}" in
- files|archive|library) datapackaging=$withval ;;
- auto) datapackaging=$withval ;;
- common) datapackaging=archive ;;
- dll) datapackaging=library ;;
- static) datapackaging=static ;;
- *) AC_MSG_ERROR(bad value ${withval} for --with-data-packaging) ;;
- esac],
- [datapackaging=])
- # Note: 'thesysconfdir' is an evaluated version, for Man pages, so also for thedatadir, thelibdir, etc..
- # thesysconfdir=`eval echo $sysconfdir`
- dnl# AC_SUBST(thesysconfdir)
- dnl# thelibdir=`test "x$exec_prefix" = xNONE && exec_prefix="$prefix"; eval echo $libdir`
- dnl# AC_SUBST(thelibdir)
- thedatadir=`eval echo $datadir`
- dnl# AC_SUBST(thedatadir)
- # 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}.
- pkgicudatadir=$datadir
- thepkgicudatadir=$thedatadir
- AC_SUBST(pkgicudatadir)
- AC_SUBST(thepkgicudatadir)
- dnl# Shouldn't need the AC_SUBST
- if test x"$datapackaging" = x -o x"$datapackaging" = xauto; then
- # default to library
- datapackaging=library
- if test "$ENABLE_STATIC" = "YES"; then
- if test "$ENABLE_SHARED" != "YES"; then
- datapackaging=static
- fi
- fi
- fi
- datapackaging_dir=`eval echo $thedatadir`"/icu/${VERSION}"
- datapackaging_msg="(No explaination for mode $datapackaging.)"
- 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."
- 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."
- datapackaging_howfound="(unknown)"
- case "$datapackaging" in
- files)
- DATA_PACKAGING_MODE=files
- datapackaging_msg="ICU data will be stored in individual files."
- datapackaging_howfound="$datapackaging_msg_path"
- ;;
- archive)
- DATA_PACKAGING_MODE=common
- datapackaging_msg="ICU data will be stored in a single .dat file."
- datapackaging_howfound="$datapackaging_msg_path"
- ;;
- library)
- DATA_PACKAGING_MODE=dll
- datapackaging_msg="ICU data will be linked with ICU."
- if test "$ENABLE_STATIC" = "YES"; then
- datapackaging_msg="$datapackaging_msg A static data library will be built. "
- fi
- if test "$ENABLE_SHARED" = "YES"; then
- datapackaging_msg="$datapackaging_msg A shared data library will be built. "
- fi
- datapackaging_howfound="$datapackaging_msg_set"
- ;;
- static)
- DATA_PACKAGING_MODE=static
- datapackaging_msg="ICU data will be stored in a static library."
- datapackaging_howfound="$datapackaging_msg_set"
- ;;
- esac
- AC_SUBST(DATA_PACKAGING_MODE)
- # Sets a library suffix
- AC_MSG_CHECKING([for a library suffix to use])
- AC_ARG_WITH(library-suffix,
- [ --with-library-suffix=suffix tag a suffix to the library names [default=]],
- [ICULIBSUFFIX="${withval}"],
- [ICULIBSUFFIX=])
- msg=$ICULIBSUFFIX
- if test "$msg" = ""; then
- msg=none
- fi
- AC_MSG_RESULT($msg)
- AC_SUBST(ICULIBSUFFIX)
- if test "$ICULIBSUFFIX" != ""
- then
- U_HAVE_LIB_SUFFIX=1
- ICULIBSUFFIXCNAME=`echo _$ICULIBSUFFIX | sed 's/[^A-Za-z0-9_]/_/g'`
- UCONFIG_CPPFLAGS="${UCONFIG_CPPFLAGS} -DU_HAVE_LIB_SUFFIX=1 -DU_LIB_SUFFIX_C_NAME=${ICULIBSUFFIXCNAME} "
- else
- U_HAVE_LIB_SUFFIX=0
- fi
- AC_SUBST(U_HAVE_LIB_SUFFIX)
- AC_SUBST(ICULIBSUFFIXCNAME)
- # Enable/disable tests
- AC_ARG_ENABLE(tests,
- [ --enable-tests build ICU tests [default=yes]],
- [case "${enableval}" in
- yes) tests=true ;;
- no) tests=false ;;
- *) AC_MSG_ERROR(bad value ${enableval} for --enable-tests) ;;
- esac],
- tests=true)
- ICU_CONDITIONAL(TESTS, test "$tests" = true)
- # Enable/disable samples
- AC_ARG_ENABLE(samples,
- [ --enable-samples build ICU samples [default=yes]
- Additionally, the variable FORCE_LIBS may be set before calling configure.
- If set, it will REPLACE any automatic list of libraries.],
- [case "${enableval}" in
- yes) samples=true ;;
- no) samples=false ;;
- *) AC_MSG_ERROR(bad value ${enableval} for --enable-samples) ;;
- esac],
- samples=true)
- ICU_CONDITIONAL(SAMPLES, test "$samples" = true)
- ICUDATA_CHAR=$U_ENDIAN_CHAR
- # Platform-specific Makefile setup
- # set ICUDATA_CHAR to 'e' for any EBCDIC (which should be big endian) platform.
- case "${host}" in
- *-*-solaris*) platform=U_SOLARIS ;;
- *-*-linux*|*-*-gnu|*-*-k*bsd*-gnu|*-*-kopensolaris*-gnu) platform=U_LINUX ;;
- *-*-*bsd*|*-*-dragonfly*) platform=U_BSD ;;
- *-*-aix*) platform=U_AIX ;;
- *-*-hpux*) platform=U_HPUX ;;
- *-apple-darwin*|*-apple-rhapsody*) platform=U_DARWIN ;;
- *-*-cygwin*) platform=U_CYGWIN ;;
- *-*-mingw*) platform=U_MINGW ;;
- *-*ibm-openedition*|*-*-os390*) platform=OS390
- if test "${ICU_ENABLE_ASCII_STRINGS}" != "1"; then
- ICUDATA_CHAR="e"
- fi ;;
- *-*-os400*) platform=OS400
- if test "${ICU_ENABLE_ASCII_STRINGS}" != "1"; then
- ICUDATA_CHAR="e"
- fi ;;
- *-*-nto*) platform=U_QNX ;;
- *-dec-osf*) platform=U_OSF ;;
- *-*-beos) platform=U_BEOS ;;
- *-*-irix*) platform=U_IRIX ;;
- *-ncr-*) platform=U_MPRAS ;;
- *) platform=U_UNKNOWN_PLATFORM ;;
- esac
- AC_SUBST(ICUDATA_CHAR)
- AC_SUBST(platform)
- platform_make_fragment_name="$icu_cv_host_frag"
- platform_make_fragment='$(top_srcdir)/config/'"$platform_make_fragment_name"
- AC_SUBST(platform_make_fragment_name)
- AC_SUBST(platform_make_fragment)
- if test "${FORCE_LIBS}" != ""; then
- echo " *** Overriding automatically chosen [LIBS=$LIBS], using instead [FORCE_LIBS=${FORCE_LIBS}]" 1>&6
- LIBS=${FORCE_LIBS}
- fi
- # Now that we're done using CPPFLAGS etc. for tests, we can change it
- # for build.
- if test "${CC}" == "clang"; then
- CLANGCFLAGS="-Qunused-arguments -Wno-parentheses-equality"
- else
- CLANGCFLAGS=""
- fi
- if test "${CXX}" == "clang++"; then
- CLANGCXXFLAGS="-Qunused-arguments -Wno-parentheses-equality"
- else
- CLANGCXXFLAGS=""
- fi
- CPPFLAGS="$CPPFLAGS \$(THREADSCPPFLAGS)"
- CFLAGS="$CFLAGS \$(THREADSCFLAGS) $CLANGCFLAGS"
- CXXFLAGS="$CXXFLAGS \$(THREADSCXXFLAGS) $CLANGCXXFLAGS"
- AC_SUBST(LIBCFLAGS)
- AC_SUBST(LIBCXXFLAGS)
- # append all config cppflags
- CPPFLAGS="$CPPFLAGS $CONFIG_CPPFLAGS $UCONFIG_CPPFLAGS"
- echo "CPPFLAGS=$CPPFLAGS"
- echo "CFLAGS=$CFLAGS"
- echo "CXXFLAGS=$CXXFLAGS"
- # output the Makefiles
- AC_CONFIG_FILES([icudefs.mk \
- Makefile \
- data/pkgdataMakefile \
- config/Makefile.inc \
- config/icu.pc \
- config/pkgdataMakefile \
- data/Makefile \
- stubdata/Makefile \
- common/Makefile \
- i18n/Makefile \
- layoutex/Makefile \
- io/Makefile \
- extra/Makefile \
- extra/uconv/Makefile \
- extra/uconv/pkgdataMakefile \
- extra/scrptrun/Makefile \
- tools/Makefile \
- tools/ctestfw/Makefile \
- tools/toolutil/Makefile \
- tools/makeconv/Makefile \
- tools/genrb/Makefile \
- tools/genccode/Makefile \
- tools/gencmn/Makefile \
- tools/gencnval/Makefile \
- tools/gendict/Makefile \
- tools/gentest/Makefile \
- tools/gennorm2/Makefile \
- tools/genbrk/Makefile \
- tools/gensprep/Makefile \
- tools/icuinfo/Makefile \
- tools/icupkg/Makefile \
- tools/icuswap/Makefile \
- tools/pkgdata/Makefile \
- tools/tzcode/Makefile \
- tools/gencfu/Makefile \
- test/Makefile \
- test/compat/Makefile \
- test/testdata/Makefile \
- test/testdata/pkgdataMakefile \
- test/hdrtst/Makefile \
- test/intltest/Makefile \
- test/cintltst/Makefile \
- test/iotest/Makefile \
- test/letest/Makefile \
- test/perf/Makefile \
- test/perf/collationperf/Makefile \
- test/perf/collperf/Makefile \
- test/perf/collperf2/Makefile \
- test/perf/dicttrieperf/Makefile \
- test/perf/ubrkperf/Makefile \
- test/perf/charperf/Makefile \
- test/perf/convperf/Makefile \
- test/perf/normperf/Makefile \
- test/perf/DateFmtPerf/Makefile \
- test/perf/howExpensiveIs/Makefile \
- test/perf/strsrchperf/Makefile \
- test/perf/unisetperf/Makefile \
- test/perf/usetperf/Makefile \
- test/perf/ustrperf/Makefile \
- test/perf/utfperf/Makefile \
- test/perf/utrie2perf/Makefile \
- test/perf/leperf/Makefile \
- samples/Makefile samples/date/Makefile \
- samples/cal/Makefile samples/layout/Makefile])
- AC_OUTPUT
- echo
- echo "ICU for C/C++ $VERSION is ready to be built."
- echo "=== Important Notes: ==="
- echo "Data Packaging: $datapackaging"
- echo " This means: $datapackaging_msg"
- echo " To locate data: $datapackaging_howfound"
- if test -n "`$U_MAKE -v 2>&1 | grep '^GNU Make'`"; then
- echo "Building ICU: Use a GNU make such as $U_MAKE to build ICU."
- else
- echo "** WARNING: $U_MAKE may not be GNU make."
- echo "This may cause ICU to fail to build. Please make sure that GNU make"
- echo "is in your PATH so that the configure script can detect its location."
- fi
- if test "x$AR" = "xfalse"; then
- echo "*** WARNING: Archiver ar not found. Set AR= or fix PATH. Some builds (such as static) may fail."
- fi
- AC_MSG_CHECKING([the version of "$U_MAKE"])
- if "$U_MAKE" -f "$srcdir/config/gmakever.mk" PLATFORM="$platform"; then
- AC_MSG_RESULT([ok])
- else
- AC_MSG_RESULT([too old or test failed - try upgrading GNU Make])
- fi
- AC_SUBST(UCONFIG_CPPFLAGS)
- if test -n "$UCONFIG_CPPFLAGS"; then
- HDRFILE="uconfig.h.prepend"
- echo "*** WARNING: You must set the following flags before code compiled against this ICU will function properly:"
- echo
- echo " ${UCONFIG_CPPFLAGS}"
- echo
- 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.'
- echo "Creating the file ${HDRFILE}"
- echo
- echo '--------------- ' "${HDRFILE}"
- echo > "${HDRFILE}"
- echo '/* ICU customizations: put these lines at the top of uconfig.h */' >> "${HDRFILE}"
- echo >> "${HDRFILE}"
- for flag in ${UCONFIG_CPPFLAGS};
- do
- echo " /* $flag */" >> "${HDRFILE}"
- case "${flag}" in
- -D*=*)
- [ \echo "${flag}" | sed -n 's%-D\([^=]*\)=%#define \1 %p' >> "${HDRFILE}" ]
- \echo >> "${HDRFILE}"
- ;;
- -D*)
- [ \echo "${flag}" | sed -n 's%-D\([^=]*\)%#define \1 %p' >> "${HDRFILE}" ]
- \echo >> "${HDRFILE}"
- ;;
- *)
- \echo "/* Not sure how to handle this argument: ${flag} */" >> "${HDRFILE}"
- \echo >> "${HDRFILE}"
- ;;
- esac
- done
- cat "${HDRFILE}"
- \echo "/* End of ${HDRFILE} ------------ */" >> "${HDRFILE}"
- echo >> "${HDRFILE}"
- echo '--------------- end ' "${HDRFILE}"
- fi
- AC_SUBST(UCONFIG_CFLAGS)
- if test -n "$UCONFIG_CFLAGS"; then
- echo "C apps may want to build with CFLAGS = ${UCONFIG_CFLAGS}"
- fi
- AC_SUBST(UCONFIG_CXXFLAGS)
- if test -n "$UCONFIG_CXXFLAGS"; then
- echo "C++ apps may want to build with CXXFLAGS = ${UCONFIG_CXXFLAGS}"
- fi
- if test "$tools" = false;
- then
- echo "## Note: you have disabled ICU's tools. This ICU cannot build its own data or tests."
- echo "## Expect build failures in the 'data', 'test', and other directories."
- fi
- $as_unset _CXX_CXXSUFFIX
|