+2003-08-05 Phil Edwards <pme@gcc.gnu.org>
+
+ * configure.in: Rename...
+ * configure.ac: ...to this.
+ * docs/html/17_intro/porting.texi: Update name.
+
+ * docs/html/17_intro/porting.html: Regenerate.
+ * config.h.in, Makefile.in, include/Makefile.in, libmath/Makefile.in,
+ libsupc++/Makefile.in, po/Makefile.in, src/Makefile.in,
+ testsuite/Makefile.in: Regenerate (picks up new dependancy).
+
2003-08-05 Phil Edwards <pme@gcc.gnu.org>
* acinclude.m4 (GLIBCXX_ENABLE_SJLJ_EXCEPTIONS): Put down the crack
../ltcf-c.sh ../ltcf-cxx.sh ../ltcf-gcj.sh ../ltconfig \
../ltmain.sh ../missing ../mkinstalldirs ../ylwrap ChangeLog \
Makefile.am Makefile.in acconfig.h acinclude.m4 aclocal.m4 \
- config.h.in configure configure.in
+ config.h.in configure configure.ac
DIST_SUBDIRS = $(SUBDIRS)
all: config.h
$(MAKE) $(AM_MAKEFLAGS) all-recursive
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
configure.lineno
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4)
cd $(top_srcdir) && \
$(AUTOMAKE) --foreign Makefile
Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status
$(top_builddir)/config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
$(SHELL) ./config.status --recheck
-$(srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES)
+$(srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(srcdir)/configure.ac $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES)
cd $(srcdir) && $(AUTOCONF)
-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ configure.in acinclude.m4
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ configure.ac acinclude.m4
cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
config.h: stamp-h1
@rm -f stamp-h1
cd $(top_builddir) && $(SHELL) ./config.status config.h
-$(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(top_srcdir)/configure.in $(ACLOCAL_M4) $(top_srcdir)/acconfig.h
+$(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(top_srcdir)/configure.ac $(ACLOCAL_M4) $(top_srcdir)/acconfig.h
cd $(top_srcdir) && $(AUTOHEADER)
touch $(srcdir)/config.h.in
-/* config.h.in. Generated from configure.in by autoheader. */
+/* config.h.in. Generated from configure.ac by autoheader. */
// acconfig.h symbols and macros for libstdc++ v3 -*- C++ -*-
// Defines libstdc++ version.
--- /dev/null
+# Process this file with autoconf to produce a configure script, like so:
+# aclocal && autoconf && autoheader && automake
+
+AC_PREREQ(2.57)
+AC_INIT(libstdc++, version-unused)
+AC_CONFIG_SRCDIR(src/ios.cc)
+AC_CONFIG_HEADER(config.h)
+
+# This works around the fact that libtool configuration may change LD
+# for this particular configuration, but some shells, instead of
+# keeping the changes in LD private, export them just because LD is
+# exported. Only used at the end of this file.
+### am handles this now? ORIGINAL_LD_FOR_MULTILIBS=$LD
+
+# For libtool versioning info, format is CURRENT:REVISION:AGE
+libtool_VERSION=6:0:0
+AC_SUBST(libtool_VERSION)
+
+# Find the rest of the source tree framework.
+GLIBCXX_TOPREL_CONFIGURE
+
+# Gets build, host, target, *_vendor, *_cpu, *_os, etc.
+#
+# You will slowly go insane if you do not grok the following fact: when
+# building v3 as part of the compiler, the top-level /target/ becomes the
+# library's /host/. configure then causes --target to default to --host,
+# exactly like any other package using autoconf. Therefore, 'target' and
+# 'host' will always be the same. This makes sense both for native and
+# cross compilers, just think about it for a little while. :-)
+#
+# Also, if v3 is being configured as part of a cross compiler, the top-level
+# configure script will pass the "real" host as $with_cross_host.
+#
+# Do not delete or change the following two lines. For why, see
+# http://gcc.gnu.org/ml/libstdc++/2003-07/msg00451.html
+AC_CANONICAL_SYSTEM
+target_alias=${target_alias-$host_alias}
+
+# Handy for debugging:
+#AC_MSG_NOTICE($build / $host / $target / $host_alias / $target_alias); sleep 5
+
+# Sets up automake. Must come after AC_CANONICAL_SYSTEM. Each of the
+# following is magically included in AUTOMAKE_OPTIONS in each Makefile.am.
+# 1.x: minimum required version
+# no-define: PACKAGE and VERSION will not be #define'd in config.h (a bunch
+# of other PACKAGE_* variables will, however, and there's nothing
+# we can do about that)
+# foreign: we don't follow the normal rules for GNU packages (no COPYING
+# file in the top srcdir, etc, etc), so stop complaining.
+# no-dependencies: turns off auto dependency generation (just for now)
+# -Wall: turns on all automake warnings
+AM_INIT_AUTOMAKE([1.7.6 no-define foreign no-dependencies -Wall])
+
+# AM_INIT_AUTOMAKE sets this to the "smashed" format. Calling the library
+# "libstdc--" causes remarkable amounts of breakage. Thanks, automake.
+PACKAGE='libstdc++'
+
+# Runs configure.host, finds CC, CXX, and assorted other critical bits. Sets
+# up critical shell variables.
+GLIBCXX_CONFIGURE
+
+#AC_MSG_NOTICE([====== Starting libtool configuration])
+AC_LIBTOOL_DLOPEN
+AM_PROG_LIBTOOL
+AC_SUBST(enable_shared)
+AC_SUBST(enable_static)
+#AC_MSG_NOTICE([====== Finished libtool configuration]) ; sleep 10
+
+# Check for support bits and g++ features that don't require linking.
+GLIBCXX_ENABLE_SJLJ_EXCEPTIONS
+GLIBCXX_ENABLE_LIBUNWIND_EXCEPTIONS
+GLIBCXX_ENABLE_PCH([yes])
+
+# Enable all the variable C++ runtime options.
+# NB: C_MBCHAR must come early.
+GLIBCXX_ENABLE_CSTDIO
+GLIBCXX_ENABLE_CLOCALE
+GLIBCXX_ENABLE_CHEADERS($c_model) dnl c_model from configure.host
+GLIBCXX_ENABLE_C_MBCHAR([yes])
+GLIBCXX_ENABLE_C99([yes])
+GLIBCXX_ENABLE_LONG_LONG([yes])
+GLIBCXX_ENABLE_THREADS
+GLIBCXX_ENABLE_CONCEPT_CHECKS([no])
+GLIBCXX_ENABLE_DEBUG_FLAGS(["-g3 -O0"])
+GLIBCXX_ENABLE_DEBUG([no])
+GLIBCXX_ENABLE_CXX_FLAGS
+
+# No surprises, no surprises...
+if test $atomicity_include_dir = cpu/generic ; then
+ AC_MSG_WARN([No native atomic operations are provided for this platform.])
+ if test $target_thread_file = single; then
+ AC_MSG_WARN([They cannot be faked when thread support is disabled.])
+ AC_MSG_WARN([Thread-safety of certain classes is not guaranteed.])
+ else
+ AC_MSG_WARN([They will be faked using a mutex.])
+ AC_MSG_WARN([Performance of certain classes will degrade as a result.])
+ fi
+fi
+
+
+if test "$build" != "$host"; then
+
+ # We are being configured with some form of cross compiler.
+ GLIBCXX_IS_NATIVE=false
+
+ # This lets us hard-code the functionality we know we'll have in the cross
+ # target environment. "Let" is a sugar-coated word placed on an especially
+ # dull and tedious hack, actually.
+ #
+ # Here's why GLIBCXX_CHECK_MATH_SUPPORT, and other autoconf macros
+ # that involve linking, can't be used:
+ # "cannot open sim-crt0.o"
+ # "cannot open crt0.o"
+ # etc. All this is because there currently exists no unified, consistent
+ # way for top level CC information to be passed down to target directories:
+ # newlib includes, newlib linking info, libgloss versus newlib crt0.o, etc.
+ # When all of that is done, all of this hokey, excessive AC_DEFINE junk for
+ # crosses can be removed.
+
+ # If Canadian cross, then don't pick up tools from the build directory.
+ # Used in GLIBCXX_EXPORT_INCLUDES (and nowhere else?).
+ if test -n "$with_cross_host" &&
+ test x"$build" != x"$with_cross_host" &&
+ test x"$build" != x"$target";
+ then
+ CANADIAN=yes
+ else
+ CANADIAN=no
+ fi
+
+ # Construct crosses by hand, eliminating bits that need ld...
+ # GLIBCXX_CHECK_COMPILER_FEATURES
+ # GLIBCXX_CHECK_BUILTIN_MATH_SUPPORT
+ # GLIBCXX_CHECK_MATH_SUPPORT
+
+ # First, test for "known" system libraries. We may be using newlib even
+ # on a hosted environment.
+ if test "x${with_newlib}" = "xyes"; then
+ os_include_dir="os/newlib"
+ AC_DEFINE(HAVE_HYPOT)
+
+ # GLIBCXX_CHECK_STDLIB_SUPPORT
+ AC_DEFINE(HAVE_STRTOF)
+ AC_DEFINE(HAVE_STRTOLD)
+ # AC_FUNC_MMAP
+ AC_DEFINE(HAVE_MMAP)
+
+ AC_DEFINE(HAVE_ACOSF)
+ AC_DEFINE(HAVE_ASINF)
+ AC_DEFINE(HAVE_ATAN2F)
+ AC_DEFINE(HAVE_ATANF)
+ AC_DEFINE(HAVE_CEILF)
+ AC_DEFINE(HAVE_COPYSIGN)
+ AC_DEFINE(HAVE_COPYSIGNF)
+ AC_DEFINE(HAVE_COSF)
+ AC_DEFINE(HAVE_COSHF)
+ AC_DEFINE(HAVE_EXPF)
+ AC_DEFINE(HAVE_FABSF)
+ AC_DEFINE(HAVE_FLOORF)
+ AC_DEFINE(HAVE_FMODF)
+ AC_DEFINE(HAVE_FREXPF)
+ AC_DEFINE(HAVE_LDEXPF)
+ AC_DEFINE(HAVE_LOG10F)
+ AC_DEFINE(HAVE_LOGF)
+ AC_DEFINE(HAVE_MODFF)
+ AC_DEFINE(HAVE_POWF)
+ AC_DEFINE(HAVE_SINF)
+ AC_DEFINE(HAVE_SINHF)
+ AC_DEFINE(HAVE_SQRTF)
+ AC_DEFINE(HAVE_TANF)
+ AC_DEFINE(HAVE_TANHF)
+ else
+ m4_include([crossconfig.m4])
+ fi
+
+ # At some point, we should differentiate between architectures
+ # like x86, which have long double versions, and alpha/powerpc/etc.,
+ # which don't. For the time being, punt.
+ if test x"long_double_math_on_this_cpu" = x"yes"; then
+ AC_DEFINE(HAVE_ACOSL)
+ AC_DEFINE(HAVE_ASINL)
+ AC_DEFINE(HAVE_ATAN2L)
+ AC_DEFINE(HAVE_ATANL)
+ AC_DEFINE(HAVE_CEILL)
+ AC_DEFINE(HAVE_COPYSIGNL)
+ AC_DEFINE(HAVE_COSL)
+ AC_DEFINE(HAVE_COSHL)
+ AC_DEFINE(HAVE_EXPL)
+ AC_DEFINE(HAVE_FABSL)
+ AC_DEFINE(HAVE_FLOORL)
+ AC_DEFINE(HAVE_FMODL)
+ AC_DEFINE(HAVE_FREXPL)
+ AC_DEFINE(HAVE_LDEXPL)
+ AC_DEFINE(HAVE_LOG10L)
+ AC_DEFINE(HAVE_LOGL)
+ AC_DEFINE(HAVE_MODFL)
+ AC_DEFINE(HAVE_POWL)
+ AC_DEFINE(HAVE_SINCOSL)
+ AC_DEFINE(HAVE_SINL)
+ AC_DEFINE(HAVE_SINHL)
+ AC_DEFINE(HAVE_SQRTL)
+ AC_DEFINE(HAVE_TANL)
+ AC_DEFINE(HAVE_TANHL)
+ fi
+
+else
+
+ # We are being configured natively. We can do more elaborate tests that
+ # include AC_TRY_COMPILE now, as the linker is assumed to be working.
+ GLIBCXX_IS_NATIVE=true
+ CANADIAN=no
+
+ # Check for available headers.
+ AC_CHECK_HEADERS([nan.h ieeefp.h endian.h sys/isa_defs.h machine/endian.h \
+ machine/param.h sys/machine.h fp.h locale.h float.h inttypes.h gconv.h \
+ sys/types.h])
+
+ GLIBCXX_CHECK_COMPILER_FEATURES
+ GLIBCXX_CHECK_LINKER_FEATURES
+ GLIBCXX_CHECK_MATH_SUPPORT
+ GLIBCXX_CHECK_BUILTIN_MATH_SUPPORT
+ GLIBCXX_CHECK_COMPLEX_MATH_SUPPORT
+ GLIBCXX_CHECK_WCHAR_T_SUPPORT
+ GLIBCXX_CHECK_STDLIB_SUPPORT
+
+ # For showmanyc_helper().
+ AC_CHECK_HEADERS(sys/ioctl.h sys/filio.h)
+ GLIBCXX_CHECK_POLL
+ GLIBCXX_CHECK_S_ISREG_OR_S_IFREG
+
+ # For xsputn_2().
+ AC_CHECK_HEADERS(sys/uio.h)
+ GLIBCXX_CHECK_WRITEV
+
+ AC_LC_MESSAGES
+
+ AC_TRY_COMPILE(
+ [#include <setjmp.h>],
+ [sigjmp_buf env;
+ while (! sigsetjmp (env, 1))
+ siglongjmp (env, 1);
+ ],
+ [AC_DEFINE(HAVE_SIGSETJMP, 1, [Define if sigsetjmp is available.])])
+
+ AC_FUNC_MMAP
+fi
+
+# This depends on GLIBCXX CHECK_LINKER_FEATURES, but without it assumes no.
+GLIBCXX_ENABLE_SYMVERS([yes])
+
+# This depends on GLIBCXX_ENABLE_SYMVERS and GLIBCXX_IS_NATIVE.
+GLIBCXX_CONFIGURE_TESTSUITE
+
+# Propagate the target-specific source directories through the build chain.
+# (Nothing currently uses cpu_include_dir directly; only atomicity_include_dir
+# uses it, and it only gets used in this file.)
+ATOMICITY_INC_SRCDIR=config/${atomicity_include_dir}
+OS_INC_SRCDIR=config/${os_include_dir}
+FPOS_INC_SRCDIR=config/${fpos_include_dir}
+AC_SUBST(ATOMICITY_INC_SRCDIR)
+AC_SUBST(FPOS_INC_SRCDIR)
+AC_SUBST(OS_INC_SRCDIR)
+
+# Determine cross-compile flags and AM_CONDITIONALs.
+#AC_SUBST(GLIBCXX_IS_NATIVE)
+AM_CONDITIONAL(CANADIAN, test $CANADIAN = yes)
+# from GLIBCXX_CHECK_COMPLEX_MATH_SUPPORT:
+AM_CONDITIONAL(GLIBCXX_BUILD_LIBMATH, test $need_libmath = yes)
+
+AC_CACHE_SAVE
+
+if test ${multilib} = yes; then
+ multilib_arg="--enable-multilib"
+else
+ multilib_arg=
+fi
+
+# Export all the install information
+GLIBCXX_EXPORT_INSTALL_INFO
+
+# Export all the include and flag information to Makefiles.
+GLIBCXX_EXPORT_INCLUDES
+GLIBCXX_EXPORT_FLAGS
+
+if ${CONFIG_SHELL-/bin/sh} ./libtool --tag CXX --features |
+ grep "enable shared" > /dev/null;
+then
+ LIBSUPCXX_PICFLAGS=-prefer-pic
+else
+ LIBSUPCXX_PICFLAGS=
+fi
+AC_SUBST(LIBSUPCXX_PICFLAGS)
+
+dnl In autoconf 2.5x, AC_OUTPUT is replaced by four AC_CONFIG_* macros,
+dnl which can all be called multiple times as needed, plus one (different)
+dnl AC_OUPUT macro. This one lists the files to be created:
+AC_CONFIG_FILES([ \
+ Makefile \
+ include/Makefile \
+ libmath/Makefile \
+ libsupc++/Makefile \
+ po/Makefile \
+ src/Makefile \
+ testsuite/Makefile \
+ ])
+AC_CONFIG_FILES([scripts/check_survey],[chmod +x scripts/check_survey])
+AC_CONFIG_FILES([scripts/testsuite_flags],[chmod +x scripts/testsuite_flags])
+
+dnl These commands are run at the end of config.status:
+AC_CONFIG_COMMANDS([default],
+[if test -n "$CONFIG_FILES"; then
+ # Multilibs need MULTISUBDIR defined correctly in certain makefiles so
+ # that multilib installs will end up installed in the correct place.
+ # The testsuite needs it for multilib-aware ABI baseline files.
+ # To work around this not being passed down from config-ml.in ->
+ # srcdir/Makefile.am -> srcdir/{src,libsupc++,...}/Makefile.am, manually
+ # append it here. Only modify Makefiles that have just been created.
+ for i in src libsupc++ testsuite; do
+ case $CONFIG_FILES in
+ *${i}/Makefile*)
+ #echo "Adding MULTISUBDIR to $i/Makefile"
+ grep '^MULTISUBDIR =' Makefile >> $i/Makefile
+ ;;
+ esac
+ done
+ fi
+ (cd include && ${MAKE-make})
+],
+[
+# No init-vars needed so far which aren't already passed by autoconf.
+])
+
+dnl And this actually makes things happen:
+AC_OUTPUT
+
+++ /dev/null
-# Process this file with autoconf to produce a configure script, like so:
-# aclocal && autoconf && autoheader && automake
-
-AC_PREREQ(2.57)
-AC_INIT(libstdc++, version-unused)
-AC_CONFIG_SRCDIR(src/ios.cc)
-AC_CONFIG_HEADER(config.h)
-
-# This works around the fact that libtool configuration may change LD
-# for this particular configuration, but some shells, instead of
-# keeping the changes in LD private, export them just because LD is
-# exported. Only used at the end of this file.
-### am handles this now? ORIGINAL_LD_FOR_MULTILIBS=$LD
-
-# For libtool versioning info, format is CURRENT:REVISION:AGE
-libtool_VERSION=6:0:0
-AC_SUBST(libtool_VERSION)
-
-# Find the rest of the source tree framework.
-GLIBCXX_TOPREL_CONFIGURE
-
-# Gets build, host, target, *_vendor, *_cpu, *_os, etc.
-#
-# You will slowly go insane if you do not grok the following fact: when
-# building v3 as part of the compiler, the top-level /target/ becomes the
-# library's /host/. configure then causes --target to default to --host,
-# exactly like any other package using autoconf. Therefore, 'target' and
-# 'host' will always be the same. This makes sense both for native and
-# cross compilers, just think about it for a little while. :-)
-#
-# Also, if v3 is being configured as part of a cross compiler, the top-level
-# configure script will pass the "real" host as $with_cross_host.
-#
-# Do not delete or change the following two lines. For why, see
-# http://gcc.gnu.org/ml/libstdc++/2003-07/msg00451.html
-AC_CANONICAL_SYSTEM
-target_alias=${target_alias-$host_alias}
-
-# Handy for debugging:
-#AC_MSG_NOTICE($build / $host / $target / $host_alias / $target_alias); sleep 5
-
-# Sets up automake. Must come after AC_CANONICAL_SYSTEM. Each of the
-# following is magically included in AUTOMAKE_OPTIONS in each Makefile.am.
-# 1.x: minimum required version
-# no-define: PACKAGE and VERSION will not be #define'd in config.h (a bunch
-# of other PACKAGE_* variables will, however, and there's nothing
-# we can do about that)
-# foreign: we don't follow the normal rules for GNU packages (no COPYING
-# file in the top srcdir, etc, etc), so stop complaining.
-# no-dependencies: turns off auto dependency generation (just for now)
-# -Wall: turns on all automake warnings
-AM_INIT_AUTOMAKE([1.7.6 no-define foreign no-dependencies -Wall])
-
-# AM_INIT_AUTOMAKE sets this to the "smashed" format. Calling the library
-# "libstdc--" causes remarkable amounts of breakage. Thanks, automake.
-PACKAGE='libstdc++'
-
-# Runs configure.host, finds CC, CXX, and assorted other critical bits. Sets
-# up critical shell variables.
-GLIBCXX_CONFIGURE
-
-#AC_MSG_NOTICE([====== Starting libtool configuration])
-AC_LIBTOOL_DLOPEN
-AM_PROG_LIBTOOL
-AC_SUBST(enable_shared)
-AC_SUBST(enable_static)
-#AC_MSG_NOTICE([====== Finished libtool configuration]) ; sleep 10
-
-# Check for support bits and g++ features that don't require linking.
-GLIBCXX_ENABLE_SJLJ_EXCEPTIONS
-GLIBCXX_ENABLE_LIBUNWIND_EXCEPTIONS
-GLIBCXX_ENABLE_PCH([yes])
-
-# Enable all the variable C++ runtime options.
-# NB: C_MBCHAR must come early.
-GLIBCXX_ENABLE_CSTDIO
-GLIBCXX_ENABLE_CLOCALE
-GLIBCXX_ENABLE_CHEADERS($c_model) dnl c_model from configure.host
-GLIBCXX_ENABLE_C_MBCHAR([yes])
-GLIBCXX_ENABLE_C99([yes])
-GLIBCXX_ENABLE_LONG_LONG([yes])
-GLIBCXX_ENABLE_THREADS
-GLIBCXX_ENABLE_CONCEPT_CHECKS([no])
-GLIBCXX_ENABLE_DEBUG_FLAGS(["-g3 -O0"])
-GLIBCXX_ENABLE_DEBUG([no])
-GLIBCXX_ENABLE_CXX_FLAGS
-
-# No surprises, no surprises...
-if test $atomicity_include_dir = cpu/generic ; then
- AC_MSG_WARN([No native atomic operations are provided for this platform.])
- if test $target_thread_file = single; then
- AC_MSG_WARN([They cannot be faked when thread support is disabled.])
- AC_MSG_WARN([Thread-safety of certain classes is not guaranteed.])
- else
- AC_MSG_WARN([They will be faked using a mutex.])
- AC_MSG_WARN([Performance of certain classes will degrade as a result.])
- fi
-fi
-
-
-if test "$build" != "$host"; then
-
- # We are being configured with some form of cross compiler.
- GLIBCXX_IS_NATIVE=false
-
- # This lets us hard-code the functionality we know we'll have in the cross
- # target environment. "Let" is a sugar-coated word placed on an especially
- # dull and tedious hack, actually.
- #
- # Here's why GLIBCXX_CHECK_MATH_SUPPORT, and other autoconf macros
- # that involve linking, can't be used:
- # "cannot open sim-crt0.o"
- # "cannot open crt0.o"
- # etc. All this is because there currently exists no unified, consistent
- # way for top level CC information to be passed down to target directories:
- # newlib includes, newlib linking info, libgloss versus newlib crt0.o, etc.
- # When all of that is done, all of this hokey, excessive AC_DEFINE junk for
- # crosses can be removed.
-
- # If Canadian cross, then don't pick up tools from the build directory.
- # Used in GLIBCXX_EXPORT_INCLUDES (and nowhere else?).
- if test -n "$with_cross_host" &&
- test x"$build" != x"$with_cross_host" &&
- test x"$build" != x"$target";
- then
- CANADIAN=yes
- else
- CANADIAN=no
- fi
-
- # Construct crosses by hand, eliminating bits that need ld...
- # GLIBCXX_CHECK_COMPILER_FEATURES
- # GLIBCXX_CHECK_BUILTIN_MATH_SUPPORT
- # GLIBCXX_CHECK_MATH_SUPPORT
-
- # First, test for "known" system libraries. We may be using newlib even
- # on a hosted environment.
- if test "x${with_newlib}" = "xyes"; then
- os_include_dir="os/newlib"
- AC_DEFINE(HAVE_HYPOT)
-
- # GLIBCXX_CHECK_STDLIB_SUPPORT
- AC_DEFINE(HAVE_STRTOF)
- AC_DEFINE(HAVE_STRTOLD)
- # AC_FUNC_MMAP
- AC_DEFINE(HAVE_MMAP)
-
- AC_DEFINE(HAVE_ACOSF)
- AC_DEFINE(HAVE_ASINF)
- AC_DEFINE(HAVE_ATAN2F)
- AC_DEFINE(HAVE_ATANF)
- AC_DEFINE(HAVE_CEILF)
- AC_DEFINE(HAVE_COPYSIGN)
- AC_DEFINE(HAVE_COPYSIGNF)
- AC_DEFINE(HAVE_COSF)
- AC_DEFINE(HAVE_COSHF)
- AC_DEFINE(HAVE_EXPF)
- AC_DEFINE(HAVE_FABSF)
- AC_DEFINE(HAVE_FLOORF)
- AC_DEFINE(HAVE_FMODF)
- AC_DEFINE(HAVE_FREXPF)
- AC_DEFINE(HAVE_LDEXPF)
- AC_DEFINE(HAVE_LOG10F)
- AC_DEFINE(HAVE_LOGF)
- AC_DEFINE(HAVE_MODFF)
- AC_DEFINE(HAVE_POWF)
- AC_DEFINE(HAVE_SINF)
- AC_DEFINE(HAVE_SINHF)
- AC_DEFINE(HAVE_SQRTF)
- AC_DEFINE(HAVE_TANF)
- AC_DEFINE(HAVE_TANHF)
- else
- m4_include([crossconfig.m4])
- fi
-
- # At some point, we should differentiate between architectures
- # like x86, which have long double versions, and alpha/powerpc/etc.,
- # which don't. For the time being, punt.
- if test x"long_double_math_on_this_cpu" = x"yes"; then
- AC_DEFINE(HAVE_ACOSL)
- AC_DEFINE(HAVE_ASINL)
- AC_DEFINE(HAVE_ATAN2L)
- AC_DEFINE(HAVE_ATANL)
- AC_DEFINE(HAVE_CEILL)
- AC_DEFINE(HAVE_COPYSIGNL)
- AC_DEFINE(HAVE_COSL)
- AC_DEFINE(HAVE_COSHL)
- AC_DEFINE(HAVE_EXPL)
- AC_DEFINE(HAVE_FABSL)
- AC_DEFINE(HAVE_FLOORL)
- AC_DEFINE(HAVE_FMODL)
- AC_DEFINE(HAVE_FREXPL)
- AC_DEFINE(HAVE_LDEXPL)
- AC_DEFINE(HAVE_LOG10L)
- AC_DEFINE(HAVE_LOGL)
- AC_DEFINE(HAVE_MODFL)
- AC_DEFINE(HAVE_POWL)
- AC_DEFINE(HAVE_SINCOSL)
- AC_DEFINE(HAVE_SINL)
- AC_DEFINE(HAVE_SINHL)
- AC_DEFINE(HAVE_SQRTL)
- AC_DEFINE(HAVE_TANL)
- AC_DEFINE(HAVE_TANHL)
- fi
-
-else
-
- # We are being configured natively. We can do more elaborate tests that
- # include AC_TRY_COMPILE now, as the linker is assumed to be working.
- GLIBCXX_IS_NATIVE=true
- CANADIAN=no
-
- # Check for available headers.
- AC_CHECK_HEADERS([nan.h ieeefp.h endian.h sys/isa_defs.h machine/endian.h \
- machine/param.h sys/machine.h fp.h locale.h float.h inttypes.h gconv.h \
- sys/types.h])
-
- GLIBCXX_CHECK_COMPILER_FEATURES
- GLIBCXX_CHECK_LINKER_FEATURES
- GLIBCXX_CHECK_MATH_SUPPORT
- GLIBCXX_CHECK_BUILTIN_MATH_SUPPORT
- GLIBCXX_CHECK_COMPLEX_MATH_SUPPORT
- GLIBCXX_CHECK_WCHAR_T_SUPPORT
- GLIBCXX_CHECK_STDLIB_SUPPORT
-
- # For showmanyc_helper().
- AC_CHECK_HEADERS(sys/ioctl.h sys/filio.h)
- GLIBCXX_CHECK_POLL
- GLIBCXX_CHECK_S_ISREG_OR_S_IFREG
-
- # For xsputn_2().
- AC_CHECK_HEADERS(sys/uio.h)
- GLIBCXX_CHECK_WRITEV
-
- AC_LC_MESSAGES
-
- AC_TRY_COMPILE(
- [#include <setjmp.h>],
- [sigjmp_buf env;
- while (! sigsetjmp (env, 1))
- siglongjmp (env, 1);
- ],
- [AC_DEFINE(HAVE_SIGSETJMP, 1, [Define if sigsetjmp is available.])])
-
- AC_FUNC_MMAP
-fi
-
-# This depends on GLIBCXX CHECK_LINKER_FEATURES, but without it assumes no.
-GLIBCXX_ENABLE_SYMVERS([yes])
-
-# This depends on GLIBCXX_ENABLE_SYMVERS and GLIBCXX_IS_NATIVE.
-GLIBCXX_CONFIGURE_TESTSUITE
-
-# Propagate the target-specific source directories through the build chain.
-# (Nothing currently uses cpu_include_dir directly; only atomicity_include_dir
-# uses it, and it only gets used in this file.)
-ATOMICITY_INC_SRCDIR=config/${atomicity_include_dir}
-OS_INC_SRCDIR=config/${os_include_dir}
-FPOS_INC_SRCDIR=config/${fpos_include_dir}
-AC_SUBST(ATOMICITY_INC_SRCDIR)
-AC_SUBST(FPOS_INC_SRCDIR)
-AC_SUBST(OS_INC_SRCDIR)
-
-# Determine cross-compile flags and AM_CONDITIONALs.
-#AC_SUBST(GLIBCXX_IS_NATIVE)
-AM_CONDITIONAL(CANADIAN, test $CANADIAN = yes)
-# from GLIBCXX_CHECK_COMPLEX_MATH_SUPPORT:
-AM_CONDITIONAL(GLIBCXX_BUILD_LIBMATH, test $need_libmath = yes)
-
-AC_CACHE_SAVE
-
-if test ${multilib} = yes; then
- multilib_arg="--enable-multilib"
-else
- multilib_arg=
-fi
-
-# Export all the install information
-GLIBCXX_EXPORT_INSTALL_INFO
-
-# Export all the include and flag information to Makefiles.
-GLIBCXX_EXPORT_INCLUDES
-GLIBCXX_EXPORT_FLAGS
-
-if ${CONFIG_SHELL-/bin/sh} ./libtool --tag CXX --features |
- grep "enable shared" > /dev/null;
-then
- LIBSUPCXX_PICFLAGS=-prefer-pic
-else
- LIBSUPCXX_PICFLAGS=
-fi
-AC_SUBST(LIBSUPCXX_PICFLAGS)
-
-dnl In autoconf 2.5x, AC_OUTPUT is replaced by four AC_CONFIG_* macros,
-dnl which can all be called multiple times as needed, plus one (different)
-dnl AC_OUPUT macro. This one lists the files to be created:
-AC_CONFIG_FILES([ \
- Makefile \
- include/Makefile \
- libmath/Makefile \
- libsupc++/Makefile \
- po/Makefile \
- src/Makefile \
- testsuite/Makefile \
- ])
-AC_CONFIG_FILES([scripts/check_survey],[chmod +x scripts/check_survey])
-AC_CONFIG_FILES([scripts/testsuite_flags],[chmod +x scripts/testsuite_flags])
-
-dnl These commands are run at the end of config.status:
-AC_CONFIG_COMMANDS([default],
-[if test -n "$CONFIG_FILES"; then
- # Multilibs need MULTISUBDIR defined correctly in certain makefiles so
- # that multilib installs will end up installed in the correct place.
- # The testsuite needs it for multilib-aware ABI baseline files.
- # To work around this not being passed down from config-ml.in ->
- # srcdir/Makefile.am -> srcdir/{src,libsupc++,...}/Makefile.am, manually
- # append it here. Only modify Makefiles that have just been created.
- for i in src libsupc++ testsuite; do
- case $CONFIG_FILES in
- *${i}/Makefile*)
- #echo "Adding MULTISUBDIR to $i/Makefile"
- grep '^MULTISUBDIR =' Makefile >> $i/Makefile
- ;;
- esac
- done
- fi
- (cd include && ${MAKE-make})
-],
-[
-# No init-vars needed so far which aren't already passed by autoconf.
-])
-
-dnl And this actually makes things happen:
-AC_OUTPUT
-
<title>Porting libstdc++-v3</title>
<meta http-equiv="Content-Type" content="text/html">
<meta name="description" content="Porting libstdc++-v3">
-<meta name="generator" content="makeinfo 4.3">
-<link href="http://www.gnu.org/software/texinfo/" rel="generator-home">
+<meta name="generator" content="makeinfo 4.6">
<!--
Copyright © 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
<p>You have freedom to copy and modify this GNU Manual, like GNU
software. Copies published by the Free Software Foundation raise
funds for GNU development.-->
+<meta http-equiv="Content-Style-Type" content="text/css">
+<style type="text/css"><!--
+ pre.display { font-family:inherit }
+ pre.format { font-family:inherit }
+ pre.smalldisplay { font-family:inherit; font-size:smaller }
+ pre.smallformat { font-family:inherit; font-size:smaller }
+ pre.smallexample { font-size:smaller }
+ pre.smalllisp { font-size:smaller }
+--></style>
</head>
<body>
<h1 class="settitle">Porting libstdc++-v3</h1>
<div class="node">
<p><hr>
-Node:<a name="Top">Top</a>,
-Next:<a rel="next" accesskey="n" href="#Operating%20system">Operating system</a>,
-Up:<a rel="up" accesskey="u" href="#dir">(dir)</a>
+Node: <a name="Top">Top</a>,
+Next: <a rel="next" accesskey="n" href="#Operating%20system">Operating system</a>,
+Up: <a rel="up" accesskey="u" href="#dir">(dir)</a>
<br>
</div>
<h2 class="unnumbered">Porting libstdc++-v3</h2>
- <p>This document explains how to port libstdc++-v3 (the GNU C++ library) to
+<p>This document explains how to port libstdc++-v3 (the GNU C++ library) to
a new target.
<p>In order to make the GNU C++ library (libstdc++-v3) work with a new
library, but you should at least try some minimal test cases.
<p>(Note that what we think of as a "target," the library refers to as
-a "host." The comment at the top of <code>configure.in</code> explains why.)
+a "host." The comment at the top of <code>configure.ac</code> explains why.)
<p>Here are the primary steps required to port the library:
<div class="node">
<p><hr>
-Node:<a name="Operating%20system">Operating system</a>,
-Next:<a rel="next" accesskey="n" href="#CPU">CPU</a>,
-Previous:<a rel="previous" accesskey="p" href="#Top">Top</a>,
-Up:<a rel="up" accesskey="u" href="#Top">Top</a>
+Node: <a name="Operating%20system">Operating system</a>,
+Next: <a rel="next" accesskey="n" href="#CPU">CPU</a>,
+Previous: <a rel="previous" accesskey="p" href="#Top">Top</a>,
+Up: <a rel="up" accesskey="u" href="#Top">Top</a>
<br>
</div>
<h2 class="chapter">Operating system</h2>
- <p>If you are porting to a new operating system (as opposed to a new chip
+<p>If you are porting to a new operating system (as opposed to a new chip
using an existing operating system), you will need to create a new
directory in the <code>config/os</code> hierarchy. For example, the IRIX
configuration files are all in <code>config/os/irix</code>. There is no set
<div class="node">
<p><hr>
-Node:<a name="CPU">CPU</a>,
-Next:<a rel="next" accesskey="n" href="#Character%20types">Character types</a>,
-Previous:<a rel="previous" accesskey="p" href="#Operating%20system">Operating system</a>,
-Up:<a rel="up" accesskey="u" href="#Top">Top</a>
+Node: <a name="CPU">CPU</a>,
+Next: <a rel="next" accesskey="n" href="#Character%20types">Character types</a>,
+Previous: <a rel="previous" accesskey="p" href="#Operating%20system">Operating system</a>,
+Up: <a rel="up" accesskey="u" href="#Top">Top</a>
<br>
</div>
<h2 class="chapter">CPU</h2>
- <p>If you are porting to a new chip (as opposed to a new operating system
+<p>If you are porting to a new chip (as opposed to a new operating system
running on an existing chip), you will need to create a new directory in the
<code>config/cpu</code> hierarchy. Much like the <a href="#Operating%20system">Operating system</a> setup,
there are no strict rules on how to organize the CPU configuration
<div class="node">
<p><hr>
-Node:<a name="Character%20types">Character types</a>,
-Next:<a rel="next" accesskey="n" href="#Thread%20safety">Thread safety</a>,
-Previous:<a rel="previous" accesskey="p" href="#CPU">CPU</a>,
-Up:<a rel="up" accesskey="u" href="#Top">Top</a>
+Node: <a name="Character%20types">Character types</a>,
+Next: <a rel="next" accesskey="n" href="#Thread%20safety">Thread safety</a>,
+Previous: <a rel="previous" accesskey="p" href="#CPU">CPU</a>,
+Up: <a rel="up" accesskey="u" href="#Top">Top</a>
<br>
</div>
<h2 class="chapter">Character types</h2>
- <p>The library requires that you provide three header files to implement
+<p>The library requires that you provide three header files to implement
character classification, analogous to that provided by the C libraries
<code><ctype.h></code> header. You can model these on the files provided in
<code>config/os/generic</code>. However, these files will almost
<div class="node">
<p><hr>
-Node:<a name="Thread%20safety">Thread safety</a>,
-Next:<a rel="next" accesskey="n" href="#Numeric%20limits">Numeric limits</a>,
-Previous:<a rel="previous" accesskey="p" href="#Character%20types">Character types</a>,
-Up:<a rel="up" accesskey="u" href="#Top">Top</a>
+Node: <a name="Thread%20safety">Thread safety</a>,
+Next: <a rel="next" accesskey="n" href="#Numeric%20limits">Numeric limits</a>,
+Previous: <a rel="previous" accesskey="p" href="#Character%20types">Character types</a>,
+Up: <a rel="up" accesskey="u" href="#Top">Top</a>
<br>
</div>
<h2 class="chapter">Thread safety</h2>
- <p>The C++ library string functionality requires a couple of atomic
+<p>The C++ library string functionality requires a couple of atomic
operations to provide thread-safety. If you don't take any special
action, the library will use stub versions of these functions that are
not thread-safe. They will work fine, unless your applications are
<div class="node">
<p><hr>
-Node:<a name="Numeric%20limits">Numeric limits</a>,
-Next:<a rel="next" accesskey="n" href="#Libtool">Libtool</a>,
-Previous:<a rel="previous" accesskey="p" href="#Thread%20safety">Thread safety</a>,
-Up:<a rel="up" accesskey="u" href="#Top">Top</a>
+Node: <a name="Numeric%20limits">Numeric limits</a>,
+Next: <a rel="next" accesskey="n" href="#Libtool">Libtool</a>,
+Previous: <a rel="previous" accesskey="p" href="#Thread%20safety">Thread safety</a>,
+Up: <a rel="up" accesskey="u" href="#Top">Top</a>
<br>
</div>
<h2 class="chapter">Numeric limits</h2>
- <p>The C++ library requires information about the fundamental data types,
+<p>The C++ library requires information about the fundamental data types,
such as the minimum and maximum representable values of each type.
You can define each of these values individually, but it is usually
easiest just to indicate how many bits are used in each of the data
<div class="node">
<p><hr>
-Node:<a name="Libtool">Libtool</a>,
-Next:<a rel="next" accesskey="n" href="#GNU%20Free%20Documentation%20License">GNU Free Documentation License</a>,
-Previous:<a rel="previous" accesskey="p" href="#Numeric%20limits">Numeric limits</a>,
-Up:<a rel="up" accesskey="u" href="#Top">Top</a>
+Node: <a name="Libtool">Libtool</a>,
+Next: <a rel="next" accesskey="n" href="#GNU%20Free%20Documentation%20License">GNU Free Documentation License</a>,
+Previous: <a rel="previous" accesskey="p" href="#Numeric%20limits">Numeric limits</a>,
+Up: <a rel="up" accesskey="u" href="#Top">Top</a>
<br>
</div>
<h2 class="chapter">Libtool</h2>
- <p>The C++ library is compiled, archived and linked with libtool.
+<p>The C++ library is compiled, archived and linked with libtool.
Explaining the full workings of libtool is beyond the scope of this
document, but there are a few, particular bits that are necessary for
porting.
<div class="node">
<p><hr>
-Node:<a name="GNU%20Free%20Documentation%20License">GNU Free Documentation License</a>,
-Previous:<a rel="previous" accesskey="p" href="#Libtool">Libtool</a>,
-Up:<a rel="up" accesskey="u" href="#Top">Top</a>
+Node: <a name="GNU%20Free%20Documentation%20License">GNU Free Documentation License</a>,
+Previous: <a rel="previous" accesskey="p" href="#Libtool">Libtool</a>,
+Up: <a rel="up" accesskey="u" href="#Top">Top</a>
<br>
</div>
<h3 class="unnumberedsec">ADDENDUM: How to use this License for your documents</h3>
- <p>To use this License in a document you have written, include a copy of
+<p>To use this License in a document you have written, include a copy of
the License in the document and put the following copyright and
license notices just after the title page:
library, but you should at least try some minimal test cases.
(Note that what we think of as a ``target,'' the library refers to as
-a ``host.'' The comment at the top of @file{configure.in} explains why.)
+a ``host.'' The comment at the top of @file{configure.ac} explains why.)
Here are the primary steps required to port the library:
all: all-am
.SUFFIXES:
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4)
cd $(top_srcdir) && \
$(AUTOMAKE) --foreign include/Makefile
Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status
.SUFFIXES:
.SUFFIXES: .c .lo .o .obj
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4)
cd $(top_srcdir) && \
$(AUTOMAKE) --foreign libmath/Makefile
Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status
.SUFFIXES:
.SUFFIXES: .cc .lo .o .obj
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4)
cd $(top_srcdir) && \
$(AUTOMAKE) --foreign libsupc++/Makefile
Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status
.SUFFIXES:
.SUFFIXES: .po .mo
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4)
cd $(top_srcdir) && \
$(AUTOMAKE) --foreign po/Makefile
Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status
.SUFFIXES:
.SUFFIXES: .cc .lo .o .obj
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4)
cd $(top_srcdir) && \
$(AUTOMAKE) --foreign src/Makefile
Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status
.SUFFIXES:
.SUFFIXES: .cc .lo .o .obj
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4)
cd $(top_srcdir) && \
$(AUTOMAKE) --foreign testsuite/Makefile
Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status