xmake.lua 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. option("ver", {default = "2.1.0"})
  2. add_rules("mode.debug", "mode.release")
  3. local export_file = "miniz_export.h"
  4. target("miniz")
  5. set_kind("$(kind)")
  6. add_files("miniz.c", "miniz_zip.c", "miniz_tinfl.c", "miniz_tdef.c")
  7. add_headerfiles("miniz.h", "miniz_common.h", "miniz_zip.h", "miniz_tinfl.h", "miniz_tdef.h", {prefixdir = "miniz"})
  8. on_load(function (target)
  9. import("core.base.semver")
  10. import("core.project.rule")
  11. local version = import("core.base.semver").new(get_config("ver"))
  12. target:set("version", version, {soname = true})
  13. if version:lt("2.2.0") then
  14. if target:is_plat("windows") and target:is_shared() then
  15. local rule = rule.rule("utils.symbols.export_all")
  16. target:rule_add(rule)
  17. target:extraconf_set("rules", "utils.symbols.export_all")
  18. end
  19. else
  20. local string = "#define MINIZ_EXPORT"
  21. if target:is_plat("windows") and target:is_shared() then
  22. string = string .. " __declspec(dllexport)"
  23. end
  24. io.writefile(export_file, string)
  25. target:add("headerfiles", export_file, {prefixdir = "miniz"})
  26. end
  27. end)
  28. after_build(function (target)
  29. if target:is_plat("windows") then
  30. if target:is_shared() then
  31. io.writefile(export_file, "#define MINIZ_EXPORT __declspec(dllimport)")
  32. elseif target:is_static() then
  33. io.writefile(export_file, "#define MINIZ_EXPORT")
  34. end
  35. end
  36. end)