dnl
-dnl Initialize configure bits.
+dnl Initialize basic configure bits, set toplevel_srcdir for Makefiles.
dnl
-dnl GLIBCPP_CONFIGURE
-AC_DEFUN(GLIBCPP_CONFIGURE, [
+dnl GLIBCPP_TOPREL_CONFIGURE
+AC_DEFUN(GLIBCPP_TOPREL_CONFIGURE, [
dnl Default to --enable-multilib (this is also passed by default
dnl from the ubercommon-top-level configure)
AC_ARG_ENABLE(multilib,
AC_CONFIG_AUX_DIR(${srcdir}/$toprel)
toplevel_srcdir=\${top_srcdir}/$toprel
AC_SUBST(toplevel_srcdir)
+])
-#possibly test for the presence of the compiler sources here?
-
+dnl
+dnl Initialize the rest of the library configury.
+dnl
+dnl GLIBCPP_CONFIGURE
+AC_DEFUN(GLIBCPP_CONFIGURE, [
# Export build and source directories.
# These need to be absolute paths, yet at the same time need to
# canonicalize only relative paths, because then amd will not unmount
LIB_AC_PROG_CXX
+ # For directory versioning (e.g., headers) and other variables.
+ AC_MSG_CHECKING([for GCC version number])
+ gcc_version=`$glibcpp_CXX -dumpversion`
+ AC_MSG_RESULT($gcc_version)
+
# For some reason, gettext needs this.
AC_ISC_POSIX
# Find platform-specific directories containing configuration info. In
# addition to possibly modifying the same flags, it also sets up symlinks.
GLIBCPP_CHECK_TARGET
-
])
AC_TRY_RUN([
#define _GNU_SOURCE 1
#include <locale.h>
+ #include <string.h>
+ #if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
+ extern __typeof(newlocale) __newlocale;
+ extern __typeof(duplocale) __duplocale;
+ extern __typeof(strcoll_l) __strcoll_l;
+ #endif
int main()
{
const char __one[] = "Äuglein Augmen";
CLOCALE_H=config/locale/generic/c_locale.h
CLOCALE_CC=config/locale/generic/c_locale.cc
CCODECVT_H=config/locale/generic/codecvt_specializations.h
+ CCODECVT_CC=config/locale/generic/codecvt_members.cc
CCOLLATE_CC=config/locale/generic/collate_members.cc
CCTYPE_CC=config/locale/generic/ctype_members.cc
CMESSAGES_H=config/locale/generic/messages_members.h
CMONEY_CC=config/locale/generic/monetary_members.cc
CNUMERIC_CC=config/locale/generic/numeric_members.cc
CTIME_CC=config/locale/generic/time_members.cc
+ CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h
;;
xgnu)
AC_MSG_RESULT(gnu)
CLOCALE_H=config/locale/gnu/c_locale.h
CLOCALE_CC=config/locale/gnu/c_locale.cc
CCODECVT_H=config/locale/ieee_1003.1-2001/codecvt_specializations.h
+ CCODECVT_CC=config/locale/gnu/codecvt_members.cc
CCOLLATE_CC=config/locale/gnu/collate_members.cc
CCTYPE_CC=config/locale/gnu/ctype_members.cc
CMESSAGES_H=config/locale/gnu/messages_members.h
CMONEY_CC=config/locale/gnu/monetary_members.cc
CNUMERIC_CC=config/locale/gnu/numeric_members.cc
CTIME_CC=config/locale/gnu/time_members.cc
+ CLOCALE_INTERNAL_H=config/locale/gnu/c++locale_internal.h
;;
xieee_1003.1-2001)
AC_MSG_RESULT(generic)
CLOCALE_H=config/locale/ieee_1003.1-2001/c_locale.h
CLOCALE_CC=config/locale/ieee_1003.1-2001/c_locale.cc
CCODECVT_H=config/locale/ieee_1003.1-2001/codecvt_specializations.h
+ CCODECVT_CC=config/locale/generic/codecvt_members.cc
CCOLLATE_CC=config/locale/generic/collate_members.cc
CCTYPE_CC=config/locale/generic/ctype_members.cc
CMESSAGES_H=config/locale/ieee_1003.1-2001/messages_members.h
CMONEY_CC=config/locale/generic/monetary_members.cc
CNUMERIC_CC=config/locale/generic/numeric_members.cc
CTIME_CC=config/locale/generic/time_members.cc
+ CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h
;;
*)
echo "$enable_clocale is an unknown locale package" 1>&2
glibcpp_localedir=${glibcpp_builddir}/po/share/locale
AC_SUBST(glibcpp_localedir)
+ # For the time being, transform ctype_noninline.h to ctype_members_char.cc
+# CCTYPE_CHAR_CC=config/${os_include_dir}/ctype_noninline.h
+
AC_SUBST(USE_NLS)
AC_SUBST(CLOCALE_H)
AC_SUBST(CCODECVT_H)
AC_SUBST(CMESSAGES_H)
AC_LINK_FILES($CLOCALE_CC, src/c++locale.cc)
- AC_LINK_FILES($CCOLLATE_CC, src/collate.cc)
- AC_LINK_FILES($CCTYPE_CC, src/ctype.cc)
- AC_LINK_FILES($CMESSAGES_CC, src/messages.cc)
- AC_LINK_FILES($CMONEY_CC, src/monetary.cc)
- AC_LINK_FILES($CNUMERIC_CC, src/numeric.cc)
- AC_LINK_FILES($CTIME_CC, src/time.cc)
+ AC_LINK_FILES($CCODECVT_CC, src/codecvt_members.cc)
+ AC_LINK_FILES($CCOLLATE_CC, src/collate_members.cc)
+# AC_LINK_FILES($CCTYPE_CHAR_CC, src/ctype_members_char.cc)
+ AC_LINK_FILES($CCTYPE_CC, src/ctype_members.cc)
+ AC_LINK_FILES($CMESSAGES_CC, src/messages_members.cc)
+ AC_LINK_FILES($CMONEY_CC, src/monetary_members.cc)
+ AC_LINK_FILES($CNUMERIC_CC, src/numeric_members.cc)
+ AC_LINK_FILES($CTIME_CC, src/time_members.cc)
+ AC_LINK_FILES($CLOCALE_INTERNAL_H, src/c++locale_internal.h)
])
dnl GLIBCPP_ENABLE_CHEADERS
dnl --enable-cheaders= [does stuff].
dnl --disable-cheaders [does not do anything, really].
-dnl + This will eventually need to be 'c_shadow' by default.
dnl + Usage: GLIBCPP_ENABLE_CHEADERS[(DEFAULT)]
-dnl Where DEFAULT is either `c' or `c_std' or 'c_shadow'.
+dnl Where DEFAULT is either `c' or `c_std'.
dnl If ommitted, it defaults to `c_std'.
AC_DEFUN(GLIBCPP_ENABLE_CHEADERS, [dnl
define([GLIBCPP_ENABLE_CHEADERS_DEFAULT], ifelse($1, c_std, c_std, c_std))dnl
c_std)
enable_cheaders=c_std
;;
- c_shadow)
- enable_cheaders=c_shadow
- ;;
*) AC_MSG_ERROR([Unknown argument to enable/disable "C" headers])
;;
esac],
dnl Option parsed, now set things appropriately
case "$enable_cheaders" in
- c_shadow)
- C_INCLUDE_DIR='${glibcpp_srcdir}/include/c_shadow'
- ;;
c_std)
C_INCLUDE_DIR='${glibcpp_srcdir}/include/c_std'
;;
dnl LIBMATH_INCLUDES
dnl LIBSUPCXX_INCLUDES
dnl LIBIO_INCLUDES
-dnl CSHADOW_INCLUDES
dnl
dnl GLIBCPP_EXPORT_INCLUDES
AC_DEFUN(GLIBCPP_EXPORT_INCLUDES, [
glibcpp_toolexeclibdir=no
glibcpp_prefixdir=${prefix}
-AC_MSG_CHECKING([for interface version number])
-libstdcxx_interface=$INTERFACE
-AC_MSG_RESULT($libstdcxx_interface)
-
# Process the option --with-gxx-include-dir=<path to include-files directory>
AC_MSG_CHECKING([for --with-gxx-include-dir])
AC_ARG_WITH(gxx-include-dir,
# Option set, now we can test it.
AC_MSG_RESULT($version_specific_libs)
+# Default case for install directory for include files.
+if test $version_specific_libs = no && test $gxx_include_dir = no; then
+ gxx_include_dir='$(prefix)'/include/c++/${gcc_version}
+fi
+
+# Version-specific runtime libs processing.
if test $version_specific_libs = yes; then
# Need the gcc compiler version to know where to install libraries
# and header files if --enable-version-specific-runtime-libs option
# is selected.
- changequote(,)dnl
- gcc_version_trigger=${srcdir}/../gcc/version.c
- gcc_version_full=`grep version_string ${gcc_version_trigger} | sed -e 's/.*\"\([^\"]*\)\".*/\1/'`
- gcc_version=`echo ${gcc_version_full} | sed -e 's/\([^ ]*\) .*/\1/'`
if test x"$gxx_include_dir" = x"no"; then
- gxx_include_dir='$(libdir)/gcc-lib/$(target_alias)/'${gcc_version}/include/g++
+ gxx_include_dir='$(libdir)/gcc-lib/$(target_alias)/'${gcc_version}/include/c++
fi
glibcpp_toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
glibcpp_toolexeclibdir='$(toolexecdir)/'${gcc_version}'$(MULTISUBDIR)'
- changequote([,])dnl
-fi
-
-# Default case for install directory for include files.
-if test $version_specific_libs = no &&
- test $gxx_include_dir = no; then
- gxx_include_dir='$(prefix)'/include/g++-${libstdcxx_interface}
fi
# Calculate glibcpp_toolexecdir, glibcpp_toolexeclibdir
# Look for setenv, so that extended locale tests can be performed.
GLIBCPP_CHECK_STDLIB_DECL_AND_LINKAGE_3(setenv)
+
+ # Export file names for ABI checking.
+ baseline_file="${glibcpp_srcdir}/config/abi/${abi_baseline_triplet}/baseline_symbols.txt"
+ AC_SUBST(baseline_file)
+
+ # Don't do ABI checking unless native.
+ AM_CONDITIONAL(GLIBCPP_BUILD_ABI_CHECK,
+ test x"$build" = x"$host" && test -z "$with_cross_host")
])
;;
gnu)
LINKER_MAP=config/linker-map.gnu
+ AC_DEFINE(_GLIBCPP_SYMVER)
;;
esac