diff --git a/externals/CMakeLists.txt b/externals/CMakeLists.txt
index 5f4c23ad3..fc45473b6 100644
--- a/externals/CMakeLists.txt
+++ b/externals/CMakeLists.txt
@@ -294,11 +294,20 @@ endif()
 add_library(httplib INTERFACE)
 if(USE_SYSTEM_CPP_HTTPLIB)
     find_package(CppHttp 0.14.1)
-    if(CppHttp_FOUND)
-        target_link_libraries(httplib INTERFACE httplib::httplib)
-    else()
-        message(STATUS "Cpp-httplib not found or not suitable version! Falling back to bundled...")
+    # 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)
+            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)
+        endif()
     endif()
 else()
     target_include_directories(httplib SYSTEM INTERFACE ./httplib)