9fbbbf01bc
X-SVN-Rev: 1938
500 lines
12 KiB
Plaintext
500 lines
12 KiB
Plaintext
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 <iostream.h>],[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 <stddef.h>
|
|
#endif
|
|
#if HAVE_WCHAR_H
|
|
#include <wchar.h>
|
|
#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
|