From 0245c5dc4953b11397bd80a7bf658a736f1340e1 Mon Sep 17 00:00:00 2001
From: Alexandre Bouvier <contact@amb.tf>
Date: Wed, 22 Feb 2023 20:27:05 +0100
Subject: [PATCH] externals: use openssl from vcpkg

---
 .gitmodules              |  3 ---
 CMakeLists.txt           |  6 +++---
 externals/CMakeLists.txt | 35 ++++++-----------------------------
 externals/libressl       |  1 -
 vcpkg.json               | 11 ++++++++++-
 5 files changed, 19 insertions(+), 37 deletions(-)
 delete mode 160000 externals/libressl

diff --git a/.gitmodules b/.gitmodules
index 8e98ee9cb3..75c7b5fe05 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -13,9 +13,6 @@
 [submodule "dynarmic"]
     path = externals/dynarmic
     url = https://github.com/MerryMage/dynarmic.git
-[submodule "libressl"]
-    path = externals/libressl
-    url = https://github.com/citra-emu/ext-libressl-portable.git
 [submodule "libusb"]
 	path = externals/libusb/libusb
 	url = https://github.com/libusb/libusb.git
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 906073602a..0f344ffd9b 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -67,6 +67,9 @@ if (YUZU_USE_BUNDLED_VCPKG)
     if (YUZU_CRASH_DUMPS)
         list(APPEND VCPKG_MANIFEST_FEATURES "dbghelp")
     endif()
+    if (ENABLE_WEB_SERVICE)
+        list(APPEND VCPKG_MANIFEST_FEATURES "web-service")
+    endif()
 
     include(${CMAKE_SOURCE_DIR}/externals/vcpkg/scripts/buildsystems/vcpkg.cmake)
 elseif(NOT "$ENV{VCPKG_TOOLCHAIN_FILE}" STREQUAL "")
@@ -244,9 +247,6 @@ endif()
 if (ENABLE_WEB_SERVICE)
     find_package(cpp-jwt 1.4 CONFIG)
     find_package(httplib 0.12 MODULE)
-    if (NOT cpp-jwt_FOUND OR NOT httplib_FOUND)
-        find_package(OpenSSL 1.1 MODULE COMPONENTS Crypto SSL)
-    endif()
 endif()
 
 if (YUZU_TESTS)
diff --git a/externals/CMakeLists.txt b/externals/CMakeLists.txt
index 966f5e94c6..f2a560f04e 100644
--- a/externals/CMakeLists.txt
+++ b/externals/CMakeLists.txt
@@ -100,41 +100,18 @@ endif()
 # Sirit
 add_subdirectory(sirit EXCLUDE_FROM_ALL)
 
-# LibreSSL
-if (ENABLE_WEB_SERVICE AND DEFINED OPENSSL_FOUND)
-    if (WIN32 OR NOT OPENSSL_FOUND)
-        set(LIBRESSL_SKIP_INSTALL ON)
-        set(OPENSSLDIR "/etc/ssl/")
-        add_subdirectory(libressl EXCLUDE_FROM_ALL)
-        target_include_directories(ssl INTERFACE ./libressl/include)
-        target_compile_definitions(ssl PRIVATE -DHAVE_INET_NTOP)
-        get_directory_property(OPENSSL_LIBRARIES
-            DIRECTORY libressl
-            DEFINITION OPENSSL_LIBS)
-    else()
-        set(OPENSSL_LIBRARIES OpenSSL::SSL OpenSSL::Crypto)
-    endif()
-endif()
-
 # httplib
 if (ENABLE_WEB_SERVICE AND NOT TARGET httplib::httplib)
-    add_library(httplib INTERFACE)
-    target_include_directories(httplib INTERFACE ./cpp-httplib)
-    target_compile_definitions(httplib INTERFACE -DCPPHTTPLIB_OPENSSL_SUPPORT)
-    target_link_libraries(httplib INTERFACE ${OPENSSL_LIBRARIES})
-    if (WIN32)
-        target_link_libraries(httplib INTERFACE crypt32 cryptui ws2_32)
-    endif()
-    add_library(httplib::httplib ALIAS httplib)
+    set(HTTPLIB_REQUIRE_OPENSSL ON)
+    add_subdirectory(cpp-httplib EXCLUDE_FROM_ALL)
 endif()
 
 # cpp-jwt
 if (ENABLE_WEB_SERVICE AND NOT TARGET cpp-jwt::cpp-jwt)
-    add_library(cpp-jwt INTERFACE)
-    target_include_directories(cpp-jwt INTERFACE ./cpp-jwt/include)
-    target_compile_definitions(cpp-jwt INTERFACE CPP_JWT_USE_VENDORED_NLOHMANN_JSON)
-    target_link_libraries(cpp-jwt INTERFACE ${OPENSSL_LIBRARIES})
-    add_library(cpp-jwt::cpp-jwt ALIAS cpp-jwt)
+    set(CPP_JWT_BUILD_EXAMPLES OFF)
+    set(CPP_JWT_BUILD_TESTS OFF)
+    set(CPP_JWT_USE_VENDORED_NLOHMANN_JSON OFF)
+    add_subdirectory(cpp-jwt EXCLUDE_FROM_ALL)
 endif()
 
 # Opus
diff --git a/externals/libressl b/externals/libressl
deleted file mode 160000
index 8929f818fd..0000000000
--- a/externals/libressl
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 8929f818fd748fd31a34fec7c04558399e13014a
diff --git a/vcpkg.json b/vcpkg.json
index ef271f778a..fbadca0e69 100644
--- a/vcpkg.json
+++ b/vcpkg.json
@@ -1,5 +1,5 @@
 {
-    "$schema": "https://raw.githubusercontent.com/microsoft/vcpkg/master/scripts/vcpkg.schema.json",
+    "$schema": "https://raw.githubusercontent.com/microsoft/vcpkg-tool/main/docs/vcpkg.schema.json",
     "name": "yuzu",
     "builtin-baseline": "9b22b40c6c61bf0da2d46346dd44a11e90972cc9",
     "version": "1.0",
@@ -35,6 +35,15 @@
         "dbghelp": {
             "description": "Compile Windows crash dump (Minidump) support",
             "dependencies": [ "dbghelp" ]
+        },
+        "web-service": {
+            "description": "Enable web services (telemetry, etc.)",
+            "dependencies": [
+                {
+                    "name": "openssl",
+                    "platform": "windows"
+                }
+            ]
         }
     },
     "overrides": [