OSDN Git Service

2003-10-22 Paolo Carlini <pcarlini@suse.de>
[pf3gnuchains/gcc-fork.git] / libstdc++-v3 / configure.ac
index 7556b99..b71117b 100644 (file)
@@ -39,6 +39,14 @@ target_alias=${target_alias-$host_alias}
 # Handy for debugging:
 #AC_MSG_NOTICE($build / $host / $target / $host_alias / $target_alias); sleep 5
 
+if test "$build" != "$host"; then
+  # We are being configured with some form of cross compiler.
+  GLIBCXX_IS_NATIVE=false
+  GCC_NO_EXECUTABLES
+else
+  GLIBCXX_IS_NATIVE=true
+fi
+
 # 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
@@ -62,10 +70,15 @@ AC_SUBST(enable_shared)
 AC_SUBST(enable_static)
 #AC_MSG_NOTICE([====== Finished libtool configuration]) ; sleep 10
 
+# Possibly disable most of the library.
+## XXX Consider skipping unncessary tests altogether in this case, rather
+## than just ignoring the results.  Faster /and/ more correct, win win.
+GLIBCXX_ENABLE_HOSTED
+
 # Check for support bits and g++ features that don't require linking.
 GLIBCXX_ENABLE_SJLJ_EXCEPTIONS
 GLIBCXX_ENABLE_LIBUNWIND_EXCEPTIONS
-GLIBCXX_ENABLE_PCH([yes])
+GLIBCXX_ENABLE_PCH($is_hosted)
 
 # Enable all the variable C++ runtime options.  
 # NB: C_MBCHAR must come early.
@@ -94,10 +107,52 @@ if test $atomicity_include_dir = cpu/generic ; then
 fi
 
 
-if test "$build" != "$host"; then
+if $GLIBCXX_IS_NATIVE; then
 
-  # We are being configured with some form of cross compiler.
-  GLIBCXX_IS_NATIVE=false
+  # We can do more elaborate tests that assume a working linker.
+  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
+
+  # For the __streamoff_base_type typedef.
+  GLIBCXX_CHECK_INT64_T
+
+  # For LFS support.
+  GLIBCXX_CHECK_LFS
+
+  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
+
+else
 
   # 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
@@ -114,9 +169,9 @@ if test "$build" != "$host"; then
   # 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?).
+  # Used only in GLIBCXX_EXPORT_INCLUDES.
   if test -n "$with_cross_host" &&
-     test x"$build" != x"$with_cross_host" &&
+     test x"$build_alias" != x"$with_cross_host" &&
      test x"$build" != x"$target";
   then
     CANADIAN=yes
@@ -199,46 +254,6 @@ if test "$build" != "$host"; then
     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.
@@ -252,16 +267,15 @@ GLIBCXX_CONFIGURE_TESTSUITE
 # 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)
+#AM_CONDITIONAL(CANADIAN, test $CANADIAN = yes)
 # from GLIBCXX_CHECK_COMPLEX_MATH_SUPPORT:
-AM_CONDITIONAL(GLIBCXX_BUILD_LIBMATH,  test $need_libmath = yes)
+#AM_CONDITIONAL(GLIBCXX_BUILD_LIBMATH,  test $need_libmath = yes)
+GLIBCXX_EVALUATE_CONDITIONALS
  
 AC_CACHE_SAVE
 
@@ -271,7 +285,7 @@ else
   multilib_arg=
 fi
 
-# Export all the install information
+# Export all the install information.
 GLIBCXX_EXPORT_INSTALL_INFO
 
 # Export all the include and flag information to Makefiles.
@@ -289,16 +303,11 @@ 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([ \
+dnl AC_OUTPUT 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_FOREACH([DIR], glibcxx_SUBDIRS, [DIR/Makefile ])
+  )
 AC_CONFIG_FILES([scripts/check_survey],[chmod +x scripts/check_survey])
 AC_CONFIG_FILES([scripts/testsuite_flags],[chmod +x scripts/testsuite_flags])
 
@@ -311,19 +320,29 @@ AC_CONFIG_COMMANDS([default],
    # 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
+   #
+   # Also, get rid of this simulated-VPATH thing that automake does.
+   cat > vpsed << \_EOF
+s!`test -f '$<' || echo '$(srcdir)/'`!!
+_EOF
+   for i in $SUBDIRS; do
     case $CONFIG_FILES in
      *${i}/Makefile*)
        #echo "Adding MULTISUBDIR to $i/Makefile"
-       grep '^MULTISUBDIR =' Makefile >> $i/Makefile
+       sed -f vpsed $i/Makefile > tmp
+       grep '^MULTISUBDIR =' Makefile >> tmp
+       mv tmp $i/Makefile
        ;;
     esac
    done
+   rm vpsed
  fi
  (cd include && ${MAKE-make})
 ],
 [
-# No init-vars needed so far which aren't already passed by autoconf.
+# Variables needed in config.status (file generation) which aren't already
+# passed by autoconf.
+SUBDIRS="$SUBDIRS"
 ])
 
 dnl And this actually makes things happen: