xmake.lua 3.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. package("moltenvk")
  2. set_homepage("https://github.com/KhronosGroup/MoltenVK")
  3. set_description("MoltenVK is a Vulkan Portability implementation.")
  4. set_license("Apache-2.0")
  5. add_urls("https://github.com/KhronosGroup/MoltenVK/archive/refs/tags/$(version).tar.gz",
  6. "https://github.com/KhronosGroup/MoltenVK.git")
  7. add_versions("v1.3.0", "9476033d49ef02776ebab288fffae3e28fd627a3e29b7ae5975a1e1c785bf912")
  8. add_versions("v1.2.11", "bfa115e283831e52d70ee5e13adf4d152de8f0045996cf2a33f0ac541be238b1")
  9. add_versions("v1.2.10", "3435d34ea2dafb043dd82ac5e9d2de7090462ab7cea6ad8bcc14d9c34ff99e9c")
  10. add_versions("v1.2.9", "f415a09385030c6510a936155ce211f617c31506db5fbc563e804345f1ecf56e")
  11. add_versions("v1.2.8", "85beaf8abfcc54d9da0ff0257ae311abd9e7aa96e53da37e1c37d6bc04ac83cd")
  12. add_versions("v1.2.7", "3166edcfdca886b4be1a24a3c140f11f9a9e8e49878ea999e3580dfbf9fe4bec")
  13. add_versions("v1.2.0", "6e7af2dad0530b2b404480dbe437ca4670c6615cc2ec6cf6a20ed04d9d75e0bd")
  14. add_versions("v1.1.5", "2cdcb8dbf2acdcd8cbe70b109dadc05a901038c84970afbe4863e5e23f33deae")
  15. add_versions("v1.1.4", "f9bba6d3bf3648e7685c247cb6d126d62508af614bc549cedd5859a7da64967e")
  16. add_versions("v1.1.0", "0538fa1c23ddae495c7f82ccd0db90790a90b7017a258ca7575fbae8021f3058")
  17. if is_plat("macosx") then
  18. add_extsources("brew::molten-vk")
  19. end
  20. add_links("MoltenVKShaderConverter", "MoltenVK")
  21. if is_plat("macosx", "iphoneos") then
  22. add_frameworks("Metal", "Foundation", "QuartzCore", "CoreGraphics", "IOSurface")
  23. if is_plat("macosx") then
  24. add_frameworks("IOKit", "AppKit")
  25. else
  26. add_frameworks("UIKit")
  27. end
  28. end
  29. on_fetch("macosx", function (package, opt)
  30. if opt.system then
  31. import("lib.detect.find_path")
  32. local frameworkdir = find_path("vulkan.framework", "~/VulkanSDK/*/macOS/Frameworks")
  33. if frameworkdir then
  34. return {frameworkdirs = frameworkdir, frameworks = "vulkan", rpathdirs = frameworkdir}
  35. end
  36. end
  37. end)
  38. on_install("macosx", "iphoneos", function (package)
  39. local plat = package:is_plat("iphoneos") and "iOS" or "macOS"
  40. local configs = {"--" .. plat:lower()}
  41. if package:debug() then
  42. table.insert(configs, "--debug")
  43. end
  44. os.vrunv("./fetchDependencies", configs)
  45. local conf = package:debug() and "Debug" or "Release"
  46. os.vrun("xcodebuild build -quiet -project MoltenVKPackaging.xcodeproj -scheme \"MoltenVK Package (" ..plat .. " only)\" -configuration \"" .. conf)
  47. os.mv("Package/" .. conf .. "/MoltenVK/include", package:installdir())
  48. os.mv("Package/" .. conf .. "/MoltenVK/dylib/" ..plat .. "/*", package:installdir("lib"))
  49. os.mv("Package/" .. conf .. "/MoltenVK/MoltenVK.xcframework/" .. plat:lower() .. "-*/*.a", package:installdir("lib"))
  50. if package:config("shared") then
  51. os.mv("Package/" .. conf .. "/MoltenVK/dynamic/dylib/" .. plat .. "/*.dylib", package:installdir("lib"))
  52. else
  53. os.mv("Package/" .. conf .. "/MoltenVK/static/MoltenVK.xcframework/" .. plat:lower() .. "-*/*.a", package:installdir("lib"))
  54. end
  55. os.mv("Package/" .. conf .. "/MoltenVKShaderConverter/Tools/*", package:installdir("bin"))
  56. os.mv("Package/" .. conf .. "/MoltenVKShaderConverter/MoltenVKShaderConverter.xcframework/" .. plat:lower() .. "-*/*.a", package:installdir("lib"))
  57. os.mv("Package/" .. conf .. "/MoltenVKShaderConverter/include/*.h", package:installdir("include"))
  58. package:addenv("PATH", "bin")
  59. end)
  60. on_test(function (package)
  61. assert(package:has_cfuncs("vkGetDeviceProcAddr", {includes = "vulkan/vulkan_core.h"}))
  62. end)