Ver código fonte

Improve discord sdk (#1626)

* Update discord game sdk to 3.2.1

support linux
support macos

* Restrict architecture for discord game sdk

* improve discord sdk

Co-authored-by: Arthur LAURENT <[email protected]>
ruki 2 anos atrás
pai
commit
98f3a8632b

+ 12 - 0
packages/d/discord/patches/2.5.6/add_include_cstdint_to_typeh.patch

@@ -0,0 +1,12 @@
+diff --git a/cpp/types.h b/cpp/types.h
+index 8c7cc2b..86b63c7 100644
+--- a/cpp/types.h
++++ b/cpp/types.h
+@@ -1,5 +1,7 @@
+ #pragma once
+ 
++#include <cstdint>
++
+ #include "ffi.h"
+ #include "event.h"
+ 

+ 12 - 0
packages/d/discord/patches/3.2.1/add_include_cstdint_to_typeh.patch

@@ -0,0 +1,12 @@
+diff --git a/cpp/types.h b/cpp/types.h
+index 76c4311..775e740 100644
+--- a/cpp/types.h
++++ b/cpp/types.h
+@@ -1,5 +1,7 @@
+ #pragma once
+ 
++#include <cstdint>
++
+ #include "ffi.h"
+ #include "event.h"
+ #ifdef _WIN32

+ 1 - 1
packages/d/discord/port/xmake.lua

@@ -1,5 +1,5 @@
 set_xmakever("2.5.1")
-set_languages("cxx11")
+set_languages("cxx14")
 
 add_rules("mode.debug", "mode.release")
 

+ 37 - 13
packages/d/discord/xmake.lua

@@ -4,26 +4,50 @@ package("discord")
     set_description("Whether you’re part of a school club, gaming group, worldwide art community, or just a handful of friends that want to spend time together, Discord makes it easy to talk every day and hang out more often.")
 
     add_versions("2.5.6", "426eb5fa70647d884f461c63825b63668349efb4bc68a16e70bc4a24e119b92e")
+    add_versions("3.2.1", "6757bb4a1f5b42aa7b6707cbf2158420278760ac5d80d40ca708bb01d20ae6b4")
+
+    add_patches("2.5.6", path.join(os.scriptdir(), "patches", "2.5.6", "add_include_cstdint_to_typeh.patch"), "2d36408167da601b5bb19066a951dbcac4e9783dd3b7ef8bc5ea9c3e48391d1c ")
+    add_patches("3.2.1", path.join(os.scriptdir(), "patches", "3.2.1", "add_include_cstdint_to_typeh.patch"), "0ae6618dd5bf2e0149bbb3959dcd2f6df5b2a8e7295b7153eea2fd1e6d389ba0")
 
     set_urls("https://dl-game-sdk.discordapp.net/$(version)/discord_game_sdk.zip")
 
-    on_install("windows", function (package)
-        os.cp("cpp/*.h", package:installdir("include"))
+    add_configs("shared", {description = "Use shared binaries.", default = false, type = "boolean", readonly = true})
+    add_configs("cppapi", {description = "Enable C++ API.", default = true, type = "boolean"})
+
+    add_links("discordcpp")
+
+    on_install("windows|x86", "windows|x64", "linux|x64", "macosx|x86_64", "macosx|arm64", function (package)
+        if package:configs("cppapi") then
+            os.cp("cpp/*.h", package:installdir("include"))
+        end
         os.cp("c/*.h", package:installdir("include"))
-        os.cp("Release/*.lib", package:installdir("lib"))
-        if package:is_arch("x64") then
-            os.cp("lib/x86_64/discord_game_sdk.dll", package:installdir("bin"))
-            os.cp("lib/x86_64/discord_game_sdk.dll.lib", package:installdir("lib"))
-        else
-            os.cp("lib/x86/discord_game_sdk.dll", package:installdir("bin"))
-            os.cp("lib/x86/discord_game_sdk.dll.lib", package:installdir("lib"))
+        local configs = {}
+        if package:is_plat("windows") then
+            if package:is_arch("x64") then
+                os.cp("lib/x86_64/discord_game_sdk.dll", package:installdir("bin"))
+                os.cp("lib/x86_64/discord_game_sdk.dll.lib", package:installdir("lib"))
+            else
+                os.cp("lib/x86/discord_game_sdk.dll", package:installdir("bin"))
+                os.cp("lib/x86/discord_game_sdk.dll.lib", package:installdir("lib"))
+            end
+            package:add("links", "discord_game_sdk.dll")
+        elseif package:is_plat("linux") then
+            os.cp("lib/x86_64/discord_game_sdk.so", path.join(package:installdir("lib"), "libdiscord_game_sdk.so"))
+            package:add("links", "discord_game_sdk")
+        elseif package:is_plat("macosx") then
+            local version = package:version()
+            if ((version:major() > 3) or (version:major() == 3 and version:minor() >= 2)) and package:is_arch("arm64") then
+                os.cp("lib/aarch64/discord_game_sdk.dylib", path.join(package:installdir("lib"), "libdiscord_game_sdk.dylib"))
+
+            else
+                os.cp("lib/x86_64/discord_game_sdk.dylib", path.join(package:installdir("lib"), "libdiscord_game_sdk.dylib"))
+            end
+            package:add("links", "discord_game_sdk")
         end
 
-        local configs = {}
-        if package:config("shared") then
-            configs.kind = "shared"
+        if package:configs("cppapi") then
+            os.cp(path.join(package:scriptdir(), "port", "xmake.lua"), "xmake.lua")
         end
-        os.cp(path.join(package:scriptdir(), "port", "xmake.lua"), "xmake.lua")
         import("package.tools.xmake").install(package, configs)
     end)