dnl -*-m4-*- dnl configure.in for ICU dnl Copyright (c) 1999-2000, International Business Machines Corporation and dnl others. All Rights Reserved. dnl Stephen F. Booth dnl Process this file with autoconf to produce a configure script AC_INIT(common/unicode/utypes.h) AC_CONFIG_HEADER(common/icucfg.h) PACKAGE="icu" AC_SUBST(PACKAGE) VERSION="1.6" AC_SUBST(VERSION) UNICODE_VERSION="3.0.0" AC_SUBST(UNICODE_VERSION) dnl Shouldn't need the AC_SUBST CPPFLAGS="${CPPFLAGS} -I." AC_SUBST(CPPFLAGS) dnl Checks for programs AC_PROG_CC AC_PROG_CXX AC_PROG_INSTALL AC_CHECK_PROG(AUTOCONF, autoconf, autoconf, true) AC_CHECK_PROG(STRIP, strip, strip, true) dnl Check for the platform make AC_PATH_PROGS(U_MAKE, gmake, make) AC_SUBST(U_MAKE) dnl Determine how strict we want to be when compiling AC_CHECK_STRICT_COMPILE dnl Determine the host system and Makefile fragment AC_CANONICAL_HOST case "${host}" in *-*-solaris*) if test "$ac_cv_prog_gcc" = no; then AC_MSG_CHECKING([if we have a 64-bit (sparcv9) compiler]) SOL64=`$CXX -xarch=v9 2>&1` if test -z "$SOL64"; then AC_MSG_RESULT(yes) SOL64=yes else AC_MSG_RESULT(no) SOL64=no fi fi ;; *) SOL64=no ;; esac ICU_CHECK_MH_FRAG hpuxcma=false dnl Checks for libraries and other host specific stuff dnl On HP/UX, don't link to -lm from a shared lib because it isn't dnl PIC (at least on 10.2) case "${host}" in *-*-hpux10*) hpuxcma=true AC_CHECK_LIB(m, floor, LIB_M="-lm") ;; *-*-hpux*) AC_CHECK_LIB(m, floor, LIB_M="-lm") ;; *) AC_CHECK_LIB(m, floor) LIB_M="" ;; esac AC_SUBST(LIB_M) dnl Enable/disable hpuxcma if test $hpuxcma = false; then AC_ARG_ENABLE(hpuxcma, [ --enable-hpuxcma build ICU with HPUX CMA threads (only ver>=11) [default=no]], [case "${enableval}" in yes) hpuxcma=true;; no) hpuxcma=false;; *) AC_MSG_ERROR(bad value ${enableval} for --enable-hpuxcma) ;; esac], ) fi dnl Note, we set the conditional outside of IF for non hpux plats ICU_CONDITIONAL(HPUX_CMA, test "$hpuxcma" = true) dnl Should this be a nested CASE? if test $hpuxcma = true; then case "${host}" in *-*-hpux*) hpuxcma=true ;; *) AC_MSG_ERROR(--enable-hpuxcma is not valid on this platform ${host}) ;; esac fi threads=true dnl Enable/disable threads AC_ARG_ENABLE(threads, [ --enable-threads build ICU with threads [default=yes]], [case "${enableval}" in yes) threads=true ;; no) threads=false ;; *) AC_MSG_ERROR(bad value ${enableval} for --enable-threads) ;; esac], threads=true) ICU_CONDITIONAL(THREADS, test "$threads" = true) ICU_USE_THREADS=0 dnl Test for HPUX cma threads first.. if test $hpuxcma = true; then dnl HPUX cma case if test $threads = true; then AC_CHECK_LIB(cma, pthread_create) if test $ac_cv_lib_cma_pthread_create = yes; then ICU_USE_THREADS=1 fi fi else if test $threads = true; then dnl special pthread handling dnl AIX uses pthreads instead of pthread, and HP/UX uses cma dnl FreeBSD users -pthread AC_CHECK_LIB(pthread, pthread_create) if test $ac_cv_lib_pthread_pthread_create = yes; then ICU_USE_THREADS=1 else dnl For HP 11 AC_CHECK_LIB(pthread, pthread_mutex_init) if test $ac_cv_lib_pthread_pthread_mutex_init = yes; then ICU_USE_THREADS=1 fi fi if test $ICU_USE_THREADS = 0; then AC_CHECK_LIB(pthreads, pthread_create) if test $ac_cv_lib_pthreads_pthread_create = yes; then ICU_USE_THREADS=1 fi fi if test $ICU_USE_THREADS = 0; then AC_CHECK_LIB(cma, pthread_create) if test $ac_cv_lib_cma_pthread_create = yes; then ICU_USE_THREADS=1 fi fi dnl If all other thread tests fail, try BSD's -pthread if test $ICU_USE_THREADS = 0; then AC_PTHREAD_FREEBSD fi AC_CHECK_FUNC(pthread_mutex_lock) if test $ac_cv_func_pthread_mutex_lock = yes; then ICU_USE_THREADS=1 fi fi fi AC_SUBST(ICU_USE_THREADS) dnl FreeBSD needs a WCS library. AC_CHECK_LIB(wcs, wcscpy) # check for dlopen() HAVE_DLOPEN=0 #add more libs here.. AC_CHECK_LIB(dl, dlopen) if test $ac_cv_lib_dl_dlopen = yes; then HAVE_DLOPEN=1 fi if test $HAVE_DLOPEN = 0; then AC_CHECK_LIB(dld, shl_load) if test $ac_cv_lib_dld_shl_load = yes; then HAVE_DLOPEN=1 fi fi dnl added for s/390 DLL loading detection if test $HAVE_DLOPEN = 0; then AC_CHECK_FUNC(dllload) if test $ac_cv_func_dllload = yes; then HAVE_DLOPEN=1 fi fi AC_SUBST(HAVE_DLOPEN) dnl Checks for header files AC_CHECK_HEADERS(inttypes.h) if test $ac_cv_header_inttypes_h = no; then U_HAVE_INTTYPES_H=0 else U_HAVE_INTTYPES_H=1 fi AC_SUBST(U_HAVE_INTTYPES_H) if test x$U_IOSTREAM_SOURCE = x then AC_LANG_SAVE AC_LANG_CPLUSPLUS U_IOSTREAM_SOURCE=0 AC_CHECK_HEADER(iostream) if test $ac_cv_header_iostream = yes then U_IOSTREAM_SOURCE=199711 else AC_CHECK_HEADER(iostream.h) if test $ac_cv_header_iostream_h = yes; then AC_MSG_CHECKING([whether ostream is really defined]) AC_CACHE_VAL(ac_cv_iostream_ok, AC_TRY_LINK([#include ],[ostream &testout = cout; testout << "test" << endl;],ac_cv_iostream_ok=yes,ac_cv_iostream_ok=no)) AC_MSG_RESULT($ac_cv_iostream_ok) if test $ac_cv_iostream_ok = yes then U_IOSTREAM_SOURCE=198506 fi fi fi fi AC_SUBST(U_IOSTREAM_SOURCE) AC_LANG_RESTORE dnl Check for endianness AC_C_BIGENDIAN(unknown) if test $ac_cv_c_bigendian = no; then U_IS_BIG_ENDIAN=0 else U_IS_BIG_ENDIAN=1 fi AC_SUBST(U_IS_BIG_ENDIAN) dnl 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 else AC_DEFINE(HAVE_WCHAR_H) U_HAVE_WCHAR_H=1 fi AC_SUBST(U_HAVE_WCHAR_H) ac_default_sizeof_wchar_t=4 AC_DO_CHECK_SIZEOF(wchar_t,$ac_default_sizeof_wchar_t,[ #if STDC_HEADERS #include #endif #if HAVE_WCHAR_H #include #endif]) dnl We could set ac_cv_sizeof_wchar_t to the default if the check returned dnl 0 (unknown) but we'd rather do it in the headers, so we know we had no dnl clue at configure time. U_SIZEOF_WCHAR_T=$ac_cv_sizeof_wchar_t AC_SUBST(U_SIZEOF_WCHAR_T) dnl 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(bool_t,signed char) if test $ac_cv_type_int8_t = no; then HAVE_INT8_T=0 else HAVE_INT8_T=1 fi AC_SUBST(HAVE_INT8_T) if test $ac_cv_type_uint8_t = no; then HAVE_UINT8_T=0 else HAVE_UINT8_T=1 fi AC_SUBST(HAVE_UINT8_T) if test $ac_cv_type_int16_t = no; then HAVE_INT16_T=0 else HAVE_INT16_T=1 fi AC_SUBST(HAVE_INT16_T) if test $ac_cv_type_uint16_t = no; then HAVE_UINT16_T=0 else HAVE_UINT16_T=1 fi AC_SUBST(HAVE_UINT16_T) if test $ac_cv_type_int32_t = no; then HAVE_INT32_T=0 else HAVE_INT32_T=1 fi AC_SUBST(HAVE_INT32_T) if test $ac_cv_type_uint32_t = no; then HAVE_UINT32_T=0 else HAVE_UINT32_T=1 fi AC_SUBST(HAVE_UINT32_T) if test $ac_cv_type_bool_t = no; then HAVE_BOOL_T=0 else HAVE_BOOL_T=1 fi AC_SUBST(HAVE_BOOL_T) dnl 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) dnl Enable/disable mapped files [default DLL] AC_ARG_ENABLE(mapped, [ --enable-mapped try to use memory-mapped files (instead of DLLs) when possible [default=no]], [case "${enableval}" in yes) mapped=true ;; no) mapped=false ;; *) AC_MSG_ERROR(bad value ${enableval} for --enable-mapped) ;; esac], mapped=false) ICU_CONDITIONAL(USE_MAPPED, test "$mapped" = true -o "$HAVE_DLOPEN" = 0) dnl 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) dnl 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) dnl Platform-specific Makefile setup case "${host}" in *-*-solaris*) platform=U_SOLARIS ;; *-*-linux*) platform=U_LINUX ;; *-*-freebsd*) platform=U_LINUX ;; *-*-aix*) platform=AIX ;; *-sequent-*) platform=PTX ;; *-*-hpux*) platform=HPUX ;; *-*-irix*) platform=IRIX ;; *-*-os390*) platform=OS390 ;; *-*-os400*) platform=OS400 ;; *-apple-darwin*|*-apple-rhapsody*) platform=U_DARWIN ;; *) platform=U_UNKNOWN_PLATFORM ;; esac AC_SUBST(platform) host_frag=$icu_cv_host_frag AC_SUBST_FILE(host_frag) dnl Handle -rpath options for shared library paths case "${host}" in *-*-solaris*) ld_rpath_suf=":" ;; *-*-linux*) ld_rpath_suf=" " ;; *-*-freebsd*) ld_rpath_suf=" " ;; *-*-aix*) ld_rpath_suf="" ;; *-sequent-*) ld_rpath_suf="" ;; *-*-hpux*) ld_rpath_suf=":" ;; *-*-irix*) ld_rpath_suf=" " ;; *-*-os390*) ld_rpath_suf="" ;; *-*-os400*) ld_rpath_suf=" " ;; *) ld_rpath_suf="" ;; esac AC_SUBST(ld_rpath_suf) dnl On HP/UX, main() functions compiled in C don't invoke dnl static constructors in C++ libs. Hack around that here dnl by renaming some .c files to .cpp case "${host}" in *-*-hpux*) for file in samples/date/date \ samples/cal/cal test/cintltst/cintltst \ tools/makeconv/makeconv tools/genrb/genrb \ tools/rbdump/read tools/genccode/genccode \ tools/gencmn/gencmn tools/gencnval/gencnval \ tools/gennames/gennames tools/gentest/gentest do if test -f $file.c; then mv $file.c $file.cpp else echo "# $file.c does not exist or is already renamed [warning]" fi done ;; esac if test "${FORCE_LIBS}" != ""; then echo " *** Overriding automatically chosen [LIBS=$LIBS], using instead [FORCE_LIBS=${FORCE_LIBS}]" 1>&6 LIBS=${FORCE_LIBS} fi dnl SPECIAL handling for HPUX 10 and also '11 & --enable-hpuxcma=true' if test $hpuxcma = true; then CPPFLAGS="${CPPFLAGS} -D_PTHREADS_DRAFT_4 -DHPUX_CMA" fi dnl END special if test "$ac_cv_lib_dld_shl_load" = "yes"; then CPPFLAGS="${CPPFLAGS} -DICU_USE_SHL_LOAD" fi if test -f ./configure.in then # they are normal. Build is in .. (note this is mostly for the top level script) DATABUILDDIR=`pwd`/../data/ RELATIVEDATADIR=../data/ else DATABUILDDIR=`pwd`/data/ RELATIVEDATADIR=data/ fi AC_SUBST(DATABUILDDIR) AC_SUBST(RELATIVEDATADIR) dnl added for s/390 DLL loading detection if test "$ac_cv_func_dllload" = "yes"; then CPPFLAGS="${CPPFLAGS} -DICU_USE_SHL_LOAD" fi dnl output the Makefiles AC_OUTPUT([Makefile \ common/Makefile config/Makefile.inc i18n/Makefile \ extra/Makefile extra/ustdio/Makefile \ tools/Makefile tools/ctestfw/Makefile tools/makeconv/Makefile \ tools/genrb/Makefile \ tools/pkgdata/Makefile tools/icupkg.inc \ tools/rbdump/Makefile tools/genccode/Makefile tools/gencmn/Makefile tools/gencnval/Makefile tools/gentz/Makefile \ tools/gennames/Makefile tools/toolutil/Makefile tools/gentest/Makefile tools/genprops/Makefile \ test/Makefile test/intltest/Makefile test/cintltst/Makefile \ test/ieeetest/Makefile \ samples/Makefile samples/date/Makefile samples/cal/Makefile \ samples/XMLConverter/Makefile \ common/unicode/platform.h]) dnl create the data directory if test -d $DATABUILDDIR then : else echo creating $DATABUILDDIR mkdir -p $DATABUILDDIR fi if test -d $DATABUILDDIR/../source/test/testdata then : else echo creating $DATABUILDDIR/../source/test/testdata mkdir -p $DATABUILDDIR/../source/test/testdata fi if test $ICU_USE_THREADS = 0; then echo " *** Note: configuring the ICU without pthread support or testing. If this isn't what you want, then run configure with --enable-threads=yes or check the messages [above] to see why we couldn't find pthread_create()" 1>&6 fi