xmake.lua 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. package("libxls")
  2. set_description("Read binary Excel files from C/C++.")
  3. set_license("BSD-2-Clause")
  4. add_urls("https://github.com/libxls/libxls/archive/refs/tags/$(version).tar.gz",
  5. "https://github.com/libxls/libxls.git")
  6. add_versions("v1.6.3", "587c9f0ebb5647eb68ec1e0ed8c3f7f6102622d6dd83473a21d3a36dee04eed7")
  7. if is_plat("wasm") then
  8. add_configs("shared", {description = "Build shared library.", default = false, type = "boolean", readonly = true})
  9. end
  10. add_deps("libiconv")
  11. on_install("!windows", function (package)
  12. io.writefile("xmake.lua", ([[
  13. add_rules("mode.debug", "mode.release")
  14. add_requires("libiconv")
  15. target("xlsreader")
  16. set_kind("$(kind)")
  17. set_languages("gnu99")
  18. add_files("src/**.c")
  19. remove_files("src/xls2csv.c")
  20. add_includedirs("include")
  21. add_headerfiles("include/(**.h)")
  22. add_packages("libiconv")
  23. add_defines("HAVE_ICONV")
  24. on_config(function(target)
  25. if target:has_cincludes("xlocale.h") then
  26. target:add("defines", "HAVE_XLOCALE_H", {public = true})
  27. end
  28. if target:has_cfuncs("wcstombs_l") then
  29. target:add("defines", "HAVE_WCSTOMBS_L", {public = true})
  30. end
  31. end)
  32. add_cflags("-pedantic-errors")
  33. if is_plat("mingw", "cygwin") then
  34. add_ldflags("-no-undefined")
  35. end
  36. if is_plat("mingw") then
  37. add_cflags("-D_spawnv=spawnv")
  38. end
  39. add_defines("ICONV_CONST=")
  40. add_defines("PACKAGE_VERSION=\"%s\"")
  41. ]]):format(package:version_str():sub(2)))
  42. for _, path in ipairs(os.files("src/**.c")) do
  43. io.replace(path, [[#include "config.h"]], "", {plain = true})
  44. end
  45. import("package.tools.xmake").install(package)
  46. end)
  47. on_test(function (package)
  48. assert(package:has_cfuncs("xls_open_file", {includes = "xls.h"}))
  49. end)