diff --git a/.github/workflows/osrm-backend.yml b/.github/workflows/osrm-backend.yml index 454e273f4..bfd5ba520 100644 --- a/.github/workflows/osrm-backend.yml +++ b/.github/workflows/osrm-backend.yml @@ -170,7 +170,6 @@ jobs: continue-on-error: false node: 20 runs-on: ubuntu-24.04 - BUILD_TOOLS: ON BUILD_TYPE: Debug CCOMPILER: gcc-13 CUCUMBER_TIMEOUT: 20000 @@ -181,7 +180,6 @@ jobs: continue-on-error: false node: 20 runs-on: ubuntu-24.04 - BUILD_TOOLS: ON BUILD_TYPE: Debug CCOMPILER: clang-18 CUCUMBER_TIMEOUT: 20000 @@ -195,7 +193,6 @@ jobs: continue-on-error: false node: 18 runs-on: ubuntu-24.04 - BUILD_TOOLS: ON BUILD_TYPE: Release CCOMPILER: clang-18 CXXCOMPILER: clang++-18 @@ -206,7 +203,6 @@ jobs: continue-on-error: false node: 18 runs-on: ubuntu-24.04 - BUILD_TOOLS: ON BUILD_TYPE: Debug CCOMPILER: clang-18 CXXCOMPILER: clang++-18 @@ -217,7 +213,6 @@ jobs: continue-on-error: false node: 18 runs-on: ubuntu-24.04 - BUILD_TOOLS: ON BUILD_TYPE: Debug CCOMPILER: clang-18 CXXCOMPILER: clang++-18 @@ -229,7 +224,6 @@ jobs: continue-on-error: false node: 18 runs-on: ubuntu-24.04 - BUILD_TOOLS: ON BUILD_TYPE: Release CCOMPILER: clang-17 CXXCOMPILER: clang++-17 @@ -240,7 +234,6 @@ jobs: continue-on-error: false node: 18 runs-on: ubuntu-24.04 - BUILD_TOOLS: ON BUILD_TYPE: Release CCOMPILER: clang-16 CXXCOMPILER: clang++-16 @@ -251,7 +244,6 @@ jobs: continue-on-error: false node: 18 runs-on: ubuntu-24.04 - BUILD_TOOLS: ON BUILD_TYPE: Release CCOMPILER: clang-18 CXXCOMPILER: clang++-18 @@ -263,7 +255,6 @@ jobs: continue-on-error: false node: 18 runs-on: ubuntu-24.04 - BUILD_TOOLS: ON BUILD_TYPE: Release CCOMPILER: clang-18 CXXCOMPILER: clang++-18 @@ -274,7 +265,6 @@ jobs: continue-on-error: false node: 20 runs-on: ubuntu-24.04 - BUILD_TOOLS: ON BUILD_TYPE: Release CCOMPILER: gcc-14 CXXCOMPILER: g++-14 @@ -284,7 +274,6 @@ jobs: continue-on-error: false node: 20 runs-on: ubuntu-24.04 - BUILD_TOOLS: ON BUILD_TYPE: Release CCOMPILER: gcc-13 CXXCOMPILER: g++-13 @@ -294,7 +283,6 @@ jobs: continue-on-error: false node: 20 runs-on: ubuntu-22.04 - BUILD_TOOLS: ON BUILD_TYPE: Release CCOMPILER: gcc-12 CXXCOMPILER: g++-12 @@ -350,7 +338,6 @@ jobs: continue-on-error: ${{ matrix.continue-on-error }} runs-on: ${{ matrix.runs-on }} env: - BUILD_TOOLS: ${{ matrix.BUILD_TOOLS }} BUILD_TYPE: ${{ matrix.BUILD_TYPE }} BUILD_SHARED_LIBS: ${{ matrix.BUILD_SHARED_LIBS }} CCOMPILER: ${{ matrix.CCOMPILER }} @@ -533,7 +520,6 @@ jobs: -DENABLE_COVERAGE=${ENABLE_COVERAGE:-OFF} \ -DENABLE_NODE_BINDINGS=${ENABLE_NODE_BINDINGS:-OFF} \ -DENABLE_SANITIZER=${ENABLE_SANITIZER:-OFF} \ - -DBUILD_TOOLS=${BUILD_TOOLS:-OFF} \ -DENABLE_CCACHE=ON \ -DENABLE_LTO=${ENABLE_LTO:-ON} \ -DCMAKE_INSTALL_PREFIX=${OSRM_INSTALL_DIR} diff --git a/CMakeLists.txt b/CMakeLists.txt index 046d8877f..83106cad2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,5 @@ cmake_minimum_required(VERSION 3.18) - +project(OSRM C CXX) set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) @@ -10,6 +10,12 @@ Please create a directory and run cmake from there, passing the path to this sou This process created the file `CMakeCache.txt' and the directory `CMakeFiles'. Please delete them.") endif() +if(CMAKE_SIZEOF_VOID_P EQUAL 8) + message(STATUS "Building on a 64 bit system") +else() + message(FATAL_ERROR "Building on a 32 bit system is not supported") +endif() + # detect if this is included as subproject and if so expose # some variables to its parent scope get_directory_property(BUILD_AS_SUBPROJECT PARENT_DIRECTORY) @@ -22,42 +28,25 @@ if (NOT WIN32 AND NOT DEFINED ENV{OSRM_BUILD_DIR}) set(ENV{OSRM_BUILD_DIR} ${CMAKE_CURRENT_BINARY_DIR}) endif() -option(ENABLE_CONAN "Use conan for dependencies" OFF) -option(ENABLE_CCACHE "Speed up incremental rebuilds via ccache" ON) -option(BUILD_TOOLS "Build OSRM tools" OFF) -option(BUILD_PACKAGE "Build OSRM package" OFF) -option(BUILD_ROUTED "Build osrm-routed HTTP server" ON) -option(ENABLE_ASSERTIONS "Use assertions in release mode" OFF) -option(ENABLE_DEBUG_LOGGING "Use debug logging in release mode" OFF) -option(ENABLE_COVERAGE "Build with coverage instrumentalisation" OFF) -option(ENABLE_SANITIZER "Use memory sanitizer for Debug build" OFF) -option(ENABLE_LTO "Use Link Time Optimisation" ON) -option(ENABLE_FUZZING "Fuzz testing using LLVM's libFuzzer" OFF) -option(ENABLE_NODE_BINDINGS "Build NodeJs bindings" OFF) -option(ENABLE_CLANG_TIDY "Enables clang-tidy checks" OFF) - - -if (ENABLE_CLANG_TIDY) - find_program(CLANG_TIDY_COMMAND NAMES clang-tidy) - if(NOT CLANG_TIDY_COMMAND) - message(FATAL_ERROR "ENABLE_CLANG_TIDY is ON but clang-tidy is not found!") - else() - message(STATUS "Found clang-tidy at ${CLANG_TIDY_COMMAND}") - set(CMAKE_CXX_CLANG_TIDY "${CLANG_TIDY_COMMAND};--warnings-as-errors=*;--header-filter=.*") - endif() -endif() - list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") -# be compatible with version handling before cmake 3.x -if (POLICY CMP0057) - cmake_policy(SET CMP0057 NEW) -endif() -if (POLICY CMP0074) - cmake_policy(SET CMP0074 NEW) -endif() -project(OSRM C CXX) +option(BUILD_PACKAGE "Build OSRM package" OFF) +option(ENABLE_ASSERTIONS "Use assertions in release mode" OFF) +option(ENABLE_CCACHE "Speed up incremental rebuilds via ccache" ON) +option(ENABLE_CLANG_TIDY "Enables clang-tidy checks" OFF) +option(ENABLE_CONAN "Use conan for dependencies" OFF) +option(ENABLE_COVERAGE "Build with coverage instrumentalisation" OFF) +option(ENABLE_DEBUG_LOGGING "Use debug logging in release mode" OFF) +option(ENABLE_FUZZING "Fuzz testing using LLVM's libFuzzer" OFF) +option(ENABLE_LTO "Use Link Time Optimisation" ON) +option(ENABLE_NODE_BINDINGS "Build NodeJs bindings" OFF) +option(ENABLE_SANITIZER "Use memory sanitizer for Debug build" OFF) +if (ENABLE_CLANG_TIDY) + find_program(CLANG_TIDY_COMMAND NAMES clang-tidy REQUIRED) + message(STATUS "Found clang-tidy at ${CLANG_TIDY_COMMAND}") + set(CMAKE_CXX_CLANG_TIDY "${CLANG_TIDY_COMMAND};--warnings-as-errors=*;--header-filter=.*") +endif() if(ENABLE_LTO AND (CMAKE_BUILD_TYPE MATCHES Release OR CMAKE_BUILD_TYPE MATCHES MinRelSize OR CMAKE_BUILD_TYPE MATCHES RelWithDebInfo)) include(CheckIPOSupported) @@ -86,14 +75,14 @@ sbeParseJson(packagejson packagejsonraw) # This regex is not strict enough, but the correct one is too complicated for cmake matching. # https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string if (packagejson.version MATCHES "^([0-9]+)\.([0-9]+)\.([0-9]+)([-+][0-9a-zA-Z.-]+)?$") - set(OSRM_VERSION_MAJOR ${CMAKE_MATCH_1}) - set(OSRM_VERSION_MINOR ${CMAKE_MATCH_2}) - set(OSRM_VERSION_PATCH ${CMAKE_MATCH_3}) - set(OSRM_VERSION_PRERELEASE_BUILD ${CMAKE_MATCH_4}) + set(OSRM_VERSION_MAJOR ${CMAKE_MATCH_1}) + set(OSRM_VERSION_MINOR ${CMAKE_MATCH_2}) + set(OSRM_VERSION_PATCH ${CMAKE_MATCH_3}) + set(OSRM_VERSION_PRERELEASE_BUILD ${CMAKE_MATCH_4}) - set(OSRM_VERSION packagejson.version) + set(OSRM_VERSION packagejson.version) else() - message(FATAL_ERROR "Version from package.json cannot be parsed, expected semver compatible label, but found ${packagejson.version}") + message(FATAL_ERROR "Version from package.json cannot be parsed, expected semver compatible label, but found ${packagejson.version}") endif() if (MSVC) @@ -125,12 +114,6 @@ include(CheckCXXCompilerFlag) include(FindPackageHandleStandardArgs) include(GNUInstallDirs) -if(CMAKE_SIZEOF_VOID_P EQUAL 8) - message(STATUS "Building on a 64 bit system") -else() - message(FATAL_ERROR "Building on a 32 bit system is not supported") -endif() - include_directories(BEFORE ${CMAKE_CURRENT_BINARY_DIR}/include/) include_directories(BEFORE ${CMAKE_CURRENT_SOURCE_DIR}/include/) include_directories(SYSTEM ${CMAKE_CURRENT_SOURCE_DIR}/third_party/sol2/include) @@ -151,7 +134,6 @@ file(GLOB UpdaterGlob src/updater/*.cpp) file(GLOB StorageGlob src/storage/*.cpp) file(GLOB ServerGlob src/server/*.cpp src/server/**/*.cpp) file(GLOB EngineGlob src/engine/*.cpp src/engine/**/*.cpp) -file(GLOB ErrorcodesGlob src/osrm/errorcodes.cpp) add_library(UTIL OBJECT ${UtilGlob}) add_library(EXTRACTOR OBJECT ${ExtractorGlob}) @@ -162,14 +144,11 @@ add_library(CONTRACTOR OBJECT ${ContractorGlob}) add_library(UPDATER OBJECT ${UpdaterGlob}) add_library(STORAGE OBJECT ${StorageGlob}) add_library(ENGINE OBJECT ${EngineGlob}) - -if (BUILD_ROUTED) - add_library(SERVER OBJECT ${ServerGlob}) - add_executable(osrm-routed src/tools/routed.cpp $ $) -endif() +add_library(SERVER OBJECT ${ServerGlob}) set_target_properties(UTIL PROPERTIES LINKER_LANGUAGE CXX) +add_executable(osrm-routed src/tools/routed.cpp $ $) add_executable(osrm-extract src/tools/extract.cpp) add_executable(osrm-partition src/tools/partition.cpp) add_executable(osrm-customize src/tools/customize.cpp) @@ -479,9 +458,7 @@ target_link_libraries(osrm-extract osrm_extract ${Boost_PROGRAM_OPTIONS_LIBRARY} target_link_libraries(osrm-partition osrm_partition ${Boost_PROGRAM_OPTIONS_LIBRARY}) target_link_libraries(osrm-customize osrm_customize ${Boost_PROGRAM_OPTIONS_LIBRARY}) target_link_libraries(osrm-contract osrm_contract ${Boost_PROGRAM_OPTIONS_LIBRARY}) -if (BUILD_ROUTED) - target_link_libraries(osrm-routed osrm ${Boost_PROGRAM_OPTIONS_LIBRARY} ${OPTIONAL_SOCKET_LIBS} ${ZLIB_LIBRARY}) -endif() +target_link_libraries(osrm-routed osrm ${Boost_PROGRAM_OPTIONS_LIBRARY} ${OPTIONAL_SOCKET_LIBS} ${ZLIB_LIBRARY}) set(EXTRACTOR_LIBRARIES ${BZIP2_LIBRARIES} @@ -555,18 +532,13 @@ target_link_libraries(osrm_partition ${PARTITIONER_LIBRARIES}) target_link_libraries(osrm_customize ${CUSTOMIZER_LIBRARIES} osrm_update osrm_store) target_link_libraries(osrm_store ${STORAGE_LIBRARIES}) -# BUILD_COMPONENTS add_executable(osrm-components src/tools/components.cpp $ $) target_link_libraries(osrm-components ${TBB_LIBRARIES} ${BOOST_BASE_LIBRARIES} ${UTIL_LIBRARIES}) install(TARGETS osrm-components DESTINATION bin) -if(BUILD_TOOLS) - message(STATUS "Activating OSRM internal tools") - add_executable(osrm-io-benchmark src/tools/io-benchmark.cpp $) - target_link_libraries(osrm-io-benchmark ${BOOST_BASE_LIBRARIES} ${TBB_LIBRARIES}) - - install(TARGETS osrm-io-benchmark DESTINATION bin) -endif() +add_executable(osrm-io-benchmark src/tools/io-benchmark.cpp $) +target_link_libraries(osrm-io-benchmark ${BOOST_BASE_LIBRARIES} ${TBB_LIBRARIES}) +install(TARGETS osrm-io-benchmark DESTINATION bin) if (ENABLE_ASSERTIONS) message(STATUS "Enabling assertions") @@ -585,47 +557,14 @@ set_property(TARGET osrm-extract PROPERTY INSTALL_RPATH_USE_LINK_PATH TRUE) set_property(TARGET osrm-partition PROPERTY INSTALL_RPATH_USE_LINK_PATH TRUE) set_property(TARGET osrm-contract PROPERTY INSTALL_RPATH_USE_LINK_PATH TRUE) set_property(TARGET osrm-datastore PROPERTY INSTALL_RPATH_USE_LINK_PATH TRUE) -if (BUILD_ROUTED) - set_property(TARGET osrm-routed PROPERTY INSTALL_RPATH_USE_LINK_PATH TRUE) -endif() +set_property(TARGET osrm-routed PROPERTY INSTALL_RPATH_USE_LINK_PATH TRUE) -file(GLOB FlatbuffersGlob third_party/flatbuffers/include/flatbuffers/*.h) -file(GLOB LibraryGlob include/osrm/*.hpp) -file(GLOB ParametersGlob include/engine/api/*_parameters.hpp) -set(ApiHeader include/engine/api/base_result.hpp) -set(EngineHeader include/engine/status.hpp include/engine/engine_config.hpp include/engine/hint.hpp include/engine/bearing.hpp include/engine/approach.hpp include/engine/phantom_node.hpp) -set(UtilHeader include/util/coordinate.hpp include/util/json_container.hpp include/util/typedefs.hpp include/util/alias.hpp include/util/exception.hpp include/util/bearing.hpp) -set(ExtractorHeader include/extractor/extractor.hpp include/storage/io_config.hpp include/extractor/extractor_config.hpp include/extractor/travel_mode.hpp) -set(PartitionerHeader include/partitioner/partitioner.hpp include/partitioner/partitioner_config.hpp) -set(ContractorHeader include/contractor/contractor.hpp include/contractor/contractor_config.hpp) -set(StorageHeader include/storage/storage.hpp include/storage/io_config.hpp include/storage/storage_config.hpp) -install(FILES ${EngineHeader} DESTINATION include/osrm/engine) -install(FILES ${UtilHeader} DESTINATION include/osrm/util) -install(FILES ${StorageHeader} DESTINATION include/osrm/storage) -install(FILES ${ExtractorHeader} DESTINATION include/osrm/extractor) -install(FILES ${PartitionerHeader} DESTINATION include/osrm/partitioner) -install(FILES ${ContractorHeader} DESTINATION include/osrm/contractor) -install(FILES ${LibraryGlob} DESTINATION include/osrm) -install(FILES ${ParametersGlob} DESTINATION include/osrm/engine/api) -install(FILES ${ApiHeader} DESTINATION include/osrm/engine/api) -install(FILES ${FlatbuffersGlob} DESTINATION include/flatbuffers) install(TARGETS osrm-extract DESTINATION bin) install(TARGETS osrm-partition DESTINATION bin) install(TARGETS osrm-customize DESTINATION bin) install(TARGETS osrm-contract DESTINATION bin) install(TARGETS osrm-datastore DESTINATION bin) -if (BUILD_ROUTED) - install(TARGETS osrm-routed DESTINATION bin) -endif() -install(TARGETS osrm DESTINATION lib) -install(TARGETS osrm_extract DESTINATION lib) -install(TARGETS osrm_partition DESTINATION lib) -install(TARGETS osrm_customize DESTINATION lib) -install(TARGETS osrm_update DESTINATION lib) -install(TARGETS osrm_contract DESTINATION lib) -install(TARGETS osrm_store DESTINATION lib) -install(TARGETS osrm_guidance DESTINATION lib) - +install(TARGETS osrm-routed DESTINATION bin) # Install profiles and support library to /usr/local/share/osrm/profiles by default set(DefaultProfilesDir profiles) @@ -636,8 +575,6 @@ set(DefaultProfilesDir data) install(DIRECTORY ${DefaultProfilesDir} DESTINATION share/osrm) # Setup exporting variables for pkgconfig and subproject -# - if(BUILD_PACKAGE) include(CPackConfig) include(CPack) @@ -714,7 +651,6 @@ if (ENABLE_NODE_BINDINGS) add_subdirectory(src/nodejs) endif() - if (ENABLE_FUZZING) # Requires libosrm being built with sanitizers; make configurable and default to ubsan set(FUZZ_SANITIZER "undefined" CACHE STRING "Sanitizer to be used for Fuzz testing") @@ -748,4 +684,3 @@ foreach(header ${headers_to_check}) endforeach() add_library(check-headers STATIC EXCLUDE_FROM_ALL ${sources}) set_target_properties(check-headers PROPERTIES ARCHIVE_OUTPUT_DIRECTORY ${check_headers_dir}) - diff --git a/docker/Dockerfile-alpine b/docker/Dockerfile-alpine index fe22173f9..935f2768f 100644 --- a/docker/Dockerfile-alpine +++ b/docker/Dockerfile-alpine @@ -27,11 +27,10 @@ RUN NPROC=${BUILD_CONCURRENCY:-$(nproc)} && \ cd build && \ BUILD_TYPE="Release" && \ ENABLE_ASSERTIONS="Off" && \ - BUILD_TOOLS="Off" && \ case ${DOCKER_TAG} in *"-debug"*) BUILD_TYPE="Debug";; esac && \ - case ${DOCKER_TAG} in *"-assertions"*) BUILD_TYPE="RelWithDebInfo" && ENABLE_ASSERTIONS="On" && BUILD_TOOLS="On";; esac && \ - echo "Building ${BUILD_TYPE} with ENABLE_ASSERTIONS=${ENABLE_ASSERTIONS} BUILD_TOOLS=${BUILD_TOOLS}" && \ - cmake .. -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -DENABLE_ASSERTIONS=${ENABLE_ASSERTIONS} -DBUILD_TOOLS=${BUILD_TOOLS} -DENABLE_LTO=OFF && \ + case ${DOCKER_TAG} in *"-assertions"*) BUILD_TYPE="RelWithDebInfo" && ENABLE_ASSERTIONS="On";; esac && \ + echo "Building ${BUILD_TYPE} with ENABLE_ASSERTIONS=${ENABLE_ASSERTIONS} && \ + cmake .. -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -DENABLE_ASSERTIONS=${ENABLE_ASSERTIONS} -DENABLE_LTO=OFF && \ make -j${NPROC} install && \ cd ../profiles && \ cp -r * /opt && \ diff --git a/docker/Dockerfile-debian b/docker/Dockerfile-debian index 8b51c5168..087e9dfc7 100644 --- a/docker/Dockerfile-debian +++ b/docker/Dockerfile-debian @@ -29,11 +29,10 @@ RUN NPROC=${BUILD_CONCURRENCY:-$(nproc)} && \ cd build && \ BUILD_TYPE="Release" && \ ENABLE_ASSERTIONS="Off" && \ - BUILD_TOOLS="Off" && \ case ${DOCKER_TAG} in *"-debug"*) BUILD_TYPE="Debug";; esac && \ - case ${DOCKER_TAG} in *"-assertions"*) BUILD_TYPE="RelWithDebInfo" && ENABLE_ASSERTIONS="On" && BUILD_TOOLS="On";; esac && \ - echo "Building ${BUILD_TYPE} with ENABLE_ASSERTIONS=${ENABLE_ASSERTIONS} BUILD_TOOLS=${BUILD_TOOLS}" && \ - cmake .. -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -DENABLE_ASSERTIONS=${ENABLE_ASSERTIONS} -DBUILD_TOOLS=${BUILD_TOOLS} -DENABLE_LTO=On && \ + case ${DOCKER_TAG} in *"-assertions"*) BUILD_TYPE="RelWithDebInfo" && ENABLE_ASSERTIONS="On";; esac && \ + echo "Building ${BUILD_TYPE} with ENABLE_ASSERTIONS=${ENABLE_ASSERTIONS} && \ + cmake .. -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -DENABLE_ASSERTIONS=${ENABLE_ASSERTIONS} -DENABLE_LTO=On && \ make -j${NPROC} install && \ cd ../profiles && \ cp -r * /opt && \ diff --git a/unit_tests/CMakeLists.txt b/unit_tests/CMakeLists.txt index cf2ece5c0..86a5297e5 100644 --- a/unit_tests/CMakeLists.txt +++ b/unit_tests/CMakeLists.txt @@ -114,12 +114,10 @@ add_executable(library-partition-tests EXCLUDE_FROM_ALL ${LibraryPartitionTestsSources}) -if (BUILD_ROUTED) - add_executable(server-tests +add_executable(server-tests EXCLUDE_FROM_ALL ${ServerTestsSources} $ $) -endif() add_executable(util-tests EXCLUDE_FROM_ALL @@ -172,9 +170,7 @@ target_link_libraries(library-extract-tests osrm_extract osrm_guidance ${Boost_U target_link_libraries(library-contract-tests osrm_contract ${Boost_UNIT_TEST_FRAMEWORK_LIBRARY}) target_link_libraries(library-customize-tests osrm_customize ${Boost_UNIT_TEST_FRAMEWORK_LIBRARY}) target_link_libraries(library-partition-tests osrm_partition ${Boost_UNIT_TEST_FRAMEWORK_LIBRARY}) -if (BUILD_ROUTED) - target_link_libraries(server-tests osrm ${Boost_UNIT_TEST_FRAMEWORK_LIBRARY}) -endif() +target_link_libraries(server-tests osrm ${Boost_UNIT_TEST_FRAMEWORK_LIBRARY}) target_link_libraries(util-tests ${UTIL_LIBRARIES} ${Boost_UNIT_TEST_FRAMEWORK_LIBRARY}) target_link_libraries(contractor-tests osrm_contract ${CONTRACTOR_LIBRARIES} ${Boost_UNIT_TEST_FRAMEWORK_LIBRARY}) target_link_libraries(storage-tests osrm_store ${Boost_UNIT_TEST_FRAMEWORK_LIBRARY})