xmake.lua 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. package("ndk")
  2. set_kind("toolchain")
  3. set_homepage("https://developer.android.com/ndk")
  4. set_description("Android NDK toolchain.")
  5. if is_host("windows") then
  6. local versions = {["21"] = "r21e-windows-x86_64", ["22"] = "r22-windows-x86_64", ["26"] = "r26b-windows"}
  7. set_urls("https://dl.google.com/android/repository/android-ndk-$(version).zip", {version = function (version)
  8. return versions[tostring(version:major())]
  9. end})
  10. add_versions("21.0", "f71307c5c572e2c163d602b3704b8bc024bec0c43ba2800de36bd10f3a21492b")
  11. add_versions("22.0", "5a0eafa83c8bba3c76e8427aa3d83d169215f62963a277b1914a3651aa47f751")
  12. add_versions("26.0", "a478d43d4a45d0d345cda6be50d79642b92fb175868d9dc0dfc86181d80f691e")
  13. elseif is_host("linux") then
  14. local versions = {["21"] = "r21e-linux-x86_64", ["22"] = "r22-linux-x86_64", ["26"] = "r26b-linux"}
  15. set_urls("https://dl.google.com/android/repository/android-ndk-$(version).zip", {version = function (version)
  16. return versions[tostring(version:major())]
  17. end})
  18. add_versions("21.0", "ad7ce5467e18d40050dc51b8e7affc3e635c85bd8c59be62de32352328ed467e")
  19. add_versions("22.0", "d37fc69cd81e5660234a686e20adef39bc0244086e4d66525a40af771c020718")
  20. add_versions("26.0", "ad73c0370f0b0a87d1671ed2fd5a9ac9acfd1eb5c43a7fbfbd330f85d19dd632")
  21. elseif is_host("macosx") then
  22. local versions = {["21"] = "r21e-darwin-x86_64", ["22"] = "r22-darwin-x86_64", ["26"] = "r26b-darwin"}
  23. set_urls("https://dl.google.com/android/repository/android-ndk-$(version).zip", {version = function (version)
  24. return versions[tostring(version:major())]
  25. end})
  26. add_versions("21.0", "437278103a3db12632c05b1be5c41bbb8522791a67e415cc54411a65366f499d")
  27. add_versions("22.0", "14fce4dea7fb3facbc0e3d20270007bffec3ba383aec02e8b0e0dad8d8782892")
  28. add_versions("26.0", "4b0ea6148a9a2337e62a0c0c7ac59ff1edc38d69b81d9c58251897d23f7fa321")
  29. end
  30. on_fetch(function (package, opt)
  31. if opt.system then
  32. import("core.base.semver")
  33. import("detect.sdks.find_ndk")
  34. local ndk = find_ndk()
  35. if ndk and ndk.ndkver and semver.satisfies(ndk.ndkver .. ".0", opt.require_version) then
  36. return true
  37. end
  38. end
  39. end)
  40. on_install("@windows", "@msys", "@linux", "@macosx", function (package)
  41. os.vcp("*", package:installdir())
  42. end)
  43. on_test(function (package)
  44. local host = os.host()
  45. if host == "macosx" then
  46. host = "darwin"
  47. end
  48. os.vrunv(path.join(package:installdir(), "toolchains/llvm/prebuilt", host .. "-x86_64", "bin/clang"), {"--version"})
  49. end)