From da469911d3f332685ed4f8dab7c1bcdc3c7cdc28 Mon Sep 17 00:00:00 2001 From: Dennis Luxen Date: Thu, 29 Jan 2015 16:23:04 +0100 Subject: [PATCH] always link against libgomp --- CMakeLists.txt | 31 ++++++++++++++++--------------- cmake/check_stxxl.cmake | 24 ------------------------ 2 files changed, 16 insertions(+), 39 deletions(-) delete mode 100644 cmake/check_stxxl.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 18ed94326..49bd7be61 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -122,9 +122,17 @@ if(CMAKE_BUILD_TYPE MATCHES Release) message(STATUS "Configuring OSRM in release mode") # Check if LTO is available set(LTO_FLAGS "") - CHECK_CXX_COMPILER_FLAG("-flto" HAS_LTO_FLAG) - if (HAS_LTO_FLAG) - set(LTO_FLAGS "${LTO_FLAGS} -flto") + check_cxx_compiler_flag("-flto" LTO_AVAILABLE) + if (LTO_AVAILABLE) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -flto") + set(CHECK_LTO_SRC "int main(){return 0;}") + CHECK_CXX_SOURCE_COMPILES("${CHECK_LTO_SRC}" LTO_WORKS) + if(LTO_WORKS) + message(STATUS "LTO working") + else() + message(STATUS "LTO broken") + set(CMAKE_CXX_FLAGS "${OLD_CXX_FLAGS}") + endif() # Since gcc 4.9 the LTO format is non-standart ('slim'), so we need to use the build-in tools if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" AND @@ -132,9 +140,8 @@ if(CMAKE_BUILD_TYPE MATCHES Release) message(STATUS "Using gcc specific binutils for LTO.") set(CMAKE_AR "/usr/bin/gcc-ar") set(CMAKE_RANLIB "/usr/bin/gcc-ranlib") -# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g3") endif() - endif (HAS_LTO_FLAG) + endif () endif() if (NOT WIN32) @@ -246,7 +253,7 @@ include_directories(${LUABIND_INCLUDE_DIR}) target_link_libraries(osrm-extract ${LUABIND_LIBRARY}) target_link_libraries(osrm-prepare ${LUABIND_LIBRARY}) -if( LUAJIT_FOUND ) +if(LUAJIT_FOUND) target_link_libraries(osrm-extract ${LUAJIT_LIBRARIES}) target_link_libraries(osrm-prepare ${LUAJIT_LIBRARIES}) else() @@ -259,21 +266,15 @@ find_package(EXPAT REQUIRED) include_directories(${EXPAT_INCLUDE_DIRS}) target_link_libraries(osrm-extract ${EXPAT_LIBRARIES}) -find_package( STXXL REQUIRED ) +find_package(STXXL REQUIRED) include_directories(${STXXL_INCLUDE_DIR}) 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) +target_link_libraries(osrm-extract gomp) -if(MINGW) - # STXXL needs OpenMP library - target_link_libraries(osrm-extract gomp) -endif() - -find_package( OSMPBF REQUIRED ) +find_package(OSMPBF REQUIRED) include_directories(${OSMPBF_INCLUDE_DIR}) target_link_libraries(osrm-extract ${OSMPBF_LIBRARY}) target_link_libraries(osrm-prepare ${OSMPBF_LIBRARY}) diff --git a/cmake/check_stxxl.cmake b/cmake/check_stxxl.cmake deleted file mode 100644 index 7f399f096..000000000 --- a/cmake/check_stxxl.cmake +++ /dev/null @@ -1,24 +0,0 @@ -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() - message(STATUS "Linking STXXL failed without libgomp, retrying ..") - find_package(OpenMP) - set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}${OpenMP_CXX_FLAGS}") - CHECK_CXX_SOURCE_COMPILES("${STXXL_CHECK_SRC}" STXXL_LINKS) - - if (STXXL_LINKS) - message(STATUS "STXXL needs to link against OpenMP") - target_link_libraries(osrm-extract gomp) - else() - message(FATAL_ERROR "STXXL failed failed, libgomp missing?") - endif() -endif()