xmake.lua 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. package("secilc")
  2. set_kind("binary")
  3. set_homepage("https://github.com/SELinuxProject/selinux")
  4. set_description("SELinux Common Intermediate Language Compiler")
  5. add_urls("https://github.com/SELinuxProject/selinux/releases/download/$(version)/secilc-$(version).tar.gz")
  6. add_versions("3.9", "c53fb7218ac158c05f28de186e48404857eb191bd4f9415802f85449fdf6da7f")
  7. on_load(function (package)
  8. package:add("deps", "libsepol >=" .. package:version_str())
  9. end)
  10. on_install("linux", function (package)
  11. import("package.tools.make")
  12. local configs = {"PREFIX="}
  13. table.insert(configs, "DEBUG=" .. (package:is_debug() and "1" or "0"))
  14. table.insert(configs, "DESTDIR=" .. package:installdir())
  15. local envs = make.buildenvs(package)
  16. local cflags = {}
  17. local ldflags = {}
  18. for _, dep in ipairs(package:orderdeps()) do
  19. local fetchinfo = dep:fetch()
  20. if fetchinfo then
  21. for _, includedir in ipairs(fetchinfo.includedirs or fetchinfo.sysincludedirs) do
  22. table.insert(cflags, "-I" .. includedir)
  23. end
  24. for _, linkdir in ipairs(fetchinfo.linkdirs) do
  25. table.insert(ldflags, "-L" .. linkdir)
  26. end
  27. end
  28. end
  29. envs.CFLAGS = envs.CFLAGS .. " " .. table.concat(cflags, " ")
  30. envs.LDFLAGS = envs.LDFLAGS .. " " .. table.concat(ldflags, " ")
  31. io.replace("Makefile", "$(SECIL2TREE) man", "$(SECIL2TREE)", {plain = true})
  32. io.replace("Makefile", "install: all man", "install: all", {plain = true})
  33. io.replace("Makefile", "-mkdir -p $(DESTDIR)$(MANDIR)/man8", "", {plain = true})
  34. io.replace("Makefile", [[ install -m 644 $(SECILC_MANPAGE) $(DESTDIR)$(MANDIR)/man8
  35. install -m 644 $(SECIL2CONF_MANPAGE) $(DESTDIR)$(MANDIR)/man8
  36. install -m 644 $(SECIL2TREE_MANPAGE) $(DESTDIR)$(MANDIR)/man8]], "", {plain = true})
  37. make.build(package, configs, {envs = envs})
  38. table.insert(configs, "install")
  39. make.make(package, configs, {envs = envs})
  40. end)
  41. on_test(function (package)
  42. assert(os.isexec(package:installdir("bin/secilc")), "secilc executable not found!")
  43. end)