diff options
Diffstat (limited to 'extern/libmv/third_party/ceres/CMakeLists.txt')
-rw-r--r-- | extern/libmv/third_party/ceres/CMakeLists.txt | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/extern/libmv/third_party/ceres/CMakeLists.txt b/extern/libmv/third_party/ceres/CMakeLists.txt index 45e1f9b398d..5a1a2d61c48 100644 --- a/extern/libmv/third_party/ceres/CMakeLists.txt +++ b/extern/libmv/third_party/ceres/CMakeLists.txt @@ -312,7 +312,16 @@ endif() include(CheckIncludeFileCXX) CHECK_INCLUDE_FILE_CXX(unordered_map HAVE_STD_UNORDERED_MAP_HEADER) if(HAVE_STD_UNORDERED_MAP_HEADER) - INCLUDE (CheckCXXSourceCompiles) + # Even so we've found unordered_map header file it doesn't + # mean unordered_map and unordered_set will be declared in + # std namespace. + # + # Namely, MSVC 2008 have unordered_map header which declares + # unordered_map class in std::tr1 namespace. In order to support + # this, we do extra check to see which exactly namespace is + # to be used. + + include(CheckCXXSourceCompiles) CHECK_CXX_SOURCE_COMPILES("#include <unordered_map> int main() { std::unordered_map<int, int> map; @@ -321,6 +330,7 @@ if(HAVE_STD_UNORDERED_MAP_HEADER) HAVE_UNURDERED_MAP_IN_STD_NAMESPACE) if(HAVE_UNURDERED_MAP_IN_STD_NAMESPACE) ADD_DEFINITIONS(-DCERES_STD_UNORDERED_MAP) + MESSAGE("-- Found unordered_map/set in std namespace.") else() CHECK_CXX_SOURCE_COMPILES("#include <unordered_map> int main() { @@ -330,9 +340,10 @@ if(HAVE_STD_UNORDERED_MAP_HEADER) HAVE_UNURDERED_MAP_IN_TR1_NAMESPACE) if(HAVE_UNURDERED_MAP_IN_TR1_NAMESPACE) ADD_DEFINITIONS(-DCERES_STD_UNORDERED_MAP_IN_TR1_NAMESPACE) + MESSAGE("-- Found unordered_map/set in std::tr1 namespace.") else() - MESSAGE("-- Found <unordered_map> but can not find neither std::unordered_map " - "nor std::tr1::unordered_map.") + MESSAGE("-- Found <unordered_map> but cannot find either std::unordered_map " + "or std::tr1::unordered_map.") MESSAGE("-- Replacing unordered_map/set with map/set (warning: slower!)") ADD_DEFINITIONS(-DCERES_NO_UNORDERED_MAP) endif() @@ -341,6 +352,7 @@ else() CHECK_INCLUDE_FILE_CXX("tr1/unordered_map" UNORDERED_MAP_IN_TR1_NAMESPACE) if(UNORDERED_MAP_IN_TR1_NAMESPACE) ADD_DEFINITIONS(-DCERES_TR1_UNORDERED_MAP) + MESSAGE("-- Found unordered_map/set in std::tr1 namespace.") else() MESSAGE("-- Unable to find <unordered_map> or <tr1/unordered_map>. ") MESSAGE("-- Replacing unordered_map/set with map/set (warning: slower!)") |