diff --git a/CMakeLists.txt b/CMakeLists.txt index b8fecc577..67bd60ded 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -33,8 +33,7 @@ option(ENABLE_JSON_LOGGING "Adds additional JSON debug logging to the response" option(DEBUG_GEOMETRY "Enables an option to dump GeoJSON of the final routing graph" OFF) option(BUILD_TOOLS "Build OSRM tools" OFF) -include_directories(${CMAKE_CURRENT_SOURCE_DIR}) -include_directories(${CMAKE_CURRENT_BINARY_DIR}) +include_directories(${CMAKE_CURRENT_BINARY_DIR}/include/) include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include/) include_directories(SYSTEM ${CMAKE_CURRENT_SOURCE_DIR}/third_party/) include_directories(SYSTEM ${CMAKE_CURRENT_SOURCE_DIR}/third_party/libosmium/include/) @@ -46,74 +45,50 @@ add_custom_target(FingerPrintConfigure ALL ${CMAKE_COMMAND} COMMENT "Configuring revision fingerprint" VERBATIM) -add_custom_target(tests DEPENDS datastructure-tests algorithm-tests util-tests) +add_custom_target(tests DEPENDS engine-tests extractor-tests util-tests) add_custom_target(benchmarks DEPENDS rtree-bench) set(BOOST_COMPONENTS date_time filesystem iostreams program_options regex system thread unit_test_framework) configure_file( - ${CMAKE_CURRENT_SOURCE_DIR}/util/version.hpp.in - ${CMAKE_CURRENT_BINARY_DIR}/util/version.hpp + ${CMAKE_CURRENT_SOURCE_DIR}/include/util/version.hpp.in + ${CMAKE_CURRENT_BINARY_DIR}/include/util/version.hpp ) -file(GLOB ExtractorGlob extractor/*.cpp data_structures/hilbert_value.cpp) -file(GLOB ImporterGlob data_structures/import_edge.cpp data_structures/external_memory_node.cpp data_structures/raster_source.cpp) -add_library(IMPORT OBJECT ${ImporterGlob}) -add_library(LOGGER OBJECT util/simple_logger.cpp) -add_library(PHANTOMNODE OBJECT data_structures/phantom_node.cpp) -add_library(RASTERSOURCE OBJECT data_structures/raster_source.cpp) -add_library(EXCEPTION OBJECT util/osrm_exception.cpp) -add_library(MERCATOR OBJECT util/mercator.cpp) -add_library(ANGLE OBJECT util/compute_angle.cpp) - -set(ExtractorSources extract.cpp ${ExtractorGlob}) -add_executable(osrm-extract ${ExtractorSources} $ $ $ $ $ $ $ $ $ $) - -add_library(RESTRICTION OBJECT data_structures/restriction_map.cpp) -add_library(COMPRESSEDEDGE OBJECT data_structures/compressed_edge_container.cpp) -add_library(GRAPHCOMPRESSOR OBJECT algorithms/graph_compressor.cpp) - -file(GLOB PrepareGlob contractor/*.cpp data_structures/hilbert_value.cpp {RestrictionMapGlob}) -set(PrepareSources prepare.cpp ${PrepareGlob}) -add_executable(osrm-prepare ${PrepareSources} $ $ $ $ $ $ $ $ $ $) - -file(GLOB ServerGlob server/*.cpp) -file(GLOB DescriptorGlob descriptors/*.cpp) -file(GLOB DatastructureGlob data_structures/search_engine_data.cpp data_structures/route_parameters.cpp util/bearing.cpp) -file(GLOB CoordinateGlob data_structures/coordinate.cpp algorithms/coordinate_calculation.cpp) -file(GLOB AlgorithmGlob algorithms/polyline_compressor.cpp algorithms/polyline_formatter.cpp algorithms/douglas_peucker.cpp) -file(GLOB HttpGlob server/http/*.cpp) -file(GLOB LibOSRMGlob library/*.cpp) -file(GLOB DataStructureTestsGlob unit_tests/data_structures/*.cpp data_structures/hilbert_value.cpp) -file(GLOB AlgorithmTestsGlob unit_tests/algorithms/*.cpp algorithms/graph_compressor.cpp) +file(GLOB UtilGlob src/util/*.cpp) +file(GLOB ExtractorGlob src/extractor/*.cpp) +file(GLOB ContractorGlob src/contractor/*.cpp) +file(GLOB ServerGlob src/server/*.cpp src/server/**/*.cpp) +file(GLOB EngineGlob src/engine/*.cpp src/engine/**/*.cpp) +file(GLOB ExtractorTestsGlob unit_tests/extractor/*.cpp) +file(GLOB EngineTestsGlob unit_tests/engine/*.cpp) file(GLOB UtilTestsGlob unit_tests/util/*.cpp) -set( - OSRMSources - ${LibOSRMGlob} - ${DescriptorGlob} - ${DatastructureGlob} - ${AlgorithmGlob} - ${HttpGlob} -) +add_library(UTIL OBJECT ${UtilGlob}) +add_library(EXTRACTOR OBJECT ${ExtractorGlob}) +add_library(CONTRACTOR OBJECT ${ContractorGlob}) +add_library(ENGINE OBJECT ${EngineGlob}) +add_library(SERVER OBJECT ${ServerGlob}) +add_library(GRAPH OBJECT src/extractor/external_memory_node.cpp src/extractor/import_edge.cpp) +add_library(PHANTOM OBJECT src/engine/phantom_node.cpp) -add_library(COORDINATE OBJECT ${CoordinateGlob}) -add_library(OSRM ${OSRMSources} $ $ $ $ $ $ $ $ $) +add_dependencies(UTIL FingerPrintConfigure) +set_target_properties(UTIL PROPERTIES LINKER_LANGUAGE CXX) -add_library(FINGERPRINT OBJECT util/fingerprint.cpp) -add_dependencies(FINGERPRINT FingerPrintConfigure) -add_dependencies(OSRM FingerPrintConfigure) -set_target_properties(FINGERPRINT PROPERTIES LINKER_LANGUAGE CXX) +add_executable(osrm-extract src/tools/extract.cpp $ $) +add_executable(osrm-prepare src/tools/contract.cpp $ $ $) +add_executable(osrm-routed src/tools/routed.cpp $ $ $) +add_executable(osrm-datastore src/tools/datastore.cpp $ $) +add_library(OSRM $ $ $) -add_executable(osrm-routed routed.cpp ${ServerGlob} $) -add_executable(osrm-datastore datastore.cpp $ $ $ $ $) +target_link_libraries(osrm-routed OSRM) # Unit tests -add_executable(datastructure-tests EXCLUDE_FROM_ALL unit_tests/datastructure_tests.cpp ${DataStructureTestsGlob} $ $ $ $ $ $ $ $ $) -add_executable(algorithm-tests EXCLUDE_FROM_ALL unit_tests/algorithm_tests.cpp ${AlgorithmTestsGlob} $ $ $ $ $ $) -add_executable(util-tests EXCLUDE_FROM_ALL unit_tests/util_tests.cpp ${UtilTestsGlob}) +add_executable(engine-tests EXCLUDE_FROM_ALL unit_tests/engine_tests.cpp ${EngineTestsGlob} $ $ $) +add_executable(extractor-tests EXCLUDE_FROM_ALL unit_tests/extractor_tests.cpp ${ExtractorTestsGlob} $ $) +add_executable(util-tests EXCLUDE_FROM_ALL unit_tests/util_tests.cpp ${UtilTestsGlob} $ $) # Benchmarks -add_executable(rtree-bench EXCLUDE_FROM_ALL benchmarks/static_rtree.cpp $ $ $ $ $) +add_executable(rtree-bench EXCLUDE_FROM_ALL src/benchmarks/static_rtree.cpp $ $) # Check the release mode if(NOT CMAKE_BUILD_TYPE MATCHES Debug) @@ -248,6 +223,7 @@ if(UNIX AND NOT APPLE) target_link_libraries(osrm-prepare rt) target_link_libraries(osrm-datastore rt) target_link_libraries(OSRM rt) + target_link_libraries(engine-tests rt) endif() #Check Boost @@ -262,8 +238,8 @@ target_link_libraries(osrm-extract ${Boost_LIBRARIES}) target_link_libraries(osrm-prepare ${Boost_LIBRARIES}) target_link_libraries(osrm-routed ${Boost_LIBRARIES} ${OPTIONAL_SOCKET_LIBS} OSRM) target_link_libraries(osrm-datastore ${Boost_LIBRARIES}) -target_link_libraries(datastructure-tests ${Boost_LIBRARIES}) -target_link_libraries(algorithm-tests ${Boost_LIBRARIES} ${OPTIONAL_SOCKET_LIBS} OSRM) +target_link_libraries(engine-tests ${Boost_LIBRARIES}) +target_link_libraries(extractor-tests ${Boost_LIBRARIES}) target_link_libraries(util-tests ${Boost_LIBRARIES}) target_link_libraries(rtree-bench ${Boost_LIBRARIES}) @@ -272,8 +248,9 @@ target_link_libraries(osrm-extract ${CMAKE_THREAD_LIBS_INIT}) target_link_libraries(osrm-datastore ${CMAKE_THREAD_LIBS_INIT}) target_link_libraries(osrm-prepare ${CMAKE_THREAD_LIBS_INIT}) target_link_libraries(OSRM ${CMAKE_THREAD_LIBS_INIT}) -target_link_libraries(datastructure-tests ${CMAKE_THREAD_LIBS_INIT}) -target_link_libraries(algorithm-tests ${CMAKE_THREAD_LIBS_INIT}) +target_link_libraries(engine-tests ${CMAKE_THREAD_LIBS_INIT}) +target_link_libraries(extractor-tests ${CMAKE_THREAD_LIBS_INIT}) +target_link_libraries(util-tests ${CMAKE_THREAD_LIBS_INIT}) target_link_libraries(rtree-bench ${CMAKE_THREAD_LIBS_INIT}) find_package(TBB REQUIRED) @@ -284,8 +261,9 @@ target_link_libraries(osrm-datastore ${TBB_LIBRARIES}) target_link_libraries(osrm-extract ${TBB_LIBRARIES}) target_link_libraries(osrm-prepare ${TBB_LIBRARIES}) target_link_libraries(osrm-routed ${TBB_LIBRARIES}) -target_link_libraries(datastructure-tests ${TBB_LIBRARIES}) -target_link_libraries(algorithm-tests ${TBB_LIBRARIES}) +target_link_libraries(engine-tests ${TBB_LIBRARIES}) +target_link_libraries(extractor-tests ${TBB_LIBRARIES}) +target_link_libraries(util-tests ${TBB_LIBRARIES}) target_link_libraries(rtree-bench ${TBB_LIBRARIES}) include_directories(SYSTEM ${TBB_INCLUDE_DIR}) @@ -295,26 +273,31 @@ include(check_luabind) include_directories(SYSTEM ${LUABIND_INCLUDE_DIR}) target_link_libraries(osrm-extract ${LUABIND_LIBRARY}) target_link_libraries(osrm-prepare ${LUABIND_LIBRARY}) +target_link_libraries(extractor-tests ${LUABIND_LIBRARY}) if(LUAJIT_FOUND) target_link_libraries(osrm-extract ${LUAJIT_LIBRARIES}) target_link_libraries(osrm-prepare ${LUAJIT_LIBRARIES}) + target_link_libraries(extractor-tests ${LUAJIT_LIBRARY}) else() target_link_libraries(osrm-extract ${LUA_LIBRARY}) target_link_libraries(osrm-prepare ${LUA_LIBRARY}) + target_link_libraries(extractor-tests ${LUA_LIBRARY}) endif() include_directories(SYSTEM ${LUA_INCLUDE_DIR}) find_package(EXPAT REQUIRED) include_directories(SYSTEM ${EXPAT_INCLUDE_DIRS}) target_link_libraries(osrm-extract ${EXPAT_LIBRARIES}) +target_link_libraries(extractor-tests ${EXPAT_LIBRARY}) find_package(STXXL REQUIRED) include_directories(SYSTEM ${STXXL_INCLUDE_DIR}) target_link_libraries(OSRM ${STXXL_LIBRARY}) target_link_libraries(osrm-extract ${STXXL_LIBRARY}) target_link_libraries(osrm-prepare ${STXXL_LIBRARY}) -target_link_libraries(datastructure-tests ${STXXL_LIBRARY}) +target_link_libraries(extractor-tests ${STXXL_LIBRARY}) +target_link_libraries(util-tests ${STXXL_LIBRARY}) set(OpenMP_FIND_QUIETLY ON) find_package(OpenMP) @@ -326,11 +309,13 @@ endif() find_package(BZip2 REQUIRED) include_directories(SYSTEM ${BZIP_INCLUDE_DIRS}) target_link_libraries(osrm-extract ${BZIP2_LIBRARIES}) +target_link_libraries(extractor-tests ${BZIP2_LIBRARIES}) find_package(ZLIB REQUIRED) include_directories(SYSTEM ${ZLIB_INCLUDE_DIRS}) target_link_libraries(osrm-extract ${ZLIB_LIBRARY}) target_link_libraries(osrm-routed ${ZLIB_LIBRARY}) +target_link_libraries(extractor-tests ${ZLIB_LIBRARY}) if (ENABLE_JSON_LOGGING) message(STATUS "Enabling json logging") @@ -346,7 +331,7 @@ if(BUILD_TOOLS) message(STATUS "Activating OSRM internal tools") find_package(GDAL) if(GDAL_FOUND) - add_executable(osrm-components tools/components.cpp $ $ $ $ $ $ $) + add_executable(osrm-components src/tools/components.cpp $ $) target_link_libraries(osrm-components ${TBB_LIBRARIES}) include_directories(SYSTEM ${GDAL_INCLUDE_DIR}) target_link_libraries(osrm-components ${GDAL_LIBRARIES} ${Boost_LIBRARIES}) @@ -354,19 +339,19 @@ if(BUILD_TOOLS) else() message(FATAL_ERROR "libgdal and/or development headers not found") endif() - add_executable(osrm-cli tools/simpleclient.cpp $ $ $) + add_executable(osrm-cli src/tools/simpleclient.cpp) target_link_libraries(osrm-cli ${Boost_LIBRARIES} ${OPTIONAL_SOCKET_LIBS} OSRM) target_link_libraries(osrm-cli ${TBB_LIBRARIES}) - add_executable(osrm-io-benchmark tools/io-benchmark.cpp $ $) + add_executable(osrm-io-benchmark src/tools/io-benchmark.cpp $) target_link_libraries(osrm-io-benchmark ${Boost_LIBRARIES}) - add_executable(osrm-unlock-all tools/unlock_all_mutexes.cpp $ $) + add_executable(osrm-unlock-all src/tools/unlock_all_mutexes.cpp $) target_link_libraries(osrm-unlock-all ${Boost_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT}) if(UNIX AND NOT APPLE) target_link_libraries(osrm-unlock-all rt) endif() - add_executable(osrm-check-hsgr tools/check-hsgr.cpp $ $ $ $) + add_executable(osrm-check-hsgr src/tools/check-hsgr.cpp $ $) target_link_libraries(osrm-check-hsgr ${Boost_LIBRARIES} ${TBB_LIBRARIES}) - add_executable(osrm-springclean tools/springclean.cpp $ $ $) + add_executable(osrm-springclean src/tools/springclean.cpp $ $) target_link_libraries(osrm-springclean ${Boost_LIBRARIES}) install(TARGETS osrm-cli DESTINATION bin) diff --git a/cmake/FingerPrint-Config.cmake b/cmake/FingerPrint-Config.cmake index d36b62274..0672b3402 100644 --- a/cmake/FingerPrint-Config.cmake +++ b/cmake/FingerPrint-Config.cmake @@ -1,10 +1,10 @@ -set(OLDFILE ${OUTPUT_DIR}/util/fingerprint_impl.hpp) +set(OLDFILE ${OUTPUT_DIR}/include/util/fingerprint_impl.hpp) set(NEWFILE ${OLDFILE}.tmp) -set(INFILE ${SOURCE_DIR}/util/fingerprint_impl.hpp.in) -file(MD5 ${SOURCE_DIR}/prepare.cpp MD5PREPARE) -file(MD5 ${SOURCE_DIR}/data_structures/static_rtree.hpp MD5RTREE) -file(MD5 ${SOURCE_DIR}/util/graph_loader.hpp MD5GRAPH) -file(MD5 ${SOURCE_DIR}/server/data_structures/internal_datafacade.hpp MD5OBJECTS) +set(INFILE ${SOURCE_DIR}/include/util/fingerprint_impl.hpp.in) +file(MD5 ${SOURCE_DIR}/src/tools/contract.cpp MD5PREPARE) +file(MD5 ${SOURCE_DIR}/include/util/static_rtree.hpp MD5RTREE) +file(MD5 ${SOURCE_DIR}/include/util/graph_loader.hpp MD5GRAPH) +file(MD5 ${SOURCE_DIR}/include/engine/datafacade/internal_datafacade.hpp MD5OBJECTS) CONFIGURE_FILE(${INFILE} ${NEWFILE})