Compare commits
	
		
			74 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | 46f0aa4051 | ||
|  | 3be0c11958 | ||
|  | 8cb8e642ba | ||
|  | 7848f9950a | ||
|  | f48bfdf159 | ||
|  | 0c9b23f4ff | ||
|  | 12163b0be9 | ||
|  | 7c1f0bf62f | ||
|  | 182ad13a60 | ||
|  | 1e7e4ff786 | ||
|  | 67fca9fb80 | ||
|  | 99b3e8fc87 | ||
|  | bac4f12c77 | ||
|  | c340430697 | ||
|  | 044080d96a | ||
|  | aea0d88f87 | ||
|  | ad08b15fbb | ||
|  | fe0d56085e | ||
|  | c39dc2ee0d | ||
|  | 5d6468f8e7 | ||
|  | cc0eeb2cc7 | ||
|  | 9ed9d6cfcd | ||
|  | c127194b26 | ||
|  | a463bbb769 | ||
|  | df5da66b8f | ||
|  | 22c8a3dd2a | ||
|  | d5564cc127 | ||
|  | c061337650 | ||
|  | 34617619bb | ||
|  | a67ef6f166 | ||
|  | ce6c050d73 | ||
|  | b6431944c4 | ||
|  | 022e950067 | ||
|  | 7e2b7d4742 | ||
|  | b59fff2d62 | ||
|  | 8190a30b72 | ||
|  | 66df8f5148 | ||
|  | ae0913d811 | ||
|  | 6a8ff7874f | ||
|  | b85f235d08 | ||
|  | 56ccb1ec7e | ||
|  | 17e1c04136 | ||
|  | ad047741b7 | ||
|  | b76dbfb9cc | ||
|  | 4897275562 | ||
|  | 6ec17cfd95 | ||
|  | cbed6bd44d | ||
|  | e578e6d912 | ||
|  | 2c40141a70 | ||
|  | 9ecc91e1e9 | ||
|  | 822c373113 | ||
|  | 165853a114 | ||
|  | 96543393f7 | ||
|  | 1d06531a55 | ||
|  | 4f5825f2d1 | ||
|  | f638b0478b | ||
|  | b7f0a1f482 | ||
|  | fec9a42132 | ||
|  | 2293d13c4c | ||
|  | 69ef347fe6 | ||
|  | dcd4ddb052 | ||
|  | ab519aae79 | ||
|  | ac89b85a33 | ||
|  | 8871c9054b | ||
|  | 910719819b | ||
|  | ac3cac7cbc | ||
|  | a885dff707 | ||
|  | 893c0d7d1d | ||
|  | 324e4eecc6 | ||
|  | dd6cf93527 | ||
|  | 3af3b11c7d | ||
|  | e67e9ea808 | ||
|  | 5359a7774e | ||
|  | 8983956fa1 | 
| @ -1,65 +0,0 @@ | ||||
| name: Build and Publish Docker Image | ||||
| 
 | ||||
| on: | ||||
|   release: | ||||
|     types: [published, prereleased] | ||||
| 
 | ||||
| env: | ||||
|   IMAGE_NAME: openharbor/osrm-backend | ||||
| 
 | ||||
| jobs: | ||||
|   publish: | ||||
|     strategy: | ||||
|       matrix: | ||||
|         docker-base-image: ["debian", "alpine"] | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|       - name: Check out the repo | ||||
|         uses: actions/checkout@v3 | ||||
| 
 | ||||
|       - name: Set up QEMU | ||||
|         uses: docker/setup-qemu-action@v2 | ||||
| 
 | ||||
|       - name: Set up Docker Buildx | ||||
|         uses: docker/setup-buildx-action@v2 | ||||
| 
 | ||||
|       - name: Docker meta | ||||
|         id: meta | ||||
|         uses: docker/metadata-action@v4 | ||||
|         with: | ||||
|           images: ${{ env.IMAGE_NAME }} | ||||
| 
 | ||||
|       - name: Docker meta - debug | ||||
|         id: metadebug | ||||
|         uses: docker/metadata-action@v4 | ||||
|         with: | ||||
|           images: ${{ env.IMAGE_NAME }} | ||||
|           flavor: | | ||||
|             latest=true | ||||
|             suffix=-debug,onlatest=true | ||||
| 
 | ||||
|       - name: Log in to DockerHub | ||||
|         uses: docker/login-action@v2 | ||||
|         with: | ||||
|           username: ${{ secrets.DOCKERHUB_USERNAME }} | ||||
|           password: ${{ secrets.DOCKERHUB_ACCESS_TOKEN }} | ||||
| 
 | ||||
|       - name: Build and push debug image | ||||
|         uses: docker/build-push-action@v4 | ||||
|         with: | ||||
|           push: true | ||||
|           platforms: linux/amd64,linux/arm64,linux/ppc64le,linux/riscv64 | ||||
|           file: ./docker/Dockerfile-${{ matrix.docker-base-image }} | ||||
|           tags: ${{ steps.metadebug.outputs.tags }} | ||||
|           build-args: | | ||||
|             DOCKER_TAG=${{ join(steps.metadebug.outputs.tags) }}-${{ matrix.docker-base-image }} | ||||
| 
 | ||||
|       - name: Build and push normal image | ||||
|         uses: docker/build-push-action@v4 | ||||
|         with: | ||||
|           push: true | ||||
|           platforms: linux/amd64,linux/arm64,linux/ppc64le,linux/riscv64 | ||||
|           file: ./docker/Dockerfile-${{ matrix.docker-base-image }} | ||||
|           tags: ${{ steps.meta.outputs.tags }} | ||||
|           build-args: | | ||||
|             DOCKER_TAG=${{ join(steps.meta.outputs.tags) }}-${{ matrix.docker-base-image }} | ||||
							
								
								
									
										60
									
								
								.github/workflows/osrm-backend.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										60
									
								
								.github/workflows/osrm-backend.yml
									
									
									
									
										vendored
									
									
								
							| @ -31,8 +31,6 @@ jobs: | ||||
|       BUILD_TYPE: Release | ||||
|     steps: | ||||
|     - uses: actions/checkout@v4 | ||||
|     - run: pip install "conan<2.0.0" | ||||
|     - run: conan --version | ||||
|     - run: cmake --version | ||||
|     - uses: actions/setup-node@v4 | ||||
|       with: | ||||
| @ -51,6 +49,12 @@ jobs: | ||||
|       run: | | ||||
|         mkdir build | ||||
|         cd build | ||||
| 
 | ||||
|         python3 -m venv .venv | ||||
|         source .venv/Scripts/Activate | ||||
|         python3 -m pip install conan==2.7.1 | ||||
|         conan profile detect --force | ||||
| 
 | ||||
|         cmake -DCMAKE_BUILD_TYPE=Release -DENABLE_CONAN=ON -DENABLE_NODE_BINDINGS=ON .. | ||||
|         cmake --build . --config Release | ||||
|          | ||||
| @ -393,10 +397,10 @@ jobs: | ||||
|     - name: Enable Conan cache | ||||
|       uses: actions/cache@v4 | ||||
|       with: | ||||
|         path: ~/.conan | ||||
|         key: v9-conan-${{ matrix.name }}-${{ github.sha }} | ||||
|         path: ~/.conan2 | ||||
|         key: v10-conan-${{ matrix.name }}-${{ github.sha }} | ||||
|         restore-keys: | | ||||
|           v9-conan-${{ matrix.name }}- | ||||
|           v10-conan-${{ matrix.name }}- | ||||
|     - name: Enable test cache | ||||
|       uses: actions/cache@v4 | ||||
|       with: | ||||
| @ -446,19 +450,17 @@ jobs: | ||||
|       if: steps.cache-boost.outputs.cache-hit != 'true' && runner.os == 'Linux' && matrix.ENABLE_CONAN != 'ON' | ||||
|       run: | | ||||
|         BOOST_VERSION="1.85.0" | ||||
|         BOOST_VERSION_FLAVOR="${BOOST_VERSION}-b2-nodocs" | ||||
|         wget -q https://github.com/boostorg/boost/releases/download/boost-${BOOST_VERSION}/boost-${BOOST_VERSION_FLAVOR}.tar.gz | ||||
|         tar xzf boost-${BOOST_VERSION_FLAVOR}.tar.gz | ||||
|         cd boost-${BOOST_VERSION} | ||||
|         BOOST_VERSION_UNDERSCORE="${BOOST_VERSION//./_}" | ||||
|         wget -q https://boostorg.jfrog.io/artifactory/main/release/${BOOST_VERSION}/source/boost_${BOOST_VERSION_UNDERSCORE}.tar.gz | ||||
|         tar xzf boost_${BOOST_VERSION_UNDERSCORE}.tar.gz | ||||
|         cd boost_${BOOST_VERSION_UNDERSCORE} | ||||
|         sudo ./bootstrap.sh | ||||
|         sudo ./b2 install | ||||
|         cd .. | ||||
|         sudo rm -rf boost-${BOOST_VERSION}* | ||||
|         sudo rm -rf boost_${BOOST_VERSION_UNDERSCORE}* | ||||
|      | ||||
|     - name: Install dev dependencies | ||||
|       run: | | ||||
|         python3 -m pip install "conan<2.0.0" || python3 -m pip install "conan<2.0.0" --break-system-packages | ||||
| 
 | ||||
|         # workaround for issue that GitHub Actions seems to not adding it to PATH after https://github.com/actions/runner-images/pull/6499 | ||||
|         # and that's why CI cannot find conan executable installed above | ||||
|         if [[ "${RUNNER_OS}" == "macOS" ]]; then | ||||
| @ -495,20 +497,6 @@ jobs: | ||||
|         tar zxvf onetbb.tgz | ||||
|         sudo cp -a oneapi-tbb-${TBB_VERSION}/lib/. /usr/local/lib/ | ||||
|         sudo cp -a oneapi-tbb-${TBB_VERSION}/include/. /usr/local/include/ | ||||
|     - name: Add Clang 18 to list of Conan compilers # workaround for the issue that Conan 1.x doesn't know about Clang 18 | ||||
|       if: ${{ matrix.ENABLE_CONAN == 'ON' && matrix.CCOMPILER == 'clang-18' }} | ||||
|       run: | | ||||
|         sudo wget https://github.com/mikefarah/yq/releases/download/v4.9.6/yq_linux_amd64 -O /usr/bin/yq && sudo chmod +x /usr/bin/yq | ||||
| 
 | ||||
|         conan config init | ||||
|         yq eval '.compiler.clang.version += ["18"]' -i "$HOME/.conan/settings.yml" | ||||
|     - name: Add Apple-clang 16 to list of Conan compilers # workaround for the issue that Conan 1.x doesn't know about Apple-clang 16 | ||||
|       if: ${{ matrix.ENABLE_CONAN == 'ON' && matrix.runs-on == 'macos-14' }} | ||||
|       run: | | ||||
|         sudo wget https://github.com/mikefarah/yq/releases/download/v4.9.6/yq_darwin_arm64 -O /usr/local/bin/yq && sudo chmod +x /usr/local/bin/yq | ||||
| 
 | ||||
|         conan config init | ||||
|         yq eval '.compiler.apple-clang.version += ["16.0"]' -i "$HOME/.conan/settings.yml" | ||||
|     - name: Prepare build | ||||
|       run: | | ||||
|         mkdir ${OSRM_BUILD_DIR} | ||||
| @ -530,7 +518,14 @@ jobs: | ||||
|       run: | | ||||
|         echo "Using ${JOBS} jobs" | ||||
|         pushd ${OSRM_BUILD_DIR} | ||||
|          | ||||
| 
 | ||||
|         if [[ "${ENABLE_CONAN}" == "ON" ]]; then | ||||
|           python3 -m venv .venv | ||||
|           source .venv/bin/activate | ||||
|           python3 -m pip install conan==2.7.1 | ||||
|           conan profile detect --force | ||||
|         fi | ||||
| 
 | ||||
|         ccache --zero-stats | ||||
|         cmake .. -DCMAKE_BUILD_TYPE=${BUILD_TYPE} \ | ||||
|                  -DENABLE_CONAN=${ENABLE_CONAN:-OFF} \ | ||||
| @ -544,6 +539,7 @@ jobs: | ||||
|                  -DENABLE_CCACHE=ON \ | ||||
|                  -DENABLE_LTO=${ENABLE_LTO:-ON} \ | ||||
|                  -DCMAKE_INSTALL_PREFIX=${OSRM_INSTALL_DIR} | ||||
| 
 | ||||
|         make --jobs=${JOBS} | ||||
| 
 | ||||
|         if [[ "${NODE_PACKAGE_TESTS_ONLY}" != "ON" ]]; then | ||||
| @ -558,7 +554,7 @@ jobs: | ||||
|         fi | ||||
|         popd | ||||
|     - name: Build example | ||||
|       if: ${{ matrix.NODE_PACKAGE_TESTS_ONLY != 'ON' }} | ||||
|       if: ${{ matrix.NODE_PACKAGE_TESTS_ONLY != 'ON' && matrix.ENABLE_CONAN != 'ON' }} | ||||
|       run: | | ||||
|         mkdir example/build && pushd example/build | ||||
|         cmake .. -DCMAKE_BUILD_TYPE=${BUILD_TYPE} | ||||
| @ -570,8 +566,10 @@ jobs: | ||||
|         make -C test/data benchmark | ||||
| 
 | ||||
|         # macOS SIP strips the linker path. Reset this inside the running shell | ||||
|         export LD_LIBRARY_PATH=${{ env.LD_LIBRARY_PATH }} | ||||
|         ./example/build/osrm-example test/data/mld/monaco.osrm | ||||
|         if [[ "${ENABLE_CONAN}" == "OFF" ]]; then | ||||
|           export LD_LIBRARY_PATH=${{ env.LD_LIBRARY_PATH }} | ||||
|           ./example/build/osrm-example test/data/mld/monaco.osrm | ||||
|         fi | ||||
| 
 | ||||
|         # All tests assume to be run from the build directory | ||||
|         pushd ${OSRM_BUILD_DIR} | ||||
| @ -681,7 +679,7 @@ jobs: | ||||
|           python3 -m venv .venv | ||||
|           source .venv/bin/activate | ||||
|           echo PATH=$PATH >> $GITHUB_ENV | ||||
|           pip install "conan<2.0.0" "requests==2.31.0" "numpy==1.26.4"  | ||||
|           pip install "conan==2.7.1" "requests==2.31.0" "numpy==1.26.4"  | ||||
|       - name: Prepare data | ||||
|         run: | | ||||
|           if [ "$RUN_BIG_BENCHMARK" = "true" ]; then | ||||
|  | ||||
| @ -25,7 +25,7 @@ | ||||
|     - NodeJS: | ||||
|       - CHANGED: Use node-api instead of NAN. [#6452](https://github.com/Project-OSRM/osrm-backend/pull/6452) | ||||
|     - Misc: | ||||
|       - CHANGED: Use std::string_view for key type in json::Object. [#7062](https://github.com/Project-OSRM/osrm-backend/pull/7062) | ||||
|       - CHANGED: Migrate to Conan 2.x. [#7042](https://github.com/Project-OSRM/osrm-backend/pull/7042) | ||||
|       - CHANGED: Use thread_local instead of boost::thread_specific_ptr. [#6991](https://github.com/Project-OSRM/osrm-backend/pull/6991) | ||||
|       - CHANGED: Bump flatbuffers to v24.3.25 version. [#6988](https://github.com/Project-OSRM/osrm-backend/pull/6988) | ||||
|       - CHANGED: Add .reserve(...) to assembleGeometry function. [#6983](https://github.com/Project-OSRM/osrm-backend/pull/6983) | ||||
|  | ||||
							
								
								
									
										198
									
								
								CMakeLists.txt
									
									
									
									
									
								
							
							
						
						
									
										198
									
								
								CMakeLists.txt
									
									
									
									
									
								
							| @ -37,6 +37,29 @@ option(ENABLE_NODE_BINDINGS "Build NodeJs bindings" OFF) | ||||
| option(ENABLE_CLANG_TIDY "Enables clang-tidy checks" OFF) | ||||
| 
 | ||||
| 
 | ||||
| if (ENABLE_CONAN) | ||||
|   message(STATUS "Installing Conan packages. It may take a while...") | ||||
|   find_program(CONAN_EXECUTABLE NAMES conan) | ||||
| 
 | ||||
|   if (NOT CONAN_EXECUTABLE) | ||||
|     message(FATAL_ERROR "Conan not found! Please install Conan 2.x and try again.") | ||||
|   else() | ||||
|     set(CMAKE_TOOLCHAIN_FILE "./conan_toolchain.cmake") | ||||
| 
 | ||||
|     execute_process( | ||||
|       COMMAND ${CONAN_EXECUTABLE} install .. --output-folder=. --build=missing --settings compiler.cppstd=20 --settings build_type=${CMAKE_BUILD_TYPE} | ||||
|       WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} | ||||
|       OUTPUT_VARIABLE conan_stdout | ||||
|       ERROR_VARIABLE conan_stderr | ||||
|       RESULT_VARIABLE conan_install_result | ||||
|     ) | ||||
| 
 | ||||
|     if (NOT conan_install_result EQUAL 0) | ||||
|       message(FATAL_ERROR "Conan install failed: ${conan_install_result}. Stderr: ${conan_stderr}. Stdout: ${conan_stdout}") | ||||
|     endif() | ||||
|   endif() | ||||
| endif() | ||||
| 
 | ||||
| if (ENABLE_CLANG_TIDY) | ||||
|   find_program(CLANG_TIDY_COMMAND NAMES clang-tidy) | ||||
|   if(NOT CLANG_TIDY_COMMAND) | ||||
| @ -56,9 +79,6 @@ endif() | ||||
| if (POLICY CMP0074) | ||||
|   cmake_policy(SET CMP0074 NEW) | ||||
| endif() | ||||
| if (POLICY CMP0167) | ||||
|   cmake_policy(SET CMP0167 NEW) | ||||
| endif() | ||||
| project(OSRM C CXX) | ||||
| 
 | ||||
| 
 | ||||
| @ -324,116 +344,75 @@ if (MSVC) | ||||
|   add_definitions(-DBOOST_ALL_NO_LIB) | ||||
| endif() | ||||
| 
 | ||||
| if(ENABLE_CONAN) | ||||
|   message(STATUS "Installing dependencies via Conan") | ||||
| 
 | ||||
|   # Conan will generate Find*.cmake files to build directory, so we use them with the highest priority | ||||
|   list(INSERT CMAKE_MODULE_PATH 0 ${CMAKE_BINARY_DIR}) | ||||
|   list(INSERT CMAKE_PREFIX_PATH 0 ${CMAKE_BINARY_DIR}) | ||||
| 
 | ||||
|   include(${CMAKE_CURRENT_LIST_DIR}/cmake/conan.cmake) | ||||
| 
 | ||||
|   conan_check(REQUIRED) | ||||
| 
 | ||||
|   set(CONAN_BOOST_VERSION "1.85.0@#14265ec82b25d91305bbb3b30d3357f8") | ||||
|   set(CONAN_BZIP2_VERSION "1.0.8@#d1b2d5816f25865acf978501dff1f897") | ||||
|   set(CONAN_EXPAT_VERSION "2.6.2@#2d385d0d50eb5561006a7ff9e356656b") | ||||
|   set(CONAN_LUA_VERSION "5.4.6@#658d6089093cf01992c2737ab2e96763") | ||||
|   set(CONAN_TBB_VERSION "2021.12.0@#e56e5b44be8d690530585dd3634c0106") | ||||
| 
 | ||||
|   set(CONAN_SYSTEM_INCLUDES ON) | ||||
| 
 | ||||
| 
 | ||||
|   set(CONAN_ARGS | ||||
|     REQUIRES | ||||
|     "boost/${CONAN_BOOST_VERSION}" | ||||
|     "bzip2/${CONAN_BZIP2_VERSION}" | ||||
|     "expat/${CONAN_EXPAT_VERSION}" | ||||
|     "lua/${CONAN_LUA_VERSION}" | ||||
|     "onetbb/${CONAN_TBB_VERSION}" | ||||
|     BASIC_SETUP | ||||
|     GENERATORS cmake_find_package json  # json generator generates a conanbuildinfo.json in the build folder so (non-CMake) projects can easily parse OSRM's dependencies | ||||
|     KEEP_RPATHS | ||||
|     NO_OUTPUT_DIRS | ||||
|     OPTIONS boost:without_stacktrace=True # Apple Silicon cross-compilation fails without it | ||||
|     BUILD missing | ||||
|   ) | ||||
| 
 | ||||
|   # Enable revisions in the conan config | ||||
|   execute_process(COMMAND ${CONAN_CMD} config set general.revisions_enabled=1 RESULT_VARIABLE RET_CODE) | ||||
|   if(NOT "${RET_CODE}" STREQUAL "0") | ||||
|     message(FATAL_ERROR "Error setting revisions for Conan: '${RET_CODE}'") | ||||
|   endif() | ||||
| 
 | ||||
|   # explicitly say Conan to use x86 dependencies if build for x86 platforms (https://github.com/conan-io/cmake-conan/issues/141) | ||||
|   if(NOT CMAKE_SIZEOF_VOID_P EQUAL 8) | ||||
|     conan_cmake_run("${CONAN_ARGS};ARCH;x86") | ||||
|   # cross-compilation for Apple Silicon | ||||
|   elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "arm64" AND CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "x86_64") | ||||
|     conan_cmake_run("${CONAN_ARGS};ARCH;armv8") | ||||
|   else() | ||||
|     conan_cmake_run("${CONAN_ARGS}") | ||||
|   endif() | ||||
| 
 | ||||
|   add_dependency_includes(${CONAN_INCLUDE_DIRS_BOOST}) | ||||
|   add_dependency_includes(${CONAN_INCLUDE_DIRS_BZIP2}) | ||||
|   add_dependency_includes(${CONAN_INCLUDE_DIRS_EXPAT}) | ||||
|   add_dependency_includes(${CONAN_INCLUDE_DIRS_LUA}) | ||||
|   add_dependency_includes(${CONAN_INCLUDE_DIRS_TBB}) | ||||
| 
 | ||||
| if (ENABLE_CONAN) | ||||
|   set(Boost_USE_STATIC_LIBS ON) | ||||
|   find_package(Boost REQUIRED COMPONENTS ${BOOST_COMPONENTS}) | ||||
|   set(Boost_DATE_TIME_LIBRARY "${Boost_date_time_LIB_TARGETS}") | ||||
|   set(Boost_PROGRAM_OPTIONS_LIBRARY "${Boost_program_options_LIB_TARGETS}") | ||||
|   set(Boost_IOSTREAMS_LIBRARY "${Boost_iostreams_LIB_TARGETS}") | ||||
|   set(Boost_THREAD_LIBRARY "${Boost_thread_LIB_TARGETS}") | ||||
|   set(Boost_ZLIB_LIBRARY "${Boost_zlib_LIB_TARGETS}") | ||||
|   set(Boost_UNIT_TEST_FRAMEWORK_LIBRARY "${Boost_unit_test_framework_LIB_TARGETS}") | ||||
| 
 | ||||
| 
 | ||||
|   find_package(BZip2 REQUIRED) | ||||
|   find_package(EXPAT REQUIRED) | ||||
|   find_package(lua REQUIRED) | ||||
|   set(LUA_LIBRARIES ${lua_LIBRARIES}) | ||||
| 
 | ||||
|   find_package(TBB REQUIRED) | ||||
|   find_package(EXPAT REQUIRED) | ||||
|   find_package(BZip2 REQUIRED) | ||||
|   find_package(Lua 5.2 REQUIRED) | ||||
| 
 | ||||
| 
 | ||||
|   # note: we avoid calling find_package(Osmium ...) here to ensure that the | ||||
|   # expat and bzip2 are used from conan rather than the system | ||||
|   include_directories(SYSTEM ${CMAKE_CURRENT_SOURCE_DIR}/third_party/libosmium/include) | ||||
| else() | ||||
|   find_package(Boost 1.70 REQUIRED COMPONENTS ${BOOST_COMPONENTS}) | ||||
|   add_dependency_includes(${Boost_INCLUDE_DIRS}) | ||||
| 
 | ||||
|   find_package(TBB REQUIRED) | ||||
|   set(BOOST_BASE_LIBRARIES ${Boost_LIBRARIES}) | ||||
|   set(BOOST_ENGINE_LIBRARIES ${Boost_LIBRARIES}) | ||||
| 
 | ||||
|   add_dependency_includes(${TBB_INCLUDE_DIR}) | ||||
|   set(TBB_LIBRARIES TBB::tbb) | ||||
|   set(TBB_LIBRARIES ${TBB_LIBRARIES}) | ||||
| 
 | ||||
|   find_package(EXPAT REQUIRED) | ||||
|   add_dependency_includes(${EXPAT_INCLUDE_DIRS}) | ||||
|   add_dependency_includes(${expat_INCLUDE_DIRS}) | ||||
|   set(EXPAT_LIBRARIES ${expat_LIBRARIES}) | ||||
|   set(EXPAT_INCLUDE_DIRS ${expat_INCLUDE_DIRS}) | ||||
| 
 | ||||
|   find_package(BZip2 REQUIRED) | ||||
|   add_dependency_includes(${BZIP2_INCLUDE_DIR}) | ||||
| 
 | ||||
|   find_package(Lua 5.2 REQUIRED) | ||||
|   set(LUA_LIBRARIES lua::lua) | ||||
|   if (LUA_FOUND) | ||||
|     message(STATUS "Using Lua ${LUA_VERSION_STRING}") | ||||
|   endif() | ||||
| 
 | ||||
|   add_dependency_includes(${lua_INCLUDE_DIRS}) | ||||
| 
 | ||||
|   # note: we avoid calling find_package(Osmium ...) here to ensure that the | ||||
|   # expat and bzip2 are used from conan rather than the system | ||||
|   include_directories(SYSTEM ${CMAKE_CURRENT_SOURCE_DIR}/third_party/libosmium/include) | ||||
| 
 | ||||
| else() | ||||
|   find_package(Boost REQUIRED COMPONENTS ${BOOST_COMPONENTS}) | ||||
|   find_package(TBB REQUIRED) | ||||
|   find_package(EXPAT REQUIRED) | ||||
|   find_package(BZip2 REQUIRED) | ||||
|   find_package(Lua 5.2 REQUIRED) | ||||
| 
 | ||||
|   add_dependency_includes(${Boost_INCLUDE_DIRS}) | ||||
|   add_dependency_includes(${TBB_INCLUDE_DIR}) | ||||
|   add_dependency_includes(${EXPAT_INCLUDE_DIRS}) | ||||
|   add_dependency_includes(${BZIP2_INCLUDE_DIR}) | ||||
|   add_dependency_includes(${LUA_INCLUDE_DIR}) | ||||
| 
 | ||||
|   set(TBB_LIBRARIES TBB::tbb) | ||||
| 
 | ||||
|   set(BOOST_BASE_LIBRARIES | ||||
|     ${Boost_DATE_TIME_LIBRARY} | ||||
|     ${Boost_IOSTREAMS_LIBRARY} | ||||
|     ${Boost_THREAD_LIBRARY}) | ||||
| 
 | ||||
|   set(BOOST_ENGINE_LIBRARIES | ||||
|     ${Boost_ZLIB_LIBRARY} | ||||
|     ${Boost_REGEX_LIBRARY} | ||||
|     ${BOOST_BASE_LIBRARIES}) | ||||
| 
 | ||||
|   # add a target to generate API documentation with Doxygen | ||||
|   find_package(Doxygen) | ||||
|   if(DOXYGEN_FOUND) | ||||
|   configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY) | ||||
|   add_custom_target(doc | ||||
|   ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile | ||||
|   WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} | ||||
|   COMMENT "Generating API documentation with Doxygen" VERBATIM | ||||
|   ) | ||||
|     configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY) | ||||
|     add_custom_target(doc | ||||
|       ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile | ||||
|       WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} | ||||
|       COMMENT "Generating API documentation with Doxygen" VERBATIM | ||||
|     ) | ||||
|   endif() | ||||
| 
 | ||||
|   # note libosmium depends on expat and bzip2 | ||||
|   list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/third_party/libosmium/cmake") | ||||
|   if(NOT OSMIUM_INCLUDE_DIR) | ||||
| @ -443,6 +422,8 @@ else() | ||||
|   include_directories(SYSTEM ${OSMIUM_INCLUDE_DIR}) | ||||
| endif() | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| # prefix compilation with ccache by default if available and on clang or gcc | ||||
| if(ENABLE_CCACHE AND (CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID MATCHES "GNU")) | ||||
|   find_program(CCACHE_FOUND ccache) | ||||
| @ -457,6 +438,7 @@ endif() | ||||
| # to ensure that osrm binaries play well with other binaries like nodejs | ||||
| find_package(ZLIB REQUIRED) | ||||
| add_dependency_includes(${ZLIB_INCLUDE_DIRS}) | ||||
| set(ZLIB_LIBRARY ${ZLIB_LIBRARIES}) | ||||
| 
 | ||||
| add_dependency_defines(-DBOOST_SPIRIT_USE_PHOENIX_V3) | ||||
| add_dependency_defines(-DBOOST_RESULT_OF_USE_DECLTYPE) | ||||
| @ -467,15 +449,6 @@ add_dependency_defines(-DBOOST_PHOENIX_STL_TUPLE_H_) | ||||
| add_definitions(${OSRM_DEFINES}) | ||||
| include_directories(SYSTEM ${DEPENDENCIES_INCLUDE_DIRS}) | ||||
| 
 | ||||
| set(BOOST_BASE_LIBRARIES | ||||
|    ${Boost_DATE_TIME_LIBRARY} | ||||
|    ${Boost_IOSTREAMS_LIBRARY} | ||||
|    ${Boost_THREAD_LIBRARY}) | ||||
| 
 | ||||
| set(BOOST_ENGINE_LIBRARIES | ||||
|   ${Boost_ZLIB_LIBRARY} | ||||
|   ${Boost_REGEX_LIBRARY} | ||||
|   ${BOOST_BASE_LIBRARIES}) | ||||
| 
 | ||||
| # Binaries | ||||
| target_link_libraries(osrm-datastore osrm_store ${Boost_PROGRAM_OPTIONS_LIBRARY}) | ||||
| @ -508,10 +481,10 @@ set(PARTITIONER_LIBRARIES | ||||
|     ${CMAKE_THREAD_LIBS_INIT} | ||||
|     ${TBB_LIBRARIES} | ||||
|     ${MAYBE_RT_LIBRARY} | ||||
|     ${MAYBE_COVERAGE_LIBRARIES} | ||||
|     ${ZLIB_LIBRARY}) | ||||
|     ${MAYBE_COVERAGE_LIBRARIES}) | ||||
| set(CUSTOMIZER_LIBRARIES | ||||
|     ${BOOST_ENGINE_LIBRARIES} | ||||
|     ${ZLIB_LIBRARY} | ||||
|     ${CMAKE_THREAD_LIBS_INIT} | ||||
|     ${TBB_LIBRARIES} | ||||
|     ${MAYBE_RT_LIBRARY} | ||||
| @ -679,16 +652,17 @@ list(APPEND DEPENDENCIES_INCLUDE_DIRS "${PKGCONFIG_INCLUDE_DIR}") | ||||
| list(APPEND DEPENDENCIES_INCLUDE_DIRS "${PKGCONFIG_INCLUDE_DIR}/osrm") | ||||
| JOIN("-I${DEPENDENCIES_INCLUDE_DIRS}" " -I" PKGCONFIG_OSRM_INCLUDE_FLAGS) | ||||
| 
 | ||||
| # Boost uses imported targets, we need to use a generator expression to extract | ||||
| # the link libraries to be written to the pkg-config file. | ||||
| # Conan & TBB define dependencies as CMake targets too, that's why we do the same for them. | ||||
| foreach(engine_lib ${ENGINE_LIBRARIES}) | ||||
|   if("${engine_lib}" MATCHES "^Boost.*" OR "${engine_lib}" MATCHES "^CONAN_LIB.*" OR "${engine_lib}" MATCHES "^TBB.*") | ||||
|     list(APPEND PKGCONFIG_DEPENDENT_LIBRARIES "$<TARGET_LINKER_FILE:${engine_lib}>") | ||||
|   else() | ||||
|     list(APPEND PKGCONFIG_DEPENDENT_LIBRARIES "${engine_lib}") | ||||
|   endif() | ||||
| endforeach(engine_lib) | ||||
| 
 | ||||
| if (NOT ENABLE_CONAN) | ||||
|   foreach(engine_lib ${ENGINE_LIBRARIES}) | ||||
|     if("${engine_lib}" MATCHES "^boost.*" OR "${engine_lib}" MATCHES "^TBB.*") | ||||
|       list(APPEND PKGCONFIG_DEPENDENT_LIBRARIES "$<TARGET_LINKER_FILE:${engine_lib}>") | ||||
|     else() | ||||
|       list(APPEND PKGCONFIG_DEPENDENT_LIBRARIES "${engine_lib}") | ||||
|     endif() | ||||
|   endforeach(engine_lib) | ||||
| endif() | ||||
| 
 | ||||
| JOIN("${PKGCONFIG_DEPENDENT_LIBRARIES}" " " PKGCONFIG_OSRM_DEPENDENT_LIBRARIES) | ||||
| 
 | ||||
| configure_file(${CMAKE_CURRENT_SOURCE_DIR}/cmake/pkgconfig.in pkgconfig.configured @ONLY) | ||||
|  | ||||
							
								
								
									
										1026
									
								
								cmake/conan.cmake
									
									
									
									
									
								
							
							
						
						
									
										1026
									
								
								cmake/conan.cmake
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										31
									
								
								conanfile.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								conanfile.py
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,31 @@ | ||||
| from conan import ConanFile | ||||
| from conan.tools.cmake import CMake, CMakeToolchain, CMakeDeps | ||||
| 
 | ||||
| class OsrmConan(ConanFile): | ||||
|     settings = "os", "compiler", "build_type", "arch" | ||||
|     generators = "CMakeDeps" | ||||
| 
 | ||||
|     def requirements(self): | ||||
|         self.requires("boost/1.85.0") | ||||
|         self.requires("bzip2/1.0.8") | ||||
|         self.requires("expat/2.6.2") | ||||
|         self.requires("lua/5.4.6") | ||||
|         self.requires("onetbb/2021.12.0") | ||||
|         if self.settings.os == "Windows": | ||||
|             self.requires("zlib/1.3.1") | ||||
|      | ||||
|     def configure(self): | ||||
|         self.options["boost"].without_python = True | ||||
|         self.options["boost"].without_coroutine = True | ||||
|         self.options["boost"].without_stacktrace = True | ||||
|         self.options["boost"].without_cobalt = True | ||||
|          | ||||
|     def generate(self): | ||||
|         tc = CMakeToolchain(self) | ||||
|         tc.variables["CMAKE_CXX_STANDARD"] = "20" | ||||
|         tc.generate() | ||||
| 
 | ||||
|     def build(self): | ||||
|         cmake = CMake(self) | ||||
|         cmake.configure() | ||||
|         cmake.build() | ||||
| @ -1,34 +1,20 @@ | ||||
| FROM alpine:3.21.2 AS alpine-mimalloc | ||||
| FROM alpine:3.20.0 as alpine-mimalloc | ||||
| 
 | ||||
| RUN apk update && \ | ||||
|     apk upgrade && \ | ||||
|     apk add --no-cache \ | ||||
|         boost-iostreams \ | ||||
|         boost-program_options \ | ||||
|         boost-thread \ | ||||
|         mimalloc | ||||
| RUN apk add --no-cache mimalloc | ||||
| 
 | ||||
| ENV LD_PRELOAD=/usr/lib/libmimalloc.so.2 | ||||
| ENV MIMALLOC_LARGE_OS_PAGES=1 | ||||
| 
 | ||||
| 
 | ||||
| FROM alpine-mimalloc AS builder | ||||
| FROM alpine-mimalloc as builder | ||||
| ARG DOCKER_TAG | ||||
| ARG BUILD_CONCURRENCY | ||||
| RUN mkdir -p /src  && mkdir -p /opt | ||||
| 
 | ||||
| RUN mkdir -p /src /opt && \ | ||||
|     apk add --no-cache \ | ||||
|     boost-dev \ | ||||
|     boost-filesystem \ | ||||
|     clang \ | ||||
|     cmake \ | ||||
|     expat-dev \ | ||||
|     git \ | ||||
|     libbz2 \ | ||||
|     libxml2 \ | ||||
|     lua5.4-dev \ | ||||
|     make \ | ||||
|     onetbb-dev | ||||
| RUN apk add --no-cache \ | ||||
|     cmake make git clang libbz2 libxml2 \ | ||||
|     boost-dev boost-program_options boost-filesystem boost-iostreams boost-thread \ | ||||
|     lua5.4-dev onetbb-dev expat-dev | ||||
| 
 | ||||
| COPY . /src | ||||
| WORKDIR /src | ||||
| @ -53,18 +39,16 @@ RUN NPROC=${BUILD_CONCURRENCY:-$(nproc)} && \ | ||||
|     rm -rf /src | ||||
| 
 | ||||
| 
 | ||||
| # Multistage build to reduce image size - https://docs.docker.com/build/building/multi-stage/#use-multi-stage-builds | ||||
| # Multistage build to reduce image size - https://docs.docker.com/engine/userguide/eng-image/multistage-build/#use-multi-stage-builds | ||||
| # Only the content below ends up in the image, this helps remove /src from the image (which is large) | ||||
| FROM alpine-mimalloc AS runstage | ||||
| FROM alpine-mimalloc as runstage | ||||
| 
 | ||||
| COPY --from=builder /usr/local /usr/local | ||||
| COPY --from=builder /opt /opt | ||||
| 
 | ||||
| RUN apk add --no-cache \ | ||||
|     boost-date_time \ | ||||
|     expat \ | ||||
|     lua5.4 \ | ||||
|     onetbb && \ | ||||
|     boost-program_options boost-date_time boost-iostreams boost-thread \ | ||||
|     expat lua5.4 onetbb && \ | ||||
|     ldconfig /usr/local/lib | ||||
| 
 | ||||
| RUN /usr/local/bin/osrm-extract --help && \ | ||||
| @ -76,4 +60,3 @@ RUN /usr/local/bin/osrm-extract --help && \ | ||||
| WORKDIR /opt | ||||
| 
 | ||||
| EXPOSE 5000 | ||||
| 
 | ||||
|  | ||||
| @ -1,24 +1,21 @@ | ||||
| FROM debian:bookworm-slim AS builder | ||||
| FROM debian:bookworm-slim as builder | ||||
| ARG DOCKER_TAG | ||||
| ARG BUILD_CONCURRENCY | ||||
| RUN mkdir -p /src  && mkdir -p /opt | ||||
| 
 | ||||
| RUN mkdir -p /src /opt && \ | ||||
|     apt-get update && \ | ||||
|     apt-get -y --no-install-recommends --no-install-suggests install \ | ||||
|         ca-certificates \ | ||||
|         cmake \ | ||||
|         g++ \ | ||||
|         gcc \ | ||||
|         git \ | ||||
|         libboost1.81-all-dev \ | ||||
|         libbz2-dev \ | ||||
|         liblua5.4-dev \ | ||||
|         libtbb-dev \ | ||||
|         libxml2-dev \ | ||||
|         libzip-dev \ | ||||
|         lua5.4 \ | ||||
|         make \ | ||||
|         pkg-config | ||||
| RUN apt-get update && \ | ||||
|     apt-get -y --no-install-recommends install ca-certificates cmake make git gcc g++ libbz2-dev libxml2-dev wget \ | ||||
|     libzip-dev libboost1.81-all-dev lua5.4 liblua5.4-dev pkg-config -o APT::Install-Suggests=0 -o APT::Install-Recommends=0 | ||||
| 
 | ||||
| RUN NPROC=${BUILD_CONCURRENCY:-$(nproc)} && \ | ||||
|     ldconfig /usr/local/lib && \ | ||||
|     git clone --branch v2021.12.0 --single-branch https://github.com/oneapi-src/oneTBB.git && \ | ||||
|     cd oneTBB && \ | ||||
|     mkdir build && \ | ||||
|     cd build && \ | ||||
|     cmake -DTBB_TEST=OFF -DCMAKE_BUILD_TYPE=Release ..  && \ | ||||
|     cmake --build . && \ | ||||
|     cmake --install . | ||||
| 
 | ||||
| COPY . /src | ||||
| WORKDIR /src | ||||
| @ -44,24 +41,19 @@ RUN NPROC=${BUILD_CONCURRENCY:-$(nproc)} && \ | ||||
|     rm -rf /src | ||||
| 
 | ||||
| 
 | ||||
| # Multistage build to reduce image size - https://docs.docker.com/build/building/multi-stage/#use-multi-stage-builds | ||||
| # Multistage build to reduce image size - https://docs.docker.com/engine/userguide/eng-image/multistage-build/#use-multi-stage-builds | ||||
| # Only the content below ends up in the image, this helps remove /src from the image (which is large) | ||||
| FROM debian:bookworm-slim AS runstage | ||||
| FROM debian:bookworm-slim as runstage | ||||
| 
 | ||||
| COPY --from=builder /usr/local /usr/local | ||||
| COPY --from=builder /opt /opt | ||||
| 
 | ||||
| RUN apt-get update && \ | ||||
|     apt-get install -y --no-install-recommends --no-install-suggests \ | ||||
|         expat \ | ||||
|         libboost-date-time1.81.0 \ | ||||
|         libboost-iostreams1.81.0 \ | ||||
|         libboost-program-options1.81.0 \ | ||||
|         libboost-thread1.81.0 \ | ||||
|         liblua5.4-0 \ | ||||
|         libtbb12 && \ | ||||
|     apt-get install -y --no-install-recommends \ | ||||
|         libboost-program-options1.81.0 libboost-date-time1.81.0 libboost-iostreams1.81.0 libboost-thread1.81.0 \ | ||||
|         expat liblua5.4-0 && \ | ||||
|     rm -rf /var/lib/apt/lists/* && \ | ||||
| # Add /usr/local/lib to ldconfig to allow loading libraries from there | ||||
| # add /usr/local/lib to ldconfig to allow loading libraries from there | ||||
|     ldconfig /usr/local/lib | ||||
| 
 | ||||
| RUN /usr/local/bin/osrm-extract --help && \ | ||||
| @ -73,4 +65,3 @@ RUN /usr/local/bin/osrm-extract --help && \ | ||||
| WORKDIR /opt | ||||
| 
 | ||||
| EXPOSE 5000 | ||||
| 
 | ||||
|  | ||||
| @ -12,7 +12,7 @@ endif() | ||||
| 
 | ||||
| project(osrm-example C CXX) | ||||
| 
 | ||||
| set(CMAKE_CXX_STANDARD 17) | ||||
| set(CMAKE_CXX_STANDARD 20) | ||||
| set(CMAKE_CXX_STANDARD_REQUIRED ON) | ||||
| set(CMAKE_CXX_EXTENSIONS OFF) | ||||
| 
 | ||||
|  | ||||
| @ -30,7 +30,7 @@ struct V8Renderer | ||||
|         { | ||||
|             Napi::Value child; | ||||
|             std::visit(V8Renderer(env, child), keyValue.second); | ||||
|             obj.Set(keyValue.first.data(), child); | ||||
|             obj.Set(keyValue.first, child); | ||||
|         } | ||||
|         out = obj; | ||||
|     } | ||||
|  | ||||
| @ -104,7 +104,7 @@ using Value = std::variant<String, Number, Object, Array, True, False, Null>; | ||||
|  */ | ||||
| struct Object | ||||
| { | ||||
|     std::unordered_map<std::string_view, Value> values; | ||||
|     std::unordered_map<std::string, Value> values; | ||||
| }; | ||||
| 
 | ||||
| /**
 | ||||
|  | ||||
| @ -44,13 +44,13 @@ struct Comparator | ||||
| 
 | ||||
|     bool operator()(const Object &lhs, const Object &rhs) const | ||||
|     { | ||||
|         std::set<std::string_view> lhs_keys; | ||||
|         std::set<std::string> lhs_keys; | ||||
|         for (const auto &key_value : lhs.values) | ||||
|         { | ||||
|             lhs_keys.insert(key_value.first); | ||||
|         } | ||||
| 
 | ||||
|         std::set<std::string_view> rhs_keys; | ||||
|         std::set<std::string> rhs_keys; | ||||
|         for (const auto &key_value : rhs.values) | ||||
|         { | ||||
|             rhs_keys.insert(key_value.first); | ||||
| @ -60,7 +60,7 @@ struct Comparator | ||||
|         { | ||||
|             if (rhs_keys.find(key) == rhs_keys.end()) | ||||
|             { | ||||
|                 reason = rhs_path + " doesn't have key \"" + std::string(key) + "\""; | ||||
|                 reason = rhs_path + " doesn't have key \"" + key + "\""; | ||||
|                 return false; | ||||
|             } | ||||
|         } | ||||
| @ -69,7 +69,7 @@ struct Comparator | ||||
|         { | ||||
|             if (lhs_keys.find(key) == lhs_keys.end()) | ||||
|             { | ||||
|                 reason = lhs_path + " doesn't have key \"" + std::string(key) + "\""; | ||||
|                 reason = lhs_path + " doesn't have key \"" + key + "\""; | ||||
|                 return false; | ||||
|             } | ||||
|         } | ||||
| @ -81,11 +81,10 @@ struct Comparator | ||||
| 
 | ||||
|             const auto &rhs_child = rhs.values.find(key)->second; | ||||
|             const auto &lhs_child = lhs.values.find(key)->second; | ||||
|             auto is_same = std::visit(Comparator(reason, | ||||
|                                                  lhs_path + "." + std::string(key), | ||||
|                                                  rhs_path + "." + std::string(key)), | ||||
|                                       lhs_child, | ||||
|                                       rhs_child); | ||||
|             auto is_same = | ||||
|                 std::visit(Comparator(reason, lhs_path + "." + key, rhs_path + "." + key), | ||||
|                            lhs_child, | ||||
|                            rhs_child); | ||||
|             if (!is_same) | ||||
|             { | ||||
|                 return false; | ||||
|  | ||||
| @ -97,7 +97,7 @@ template <typename Out> struct Renderer | ||||
|     void operator()(const Null &) { write<>("null"); } | ||||
| 
 | ||||
|   private: | ||||
|     void write(std::string_view str); | ||||
|     void write(const std::string &str); | ||||
|     void write(const char *str, size_t size); | ||||
|     void write(char ch); | ||||
| 
 | ||||
| @ -110,7 +110,7 @@ template <typename Out> struct Renderer | ||||
|     Out &out; | ||||
| }; | ||||
| 
 | ||||
| template <> void Renderer<std::vector<char>>::write(std::string_view str) | ||||
| template <> void Renderer<std::vector<char>>::write(const std::string &str) | ||||
| { | ||||
|     out.insert(out.end(), str.begin(), str.end()); | ||||
| } | ||||
| @ -122,7 +122,7 @@ template <> void Renderer<std::vector<char>>::write(const char *str, size_t size | ||||
| 
 | ||||
| template <> void Renderer<std::vector<char>>::write(char ch) { out.push_back(ch); } | ||||
| 
 | ||||
| template <> void Renderer<std::ostream>::write(std::string_view str) { out << str; } | ||||
| template <> void Renderer<std::ostream>::write(const std::string &str) { out << str; } | ||||
| 
 | ||||
| template <> void Renderer<std::ostream>::write(const char *str, size_t size) | ||||
| { | ||||
| @ -131,7 +131,7 @@ template <> void Renderer<std::ostream>::write(const char *str, size_t size) | ||||
| 
 | ||||
| template <> void Renderer<std::ostream>::write(char ch) { out << ch; } | ||||
| 
 | ||||
| template <> void Renderer<std::string>::write(std::string_view str) { out += str; } | ||||
| template <> void Renderer<std::string>::write(const std::string &str) { out += str; } | ||||
| 
 | ||||
| template <> void Renderer<std::string>::write(const char *str, size_t size) | ||||
| { | ||||
|  | ||||
| @ -93,7 +93,7 @@ function run_benchmarks_for_folder { | ||||
|             echo "Took: ${DIFF}s" | ||||
|         done | ||||
|     done | ||||
| 
 | ||||
|      | ||||
|     for ALGORITHM in ch mld; do | ||||
|         for BENCH in nearest table trip route match; do | ||||
|             echo "Running random $BENCH $ALGORITHM" | ||||
|  | ||||
| @ -9,17 +9,12 @@ | ||||
| #include <rapidjson/document.h> | ||||
| #include <sstream> | ||||
| #include <stdexcept> | ||||
| #include <unordered_set> | ||||
| 
 | ||||
| using namespace osrm; | ||||
| 
 | ||||
| namespace | ||||
| { | ||||
| 
 | ||||
| // we use std::string_view as a key in the object, so since here we have dynamic keys we have to
 | ||||
| // "hold" them somewhere okay for tests...
 | ||||
| static std::unordered_set<std::string> gKeysHolder; | ||||
| 
 | ||||
| void convert(const rapidjson::Value &value, json::Value &result) | ||||
| { | ||||
|     if (value.IsString()) | ||||
| @ -37,8 +32,7 @@ void convert(const rapidjson::Value &value, json::Value &result) | ||||
|         { | ||||
|             json::Value member; | ||||
|             convert(itr->value, member); | ||||
|             auto keyItr = gKeysHolder.emplace(itr->name.GetString()).first; | ||||
|             object.values.emplace(*keyItr, std::move(member)); | ||||
|             object.values.emplace(itr->name.GetString(), std::move(member)); | ||||
|         } | ||||
|         result = std::move(object); | ||||
|     } | ||||
| @ -128,7 +122,6 @@ int main(int argc, char **argv) | ||||
| 
 | ||||
|     if (std::string{out_vec.begin(), out_vec.end()} != out_str || out_str != out_ss_str) | ||||
|     { | ||||
|         std::cerr << "Vector/string results are not equal\n"; | ||||
|         throw std::logic_error("Vector/stringstream/string results are not equal"); | ||||
|     } | ||||
|     return EXIT_SUCCESS; | ||||
|  | ||||
							
								
								
									
										3
									
								
								third_party/sol2/include/sol/sol.hpp
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								third_party/sol2/include/sol/sol.hpp
									
									
									
									
										vendored
									
									
								
							| @ -6752,8 +6752,7 @@ namespace sol { | ||||
| 			static_assert(std::is_constructible<T, Args&&...>::value, "T must be constructible with Args"); | ||||
| 
 | ||||
| 			*this = nullopt; | ||||
| 			new (static_cast<void*>(this)) optional(std::in_place, std::forward<Args>(args)...); | ||||
| 			return **this; | ||||
| 			this->construct(std::forward<Args>(args)...); | ||||
| 		} | ||||
| 
 | ||||
| 		/// Swaps this optional with the other.
 | ||||
|  | ||||
| @ -126,7 +126,6 @@ add_executable(util-tests | ||||
| 	${UtilTestsSources} | ||||
|         $<TARGET_OBJECTS:UTIL> $<TARGET_OBJECTS:MICROTAR>) | ||||
| 
 | ||||
| 
 | ||||
| if(NOT WIN32 AND NOT Boost_USE_STATIC_LIBS) | ||||
|   add_definitions(-DBOOST_TEST_DYN_LINK) | ||||
| endif() | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user