summaryrefslogtreecommitdiff
path: root/cmake/modules/CheckCxxHashmap.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'cmake/modules/CheckCxxHashmap.cmake')
-rwxr-xr-xcmake/modules/CheckCxxHashmap.cmake53
1 files changed, 53 insertions, 0 deletions
diff --git a/cmake/modules/CheckCxxHashmap.cmake b/cmake/modules/CheckCxxHashmap.cmake
new file mode 100755
index 0000000000..5f16c0ac44
--- /dev/null
+++ b/cmake/modules/CheckCxxHashmap.cmake
@@ -0,0 +1,53 @@
+# - Check if for hash_map.
+# CHECK_HASHMAP ()
+#
+
+include(CheckCXXSourceCompiles)
+
+macro(CHECK_HASHMAP)
+ message(STATUS "Checking for C++ hash_map implementation...")
+ check_cxx_source_compiles("
+ #include <ext/hash_map>
+ int main() {
+ __gnu_cxx::hash_map<int, int> t;
+ }
+"
+ HAVE_GNU_EXT_HASH_MAP
+ )
+ if(HAVE_GNU_EXT_HASH_MAP)
+ message(STATUS "C++ hash_map found in 'ext' dir in namespace __gnu_cxx::")
+ endif(HAVE_GNU_EXT_HASH_MAP)
+
+ check_cxx_source_compiles("
+ #include <ext/hash_map>
+ int main() {
+ std::hash_map<int, int> t;
+ }
+"
+ HAVE_STD_EXT_HASH_MAP
+ )
+ if(HAVE_STD_EXT_HASH_MAP)
+ message(STATUS "C++ hash_map found in 'ext' dir in namespace std::")
+ endif(HAVE_STD_EXT_HASH_MAP)
+
+ check_cxx_source_compiles("
+ #include <hash_map>
+ int main() {
+ hash_map<int, int> t;
+ }
+"
+ HAVE_GLOBAL_HASH_MAP
+ )
+ if(HAVE_GLOBAL_HASH_MAP)
+ message(STATUS "C++ hash_map found in global namespace")
+ endif(HAVE_GLOBAL_HASH_MAP)
+
+ if(NOT HAVE_GNU_EXT_HASH_MAP)
+ if(NOT HAVE_STD_EXT_HASH_MAP)
+ if(NOT HAVE_GLOBAL_HASH_MAP)
+ message(STATUS "C++ hash_map not found")
+ endif(NOT HAVE_GLOBAL_HASH_MAP)
+ endif(NOT HAVE_STD_EXT_HASH_MAP)
+ endif(NOT HAVE_GNU_EXT_HASH_MAP)
+
+endmacro(CHECK_HASHMAP)