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