osrm-backend/CMakeLists.txt

180 lines
6.8 KiB
CMake
Raw Normal View History

cmake_minimum_required(VERSION 2.6)
2013-08-14 05:57:33 -04:00
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
2013-04-22 16:23:53 -04:00
project(OSRM)
include(FindPackageHandleStandardArgs)
2013-07-03 07:32:31 -04:00
2013-08-10 07:29:24 -04:00
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
include(GetGitRevisionDescription)
git_describe(GIT_DESCRIPTION)
2013-07-03 07:32:31 -04:00
TRY_RUN(SHARED_LIBRARY_PATH_TYPE SHARED_LIBRARY_PATH_INFO_COMPILED ${PROJECT_BINARY_DIR}/CMakeTmp ${PROJECT_SOURCE_DIR}/cmake/size.cpp OUTPUT_VARIABLE IS_64_SYSTEM)
if(IS_64_SYSTEM)
message(STATUS "System supports 64 bits.")
2013-07-17 09:27:38 -04:00
set( HAS64BITS 1 )
2013-07-03 07:32:31 -04:00
else(IS_64_SYSTEM)
MESSAGE(WARNING "Compiling on a 32 bit system is unsupported!")
2013-07-17 09:27:38 -04:00
set( HAS64BITS 0 )
2013-07-03 07:32:31 -04:00
endif(IS_64_SYSTEM)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
2013-07-19 10:58:13 -04:00
add_custom_command(OUTPUT ${CMAKE_SOURCE_DIR}/Util/UUID.cpp UUID.cpp.alwaysbuild
2013-08-20 07:17:19 -04:00
COMMAND ${CMAKE_COMMAND} -DSOURCE_DIR=${CMAKE_SOURCE_DIR}
-P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/UUID-Config.cmake
DEPENDS
2013-07-19 10:36:57 -04:00
${CMAKE_SOURCE_DIR}/Util/UUID.cpp.in
2013-07-19 10:58:13 -04:00
${CMAKE_SOURCE_DIR}/cmake/UUID-Config.cmake
COMMENT "Configuring UUID.cpp"
VERBATIM)
2013-07-03 07:32:31 -04:00
2013-07-19 10:58:13 -04:00
add_custom_target(UUIDConfigure DEPENDS ${CMAKE_SOURCE_DIR}/Util/UUID.cpp )
2013-04-22 16:23:53 -04:00
2013-09-05 15:33:10 -04:00
set(BOOST_COMPONENTS filesystem program_options regex system thread)
2013-08-10 07:29:24 -04:00
configure_file(Util/GitDescription.cpp.in ${CMAKE_SOURCE_DIR}/Util/GitDescription.cpp)
2013-04-22 16:23:53 -04:00
file(GLOB ExtractorGlob Extractor/*.cpp)
set(ExtractorSources extractor.cpp ${ExtractorGlob})
add_executable(osrm-extract ${ExtractorSources} )
2013-04-22 16:23:53 -04:00
2013-10-16 05:58:29 -04:00
file( GLOB PrepareGlob Contractor/*.cpp)
set( PrepareSources prepare.cpp ${PrepareGlob} )
add_executable( osrm-prepare ${PrepareSources} )
2013-04-22 16:23:53 -04:00
add_executable(osrm-routed routed.cpp)
2013-04-22 16:23:53 -04:00
set_target_properties(osrm-routed PROPERTIES COMPILE_FLAGS -DROUTED)
add_executable(osrm-datastore datastore.cpp)
file(GLOB DescriptorGlob Descriptors/*.cpp)
2013-09-30 10:12:19 -04:00
file(GLOB DatastructureGlob DataStructures/*.cpp)
file(GLOB LibOSRMGlob Library/*.cpp)
2013-09-23 12:59:13 -04:00
set(OSRMSources ${LibOSRMGlob} ${DescriptorGlob} ${DatastructureGlob})
add_library( OSRM SHARED ${OSRMSources} )
add_library( UUID STATIC Util/UUID.cpp )
add_library( GITDESCRIPTION STATIC Util/GitDescription.cpp )
add_dependencies( UUID UUIDConfigure )
add_dependencies( GITDESCRIPTION GIT_DESCRIPTION )
2013-04-22 16:23:53 -04:00
# Check the release mode
if(NOT CMAKE_BUILD_TYPE MATCHES Debug)
set(CMAKE_BUILD_TYPE Release)
endif(NOT CMAKE_BUILD_TYPE MATCHES Debug)
2013-04-22 16:23:53 -04:00
if(CMAKE_BUILD_TYPE MATCHES Debug)
message(STATUS "Configuring OSRM in debug mode")
endif(CMAKE_BUILD_TYPE MATCHES Debug)
2013-04-22 16:23:53 -04:00
if(CMAKE_BUILD_TYPE MATCHES Release)
message(STATUS "Configuring OSRM in release mode")
endif(CMAKE_BUILD_TYPE MATCHES Release)
2013-04-22 16:23:53 -04:00
#Configuring compilers
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
# using Clang
2013-10-10 09:34:10 -04:00
set(CMAKE_CXX_FLAGS "-Wall -Wno-unknown-pragmas -Wno-unneeded-internal-declaration")
if(APPLE)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
endif(APPLE)
2013-04-22 16:23:53 -04:00
message(STATUS "OpenMP parallelization not available using clang++")
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
# using GCC
set(CMAKE_CXX_FLAGS "-Wall -fopenmp -pedantic")
2013-04-22 16:23:53 -04:00
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel")
# using Intel C++
set(CMAKE_CXX_FLAGS "-static-intel -wd10237 -Wall -openmp -ipo")
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
# using Visual Studio C++
endif()
if(APPLE)
SET(CMAKE_OSX_ARCHITECTURES "x86_64")
2013-10-16 05:58:29 -04:00
message(STATUS "Set Architecture to x64 on OS X")
2013-10-14 11:21:40 -04:00
EXEC_PROGRAM(uname ARGS -v OUTPUT_VARIABLE DARWIN_VERSION)
STRING(REGEX MATCH "[0-9]+" DARWIN_VERSION ${DARWIN_VERSION})
IF (DARWIN_VERSION GREATER 12)
2013-10-16 05:58:29 -04:00
MESSAGE(STATUS "Activating flags for OS X 10.9")
2013-10-14 11:21:40 -04:00
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
ENDIF (DARWIN_VERSION GREATER 12)
2013-04-22 16:23:53 -04:00
endif()
#Check Boost
set(BOOST_MIN_VERSION "1.44.0")
find_package( Boost ${BOOST_MIN_VERSION} COMPONENTS ${BOOST_COMPONENTS} REQUIRED )
if (NOT Boost_FOUND)
message(FATAL_ERROR "Fatal error: Boost (version >= 1.44.0) required.\n")
endif (NOT Boost_FOUND)
include_directories(${Boost_INCLUDE_DIRS})
2013-07-23 05:49:23 -04:00
IF( APPLE )
target_link_libraries( OSRM ${Boost_LIBRARIES} UUID )
ELSE( APPLE )
target_link_libraries( OSRM ${Boost_LIBRARIES} )
ENDIF( APPLE )
target_link_libraries( osrm-extract ${Boost_LIBRARIES} UUID GITDESCRIPTION )
target_link_libraries( osrm-prepare ${Boost_LIBRARIES} UUID GITDESCRIPTION )
target_link_libraries( osrm-routed ${Boost_LIBRARIES} OSRM UUID GITDESCRIPTION )
target_link_libraries( osrm-datastore ${Boost_LIBRARIES} UUID GITDESCRIPTION )
2013-04-22 16:23:53 -04:00
find_package ( BZip2 REQUIRED )
include_directories(${BZIP_INCLUDE_DIRS})
target_link_libraries (osrm-extract ${BZIP2_LIBRARIES})
find_package( ZLIB REQUIRED )
include_directories(${ZLIB_INCLUDE_DIRS})
2013-04-22 16:23:53 -04:00
target_link_libraries (osrm-extract ${ZLIB_LIBRARY})
target_link_libraries (osrm-routed ${ZLIB_LIBRARY})
find_package( Threads REQUIRED )
target_link_libraries (osrm-extract ${Threads_LIBRARY})
2013-07-09 07:38:44 -04:00
find_package( LuaJIT )
2013-07-23 05:49:23 -04:00
IF( NOT APPLE AND LUAJIT_INCLUDE_DIR AND LUAJIT_LIBRARIES)
2013-07-03 05:41:14 -04:00
include_directories(${LUAJIT_INCLUDE_DIR})
target_link_libraries( osrm-extract ${LUAJIT_LIBRARIES} )
target_link_libraries( osrm-prepare ${LUAJIT_LIBRARIES} )
2013-07-03 07:46:55 -04:00
ELSE( LUAJIT_INCLUDE_DIR )
2013-07-09 07:38:44 -04:00
find_package( Lua51 REQUIRED AND LUAJIT_LIBRARIES )
2013-07-03 05:41:14 -04:00
include_directories(${LUA_INCLUDE_DIR})
target_link_libraries( osrm-extract ${LUA_LIBRARY} )
target_link_libraries( osrm-prepare ${LUA_LIBRARY} )
2013-07-23 05:49:23 -04:00
ENDIF( NOT APPLE AND LUAJIT_INCLUDE_DIR AND LUAJIT_LIBRARIES )
2013-04-22 16:23:53 -04:00
find_package( LibXml2 REQUIRED )
include_directories(${LIBXML2_INCLUDE_DIR})
target_link_libraries (osrm-extract ${LIBXML2_LIBRARIES})
find_package( Luabind REQUIRED )
include_directories(${LUABIND_INCLUDE_DIR})
target_link_libraries (osrm-extract ${LUABIND_LIBRARY})
target_link_libraries (osrm-prepare ${LUABIND_LIBRARY})
find_package( Protobuf REQUIRED )
include_directories(${PROTOBUF_INCLUDE_DIRS})
target_link_libraries (osrm-extract ${PROTOBUF_LIBRARY})
target_link_libraries (osrm-prepare ${PROTOBUF_LIBRARY})
find_package( STXXL REQUIRED )
include_directories(${STXXL_INCLUDE_DIR})
target_link_libraries (OSRM ${STXXL_LIBRARY})
2013-04-22 16:23:53 -04:00
target_link_libraries (osrm-extract ${STXXL_LIBRARY})
target_link_libraries (osrm-prepare ${STXXL_LIBRARY})
find_package( OSMPBF REQUIRED )
include_directories(${OSMPBF_INCLUDE_DIR})
target_link_libraries (osrm-extract ${OSMPBF_LIBRARY})
target_link_libraries (osrm-prepare ${OSMPBF_LIBRARY})
if(WITH_TOOLS)
2013-10-16 05:58:29 -04:00
message(STATUS "Activating OSRM internal tools")
2013-04-22 16:23:53 -04:00
find_package( GDAL )
if(GDAL_FOUND)
add_executable(osrm-components Tools/componentAnalysis.cpp)
include_directories(${GDAL_INCLUDE_DIR})
2013-07-22 11:54:04 -04:00
target_link_libraries(
2013-10-21 06:01:19 -04:00
osrm-components ${GDAL_LIBRARIES} ${Boost_LIBRARIES} UUID GITDESCRIPTION
2013-07-22 11:54:04 -04:00
)
2013-04-22 16:23:53 -04:00
endif(GDAL_FOUND)
add_executable ( osrm-cli Tools/simpleclient.cpp)
2013-10-21 06:01:19 -04:00
target_link_libraries( osrm-cli ${Boost_LIBRARIES} OSRM UUID GITDESCRIPTION )
2013-09-04 06:30:16 -04:00
add_executable ( osrm-io-benchmark Tools/io-benchmark.cpp )
2013-10-21 06:01:19 -04:00
target_link_libraries( osrm-io-benchmark ${Boost_LIBRARIES} GITDESCRIPTION)
2013-04-22 16:23:53 -04:00
endif(WITH_TOOLS)