]> git.ipfire.org Git - thirdparty/ccache.git/commitdiff
build: Use find_package first for cpp-httplib (#1717) master
authorJiri Slaby <jirislaby@gmail.com>
Tue, 7 Apr 2026 17:34:55 +0000 (19:34 +0200)
committerGitHub <noreply@github.com>
Tue, 7 Apr 2026 17:34:55 +0000 (19:34 +0200)
cmake/FindCppHttplib.cmake

index 5061f9645039d5d0028f402d3e9d3494d62c72fa..3c68335a9456913a05997eb04bed1c6aca1fb72a 100644 (file)
@@ -4,31 +4,38 @@ mark_as_advanced(CPPHTTPLIB_LIBRARY)
 if(DEP_CPPHTTPLIB STREQUAL "BUNDLED")
   message(STATUS "Using bundled CppHttplib as requested")
 else()
 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()
       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)
     endif()
   endif()
   if(NOT TARGET dep_cpphttplib)