|
| 1 | +CMAKE_MINIMUM_REQUIRED (VERSION 3.12) |
1 | 2 | PROJECT(dracoshavalidator)
|
2 | 3 |
|
3 | 4 | SET (HEADERS
|
@@ -134,19 +135,81 @@ SET (HEADERS
|
134 | 135 | include/dracosha/validator/detail/default_adapter_impl.ipp
|
135 | 136 | )
|
136 | 137 |
|
137 |
| -SET (SOURCES |
138 |
| -) |
| 138 | +IF (DRACOSHA_VALIDATOR_SRC) |
| 139 | + |
| 140 | + MESSAGE(STATUS "Use cpp-validator library as part of Dracosha library") |
139 | 141 |
|
140 |
| -BUILD_DRACOSHA_MODULE() |
| 142 | + BUILD_DRACOSHA_MODULE() |
141 | 143 |
|
142 |
| -INCLUDE(dracosha/deps/fmt) |
143 |
| -IF (NOT FMT_HEADER_ONLY) |
| 144 | + INCLUDE(dracosha/deps/fmt) |
144 | 145 | TARGET_LINK_LIBRARIES(${PROJECT_NAME} INTERFACE fmt)
|
145 |
| -ENDIF(NOT FMT_HEADER_ONLY) |
146 |
| -IF (NOT SYSTEM_FMTLIB) |
147 |
| - TARGET_INCLUDE_DIRECTORIES(${PROJECT_NAME} INTERFACE "${DRACOSHA_SOURCE_DIR}/3rdparty/fmt/include") |
148 |
| -ENDIF() |
149 |
| - |
150 |
| -IF (INSTALL_DEV) |
151 |
| - INCLUDE(dracosha/Install) |
152 |
| -ENDIF (INSTALL_DEV) |
| 146 | + |
| 147 | + IF (INSTALL_DEV) |
| 148 | + INCLUDE(dracosha/Install) |
| 149 | + ENDIF (INSTALL_DEV) |
| 150 | + |
| 151 | + ADD_DEFINITIONS(-DDRACOSHA_VALIDATOR_FMT) |
| 152 | + |
| 153 | +ELSE (DRACOSHA_VALIDATOR_SRC) |
| 154 | + |
| 155 | + MESSAGE(STATUS "Use standalone cpp-validator library") |
| 156 | + |
| 157 | + FIND_PACKAGE(Boost 1.65 REQUIRED) |
| 158 | + |
| 159 | + OPTION(VALIDATOR_WITH_TESTS "Build tests for cpp-validator library" OFF) |
| 160 | + OPTION(VALIDATOR_WITH_EXAMPLES "Build examples for cpp-validator library" OFF) |
| 161 | + |
| 162 | + OPTION(VALIDATOR_WITH_FMT "Use libfmt backend for formatting" On) |
| 163 | + |
| 164 | + ADD_LIBRARY(${PROJECT_NAME} INTERFACE) |
| 165 | + TARGET_INCLUDE_DIRECTORIES(${PROJECT_NAME} INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/include ${Boost_INCLUDE_DIR}) |
| 166 | + |
| 167 | + IF (VALIDATOR_WITH_FMT) |
| 168 | + |
| 169 | + MESSAGE(STATUS "Use libfmt for formatting in cpp-validator library") |
| 170 | + ADD_DEFINITIONS(-DDRACOSHA_VALIDATOR_FMT) |
| 171 | + |
| 172 | + FIND_PATH(FMT_INCLUDE_DIRECTORY fmt/format.h |
| 173 | + PATHS ${FMT_INCLUDE_DIR} |
| 174 | + ${FMT_ROOT}/include |
| 175 | + DOC "libfmt headers directory" |
| 176 | + ) |
| 177 | + IF(NOT FMT_INCLUDE_DIRECTORY) |
| 178 | + MESSAGE(FATAL_ERROR "Could not find libfmt headers: install libfmt (don't forget to set FMT_ROOT if not in system path) or run cmake with -DVALIDATOR_WITH_FMT=No") |
| 179 | + ENDIF() |
| 180 | + |
| 181 | + MESSAGE(STATUS "Using fmt headers from ${FMT_INCLUDE_DIRECTORY}") |
| 182 | + TARGET_INCLUDE_DIRECTORIES(${PROJECT_NAME} INTERFACE ${FMT_INCLUDE_DIRECTORY}) |
| 183 | + |
| 184 | + IF (NOT FMT_HEADER_ONLY) |
| 185 | + |
| 186 | + FIND_LIBRARY(FMT_LIBRARY fmt |
| 187 | + PATHS ${FMT_LIB_DIR} |
| 188 | + ${FMT_ROOT}/lib |
| 189 | + DOC "libfmt library" |
| 190 | + ) |
| 191 | + IF(NOT FMT_LIBRARY) |
| 192 | + MESSAGE(FATAL_ERROR "Could not find libfmt library: install libfmt that is not header-only or run cmake with -DFMT_HEADER_ONLY=Yes") |
| 193 | + ENDIF() |
| 194 | + |
| 195 | + MESSAGE(STATUS "Using fmt library ${FMT_LIBRARY}") |
| 196 | + TARGET_LINK_LIBRARIES(${PROJECT_NAME} INTERFACE ${FMT_LIBRARY}) |
| 197 | + |
| 198 | + ENDIF(NOT FMT_HEADER_ONLY) |
| 199 | + |
| 200 | + ELSE(VALIDATOR_WITH_FMT) |
| 201 | + |
| 202 | + MESSAGE(STATUS "Use std::stringstream for formatting in cpp-validator library") |
| 203 | + |
| 204 | + ENDIF(VALIDATOR_WITH_FMT) |
| 205 | + |
| 206 | + IF (VALIDATOR_WITH_TESTS) |
| 207 | + |
| 208 | + MESSAGE(STATUS "Build tests for cpp-validator library") |
| 209 | + ADD_SUBDIRECTORY(test) |
| 210 | + |
| 211 | + ENDIF(VALIDATOR_WITH_TESTS) |
| 212 | + |
| 213 | + INSTALL(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/include/dracosha" DESTINATION include) |
| 214 | + |
| 215 | +ENDIF(DRACOSHA_VALIDATOR_SRC) |
0 commit comments