xmake.lua 3.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. package("microsoft-proxy")
  2. set_kind("library", {headeronly = true})
  3. set_homepage("https://github.com/microsoft/proxy")
  4. set_description("Proxy: Easy Polymorphism in C++")
  5. set_license("MIT")
  6. add_urls("https://github.com/microsoft/proxy/archive/refs/tags/$(version).tar.gz",
  7. "https://github.com/microsoft/proxy.git")
  8. add_versions("4.0.1", "78e1d88c36d2e7ee8f8dc47f112cdb96b8838dfd4177e104b53d9b64ed9b2357")
  9. add_versions("4.0.0", "b51f07f315a3cd7ecfbbaa86fa8fae2b9bc99c148c16f41cddd9c06dcb8eb58b")
  10. add_versions("3.4.0", "ca13bdc2b67a246a22ccda43690345daeb25bc3bb5c2c3ed1f6e4e466e9361aa")
  11. add_versions("3.3.0", "9a5e89e70082cbdd937e80f5113f4ceb47bf6361cf7b88cb52782906a1b655cc")
  12. add_versions("3.2.1", "83df61c6ef762df14b4f803a1dde76c6e96261ac7f821976478354c0cc2417a8")
  13. add_versions("3.2.0", "a828432a43a1e05c65176e58b48a6d6270669862adb437a069693f346275b5f0")
  14. add_versions("3.1.0", "c86ed7767ed3e90250632f2b5269c83225b0ae986314c58596d421b245f26cd1")
  15. add_versions("3.0.0", "7e073e217e5572bc4c17ed5893273c80ea34c87e1406c853beeb9ca9bdda9733")
  16. add_versions("2.4.0", "7eed973655938d681a90dcc0c200e6cc1330ea8611a9c1a9e1b30439514443cb")
  17. add_versions("2.3.0", "ff6f17c5360895776d29ce2b1235de7b42912468b52729810506431e352a78d0")
  18. add_versions("2.2.1", "096f0b2d793dffc54d41def2bca0ced594b6b8efe35ac5ae27db35802e742b96")
  19. add_versions("1.1.1", "6852b135f0bb6de4dc723f76724794cff4e3d0d5706d09d0b2a4f749f309055d")
  20. add_configs("cmake", {description = "Use cmake buildsystem", default = true, type = "boolean"})
  21. if on_check then
  22. on_check(function (package)
  23. if package:is_plat("windows") then
  24. if package:version() and package:version():ge("3.0.0") then
  25. import("core.base.semver")
  26. local vs_toolset = package:toolchain("msvc"):config("vs_toolset")
  27. assert(vs_toolset and semver.new(vs_toolset):minor() >= 30, "package(microsoft-proxy): need vs_toolset >= v143")
  28. end
  29. elseif package:is_plat("android") then
  30. local ndk = package:toolchain("ndk"):config("ndkver")
  31. assert(ndk and tonumber(ndk) > 22, "package(microsoft-proxy) require ndk version > 22")
  32. end
  33. assert(package:check_cxxsnippets({test = [[
  34. #include <format>
  35. void test(std::format_context& ctx) {}
  36. ]]}, {configs = {languages = "c++20"}}), "package(microsoft-proxy) Require at least C++20.")
  37. end)
  38. end
  39. on_load(function (package)
  40. if package:config("cmake") then
  41. package:add("deps", "cmake")
  42. end
  43. end)
  44. on_install(function (package)
  45. if package:config("cmake") then
  46. local configs = {"-DBUILD_TESTING=OFF"}
  47. table.insert(configs, "-DCMAKE_BUILD_TYPE=" .. (package:is_debug() and "Debug" or "Release"))
  48. import("package.tools.cmake").install(package, configs)
  49. else
  50. if package:version() and package:version():le("3.3.0") then
  51. os.vcp("proxy.h", package:installdir("include"))
  52. else
  53. -- version > 3.3.0, copy the entire 'repo/include' folder into 'include'
  54. -- for downstream cmake compability.
  55. os.vcp("include/*", package:installdir("include"))
  56. end
  57. end
  58. end)
  59. on_test(function (package)
  60. if package:version() and package:version():le("3.3.0") and not package:config("cmake") then
  61. assert(package:has_cxxincludes("proxy.h", {configs = {languages = "c++20"}}))
  62. else
  63. assert(package:has_cxxincludes("proxy/proxy.h", {configs = {languages = "c++20"}}))
  64. end
  65. end)