ソースを参照

add module support for vulkan-hpp and vulkan-headers (#3228)

* add module support for vulkan-hpp and vulkan-headers

* Update xmake.lua

* Update xmake.lua

* Update xmake.lua

* Update xmake.lua

---------

Co-authored-by: ruki <[email protected]>
Arthur Laurent 1 年間 前
コミット
46919d4bef
2 ファイル変更58 行追加16 行削除
  1. 29 10
      packages/v/vulkan-headers/xmake.lua
  2. 29 6
      packages/v/vulkan-hpp/xmake.lua

+ 29 - 10
packages/v/vulkan-headers/xmake.lua

@@ -13,6 +13,8 @@ package("vulkan-headers")
         return version:startswith("v") and version or prefix .. version:gsub("%+", ".")
         return version:startswith("v") and version or prefix .. version:gsub("%+", ".")
     end})
     end})
 
 
+    add_configs("modules", {description = "Build with C++20 modules support.", default = false, type = "boolean"})
+
     -- when adding a new sdk version, please also update vulkan-hpp, vulkan-loader, vulkan-utility-libraries, spirv-headers, spirv-reflect, glslang and volk packages
     -- when adding a new sdk version, please also update vulkan-hpp, vulkan-loader, vulkan-utility-libraries, spirv-headers, spirv-reflect, glslang and volk packages
     add_versions("1.3.275+0", "fcd2136a9feb0402820b334d8242773462cc47ed397aa20c8f4d04f7ea18d810")
     add_versions("1.3.275+0", "fcd2136a9feb0402820b334d8242773462cc47ed397aa20c8f4d04f7ea18d810")
     add_versions("1.3.268+0", "94993cbe2b1a604c0d5d9ea37a767e1aba4d771d2bfd4ddceefd66243095164f")
     add_versions("1.3.268+0", "94993cbe2b1a604c0d5d9ea37a767e1aba4d771d2bfd4ddceefd66243095164f")
@@ -29,18 +31,35 @@ package("vulkan-headers")
     add_versions("1.2.162+0", "eb0f6a79ac38e137f55a0e13641140e63b765c8ec717a65bf3904614ef754365")
     add_versions("1.2.162+0", "eb0f6a79ac38e137f55a0e13641140e63b765c8ec717a65bf3904614ef754365")
     add_versions("1.2.154+0", "a0528ade4dd3bd826b960ba4ccabc62e92ecedc3c70331b291e0a7671b3520f9")
     add_versions("1.2.154+0", "a0528ade4dd3bd826b960ba4ccabc62e92ecedc3c70331b291e0a7671b3520f9")
 
 
-    add_deps("cmake")
-
-    if is_plat("mingw") and is_subhost("msys") then
-        add_extsources("pacman::vulkan-headers")
-    elseif is_plat("linux") then
-        add_extsources("apt::libvulkan-dev", "pacman::vulkan-headers")
-    elseif is_plat("macosx") then
-        add_extsources("brew::vulkan-headers")
-    end
+    on_load(function (package)
+        if not package:config("modules") then
+            package:add("deps", "cmake")
+            if package:is_plat("mingw") and is_subhost("msys") then
+                package:add("extsources", "pacman::vulkan-headers")
+            elseif package:is_plat("linux") then
+                package:add("extsources", "apt::libvulkan-dev")
+            elseif package:is_plat("macosx") then
+                package:add("extsources", "brew::vulkan-headers")
+            end
+        end
+    end)
 
 
     on_install(function (package)
     on_install(function (package)
-        import("package.tools.cmake").install(package)
+        if not package:config("modules") then
+            import("package.tools.cmake").install(package)
+        else
+            io.writefile("xmake.lua", [[ 
+                target("vulkan-headers")
+                    set_kind("static")
+                    set_languages("c++20")
+                    add_headerfiles("include/(**.h)")
+                    add_headerfiles("include/(**.hpp)")
+                    add_includedirs("include")
+                    add_files("include/**.cppm", {public = true})
+            ]])
+            local configs = {}
+            import("package.tools.xmake").install(package, configs)
+        end
     end)
     end)
 
 
     on_test(function (package)
     on_test(function (package)

+ 29 - 6
packages/v/vulkan-hpp/xmake.lua

@@ -19,11 +19,17 @@ package("vulkan-hpp")
     add_versions("v1.3.272", "e621db07719c0c1c738ad39ef400737a750bb23a")
     add_versions("v1.3.272", "e621db07719c0c1c738ad39ef400737a750bb23a")
     add_versions("v1.3.275", "1a24b015830c116632a0723f3ccfd1f06009ce12")
     add_versions("v1.3.275", "1a24b015830c116632a0723f3ccfd1f06009ce12")
 
 
-    add_deps("cmake")
+    add_configs("modules", {description = "Build with C++20 modules support.", default = false, type = "boolean"})
+
+    on_load(function (package)
+        if not package:config("modules") then
+            package:add("deps", "cmake")
+            if package:is_plat("linux") then
+                package:add("extsources", "pacman::vulkan-headers")
+            end
+        end
+    end)
 
 
-    if is_plat("linux") then
-        add_extsources("pacman::vulkan-headers")
-    end
 
 
     on_install("windows|x86", "windows|x64", "linux", "macosx", "mingw", "android", "iphoneos", function (package)
     on_install("windows|x86", "windows|x64", "linux", "macosx", "mingw", "android", "iphoneos", function (package)
         local arch_prev
         local arch_prev
@@ -46,8 +52,25 @@ package("vulkan-hpp")
             os.cp(path.join("**", "VulkanHppGenerator"), "build")
             os.cp(path.join("**", "VulkanHppGenerator"), "build")
         end
         end
         os.runv(path.join("build", "VulkanHppGenerator"))
         os.runv(path.join("build", "VulkanHppGenerator"))
-        os.cp("Vulkan-Headers/include", package:installdir())
-        os.cp("vulkan/*.hpp", package:installdir(path.join("include", "vulkan")))
+        if not package:config("modules") then
+            os.cp("Vulkan-Headers/include", package:installdir())
+            os.cp("vulkan/*.hpp", package:installdir(path.join("include", "vulkan")))
+        else
+            io.writefile("xmake.lua", [[ 
+                target("vulkan-hpp")
+                    set_kind("static")
+                    set_languages("c++20")
+                    add_headerfiles("Vulkan-Headers/include/(**.h)")
+                    add_headerfiles("Vulkan/(**.h)")
+                    add_headerfiles("Vulkan-Headers/include/(**.hpp)")
+                    add_headerfiles("Vulkan/(**.hpp)")
+                    add_includedirs("Vulkan")
+                    add_includedirs("Vulkan-Headers/include")
+                    add_files("Vulkan/vulkan.cppm", {public = true})
+            ]])
+            local configs = {}
+            import("package.tools.xmake").install(package, configs)
+        end
     end)
     end)
 
 
     on_test(function (package)
     on_test(function (package)