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