/
CMakeLists.txt
149 lines (127 loc) · 3.97 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
142
143
144
145
146
147
148
149
cmake_minimum_required(VERSION 3.15)
project(tiles)
if (MSVC)
set(Boost_USE_STATIC_LIBS ON)
set(Boost_USE_MULTITHREADED ON)
set(Boost_USE_STATIC_RUNTIME ON)
endif()
find_package(Boost 1.70.0 REQUIRED COMPONENTS system filesystem)
find_package(Threads)
link_directories(${Boost_LIBRARY_DIRS})
include_directories(SYSTEM ${Boost_INCLUDE_DIR})
if (MSVC)
set(TILES_WARNINGS "/W4")
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
else()
set(TILES_WARNINGS "-Wall" "-Wextra")
endif()
include(cmake/pkg.cmake)
file(GLOB_RECURSE tiles-server-res "${CMAKE_CURRENT_SOURCE_DIR}/client/*.*")
create_resource("${CMAKE_CURRENT_SOURCE_DIR}/client/" "${tiles-server-res}" tiles_server_res)
include(cmake/clang-tidy.cmake)
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 17)
target_compile_options(tiles PRIVATE ${TILES_WARNINGS})
target_include_directories(tiles PUBLIC include)
target_link_libraries(tiles
${Boost_LIBRARIES}
clipper
fmt
geo
lmdb
osmium
utl
concurrentqueue
conf
protozero
sol2
miniz
zlibstatic
)
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 17)
target_compile_options(tiles-import-library PRIVATE ${TILES_WARNINGS})
target_include_directories(tiles-import-library PUBLIC include)
target_link_libraries(tiles-import-library
${Boost_LIBRARIES}
geo
lmdb
lua
tiles
)
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 17)
target_compile_options(tiles-import PRIVATE ${TILES_WARNINGS})
target_include_directories(tiles-import PUBLIC include)
target_link_libraries(tiles-import
${Boost_LIBRARIES}
conf
lmdb
tiles-import-library
)
add_executable(tiles-server EXCLUDE_FROM_ALL src/server.cc)
set_property(TARGET tiles-server PROPERTY CXX_STANDARD 17)
target_compile_options(tiles-server PRIVATE ${TILES_WARNINGS})
target_include_directories(tiles-server PUBLIC include)
target_link_libraries(tiles-server
${Boost_LIBRARIES}
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
)
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 17)
target_compile_options(tiles-benchmark PRIVATE ${TILES_WARNINGS})
target_include_directories(tiles-benchmark PUBLIC include)
target_link_libraries(tiles-benchmark
${Boost_LIBRARIES}
tiles
lmdb
geo
)
file(GLOB_RECURSE tiles-test-files
test/catch_main.cc
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 17)
target_compile_options(tiles-test PRIVATE ${TILES_WARNINGS})
target_include_directories(tiles-test PUBLIC include)
target_link_libraries(tiles-test tiles Catch2)
# --- fuzzing
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 17)
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()