xmake.lua 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. package("libpcsclite")
  2. set_homepage("https://pcsclite.apdu.fr/")
  3. set_description("Middleware to access a smart card using SCard API (PC/SC).")
  4. add_urls("https://github.com/LudovicRousseau/PCSC/archive/refs/tags/$(version).tar.gz",
  5. "https://github.com/LudovicRousseau/PCSC.git")
  6. add_versions("2.3.3", "00b667aa71504ed1d39a48ad377de048c70dbe47229e8c48a3239ab62979c70f")
  7. add_configs("embedded", {description = "For embedded systems [limit RAM and CPU resources by disabling features (log)].", default = false, type = "boolean"})
  8. add_deps("meson", "ninja")
  9. add_includedirs("include/PCSC")
  10. on_install("linux", "bsd", "cross", function (package)
  11. io.replace("meson.build", "executable%s*%b()", "")
  12. io.replace("meson.build", "library%('pcscspy'.-%)", "")
  13. io.replace("meson.build", "run_command%('pod2man'.-%)", "")
  14. io.replace("meson.build", [[install_data('pcsc-spy.1',
  15. install_dir : join_paths(get_option('mandir'), 'man1'))]], "", {plain = true})
  16. io.replace("meson.build", [[gen_flex = generator(find_program('flex'),
  17. output : '@[email protected]',
  18. arguments : ['-o', '@OUTPUT@', '--prefix=@BASENAME@', '@INPUT@'])]], "", {plain = true})
  19. io.replace("meson.build", [[gen_src = gen_flex.process('src/configfile.l', 'src/tokenparser.l')
  20. pcscd_src += gen_src]], "", {plain = true})
  21. io.replace("meson.build", "doxygen.found()", "false", {plain = true})
  22. local configs = {
  23. '-Dlibsystemd=false',
  24. '-Dlibudev=false',
  25. '-Dpolkit=false'
  26. }
  27. table.insert(configs, "-Ddefault_library=" .. (package:config("shared") and "shared" or "static"))
  28. table.insert(configs, "-Dembedded=" .. (package:config("embedded") and "true" or "false"))
  29. import("package.tools.meson").install(package, configs)
  30. end)
  31. on_test(function (package)
  32. assert(package:check_csnippets({test = [[
  33. void test() {
  34. SCARDCONTEXT hSC;
  35. SCardEstablishContext(SCARD_SCOPE_USER, 0, 0, &hSC);
  36. }
  37. ]]}, {configs = {languages = "c99"}, includes = "winscard.h"}))
  38. end)