Add configure checks for <unordered_set> and <unordered_map>.
authorCary Coutant <ccoutant@google.com>
Wed, 18 Dec 2013 23:53:05 +0000 (15:53 -0800)
committerCary Coutant <ccoutant@google.com>
Wed, 18 Dec 2013 23:53:31 +0000 (15:53 -0800)
gold/
* configure.ac: Check for <unordered_set> and <unordered_map>.
* config.in: Regenerate.
* configure: Regenerate.
* system.h: Use <unordered_set> and <unordered_map> if available.

gold/ChangeLog
gold/config.in
gold/configure
gold/configure.ac
gold/system.h

index ea67ee959f4e5548685866751298d9a5524cac50..2e269463bac7a4eb9ea3c869870d39c0aa761648 100644 (file)
@@ -1,3 +1,10 @@
+2013-12-18  Cary Coutant  <ccoutant@google.com>
+
+       * configure.ac: Check for <unordered_set> and <unordered_map>.
+       * config.in: Regenerate.
+       * configure: Regenerate.
+       * system.h: Use <unordered_set> and <unordered_map> if available.
+
 2013-12-10  Roland McGrath  <mcgrathr@google.com>
 
        * Makefile.am (install-exec-local): Prefix $(INSTALL_PROGRAM) uses
index d46fd75748490e35e04a60c51ee8639070a349dc..be7781054184b657c024b8b867e9e706a811440c 100644 (file)
 /* Define to 1 if you have the <unistd.h> header file. */
 #undef HAVE_UNISTD_H
 
+/* Define to 1 if you have the <unordered_map> header file. */
+#undef HAVE_UNORDERED_MAP
+
+/* Define to 1 if you have the <unordered_set> header file. */
+#undef HAVE_UNORDERED_SET
+
 /* Define to 1 if you have the <windows.h> header file. */
 #undef HAVE_WINDOWS_H
 
index 24140cfec25b2aa7cf84ba67f75fc98b73b7873b..22573247808d2c5f9a955e18d64903cd9aad168d 100755 (executable)
@@ -7133,6 +7133,20 @@ ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ex
 ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
 
 
+for ac_header in unordered_set unordered_map
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_cxx_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+eval as_val=\$$as_ac_Header
+   if test "x$as_val" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
 for ac_header in tr1/unordered_set tr1/unordered_map
 do :
   as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
index 9bc216b947ce019a79830978ae13fea1d91f0d84..b2741cfbd1c6e2681ed9dcbc4710e1d6a5967823 100644 (file)
@@ -523,6 +523,7 @@ AC_CHECK_DECLS([basename, ffs, asprintf, vasprintf, snprintf, vsnprintf, strvers
 
 AC_LANG_PUSH(C++)
 
+AC_CHECK_HEADERS(unordered_set unordered_map)
 AC_CHECK_HEADERS(tr1/unordered_set tr1/unordered_map)
 AC_CHECK_HEADERS(ext/hash_map ext/hash_set)
 AC_CHECK_HEADERS(byteswap.h)
index 3e6fe1d4cb16b6b8b2b28de7feb7f4e1d9d0dc26..aea3723b97b987f145b225c32a93ff3cc5cd9ef3 100644 (file)
 
 // Figure out how to get a hash set and a hash map.
 
-#if defined(HAVE_TR1_UNORDERED_SET) && defined(HAVE_TR1_UNORDERED_MAP) \
-    && defined(HAVE_TR1_UNORDERED_MAP_REHASH)
+#if defined(HAVE_UNORDERED_SET) && defined(HAVE_UNORDERED_MAP)
+
+#include <unordered_set>
+#include <unordered_map>
+
+// We need a template typedef here.
+
+#define Unordered_set std::unordered_set
+#define Unordered_map std::unordered_map
+#define Unordered_multimap std::unordered_multimap
+
+#define reserve_unordered_map(map, n) ((map)->rehash(n))
+
+#elif defined(HAVE_TR1_UNORDERED_SET) && defined(HAVE_TR1_UNORDERED_MAP) \
+      && defined(HAVE_TR1_UNORDERED_MAP_REHASH)
 
 #include <tr1/unordered_set>
 #include <tr1/unordered_map>