externals: disable system cpp-httplib if it is a shared object (#7446)

Co-authored-by: Castor216 <davidjamescastor215@proton.me>
This commit is contained in:
Castor215 2024-02-17 14:39:38 +00:00 committed by GitHub
parent bb003c2bd4
commit 749a721aa2
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -294,12 +294,21 @@ endif()
add_library(httplib INTERFACE) add_library(httplib INTERFACE)
if(USE_SYSTEM_CPP_HTTPLIB) if(USE_SYSTEM_CPP_HTTPLIB)
find_package(CppHttp 0.14.1) find_package(CppHttp 0.14.1)
# Detect if system cpphttplib is a shared library
# this breaks building as Citra relies on functions that are moved
# into the shared object.
get_target_property(HTTP_LIBS httplib::httplib INTERFACE_LINK_LIBRARIES)
if(HTTP_LIBS)
message(WARNING "Shared cpp-http (${HTTP_LIBS}) not supported. Falling back to bundled...")
target_include_directories(httplib SYSTEM INTERFACE ./httplib)
else()
if(CppHttp_FOUND) if(CppHttp_FOUND)
target_link_libraries(httplib INTERFACE httplib::httplib) target_link_libraries(httplib INTERFACE httplib::httplib)
else() else()
message(STATUS "Cpp-httplib not found or not suitable version! Falling back to bundled...") message(STATUS "Cpp-httplib not found or not suitable version! Falling back to bundled...")
target_include_directories(httplib SYSTEM INTERFACE ./httplib) target_include_directories(httplib SYSTEM INTERFACE ./httplib)
endif() endif()
endif()
else() else()
target_include_directories(httplib SYSTEM INTERFACE ./httplib) target_include_directories(httplib SYSTEM INTERFACE ./httplib)
endif() endif()