xmake.lua 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. package("libsemanage")
  2. set_homepage("https://github.com/SELinuxProject/selinux")
  3. set_description("SELinux binary policy manipulation library.")
  4. set_license("LGPL-2.1")
  5. add_urls("https://github.com/SELinuxProject/selinux/releases/download/$(version)/libsemanage-$(version).tar.gz")
  6. add_versions("3.9", "ec05850aef48bfb8e02135a7f4f3f7edba3670f63d5e67f2708d4bd80b9a4634")
  7. add_configs("utils", {description = "Build utilities.", default = true, type = "boolean"})
  8. add_deps("flex", "bison", "bzip2", "audit")
  9. on_load(function (package)
  10. package:add("deps", "libselinux >=" .. package:version_str())
  11. end)
  12. on_install("linux", function (package)
  13. import("package.tools.make")
  14. local configs = {"PREFIX="}
  15. table.insert(configs, "DEBUG=" .. (package:is_debug() and "1" or "0"))
  16. table.insert(configs, "DESTDIR=" .. package:installdir())
  17. table.insert(configs, "DISABLE_SHARED=" .. (package:config("shared") and "n" or "y"))
  18. if package:config("shared") then
  19. io.replace("src/Makefile", "all: $(LIBA)", "all:", {plain = true})
  20. io.replace("src/Makefile", "install -m 644 $(LIBA) $(DESTDIR)$(LIBDIR)", "", {plain = true})
  21. end
  22. if not package:config("utils") then
  23. io.replace("Makefile", "$(MAKE) -C utils install", "", {plain = true})
  24. end
  25. io.replace("Makefile", "$(MAKE) -C man install", "", {plain = true})
  26. -- fix pkg-config
  27. io.replace("src/Makefile", "s:@prefix@:$(PREFIX):; s:@libdir@:$(LIBDIR):; s:@includedir@:$(INCLUDEDIR):", "s:@prefix@:$(DESTDIR):; s:@libdir@:$(DESTDIR)$(LIBDIR):; s:@includedir@:$(DESTDIR)$(INCLUDEDIR):", {plain = true})
  28. local envs = make.buildenvs(package)
  29. local cflags = {}
  30. local ldflags = {}
  31. for _, dep in ipairs(package:orderdeps()) do
  32. local fetchinfo = dep:fetch()
  33. if fetchinfo then
  34. for _, includedir in ipairs(fetchinfo.includedirs or fetchinfo.sysincludedirs) do
  35. table.insert(cflags, "-I" .. includedir)
  36. end
  37. for _, linkdir in ipairs(fetchinfo.linkdirs) do
  38. table.insert(ldflags, "-L" .. linkdir)
  39. end
  40. end
  41. end
  42. if package:config("pic") then
  43. table.insert(cflags, "-fPIC")
  44. end
  45. local links_missing_in_cascading = ""
  46. if package:dep("audit"):config("libcap_ng") then
  47. links_missing_in_cascading = links_missing_in_cascading .. " -lcap-ng"
  48. end
  49. if package:dep("libselinux"):config("pcre2") then
  50. links_missing_in_cascading = links_missing_in_cascading .. " -lpcre2-8"
  51. end
  52. io.replace("src/Makefile", "-lselinux", "-lselinux" .. links_missing_in_cascading, {plain = true})
  53. envs.CFLAGS = envs.CFLAGS .. " " .. table.concat(cflags, " ")
  54. envs.LDFLAGS = envs.LDFLAGS .. " " .. table.concat(ldflags, " ")
  55. make.build(package, configs, {envs = envs})
  56. table.insert(configs, "install")
  57. make.make(package, configs, {envs = envs})
  58. end)
  59. on_test(function (package)
  60. assert(package:has_cfuncs("semanage_module_install", {includes = {"semanage/modules.h"}}))
  61. end)