diff --git a/CMakeLists.txt b/CMakeLists.txt index f01518799..18ed94326 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -176,7 +176,7 @@ endif() # Activate C++11 if(NOT "${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") - ADD_DEFINITIONS(-std=c++11) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 ") endif() # Configuring other platform dependencies @@ -265,6 +265,9 @@ target_link_libraries(OSRM ${STXXL_LIBRARY}) target_link_libraries(osrm-extract ${STXXL_LIBRARY}) target_link_libraries(osrm-prepare ${STXXL_LIBRARY}) +# check if we need to link against libgomp +include(check_stxxl) + if(MINGW) # STXXL needs OpenMP library target_link_libraries(osrm-extract gomp) diff --git a/cmake/check_stxxl.cmake b/cmake/check_stxxl.cmake new file mode 100644 index 000000000..0b437f3a3 --- /dev/null +++ b/cmake/check_stxxl.cmake @@ -0,0 +1,24 @@ +INCLUDE (CheckCXXSourceCompiles) +unset(STXXL_WORKS CACHE) +set (STXXL_CHECK_SRC "#include \n int main() { stxxl::vector vec; return 0;}") +set (CMAKE_TRY_COMPILE_CONFIGURATION ${CMAKE_BUILD_TYPE}) +set (CMAKE_REQUIRED_INCLUDES "${STXXL_INCLUDE_DIR}") +set (CMAKE_REQUIRED_LIBRARIES "${STXXL_LIBRARY}") + +CHECK_CXX_SOURCE_COMPILES("${STXXL_CHECK_SRC}" STXXL_WORKS) + +if(STXXL_WORKS) + message(STATUS "STXXL can be used without linking against libgomp") +else() + unset(STXXL_WORKS) + message(STATUS "STXXL failed without libgomp, retrying ..") + set(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} -lgomp) + + CHECK_CXX_SOURCE_COMPILES("${STXXL_CHECK_SRC}" STXXL_WORKS) + + if (STXXL_WORKS) + target_link_libraries(osrm-extract gomp) + else() + message(FATAL "STXXL failed failed, libgomp missing?") + endif() +endif()