Skip to content

Commit a31eda3

Browse files
authored
Simplify CMakeLists.txt (#6988)
1 parent 4fe15ec commit a31eda3

File tree

10 files changed

+30
-320
lines changed

10 files changed

+30
-320
lines changed

.github/workflows/osrm-backend.yml

Lines changed: 1 addition & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,6 @@ jobs:
174174
continue-on-error: false
175175
node: 20
176176
runs-on: ubuntu-24.04
177-
BUILD_TOOLS: ON
178177
BUILD_TYPE: Debug
179178
CCOMPILER: gcc-13
180179
CUCUMBER_TIMEOUT: 20000
@@ -185,7 +184,6 @@ jobs:
185184
continue-on-error: false
186185
node: 20
187186
runs-on: ubuntu-24.04
188-
BUILD_TOOLS: ON
189187
BUILD_TYPE: Debug
190188
CCOMPILER: clang-18
191189
CUCUMBER_TIMEOUT: 20000
@@ -199,7 +197,6 @@ jobs:
199197
continue-on-error: false
200198
node: 20
201199
runs-on: ubuntu-24.04
202-
BUILD_TOOLS: ON
203200
BUILD_TYPE: Release
204201
CCOMPILER: clang-18
205202
CXXCOMPILER: clang++-18
@@ -210,7 +207,6 @@ jobs:
210207
continue-on-error: false
211208
node: 18
212209
runs-on: ubuntu-24.04
213-
BUILD_TOOLS: ON
214210
BUILD_TYPE: Debug
215211
CCOMPILER: clang-18
216212
CXXCOMPILER: clang++-18
@@ -221,7 +217,6 @@ jobs:
221217
continue-on-error: false
222218
node: 18
223219
runs-on: ubuntu-24.04
224-
BUILD_TOOLS: ON
225220
BUILD_TYPE: Debug
226221
CCOMPILER: clang-18
227222
CXXCOMPILER: clang++-18
@@ -233,7 +228,6 @@ jobs:
233228
continue-on-error: false
234229
node: 18
235230
runs-on: ubuntu-24.04
236-
BUILD_TOOLS: ON
237231
BUILD_TYPE: Release
238232
CCOMPILER: clang-17
239233
CXXCOMPILER: clang++-17
@@ -244,7 +238,6 @@ jobs:
244238
continue-on-error: false
245239
node: 18
246240
runs-on: ubuntu-24.04
247-
BUILD_TOOLS: ON
248241
BUILD_TYPE: Release
249242
CCOMPILER: clang-16
250243
CXXCOMPILER: clang++-16
@@ -255,7 +248,6 @@ jobs:
255248
continue-on-error: false
256249
node: 18
257250
runs-on: ubuntu-24.04
258-
BUILD_TOOLS: ON
259251
BUILD_TYPE: Release
260252
CCOMPILER: clang-18
261253
CXXCOMPILER: clang++-18
@@ -267,7 +259,6 @@ jobs:
267259
continue-on-error: false
268260
node: 18
269261
runs-on: ubuntu-24.04
270-
BUILD_TOOLS: ON
271262
BUILD_TYPE: Release
272263
CCOMPILER: clang-18
273264
CXXCOMPILER: clang++-18
@@ -278,7 +269,6 @@ jobs:
278269
continue-on-error: false
279270
node: 20
280271
runs-on: ubuntu-24.04
281-
BUILD_TOOLS: ON
282272
BUILD_TYPE: Release
283273
CCOMPILER: gcc-14
284274
CXXCOMPILER: g++-14
@@ -288,7 +278,6 @@ jobs:
288278
continue-on-error: false
289279
node: 20
290280
runs-on: ubuntu-24.04
291-
BUILD_TOOLS: ON
292281
BUILD_TYPE: Release
293282
CCOMPILER: gcc-13
294283
CXXCOMPILER: g++-13
@@ -298,7 +287,6 @@ jobs:
298287
continue-on-error: false
299288
node: 20
300289
runs-on: ubuntu-22.04
301-
BUILD_TOOLS: ON
302290
BUILD_TYPE: Release
303291
CCOMPILER: gcc-12
304292
CXXCOMPILER: g++-12
@@ -354,7 +342,6 @@ jobs:
354342
continue-on-error: ${{ matrix.continue-on-error }}
355343
runs-on: ${{ matrix.runs-on }}
356344
env:
357-
BUILD_TOOLS: ${{ matrix.BUILD_TOOLS }}
358345
BUILD_TYPE: ${{ matrix.BUILD_TYPE }}
359346
BUILD_SHARED_LIBS: ${{ matrix.BUILD_SHARED_LIBS }}
360347
CCOMPILER: ${{ matrix.CCOMPILER }}
@@ -518,7 +505,6 @@ jobs:
518505
-DENABLE_COVERAGE=${ENABLE_COVERAGE:-OFF} \
519506
-DENABLE_NODE_BINDINGS=${ENABLE_NODE_BINDINGS:-OFF} \
520507
-DENABLE_SANITIZER=${ENABLE_SANITIZER:-OFF} \
521-
-DBUILD_TOOLS=${BUILD_TOOLS:-OFF} \
522508
-DENABLE_CCACHE=ON \
523509
-DENABLE_LTO=${ENABLE_LTO:-ON} \
524510
-DCMAKE_INSTALL_PREFIX=${OSRM_INSTALL_DIR}
@@ -538,24 +524,13 @@ jobs:
538524
popd
539525
env:
540526
Boost_ROOT: ${{ steps.install-boost.outputs.BOOST_ROOT }}
541-
- name: Build example
542-
if: ${{ matrix.NODE_PACKAGE_TESTS_ONLY != 'ON' && matrix.ENABLE_CONAN != 'ON' }}
543-
run: |
544-
mkdir example/build && pushd example/build
545-
cmake .. -DCMAKE_BUILD_TYPE=${BUILD_TYPE} \
546-
-DBoost_ROOT=${{ steps.install-boost.outputs.BOOST_ROOT }}
547-
make --jobs=${JOBS}
548-
popd
549527
- name: Run all tests
550528
if: ${{ matrix.NODE_PACKAGE_TESTS_ONLY != 'ON' }}
551529
run: |
552530
make -C test/data benchmark
553531
554532
# macOS SIP strips the linker path. Reset this inside the running shell
555-
if [[ "${ENABLE_CONAN}" == "OFF" ]]; then
556-
export LD_LIBRARY_PATH=${{ env.LD_LIBRARY_PATH }}
557-
./example/build/osrm-example test/data/mld/monaco.osrm
558-
fi
533+
export LD_LIBRARY_PATH=${{ env.LD_LIBRARY_PATH }}
559534
560535
# All tests assume to be run from the build directory
561536
pushd ${OSRM_BUILD_DIR}

.gitignore

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,6 @@ Thumbs.db
4343
#######################
4444
/_build*
4545
/build/
46-
/example/build/
4746
/test/data/monaco.osrm*
4847
/test/data/ch
4948
/test/data/mld

CMakeLists.txt

Lines changed: 20 additions & 89 deletions
Original file line numberDiff line numberDiff line change
@@ -22,20 +22,17 @@ if (NOT WIN32 AND NOT DEFINED ENV{OSRM_BUILD_DIR})
2222
set(ENV{OSRM_BUILD_DIR} ${CMAKE_CURRENT_BINARY_DIR})
2323
endif()
2424

25-
option(ENABLE_CONAN "Use conan for dependencies" OFF)
26-
option(ENABLE_CCACHE "Speed up incremental rebuilds via ccache" ON)
27-
option(BUILD_TOOLS "Build OSRM tools" OFF)
2825
option(BUILD_PACKAGE "Build OSRM package" OFF)
29-
option(BUILD_ROUTED "Build osrm-routed HTTP server" ON)
3026
option(ENABLE_ASSERTIONS "Use assertions in release mode" OFF)
31-
option(ENABLE_DEBUG_LOGGING "Use debug logging in release mode" OFF)
27+
option(ENABLE_CCACHE "Speed up incremental rebuilds via ccache" ON)
28+
option(ENABLE_CLANG_TIDY "Enables clang-tidy checks" OFF)
29+
option(ENABLE_CONAN "Use conan for dependencies" OFF)
3230
option(ENABLE_COVERAGE "Build with coverage instrumentalisation" OFF)
33-
option(ENABLE_SANITIZER "Use memory sanitizer for Debug build" OFF)
34-
option(ENABLE_LTO "Use Link Time Optimisation" ON)
31+
option(ENABLE_DEBUG_LOGGING "Use debug logging in release mode" OFF)
3532
option(ENABLE_FUZZING "Fuzz testing using LLVM's libFuzzer" OFF)
33+
option(ENABLE_LTO "Use Link Time Optimisation" ON)
3634
option(ENABLE_NODE_BINDINGS "Build NodeJs bindings" OFF)
37-
option(ENABLE_CLANG_TIDY "Enables clang-tidy checks" OFF)
38-
35+
option(ENABLE_SANITIZER "Use memory sanitizer for Debug build" OFF)
3936

4037
if (ENABLE_CONAN)
4138
message(STATUS "Installing Conan packages. It may take a while...")
@@ -72,19 +69,8 @@ endif()
7269

7370
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
7471

75-
# be compatible with version handling before cmake 3.x
76-
if (POLICY CMP0057)
77-
cmake_policy(SET CMP0057 NEW)
78-
endif()
79-
if (POLICY CMP0074)
80-
cmake_policy(SET CMP0074 NEW)
81-
endif()
82-
if (POLICY CMP0167)
83-
cmake_policy(SET CMP0167 NEW)
84-
endif()
8572
project(OSRM C CXX)
8673

87-
8874
if(ENABLE_LTO AND (CMAKE_BUILD_TYPE MATCHES Release OR CMAKE_BUILD_TYPE MATCHES MinRelSize OR CMAKE_BUILD_TYPE MATCHES RelWithDebInfo))
8975
include(CheckIPOSupported)
9076
check_ipo_supported(RESULT LTO_SUPPORTED OUTPUT error)
@@ -112,14 +98,14 @@ sbeParseJson(packagejson packagejsonraw)
11298
# This regex is not strict enough, but the correct one is too complicated for cmake matching.
11399
# https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string
114100
if (packagejson.version MATCHES "^([0-9]+)\.([0-9]+)\.([0-9]+)([-+][0-9a-zA-Z.-]+)?$")
115-
set(OSRM_VERSION_MAJOR ${CMAKE_MATCH_1})
116-
set(OSRM_VERSION_MINOR ${CMAKE_MATCH_2})
117-
set(OSRM_VERSION_PATCH ${CMAKE_MATCH_3})
118-
set(OSRM_VERSION_PRERELEASE_BUILD ${CMAKE_MATCH_4})
101+
set(OSRM_VERSION_MAJOR ${CMAKE_MATCH_1})
102+
set(OSRM_VERSION_MINOR ${CMAKE_MATCH_2})
103+
set(OSRM_VERSION_PATCH ${CMAKE_MATCH_3})
104+
set(OSRM_VERSION_PRERELEASE_BUILD ${CMAKE_MATCH_4})
119105

120-
set(OSRM_VERSION packagejson.version)
106+
set(OSRM_VERSION packagejson.version)
121107
else()
122-
message(FATAL_ERROR "Version from package.json cannot be parsed, expected semver compatible label, but found ${packagejson.version}")
108+
message(FATAL_ERROR "Version from package.json cannot be parsed, expected semver compatible label, but found ${packagejson.version}")
123109
endif()
124110

125111
if (MSVC)
@@ -151,12 +137,6 @@ include(CheckCXXCompilerFlag)
151137
include(FindPackageHandleStandardArgs)
152138
include(GNUInstallDirs)
153139

154-
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
155-
message(STATUS "Building on a 64 bit system")
156-
else()
157-
message(FATAL_ERROR "Building on a 32 bit system is not supported")
158-
endif()
159-
160140
include_directories(BEFORE ${CMAKE_CURRENT_BINARY_DIR}/include/)
161141
include_directories(BEFORE ${CMAKE_CURRENT_SOURCE_DIR}/include/)
162142
include_directories(SYSTEM ${CMAKE_CURRENT_SOURCE_DIR}/generated/include/)
@@ -178,7 +158,6 @@ file(GLOB UpdaterGlob src/updater/*.cpp)
178158
file(GLOB StorageGlob src/storage/*.cpp)
179159
file(GLOB ServerGlob src/server/*.cpp src/server/**/*.cpp)
180160
file(GLOB EngineGlob src/engine/*.cpp src/engine/**/*.cpp)
181-
file(GLOB ErrorcodesGlob src/osrm/errorcodes.cpp)
182161

183162
add_library(UTIL OBJECT ${UtilGlob})
184163
add_library(EXTRACTOR OBJECT ${ExtractorGlob})
@@ -189,14 +168,11 @@ add_library(CONTRACTOR OBJECT ${ContractorGlob})
189168
add_library(UPDATER OBJECT ${UpdaterGlob})
190169
add_library(STORAGE OBJECT ${StorageGlob})
191170
add_library(ENGINE OBJECT ${EngineGlob})
192-
193-
if (BUILD_ROUTED)
194-
add_library(SERVER OBJECT ${ServerGlob})
195-
add_executable(osrm-routed src/tools/routed.cpp $<TARGET_OBJECTS:SERVER> $<TARGET_OBJECTS:UTIL>)
196-
endif()
171+
add_library(SERVER OBJECT ${ServerGlob})
197172

198173
set_target_properties(UTIL PROPERTIES LINKER_LANGUAGE CXX)
199174

175+
add_executable(osrm-routed src/tools/routed.cpp $<TARGET_OBJECTS:SERVER> $<TARGET_OBJECTS:UTIL>)
200176
add_executable(osrm-extract src/tools/extract.cpp)
201177
add_executable(osrm-partition src/tools/partition.cpp)
202178
add_executable(osrm-customize src/tools/customize.cpp)
@@ -458,9 +434,7 @@ target_link_libraries(osrm-extract osrm_extract ${Boost_PROGRAM_OPTIONS_LIBRARY}
458434
target_link_libraries(osrm-partition osrm_partition ${Boost_PROGRAM_OPTIONS_LIBRARY})
459435
target_link_libraries(osrm-customize osrm_customize ${Boost_PROGRAM_OPTIONS_LIBRARY})
460436
target_link_libraries(osrm-contract osrm_contract ${Boost_PROGRAM_OPTIONS_LIBRARY})
461-
if (BUILD_ROUTED)
462-
target_link_libraries(osrm-routed osrm ${Boost_PROGRAM_OPTIONS_LIBRARY} ${OPTIONAL_SOCKET_LIBS} ${ZLIB_LIBRARY})
463-
endif()
437+
target_link_libraries(osrm-routed osrm ${Boost_PROGRAM_OPTIONS_LIBRARY} ${OPTIONAL_SOCKET_LIBS} ${ZLIB_LIBRARY})
464438

465439
set(EXTRACTOR_LIBRARIES
466440
${BZIP2_LIBRARIES}
@@ -534,18 +508,13 @@ target_link_libraries(osrm_partition ${PARTITIONER_LIBRARIES})
534508
target_link_libraries(osrm_customize ${CUSTOMIZER_LIBRARIES} osrm_update osrm_store)
535509
target_link_libraries(osrm_store ${STORAGE_LIBRARIES})
536510

537-
# BUILD_COMPONENTS
538511
add_executable(osrm-components src/tools/components.cpp $<TARGET_OBJECTS:MICROTAR> $<TARGET_OBJECTS:UTIL>)
539512
target_link_libraries(osrm-components ${TBB_LIBRARIES} ${BOOST_BASE_LIBRARIES} ${UTIL_LIBRARIES})
540513
install(TARGETS osrm-components DESTINATION bin)
541514

542-
if(BUILD_TOOLS)
543-
message(STATUS "Activating OSRM internal tools")
544-
add_executable(osrm-io-benchmark src/tools/io-benchmark.cpp $<TARGET_OBJECTS:UTIL>)
545-
target_link_libraries(osrm-io-benchmark ${BOOST_BASE_LIBRARIES} ${TBB_LIBRARIES})
546-
547-
install(TARGETS osrm-io-benchmark DESTINATION bin)
548-
endif()
515+
add_executable(osrm-io-benchmark src/tools/io-benchmark.cpp $<TARGET_OBJECTS:UTIL>)
516+
target_link_libraries(osrm-io-benchmark ${BOOST_BASE_LIBRARIES} ${TBB_LIBRARIES})
517+
install(TARGETS osrm-io-benchmark DESTINATION bin)
549518

550519
if (ENABLE_ASSERTIONS)
551520
message(STATUS "Enabling assertions")
@@ -564,47 +533,14 @@ set_property(TARGET osrm-extract PROPERTY INSTALL_RPATH_USE_LINK_PATH TRUE)
564533
set_property(TARGET osrm-partition PROPERTY INSTALL_RPATH_USE_LINK_PATH TRUE)
565534
set_property(TARGET osrm-contract PROPERTY INSTALL_RPATH_USE_LINK_PATH TRUE)
566535
set_property(TARGET osrm-datastore PROPERTY INSTALL_RPATH_USE_LINK_PATH TRUE)
567-
if (BUILD_ROUTED)
568-
set_property(TARGET osrm-routed PROPERTY INSTALL_RPATH_USE_LINK_PATH TRUE)
569-
endif()
536+
set_property(TARGET osrm-routed PROPERTY INSTALL_RPATH_USE_LINK_PATH TRUE)
570537

571-
file(GLOB FlatbuffersGlob third_party/flatbuffers/include/flatbuffers/*.h)
572-
file(GLOB LibraryGlob include/osrm/*.hpp)
573-
file(GLOB ParametersGlob include/engine/api/*_parameters.hpp)
574-
set(ApiHeader include/engine/api/base_result.hpp)
575-
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)
576-
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)
577-
set(ExtractorHeader include/extractor/extractor.hpp include/storage/io_config.hpp include/extractor/extractor_config.hpp include/extractor/travel_mode.hpp)
578-
set(PartitionerHeader include/partitioner/partitioner.hpp include/partitioner/partitioner_config.hpp)
579-
set(ContractorHeader include/contractor/contractor.hpp include/contractor/contractor_config.hpp)
580-
set(StorageHeader include/storage/storage.hpp include/storage/io_config.hpp include/storage/storage_config.hpp)
581-
install(FILES ${EngineHeader} DESTINATION include/osrm/engine)
582-
install(FILES ${UtilHeader} DESTINATION include/osrm/util)
583-
install(FILES ${StorageHeader} DESTINATION include/osrm/storage)
584-
install(FILES ${ExtractorHeader} DESTINATION include/osrm/extractor)
585-
install(FILES ${PartitionerHeader} DESTINATION include/osrm/partitioner)
586-
install(FILES ${ContractorHeader} DESTINATION include/osrm/contractor)
587-
install(FILES ${LibraryGlob} DESTINATION include/osrm)
588-
install(FILES ${ParametersGlob} DESTINATION include/osrm/engine/api)
589-
install(FILES ${ApiHeader} DESTINATION include/osrm/engine/api)
590-
install(FILES ${FlatbuffersGlob} DESTINATION include/flatbuffers)
591538
install(TARGETS osrm-extract DESTINATION bin)
592539
install(TARGETS osrm-partition DESTINATION bin)
593540
install(TARGETS osrm-customize DESTINATION bin)
594541
install(TARGETS osrm-contract DESTINATION bin)
595542
install(TARGETS osrm-datastore DESTINATION bin)
596-
if (BUILD_ROUTED)
597-
install(TARGETS osrm-routed DESTINATION bin)
598-
endif()
599-
install(TARGETS osrm DESTINATION lib)
600-
install(TARGETS osrm_extract DESTINATION lib)
601-
install(TARGETS osrm_partition DESTINATION lib)
602-
install(TARGETS osrm_customize DESTINATION lib)
603-
install(TARGETS osrm_update DESTINATION lib)
604-
install(TARGETS osrm_contract DESTINATION lib)
605-
install(TARGETS osrm_store DESTINATION lib)
606-
install(TARGETS osrm_guidance DESTINATION lib)
607-
543+
install(TARGETS osrm-routed DESTINATION bin)
608544

609545
# Install profiles and support library to /usr/local/share/osrm/profiles by default
610546
set(DefaultProfilesDir profiles)
@@ -614,9 +550,6 @@ install(DIRECTORY ${DefaultProfilesDir} DESTINATION share/osrm)
614550
set(DefaultProfilesDir data)
615551
install(DIRECTORY ${DefaultProfilesDir} DESTINATION share/osrm)
616552

617-
# Setup exporting variables for pkgconfig and subproject
618-
#
619-
620553
if(BUILD_PACKAGE)
621554
include(CPackConfig)
622555
include(CPack)
@@ -694,7 +627,6 @@ if (ENABLE_NODE_BINDINGS)
694627
add_subdirectory(src/nodejs)
695628
endif()
696629

697-
698630
if (ENABLE_FUZZING)
699631
# Requires libosrm being built with sanitizers; make configurable and default to ubsan
700632
set(FUZZ_SANITIZER "undefined" CACHE STRING "Sanitizer to be used for Fuzz testing")
@@ -728,4 +660,3 @@ foreach(header ${headers_to_check})
728660
endforeach()
729661
add_library(check-headers STATIC EXCLUDE_FROM_ALL ${sources})
730662
set_target_properties(check-headers PROPERTIES ARCHIVE_OUTPUT_DIRECTORY ${check_headers_dir})
731-

docker/Dockerfile-alpine

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -41,11 +41,10 @@ RUN NPROC=${BUILD_CONCURRENCY:-$(nproc)} && \
4141
cd build && \
4242
BUILD_TYPE="Release" && \
4343
ENABLE_ASSERTIONS="Off" && \
44-
BUILD_TOOLS="Off" && \
4544
case ${DOCKER_TAG} in *"-debug"*) BUILD_TYPE="Debug";; esac && \
46-
case ${DOCKER_TAG} in *"-assertions"*) BUILD_TYPE="RelWithDebInfo" && ENABLE_ASSERTIONS="On" && BUILD_TOOLS="On";; esac && \
47-
echo "Building ${BUILD_TYPE} with ENABLE_ASSERTIONS=${ENABLE_ASSERTIONS} BUILD_TOOLS=${BUILD_TOOLS}" && \
48-
cmake .. -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -DENABLE_ASSERTIONS=${ENABLE_ASSERTIONS} -DBUILD_TOOLS=${BUILD_TOOLS} -DENABLE_LTO=OFF && \
45+
case ${DOCKER_TAG} in *"-assertions"*) BUILD_TYPE="RelWithDebInfo" && ENABLE_ASSERTIONS="On";; esac && \
46+
echo "Building ${BUILD_TYPE} with ENABLE_ASSERTIONS=${ENABLE_ASSERTIONS}" && \
47+
cmake .. -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -DENABLE_ASSERTIONS=${ENABLE_ASSERTIONS} -DENABLE_LTO=OFF && \
4948
make -j${NPROC} install && \
5049
cd ../profiles && \
5150
cp -r * /opt && \
@@ -76,4 +75,3 @@ RUN /usr/local/bin/osrm-extract --help && \
7675
WORKDIR /opt
7776

7877
EXPOSE 5000
79-

0 commit comments

Comments
 (0)