blob: 7ecd14d6991bae39688c22cdd2e642e6c5c5c882 [file] [log] [blame]
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/utypes.h)
AC_CONFIG_HEADER(common/icucfg.h)
PACKAGE="icu"
AC_SUBST(PACKAGE)
VERSION="1.4.1.2"
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 Determine the host system and Makefile fragment
AC_CANONICAL_HOST
ICU_CHECK_MH_FRAG
hpuxcma=false
dnl Checks for libraries
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
AC_SUBST(HAVE_DLOPEN)
dnl Checks for header files
AC_CHECK_HEADERS(inttypes.h)
if test $ac_cv_header_inttypes_h = no; then
HAVE_INTTYPES_H=0
else
HAVE_INTTYPES_H=1
fi
AC_SUBST(HAVE_INTTYPES_H)
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 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 mapped DLL
AC_ARG_ENABLE(mapped-dll,
[ --enable-mapped-dll Build the common file into a DLL [default=no]],
[case "${enableval}" in
yes) mappeddll=true ;;
no) mappeddll=false ;;
*) AC_MSG_ERROR(bad value ${enableval} for --enable-mapped-dll) ;;
esac],
mappeddll=false)
if test "$mappeddll" = true -a "$mapped" = false; then
AC_MSG_ERROR(must set --enable-mapped=yes if --enable-mapped-dll=yes)
fi
ICU_CONDITIONAL(MAPPED_DLL, test "$mappeddll" = true)
AC_SUBST(U_MAPPED_DLL)
if test "$mappeddll" = true; then
U_MAPPED_DLL=1
else
U_MAPPED_DLL=0
fi
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=SOLARIS ;;
*-*-linux*) platform=LINUX ;;
*-*-freebsd*) platform=LINUX ;;
*-*-aix*) platform=AIX ;;
*-*-hpux*) platform=HPUX ;;
*-*-irix*) platform=IRIX ;;
*-*-os390*) platform=OS390 ;;
*-*-os400*) platform=OS400 ;;
*) platform=UNKNOWN ;;
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="" ;;
*-*-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 tools/gencol/gencol 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
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
dnl output the Makefiles
AC_OUTPUT([Makefile \
common/Makefile common/unicode/platform.h config/Makefile i18n/Makefile \
extra/Makefile extra/ustdio/Makefile \
tools/Makefile tools/ctestfw/Makefile tools/makeconv/Makefile \
tools/genrb/Makefile tools/gencol/Makefile \
tools/rbdump/Makefile tools/genccode/Makefile tools/gencmn/Makefile tools/gencnval/Makefile tools/gentz/Makefile \
tools/gennames/Makefile tools/toolutil/Makefile \
test/Makefile test/intltest/Makefile test/cintltst/Makefile \
test/ieeetest/Makefile test/testmap/Makefile \
samples/Makefile samples/date/Makefile samples/cal/Makefile \
samples/XMLConverter/Makefile])
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