-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathCMakeLists.txt
141 lines (123 loc) · 4.89 KB
/
CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
cmake_minimum_required(VERSION 3.15)
project(tiles)
if (MSVC)
set(TILES_WARNINGS "/W4")
if(NOT DEFINED CMAKE_MSVC_RUNTIME_LIBRARY)
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
endif()
else()
set(TILES_WARNINGS "-Wall" "-Wextra")
endif()
include(cmake/buildcache.cmake)
include(cmake/pkg.cmake)
option(TILES_MIMALLOC "use mimalloc" OFF)
file(GLOB_RECURSE tiles-server-res "${CMAKE_CURRENT_SOURCE_DIR}/client/*.*")
create_resource("${CMAKE_CURRENT_SOURCE_DIR}/client/" "${tiles-server-res}" tiles_server_res)
file(GLOB_RECURSE tiles-profiles-res "${CMAKE_CURRENT_SOURCE_DIR}/profile/*.*")
create_resource("${CMAKE_CURRENT_SOURCE_DIR}/profile/" "${tiles-profiles-res}" tiles_profiles_res)
include(cmake/clang-tidy.cmake)
# --- tiles lib
file(GLOB_RECURSE tiles-files
src/db/*.cc
src/feature/*.cc
src/fixed/*.cc
src/mvt/*.cc
src/tile_database.cc
src/perf_counter.cc
src/util.cc
)
add_library(tiles STATIC ${tiles-files})
set_property(TARGET tiles PROPERTY CXX_STANDARD 23)
target_compile_options(tiles PRIVATE ${TILES_WARNINGS})
target_include_directories(tiles PUBLIC include)
target_link_libraries(tiles
boost
clipper
fmt
geo
lmdb
osmium
utl
concurrentqueue
conf
protozero
sol2
miniz
zlibstatic
mpark_variant
)
# --- tiles-import lib
file(GLOB_RECURSE tiles-import-files src/osm/*.cc)
add_library(tiles-import-library EXCLUDE_FROM_ALL
${tiles-import-files})
set_property(TARGET tiles-import-library PROPERTY CXX_STANDARD 23)
target_compile_options(tiles-import-library PRIVATE ${TILES_WARNINGS})
target_include_directories(tiles-import-library PUBLIC include)
target_link_libraries(tiles-import-library geo lmdb libluajit expat tiles TBB::tbb)
if(UNIX AND NOT APPLE)
target_link_libraries(tiles-import-library atomic)
endif()
# --- tiles-import exe
file(GLOB tiles-import-main-files src/import.cc)
add_executable(tiles-import EXCLUDE_FROM_ALL
${tiles-import-main-files})
set_property(TARGET tiles-import PROPERTY CXX_STANDARD 23)
target_compile_options(tiles-import PRIVATE ${TILES_WARNINGS})
target_include_directories(tiles-import PUBLIC include)
target_link_libraries(tiles-import boost conf lmdb tiles-import-library)
# --- tiles-server exe
add_executable(tiles-server EXCLUDE_FROM_ALL src/server.cc)
set_property(TARGET tiles-server PROPERTY CXX_STANDARD 23)
target_compile_definitions(tiles-server PRIVATE BOOST_BEAST_USE_STD_STRING_VIEW=1)
target_compile_options(tiles-server PRIVATE ${TILES_WARNINGS})
target_include_directories(tiles-server PUBLIC include)
target_link_libraries(tiles-server conf geo lmdb tiles)
target_link_libraries(tiles-server tiles_server_res tiles_server_res-res)
target_link_libraries(tiles-server pbf_sdf_fonts_res pbf_sdf_fonts_res-res)
# --- benchmark exe
file(GLOB_RECURSE tiles-benchmark-files src/benchmark.cc)
add_executable(tiles-benchmark EXCLUDE_FROM_ALL ${tiles-benchmark-files})
set_property(TARGET tiles-benchmark PROPERTY CXX_STANDARD 23)
target_compile_options(tiles-benchmark PRIVATE ${TILES_WARNINGS})
target_include_directories(tiles-benchmark PUBLIC include)
target_link_libraries(tiles-benchmark boost tiles lmdb geo)
# --- test exe
file(GLOB_RECURSE tiles-test-files
test/*_test.cc
src/osm/hybrid_node_idx.cc
)
add_executable(tiles-test EXCLUDE_FROM_ALL ${tiles-test-files})
set_property(TARGET tiles-test PROPERTY CXX_STANDARD 23)
target_compile_options(tiles-test PRIVATE ${TILES_WARNINGS})
target_include_directories(tiles-test PUBLIC include)
target_link_libraries(tiles-test tiles gtest gtest_main)
# --- mimalloc
if (TILES_MIMALLOC)
if(WIN32)
set(tiles-mimalloc-lib mimalloc)
target_link_libraries(cista INTERFACE mimalloc)
else()
set(tiles-mimalloc-lib mimalloc-obj)
target_link_libraries(cista INTERFACE mimalloc-static)
endif()
target_compile_definitions(cista INTERFACE CISTA_USE_MIMALLOC=1)
target_compile_definitions(boost INTERFACE BOOST_ASIO_DISABLE_STD_ALIGNED_ALLOC=1)
target_link_libraries(tiles-import ${tiles-mimalloc-lib})
target_link_libraries(tiles-server ${tiles-mimalloc-lib})
target_link_libraries(tiles-benchmark ${tiles-mimalloc-lib})
target_link_libraries(tiles-test ${tiles-mimalloc-lib})
message(STATUS "compiling tiles with mimalloc support ${tiles-mimalloc-lib}")
endif()
# --- fuzzing exe
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
function(tiles_add_fuzz_target target_name filename)
file(GLOB_RECURSE files ${filename})
add_executable(${target_name} EXCLUDE_FROM_ALL ${files})
set_property(TARGET ${target_name} PROPERTY CXX_STANDARD 23)
target_compile_options(${target_name} PRIVATE -fsanitize=address,fuzzer)
target_include_directories(${target_name} PUBLIC include)
target_link_libraries(${target_name} tiles -fsanitize=address,fuzzer)
endfunction(tiles_add_fuzz_target)
tiles_add_fuzz_target(tiles-fuzz-repack-features test/repack_features_fuzz.cc)
tiles_add_fuzz_target(tiles-fuzz-feature-pack test/feature_pack_fuzz.cc)
endif()