From 775a25b49267240ad2dc0d8fcebbde3d0b454e05 Mon Sep 17 00:00:00 2001 From: Castor215 <132155746+Castor215@users.noreply.github.com> Date: Wed, 11 Oct 2023 22:43:36 +0100 Subject: [PATCH] externals: allow system cpp-cttplib to be used with both meson and cpp-httplib builds (#7062) Co-authored-by: Violet Purcell --- externals/CMakeLists.txt | 2 +- externals/cmake-modules/FindCppHttp.cmake | 47 +++++++++++++++-------- 2 files changed, 33 insertions(+), 16 deletions(-) diff --git a/externals/CMakeLists.txt b/externals/CMakeLists.txt index e678facb1..1d8468d46 100644 --- a/externals/CMakeLists.txt +++ b/externals/CMakeLists.txt @@ -230,7 +230,7 @@ add_library(httplib INTERFACE) if(USE_SYSTEM_CPP_HTTPLIB) find_package(CppHttp 0.14.1) if(CppHttp_FOUND) - target_link_libraries(httplib SYSTEM INTERFACE cpp-httplib::cpp-httplib) + target_link_libraries(httplib INTERFACE httplib::httplib) else() message(STATUS "Cpp-httplib not found or not suitable version! Falling back to bundled...") target_include_directories(httplib SYSTEM INTERFACE ./httplib) diff --git a/externals/cmake-modules/FindCppHttp.cmake b/externals/cmake-modules/FindCppHttp.cmake index fe17c8bab..5ca45e4a5 100644 --- a/externals/cmake-modules/FindCppHttp.cmake +++ b/externals/cmake-modules/FindCppHttp.cmake @@ -1,21 +1,38 @@ if(NOT CppHttp_FOUND) - pkg_check_modules(HTTP_TMP cpp-httplib) + pkg_check_modules(CPP_HTTPLIB cpp-httplib) - find_path(CPP-HTTP_INCLUDE_DIR NAMES httplib.h - PATHS - ${HTTP_TMP_INCLUDE_DIRS} - /usr/include - /usr/local/include - ) - - find_library(CPP-HTTP_LIBRARIES NAMES cpp-httplib - PATHS - ${HTTP_TMP_LIBRARY_DIRS} - /usr/lib - /usr/local/lib - ) + if (CPP_HTTPLIB_FOUND) + find_path(HTTPLIB_INCLUDE_DIR NAMES httplib.h + PATHS + ${CPP_HTTPLIB_INCLUDE_DIRS} + /usr/include + /usr/local/include + ) - find_package_handle_standard_args(CppHttp REQUIRED_VARS CPP-HTTP_INCLUDE_DIR CPP-HTTP_LIBRARIES VERSION_VAR HTTP_TMP_VERSION) + find_library(HTTPLIB_LIBRARY NAMES cpp-httplib + PATHS + ${CPP_HTTPLIB_LIBRARY_DIRS} + /usr/lib + /usr/local/lib + ) + + set(HTTPLIB_VERSION ${CPP_HTTPLIB_VERSION}) + + if (NOT TARGET cpp-httplib::cpp-httplib) + add_library(cpp-httplib::cpp-httplib INTERFACE IMPORTED) + set_target_properties(cpp-httplib::cpp-httplib PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${HTTPLIB_INCLUDE_DIR}" + INTERFACE_LINK_LIBRARIES "${HTTPLIB_LIBRARY}" + IMPORTED_LOCATION "${HTTPLIB_LIBRARY}" + ) + add_library(httplib::httplib ALIAS cpp-httplib::cpp-httplib) + endif() + else() + message(STATUS "Cpp-httplib not found via pkg-config, trying CMake...") + find_package(httplib) + endif() + + find_package_handle_standard_args(CppHttp REQUIRED_VARS HTTPLIB_INCLUDE_DIR HTTPLIB_LIBRARY VERSION_VAR HTTPLIB_VERSION) endif()