forked from ada-url/ada
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
143 lines (115 loc) · 3.52 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
cmake_minimum_required(VERSION 3.16)
project(ada
DESCRIPTION "Fast spec-compliant URL parser"
LANGUAGES C CXX
VERSION 2.5.0
)
set(ADA_LIB_VERSION "2.5.0" CACHE STRING "ada library version")
set(ADA_LIB_SOVERSION "2" CACHE STRING "ada library soversion")
include(GNUInstallDirs)
include (cmake/clang-format.cmake)
include(CTest)
include(cmake/ada-flags.cmake)
set(ADA_SOURCE_DIR src)
add_subdirectory(src)
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/scripts/cmake)
option(ADA_BENCHMARKS "Build benchmarks" OFF)
# We use Google Benchmark, but it does not build under several 32-bit systems.
if((BUILD_TESTING OR ADA_BENCHMARKS) AND (CMAKE_SIZEOF_VOID_P EQUAL 8))
include(${PROJECT_SOURCE_DIR}/cmake/import.cmake)
import_dependency(simdjson simdjson/simdjson 14d927128ba14e13913fc0e7c2cf538790bd1622)
add_dependency(simdjson)
import_dependency(gtest google/googletest 797b0ad2a3a45608ecf5c67e6e289d377a3521ca)
add_dependency(gtest)
endif()
if (BUILD_TESTING AND NOT EMSCRIPTEN)
message(STATUS "The tests are enabled.")
add_subdirectory(tests)
else()
if(is_top_project)
message(STATUS "The tests are disabled.")
endif()
endif(BUILD_TESTING AND NOT EMSCRIPTEN)
If(ADA_BENCHMARKS AND NOT EMSCRIPTEN)
message(STATUS "Ada benchmarks enabled.")
add_subdirectory(benchmarks)
else(ADA_BENCHMARKS AND NOT EMSCRIPTEN)
if(is_top_project)
message(STATUS "Ada benchmarks disabled. Set ADA_BENCHMARKS=ON to enable them.")
endif()
endif(ADA_BENCHMARKS AND NOT EMSCRIPTEN)
if (BUILD_TESTING AND EMSCRIPTEN)
add_subdirectory(tests-wasm)
endif(BUILD_TESTING AND EMSCRIPTEN)
add_library(ada::ada ALIAS ada)
set_target_properties(
ada PROPERTIES
VERSION "${ADA_LIB_VERSION}"
SOVERSION "${ADA_LIB_SOVERSION}"
WINDOWS_EXPORT_ALL_SYMBOLS YES
)
include(CMakePackageConfigHelpers)
include(GNUInstallDirs)
if(NOT ADA_COVERAGE AND NOT EMSCRIPTEN)
add_subdirectory(singleheader)
endif()
if(ADA_TOOLS)
add_subdirectory(tools)
endif()
install(
FILES include/ada.h include/ada_c.h
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
COMPONENT ada_development
)
install(
DIRECTORY include/ada
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
COMPONENT ada_development
)
install(
TARGETS ada
EXPORT ada_targets
RUNTIME COMPONENT ada_runtime
LIBRARY COMPONENT ada_runtime
NAMELINK_COMPONENT ada_development
ARCHIVE COMPONENT ada_development
INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
)
configure_file(cmake/ada-config.cmake.in ada-config.cmake @ONLY)
write_basic_package_version_file(
ada-config-version.cmake
COMPATIBILITY SameMinorVersion
)
set(
ADA_INSTALL_CMAKEDIR "${CMAKE_INSTALL_LIBDIR}/cmake/ada"
CACHE STRING "CMake package config location relative to the install prefix"
)
mark_as_advanced(ADA_INSTALL_CMAKEDIR)
install(
FILES
"${PROJECT_BINARY_DIR}/ada-config.cmake"
"${PROJECT_BINARY_DIR}/ada-config-version.cmake"
DESTINATION "${ADA_INSTALL_CMAKEDIR}"
COMPONENT ada_development
)
install(
EXPORT ada_targets
NAMESPACE ada::
DESTINATION "${ADA_INSTALL_CMAKEDIR}"
COMPONENT ada_development
)
install(
EXPORT ada_targets
NAMESPACE ada::
DESTINATION "${ADA_INSTALL_CMAKEDIR}"
COMPONENT example_development
)
if(is_top_project)
set(CPACK_PACKAGE_VENDOR "Ada Authors")
set(CPACK_PACKAGE_CONTACT "[email protected]")
set(CPACK_RESOURCE_FILE_LICENSE "${PROJECT_SOURCE_DIR}/LICENSE-MIT")
set(CPACK_RPM_PACKAGE_LICENSE "${PROJECT_SOURCE_DIR}/LICENSE-MIT")
set(CPACK_RESOURCE_FILE_README "${PROJECT_SOURCE_DIR}/README.md")
set(CPACK_SOURCE_GENERATOR "TGZ;ZIP")
include(CPack)
endif()