Bläddra i källkod

Remove OpenSSL dependency for GNS on windows (#6498)

* Remove OpenSSL dependency for GNS on windows

* Update xmake.lua

* Update xmake.lua

* Update xmake.lua

* Update xmake.lua

---------

Co-authored-by: Jérôme Leclercq <[email protected]>
Maxime 6 månader sedan
förälder
incheckning
969fa5e4e0

+ 66 - 43
packages/g/gamenetworkingsockets/port/xmake.lua

@@ -2,7 +2,11 @@ option("webrtc", {default = false, showmenu = true})
 
 
 add_rules("mode.debug", "mode.release")
 add_rules("mode.debug", "mode.release")
 
 
-add_requires("protobuf-cpp", "openssl")
+add_requires("protobuf-cpp")
+
+if not is_plat("windows") then
+    add_requires("openssl")
+end
 
 
 if has_config("webrtc") then
 if has_config("webrtc") then
     add_requires("abseil")
     add_requires("abseil")
@@ -432,13 +436,14 @@ target("gns") -- we need limit path length
     add_rules("protobuf.cpp")
     add_rules("protobuf.cpp")
     set_languages("gnu17", "gnu++17")
     set_languages("gnu17", "gnu++17")
     add_vectorexts("sse2")
     add_vectorexts("sse2")
-    add_packages("protobuf-cpp", "openssl")
+    add_packages("protobuf-cpp")
     set_basename("gamenetworkingsockets")
     set_basename("gamenetworkingsockets")
 
 
     if is_plat("windows") then
     if is_plat("windows") then
-        add_syslinks("ws2_32")
+        add_syslinks("ws2_32", "Bcrypt")
         add_defines("WIN32", "_WINDOWS")
         add_defines("WIN32", "_WINDOWS")
     else
     else
+        add_packages("openssl")
         add_syslinks("pthread")
         add_syslinks("pthread")
         add_defines("POSIX", "LINUX", "GNUC", "GNU_COMPILER")
         add_defines("POSIX", "LINUX", "GNUC", "GNU_COMPILER")
     end
     end
@@ -452,18 +457,12 @@ target("gns") -- we need limit path length
     if is_kind("shared") then
     if is_kind("shared") then
         add_defines("STEAMNETWORKINGSOCKETS_FOREXPORT")
         add_defines("STEAMNETWORKINGSOCKETS_FOREXPORT")
     else
     else
-        add_defines("STEAMNETWORKINGSOCKETS_STATIC_LINK", "OPENSSL_USE_STATIC_LIBS")
+        add_defines("STEAMNETWORKINGSOCKETS_STATIC_LINK")
+        if not is_plat("windows") then
+            add_defines("OPENSSL_USE_STATIC_LIBS")
+        end
     end
     end
 
 
-    add_defines("STEAMNETWORKINGSOCKETS_CRYPTO_25519_OPENSSL",
-                "STEAMNETWORKINGSOCKETS_CRYPTO_VALVEOPENSSL",
-                "OPENSSL_HAS_25519_RAW",
-                "VALVE_CRYPTO_ENABLE_25519",
-                "GOOGLE_PROTOBUF_NO_RTTI",
-                "VALVE_CRYPTO_25519_OPENSSL",
-                "CRYPTO_DISABLE_ENCRYPT_WITH_PASSWORD",
-                "ENABLE_OPENSSLCONNECTION")
-
     add_includedirs("include",
     add_includedirs("include",
                     "src",
                     "src",
                     "src/common",
                     "src/common",
@@ -478,38 +477,62 @@ target("gns") -- we need limit path length
     add_headerfiles("include/(minbase/*.h)")
     add_headerfiles("include/(minbase/*.h)")
     add_headerfiles("src/public/(*/*.h)")
     add_headerfiles("src/public/(*/*.h)")
 
 
-    -- OpenSSL specific files
-    add_files(  "src/common/crypto_openssl.cpp",
-                "src/common/crypto_25519_openssl.cpp",
-                "src/common/opensslwrapper.cpp")
+    add_defines("VALVE_CRYPTO_ENABLE_25519",
+                "GOOGLE_PROTOBUF_NO_RTTI",
+                "CRYPTO_DISABLE_ENCRYPT_WITH_PASSWORD")
+
+    -- Crypto specific files
+    if is_plat("windows") then
+        add_files("src/common/crypto_bcrypt.cpp",
+                  "src/common/crypto_25519_donna.cpp",
+                  "src/external/curve25519-donna/curve25519.c",
+                  "src/external/curve25519-donna/curve25519_VALVE_sse2.c",
+                  "src/external/ed25519-donna/ed25519_VALVE.c",
+                  "src/external/ed25519-donna/ed25519_VALVE_sse2.c")
+
+        add_defines("ED25519_HASH_BCRYPT",
+                    "VALVE_CRYPTO_25519_DONNA",
+                    "VALVE_CRYPTO_BCRYPT",
+                    "STEAMNETWORKINGSOCKETS_CRYPTO_BCRYPT")
+    else
+        add_files("src/common/crypto_openssl.cpp",
+                  "src/common/crypto_25519_openssl.cpp",
+                  "src/common/opensslwrapper.cpp")
+
+        add_defines("VALVE_CRYPTO_25519_OPENSSL",
+                    "VALVE_CRYPTO_25519_OPENSSLEVP",
+                    "VALVE_CRYPTO_OPENSSL",
+                    "ENABLE_OPENSSLCONNECTION",
+                    "STEAMNETWORKINGSOCKETS_CRYPTO_VALVEOPENSSL")
+    end
 
 
     add_files("src/common/steamnetworkingsockets_messages_certs.proto",
     add_files("src/common/steamnetworkingsockets_messages_certs.proto",
               "src/common/steamnetworkingsockets_messages.proto",
               "src/common/steamnetworkingsockets_messages.proto",
               "src/common/steamnetworkingsockets_messages_udp.proto")
               "src/common/steamnetworkingsockets_messages_udp.proto")
 
 
-    add_files(  "src/common/crypto.cpp",
-                "src/common/crypto_textencode.cpp",
-                "src/common/keypair.cpp",
-                "src/common/steamid.cpp",
-                "src/vstdlib/strtools.cpp",
-                "src/tier0/dbg.cpp",
-                "src/tier0/platformtime.cpp",
-                "src/tier1/ipv6text.c",
-                "src/tier1/netadr.cpp",
-                "src/tier1/utlbuffer.cpp",
-                "src/tier1/utlmemory.cpp",
-                "src/steamnetworkingsockets/steamnetworkingsockets_certs.cpp",
-                "src/steamnetworkingsockets/steamnetworkingsockets_thinker.cpp",
-                "src/steamnetworkingsockets/steamnetworkingsockets_certstore.cpp",
-                "src/steamnetworkingsockets/clientlib/steamnetworkingsockets_connections.cpp",
-                "src/steamnetworkingsockets/clientlib/steamnetworkingsockets_flat.cpp",
-                "src/steamnetworkingsockets/clientlib/steamnetworkingsockets_lowlevel.cpp",
-                "src/steamnetworkingsockets/steamnetworkingsockets_shared.cpp",
-                "src/steamnetworkingsockets/steamnetworkingsockets_stats.cpp",
-                "src/steamnetworkingsockets/clientlib/steamnetworkingsockets_snp.cpp",
-                "src/steamnetworkingsockets/clientlib/steamnetworkingsockets_udp.cpp",
-                "src/steamnetworkingsockets/clientlib/csteamnetworkingmessages.cpp",
-                "src/steamnetworkingsockets/clientlib/csteamnetworkingsockets.cpp",
-                "src/steamnetworkingsockets/clientlib/steamnetworkingsockets_p2p.cpp",
-                "src/steamnetworkingsockets/clientlib/steamnetworkingsockets_stun.cpp",
-                "src/steamnetworkingsockets/clientlib/steamnetworkingsockets_p2p_ice.cpp")
+    add_files("src/common/crypto.cpp",
+              "src/common/crypto_textencode.cpp",
+              "src/common/keypair.cpp",
+              "src/common/steamid.cpp",
+              "src/vstdlib/strtools.cpp",
+              "src/tier0/dbg.cpp",
+              "src/tier0/platformtime.cpp",
+              "src/tier1/ipv6text.c",
+              "src/tier1/netadr.cpp",
+              "src/tier1/utlbuffer.cpp",
+              "src/tier1/utlmemory.cpp",
+              "src/steamnetworkingsockets/steamnetworkingsockets_certs.cpp",
+              "src/steamnetworkingsockets/steamnetworkingsockets_thinker.cpp",
+              "src/steamnetworkingsockets/steamnetworkingsockets_certstore.cpp",
+              "src/steamnetworkingsockets/clientlib/steamnetworkingsockets_connections.cpp",
+              "src/steamnetworkingsockets/clientlib/steamnetworkingsockets_flat.cpp",
+              "src/steamnetworkingsockets/clientlib/steamnetworkingsockets_lowlevel.cpp",
+              "src/steamnetworkingsockets/steamnetworkingsockets_shared.cpp",
+              "src/steamnetworkingsockets/steamnetworkingsockets_stats.cpp",
+              "src/steamnetworkingsockets/clientlib/steamnetworkingsockets_snp.cpp",
+              "src/steamnetworkingsockets/clientlib/steamnetworkingsockets_udp.cpp",
+              "src/steamnetworkingsockets/clientlib/csteamnetworkingmessages.cpp",
+              "src/steamnetworkingsockets/clientlib/csteamnetworkingsockets.cpp",
+              "src/steamnetworkingsockets/clientlib/steamnetworkingsockets_p2p.cpp",
+              "src/steamnetworkingsockets/clientlib/steamnetworkingsockets_stun.cpp",
+              "src/steamnetworkingsockets/clientlib/steamnetworkingsockets_p2p_ice.cpp")

+ 4 - 1
packages/g/gamenetworkingsockets/xmake.lua

@@ -24,7 +24,10 @@ package("gamenetworkingsockets")
     on_load("windows", "linux", function(package)
     on_load("windows", "linux", function(package)
         if not package:config("shared") then
         if not package:config("shared") then
             package:add("defines", "STEAMNETWORKINGSOCKETS_STATIC_LINK")
             package:add("defines", "STEAMNETWORKINGSOCKETS_STATIC_LINK")
-            package:add("deps", "openssl", "protobuf-cpp")
+            package:add("deps", "protobuf-cpp")
+            if not package:is_plat("windows") then
+                package:add("deps", "openssl")
+            end
             if package:config("webrtc") then
             if package:config("webrtc") then
                 package:add("deps", "abseil")
                 package:add("deps", "abseil")
             end
             end