CMake: Find system libweb or dynstr if available
So far, slcl's build system would always build libweb and dynstr. However, this is discouraged by distribution packagers.
This commit is contained in:
parent
fc3db39277
commit
b2be8b4658
|
@ -12,7 +12,17 @@ add_executable(${PROJECT_NAME}
|
|||
)
|
||||
target_compile_options(${PROJECT_NAME} PRIVATE -Wall)
|
||||
target_compile_definitions(${PROJECT_NAME} PRIVATE _FILE_OFFSET_BITS=64)
|
||||
add_subdirectory(libweb)
|
||||
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_LIST_DIR}/cmake)
|
||||
find_package(web 0.1.0)
|
||||
|
||||
if(WEB_FOUND)
|
||||
find_package(dynstr 0.1.0)
|
||||
else()
|
||||
message(STATUS "Using in-tree libweb")
|
||||
add_subdirectory(libweb)
|
||||
#dynstr is already provided by libweb.
|
||||
endif()
|
||||
|
||||
find_package(cJSON 1.0 REQUIRED)
|
||||
find_package(OpenSSL 2.0 REQUIRED)
|
||||
target_link_libraries(${PROJECT_NAME} PRIVATE web dynstr cjson OpenSSL::SSL)
|
||||
|
|
|
@ -0,0 +1,24 @@
|
|||
mark_as_advanced(WEB_LIBRARY WEB_INCLUDE_DIR)
|
||||
find_library(WEB_LIBRARY NAMES libweb web)
|
||||
|
||||
find_path(WEB_INCLUDE_DIR
|
||||
NAMES
|
||||
handler.h
|
||||
html.h
|
||||
http.h
|
||||
server.h
|
||||
wildcard_cmp.h
|
||||
PATH_SUFFIXES libweb include/libweb)
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(web
|
||||
DEFAULT_MSG WEB_LIBRARY WEB_INCLUDE_DIR)
|
||||
|
||||
if(WEB_FOUND)
|
||||
if(NOT TARGET web)
|
||||
add_library(web UNKNOWN IMPORTED)
|
||||
set_target_properties(web PROPERTIES
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${WEB_INCLUDE_DIR}"
|
||||
IMPORTED_LOCATION "${WEB_LIBRARY}")
|
||||
endif()
|
||||
endif()
|
Loading…
Reference in New Issue