# Check availability of C++ TR1 contents.

# Sets the following variables:
#
# TR1_SHARED_PTR_FOUND          -- std::tr1::shared_ptr1<T> available
# TR1_SHARED_PTR_USE_TR1_MEMORY -- #include <tr1/memory>
# TR1_SHARED_PTR_USE_MEMORY     -- #include <memory>
 
# We need to have at least this version to support the VERSION_LESS argument to 'if' (2.6.2) and unset (2.6.3)
cmake_policy(PUSH)
    cmake_minimum_required(VERSION 2.6.3)
cmake_policy(POP)

INCLUDE(${PROJECT_SOURCE_DIR}/cmake/CheckCXXSourceCompiles.cmake)
# ---------------------------------------------------------------------------
# std::tr1::shared_ptr<T>
# ---------------------------------------------------------------------------
   
check_cxx_source_compiles(
   "
   #include <tr1/memory>
   int main() {
      std::tr1::shared_ptr<int> ptr;
      return 0;
   }
  "
TR1_SHARED_PTR_USE_TR1_MEMORY)
check_cxx_source_compiles(
        "
        #include <memory>
        int main() {
           std::tr1::shared_ptr<int> ptr;
           return 0;
        }
       "
TR1_SHARED_PTR_USE_MEMORY)
   
set (TR1_SHARED_PTR -NOTFOUND)
if (TR1_SHARED_PTR_USE_TR1_MEMORY)
set (TR1_SHARED_PTR_FOUND TRUE)
endif (TR1_SHARED_PTR_USE_TR1_MEMORY)
if (TR1_SHARED_PTR_USE_MEMORY)
set (TR1_SHARED_PTR_FOUND TRUE)
endif (TR1_SHARED_PTR_USE_MEMORY)
    
mark_as_advanced (TR1_SHARED_PTR_FOUND)
mark_as_advanced (TR1_SHARED_PTR_USE_TR1_MEMORY)
mark_as_advanced (TR1_SHARED_PTR_USE_MEMORY)
    
# ---------------------------------------------------------------------------
# std::tr1::unordered_map<K, V>
# ---------------------------------------------------------------------------
    
check_cxx_source_compiles(
        "
        #include <tr1/unordered_map>
        int main() {
             std::tr1::unordered_map<int, int> m;
             return 0;
        }
        "
        TR1_UNORDERED_MAP_USE_TR1_UNORDERED_MAP)
check_cxx_source_compiles(
        "
        #include <unordered_map>
        int main() {
        std::tr1::unordered_map<int, int> m;
        return 0;
        }
       "
       TR1_UNORDERED_MAP_USE_UNORDERED_MAP)
    
set (TR1_UNORDERED_MAP -NOTFOUND)
if (TR1_UNORDERED_MAP_USE_TR1_UNORDERED_MAP)
set (TR1_UNORDERED_MAP_FOUND TRUE)
endif (TR1_UNORDERED_MAP_USE_TR1_UNORDERED_MAP)
if (TR1_UNORDERED_MAP_USE_UNORDERED_MAP)
set (TR1_UNORDERED_MAP_FOUND TRUE)
endif (TR1_UNORDERED_MAP_USE_UNORDERED_MAP)
   
mark_as_advanced (TR1_UNORDERED_MAP_FOUND)
mark_as_advanced (TR1_UNORDERED_MAP_USE_TR1_UNORDERED_MAP)
mark_as_advanced (TR1_UNORDERED_MAP_USE_UNORDERED_MAP)