fetch.lua 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. import("lib.detect.find_tool")
  2. function main(package, opt)
  3. if not opt.system then
  4. return
  5. end
  6. local paths = {}
  7. if is_host("linux") then
  8. for _, ver in ipairs({"8", "11", "17", "21"}) do
  9. local dir = format("/usr/lib/jvm/java-%s-openjdk-amd64", ver)
  10. if os.isdir(dir) then
  11. table.insert(paths, dir)
  12. end
  13. end
  14. end
  15. opt.version = true
  16. opt.paths = table.join2(table.wrap(opt.paths), paths)
  17. local java = find_tool("java", opt)
  18. if not java then
  19. return
  20. end
  21. local result = {}
  22. result.version = java.version
  23. if package:is_binary() then
  24. return result
  25. end
  26. if is_host("windows") then
  27. local sdkdir = os.getenv("JAVA_HOME")
  28. if not os.isdir(sdkdir) then
  29. return
  30. end
  31. result.includedirs = {path.join(sdkdir, "include"), path.join(sdkdir, "include/win32")}
  32. result.linkdirs = path.join(sdkdir, "lib")
  33. result.links = {"jvm", "jawt"}
  34. result.bindirs = {path.join(sdkdir, "bin"), path.join(sdkdir, "bin/server")}
  35. package:addenv("PATH", result.bindirs)
  36. return result
  37. elseif is_host("linux") then
  38. local sdkdir = paths[1]
  39. if not sdkdir then
  40. return
  41. end
  42. result.includedirs = {path.join(sdkdir, "include"), path.join(sdkdir, "include/linux")}
  43. result.linkdirs = {path.join(sdkdir, "lib"), path.join(sdkdir, "lib/server")}
  44. result.links = {"java", "jli", "jvm"}
  45. result.bindirs = path.join(sdkdir, "bin")
  46. package:addenv("LD_LIBRARY_PATH", result.linkdirs)
  47. return result
  48. elseif is_host("macosx") then
  49. end
  50. end