From: Jiri Slaby Date: Tue, 7 Apr 2026 17:34:55 +0000 (+0200) Subject: build: Use find_package first for cpp-httplib (#1717) X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=HEAD;p=thirdparty%2Fccache.git build: Use find_package first for cpp-httplib (#1717) --- diff --git a/cmake/FindCppHttplib.cmake b/cmake/FindCppHttplib.cmake index 5061f964..3c68335a 100644 --- a/cmake/FindCppHttplib.cmake +++ b/cmake/FindCppHttplib.cmake @@ -4,31 +4,38 @@ mark_as_advanced(CPPHTTPLIB_LIBRARY) if(DEP_CPPHTTPLIB STREQUAL "BUNDLED") message(STATUS "Using bundled CppHttplib as requested") else() - find_path(CPPHTTPLIB_INCLUDE_DIR httplib.h) - if(CPPHTTPLIB_INCLUDE_DIR) - file(READ "${CPPHTTPLIB_INCLUDE_DIR}/httplib.h" _httplib_h) - string(REGEX MATCH "#define CPPHTTPLIB_VERSION \"([0-9]+).([0-9]+).*([0-9]+)\"" _ "${_httplib_h}") - set(_cpphttplib_version_string "${CMAKE_MATCH_1}.${CMAKE_MATCH_2}.${CMAKE_MATCH_3}") - if(NOT "${CMAKE_MATCH_0}" STREQUAL "" AND "${_cpphttplib_version_string}" VERSION_GREATER_EQUAL "${CppHttplib_FIND_VERSION}") - # Some dists like Fedora package cpp-httplib as a single header while some - # dists like Debian package it as a traditional library. - find_library(CPPHTTPLIB_LIBRARY cpp-httplib) - if(NOT CPPHTTPLIB_LIBRARY) - find_library(CPPHTTPLIB_LIBRARY httplib) - endif() + find_package(httplib QUIET) + if(httplib_FOUND) + message(STATUS "Using system CppHttplib via CMake config") + add_library(dep_cpphttplib ALIAS httplib::httplib) + register_dependency(CppHttplib "SYSTEM (cmake)" "${httplib_VERSION}") + else() + find_path(CPPHTTPLIB_INCLUDE_DIR httplib.h) + if(CPPHTTPLIB_INCLUDE_DIR) + file(READ "${CPPHTTPLIB_INCLUDE_DIR}/httplib.h" _httplib_h) + string(REGEX MATCH "#define CPPHTTPLIB_VERSION \"([0-9]+).([0-9]+).*([0-9]+)\"" _ "${_httplib_h}") + set(_cpphttplib_version_string "${CMAKE_MATCH_1}.${CMAKE_MATCH_2}.${CMAKE_MATCH_3}") + if(NOT "${CMAKE_MATCH_0}" STREQUAL "" AND "${_cpphttplib_version_string}" VERSION_GREATER_EQUAL "${CppHttplib_FIND_VERSION}") + # Some dists like Fedora package cpp-httplib as a single header while some + # dists like Debian package it as a traditional library. + find_library(CPPHTTPLIB_LIBRARY cpp-httplib) + if(NOT CPPHTTPLIB_LIBRARY) + find_library(CPPHTTPLIB_LIBRARY httplib) + endif() - if(CPPHTTPLIB_LIBRARY) - message(STATUS "Using system CppHttplib (${CPPHTTPLIB_LIBRARY})") - add_library(dep_cpphttplib UNKNOWN IMPORTED) - set_target_properties(dep_cpphttplib PROPERTIES IMPORTED_LOCATION "${CPPHTTPLIB_LIBRARY}") - set(_cpphttplib_origin "SYSTEM (${CPPHTTPLIB_LIBRARY})") - else() - message(STATUS "Using system CppHttplib (${CPPHTTPLIB_INCLUDE_DIR}/httplib.h)") - add_library(dep_cpphttplib INTERFACE IMPORTED) - set(_cpphttplib_origin "SYSTEM (${CPPHTTPLIB_INCLUDE_DIR}/httplib.h)") + if(CPPHTTPLIB_LIBRARY) + message(STATUS "Using system CppHttplib (${CPPHTTPLIB_LIBRARY})") + add_library(dep_cpphttplib UNKNOWN IMPORTED) + set_target_properties(dep_cpphttplib PROPERTIES IMPORTED_LOCATION "${CPPHTTPLIB_LIBRARY}") + set(_cpphttplib_origin "SYSTEM (${CPPHTTPLIB_LIBRARY})") + else() + message(STATUS "Using system CppHttplib (${CPPHTTPLIB_INCLUDE_DIR}/httplib.h)") + add_library(dep_cpphttplib INTERFACE IMPORTED) + set(_cpphttplib_origin "SYSTEM (${CPPHTTPLIB_INCLUDE_DIR}/httplib.h)") + endif() + set_target_properties(dep_cpphttplib PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${CPPHTTPLIB_INCLUDE_DIR}") + register_dependency(CppHttplib "${_cpphttplib_origin}" "${_cpphttplib_version_string}") endif() - set_target_properties(dep_cpphttplib PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${CPPHTTPLIB_INCLUDE_DIR}") - register_dependency(CppHttplib "${_cpphttplib_origin}" "${_cpphttplib_version_string}") endif() endif() if(NOT TARGET dep_cpphttplib)