Răsfoiți Sursa

add dlslang and spirv (#154)

ruki 4 ani în urmă
părinte
comite
27e5559ab6

+ 37 - 0
packages/g/glslang/xmake.lua

@@ -0,0 +1,37 @@
+package("glslang")
+
+    set_homepage("https://github.com/KhronosGroup/glslang/")
+    set_description("Khronos-reference front end for GLSL/ESSL, partial front end for HLSL, and a SPIR-V generator.")
+    set_license("Apache-2.0")
+
+    add_urls("https://github.com/KhronosGroup/glslang.git")
+    add_versions("1.2.154+1", "bacaef3237c515e40d1a24722be48c0a0b30f75f")
+
+    add_deps("cmake", "spirv-tools", "python 3.x")
+
+    on_install("linux", "windows", "macosx", function (package)
+        package:addenv("PATH", "bin")
+        io.replace("CMakeLists.txt", "ENABLE_OPT OFF", "ENABLE_OPT ON")
+        io.replace("StandAlone/CMakeLists.txt", "target_link_libraries(glslangValidator ${LIBRARIES})", [[
+            target_link_libraries(glslangValidator ${LIBRARIES} SPIRV-Tools-opt SPIRV-Tools-link SPIRV-Tools-reduce SPIRV-Tools)
+        ]], {plain = true})
+        io.replace("SPIRV/CMakeLists.txt", "target_link_libraries(SPIRV PRIVATE MachineIndependent SPIRV-Tools-opt)", [[
+            target_link_libraries(SPIRV PRIVATE MachineIndependent SPIRV-Tools-opt SPIRV-Tools-link SPIRV-Tools-reduce SPIRV-Tools)
+        ]], {plain = true})
+        local configs = {"-DENABLE_CTEST=OFF", "-DBUILD_EXTERNAL=OFF"}
+        table.insert(configs, "-DCMAKE_BUILD_TYPE=" .. (package:debug() and "Debug" or "Release"))
+        if package:is_plat("windows") then
+            table.insert(configs, "-DBUILD_SHARED_LIBS=OFF")
+        else
+            table.insert(configs, "-DBUILD_SHARED_LIBS=" .. (package:config("shared") and "ON" or "OFF"))
+        end
+        import("package.tools.cmake").install(package, configs, {packagedeps = {"spirv-tools"}})
+        package:add("links", "glslang", "MachineIndependent", "GenericCodeGen", "OGLCompiler", "OSDependent", "HLSL", "SPIRV", "SPVRemapper")
+    end)
+
+    on_test(function (package)
+        os.vrun("glslangValidator --version")
+        assert(package:has_cxxfuncs("ShInitialize", {configs = {languages = "c++11"}, includes = "glslang/Public/ShaderLang.h"}))
+    end)
+
+

+ 4 - 0
packages/p/python/xmake.lua

@@ -35,6 +35,10 @@ package("python")
         set_kind("binary")
     end
 
+    if not is_plat(os.host()) or not is_arch(os.arch()) then
+        set_kind("binary")
+    end
+
     if is_host("macosx", "linux") then
         add_deps("openssl", {host = true})
     end

+ 22 - 0
packages/s/spirv-headers/xmake.lua

@@ -0,0 +1,22 @@
+package("spirv-headers")
+
+    set_homepage("https://github.com/KhronosGroup/SPIRV-Headers/")
+    set_description("SPIR-V Headers")
+    set_license("MIT")
+
+    add_urls("https://github.com/KhronosGroup/SPIRV-Headers/archive/$(version).tar.gz")
+    add_versions("1.5.4", "fc026b6566167f6db03dc48779f0f986f9ff8c93ed651a557f28cfbe2dff4ede")
+
+    add_deps("cmake")
+
+    on_install("linux", "windows", "macosx", function (package)
+        import("package.tools.cmake").install(package, {"-DSPIRV_HEADERS_SKIP_EXAMPLES=ON"})
+    end)
+
+    on_test(function (package)
+        assert(package:check_csnippets({test = [[
+            void test() {
+                int version = SPV_VERSION;
+            }
+        ]]}, {includes = "spirv/unified1/spirv.h"}))
+    end)

+ 34 - 0
packages/s/spirv-tools/xmake.lua

@@ -0,0 +1,34 @@
+package("spirv-tools")
+
+    set_homepage("https://github.com/KhronosGroup/SPIRV-Tools/")
+    set_description("SPIR-V Tools")
+    set_license("Apache-2.0")
+
+    add_urls("https://github.com/KhronosGroup/SPIRV-Tools/archive/v$(version).tar.gz")
+    add_versions("2020.5", "947ee994ba416380bd7ccc1c6377ac28a4802a55ca81ccc06796c28e84c00b71")
+
+    add_patches("2020.5", "https://github.com/KhronosGroup/SPIRV-Tools/commit/a1d38174b1f7d2651c718ae661886d606cb50a32.patch", "2811faeef3ad53a83e409c8ef9879badcf9dc04fc3d98dbead7313514b819933")
+
+    add_deps("cmake", "spirv-headers", "python 3.x")
+
+    on_install("linux", "windows", "macosx", function (package)
+        package:addenv("PATH", "bin")
+        local configs = {"-DSPIRV_SKIP_TESTS=ON"}
+        table.insert(configs, "-DCMAKE_BUILD_TYPE=" .. (package:debug() and "Debug" or "Release"))
+        table.insert(configs, "-DBUILD_SHARED_LIBS=" .. (package:config("shared") and "ON" or "OFF"))
+        local spirv = package:dep("spirv-headers")
+        table.insert(configs, "-DSPIRV-Headers_SOURCE_DIR=" .. spirv:installdir():gsub("\\", "/"))
+        import("package.tools.cmake").install(package, configs)
+        package:add("links", "SPIRV-Tools-link", "SPIRV-Tools-reduce", "SPIRV-Tools-opt")
+        if package:config("shared") then
+            package:add("links", "SPIRV-Tools-shared")
+        else
+            package:add("links", "SPIRV-Tools")
+        end
+    end)
+
+    on_test(function (package)
+        os.runv("spirv-as --help")
+        os.runv("spirv-opt --help")
+        assert(package:has_cxxfuncs("spvContextCreate", {configs = {languages = "c++11"}, includes = "spirv-tools/libspirv.hpp"}))
+    end)