xmake.lua 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. package("openjdk")
  2. set_kind("binary")
  3. set_homepage("https://jdk.java.net")
  4. set_description("Java Development Kit builds, from Oracle")
  5. set_license("GPL-2.0")
  6. -- https://learn.microsoft.com/en-us/java/openjdk/download
  7. if is_host("windows") then
  8. if is_arch("x64", "x86_64") or os.arch() == "x64" then
  9. add_urls("https://aka.ms/download-jdk/microsoft-jdk-$(version)-windows-x64.zip")
  10. add_versions("21.0.5", "12e42c2c572a111f38e2a9e044afc50dbdac850349a4d4bb26808ed33119a9cd")
  11. elseif os.arch() == "arm64" then
  12. add_urls("https://aka.ms/download-jdk/microsoft-jdk-$(version)-windows-aarch64.zip")
  13. add_versions("21.0.5", "5eaa375659c543a5d3310d51004e3bdc290ff9e48e9bcd29187dfafeca97c2a4")
  14. end
  15. elseif is_host("linux") then
  16. if os.arch() == "x86_64" then
  17. add_urls("https://aka.ms/download-jdk/microsoft-jdk-$(version)-linux-x64.tar.gz")
  18. add_versions("21.0.5", "0d42a80dbc92f2f112e6db3b4b9bd278c0776a73b6050812e720230813487ebd")
  19. elseif os.arch() == "arm64" then
  20. add_urls("https://aka.ms/download-jdk/microsoft-jdk-$(version)-linux-aarch64.tar.gz")
  21. add_versions("21.0.5", "356844fe544085b00cd73935e0c7a4c534f286799728fa6d6e996d1cb8b1a682")
  22. end
  23. elseif is_host("macosx") then
  24. if os.arch() == "x86_64" then
  25. add_urls("https://aka.ms/download-jdk/microsoft-jdk-$(version)-macos-x64.tar.gz")
  26. add_versions("21.0.5", "3e2317348141b28203fac39eaa60c14a1b3f1fdb9cfdbcb793eaa4dd5828da6e")
  27. elseif os.arch() == "arm64" then
  28. add_urls("https://aka.ms/download-jdk/microsoft-jdk-$(version)-macos-aarch64.tar.gz")
  29. add_versions("21.0.5", "78aa915475b426c03059cc51e9c12596a5138457bd7ebb9b90daad119551662d")
  30. end
  31. end
  32. add_configs("shared", {description = "Download shared binaries.", default = true, type = "boolean", readonly = true})
  33. add_configs("debug", {description = "Enable debug symbols.", default = false, type = "boolean", readonly = true})
  34. if is_plat("windows") then
  35. add_configs("runtimes", {description = "Set compiler runtimes.", default = "MD", readonly = true})
  36. end
  37. if is_plat("linux") then
  38. add_extsources("pacman::jdk-openjdk", "apt::default-jdk")
  39. elseif is_plat("macosx") then
  40. add_extsources("brew::openjdk")
  41. end
  42. if is_plat("linux") then
  43. add_deps("alsa-lib", {configs = {shared = true, versioned = false}})
  44. add_deps("freetype", "libxtst", "libxi", "libxrender")
  45. end
  46. set_policy("package.precompiled", false)
  47. on_fetch("fetch")
  48. if on_check then
  49. on_check(function (package)
  50. if not package:is_arch64() then
  51. raise("package(openjdk) unsupported 32-bit arch")
  52. end
  53. end)
  54. end
  55. on_install("windows|!x86", "msys|x86_64", "linux", "macosx", function (package)
  56. local plat
  57. if package:is_plat("windows", "mingw") then
  58. plat = "win32"
  59. package:add("bindirs", "bin/server")
  60. else
  61. package:add("linkdirs", "lib", "lib/server")
  62. if package:is_plat("linux") then
  63. plat = "linux"
  64. elseif package:is_plat("macosx") then
  65. plat = "darwin"
  66. os.cd("Contents/Home")
  67. end
  68. end
  69. os.cp("bin", package:installdir())
  70. os.cp("include", package:installdir())
  71. os.cp("lib", package:installdir())
  72. os.cp("jmods", package:installdir("lib"))
  73. os.cp("conf", package:installdir())
  74. package:add("includedirs", "include", path.join("include", plat))
  75. package:add("bindirs", "bin")
  76. end)
  77. on_test(function (package)
  78. if not package:is_cross() then
  79. os.vrun("java -version")
  80. end
  81. if package:is_library() then
  82. assert(package:has_cfuncs("JNI_CreateJavaVM", {includes = "jni.h"}))
  83. end
  84. end)