From 2bf9602e83715264cc438feeccf102d76bc98b76 Mon Sep 17 00:00:00 2001
From: Alexandre Bouvier <contact@amb.tf>
Date: Tue, 21 Feb 2023 21:55:04 +0100
Subject: [PATCH] cmake: fix cpp-jwt build

---
 CMakeLists.txt           |  3 +++
 externals/CMakeLists.txt | 18 ++++++++----------
 2 files changed, 11 insertions(+), 10 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 10a3de9e29..e09410a59a 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -242,6 +242,9 @@ 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 8532fd7a8a..966f5e94c6 100644
--- a/externals/CMakeLists.txt
+++ b/externals/CMakeLists.txt
@@ -100,17 +100,9 @@ endif()
 # Sirit
 add_subdirectory(sirit EXCLUDE_FROM_ALL)
 
-# httplib
-if (ENABLE_WEB_SERVICE AND NOT TARGET httplib::httplib)
-    if (NOT WIN32)
-        find_package(OpenSSL 1.1)
-        if (OPENSSL_FOUND)
-            set(OPENSSL_LIBRARIES OpenSSL::SSL OpenSSL::Crypto)
-        endif()
-    endif()
-
+# LibreSSL
+if (ENABLE_WEB_SERVICE AND DEFINED OPENSSL_FOUND)
     if (WIN32 OR NOT OPENSSL_FOUND)
-        # LibreSSL
         set(LIBRESSL_SKIP_INSTALL ON)
         set(OPENSSLDIR "/etc/ssl/")
         add_subdirectory(libressl EXCLUDE_FROM_ALL)
@@ -119,8 +111,13 @@ if (ENABLE_WEB_SERVICE AND NOT TARGET httplib::httplib)
         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)
@@ -136,6 +133,7 @@ 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)
 endif()