xmake.lua 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. set_project("libmetalink")
  2. option("version", {showmenu = true, default = "0.1.3"})
  3. set_version(get_config("version"))
  4. add_rules("mode.debug", "mode.release")
  5. add_requires("expat")
  6. add_packages("expat")
  7. includes("@builtin/check")
  8. configvar_check_cfuncs("HAVE_MALLOC_H", "malloc", {includes = "malloc.h"})
  9. configvar_check_cincludes("HAVE_INTTYPES_H", "inttypes.h")
  10. configvar_check_cincludes("HAVE_ALLOCA_H", "alloca.h")
  11. configvar_check_cincludes("HAVE_TIME64_H", "time64.h")
  12. target("metalink")
  13. set_kind("$(kind)")
  14. add_files("lib/metalink_*.c", "lib/libexpat_metalink_parser.c")
  15. add_includedirs("lib/includes")
  16. add_headerfiles("lib/includes/(**.h)")
  17. add_defines("HAVE_CONFIG_H")
  18. add_includedirs(os.projectdir())
  19. set_configdir(os.projectdir())
  20. add_configfiles("config.h.in")
  21. add_configfiles("lib/includes/metalink/metalinkver.h.in", {prefixdir = "metalink", pattern = "@(.-)@"})
  22. add_headerfiles("(metalink/metalinkver.h)")
  23. if is_plat("windows") then
  24. add_defines("strncasecmp=_strnicmp")
  25. add_defines("tzname=_tzname")
  26. if is_kind("shared") then
  27. add_rules("utils.symbols.export_all")
  28. end
  29. end
  30. on_config(function (target)
  31. import("core.base.semver")
  32. local version = get_config("version")
  33. if version then
  34. version = semver.new(version)
  35. local major = version:major()
  36. local minor = version:minor()
  37. local patch = version:patch()
  38. target:set("configvar", "MAJOR_VERSION", major)
  39. target:set("configvar", "MINOR_VERSION", minor)
  40. target:set("configvar", "PATCH_VERSION", patch)
  41. target:set("configvar", "PACKAGE_VERSION", get_config("version"))
  42. target:set("configvar", "NUMBER_VERSION", format("0x%02x%02x%02x", tonumber(major), tonumber(minor), tonumber(patch)))
  43. end
  44. if target:has_cfuncs("timegm", {includes = "time.h"}) then
  45. target:add("defines", "HAVE_TIMEGM")
  46. else
  47. target:add("files", path.join(os.projectdir(), "lib/timegm.c"))
  48. end
  49. if target:has_cfuncs("strptime", {includes = "time.h"}) then
  50. target:add("defines", "HAVE_STRPTIME")
  51. else
  52. target:add("files", path.join(os.projectdir(), "lib/strptime.c"))
  53. end
  54. end)