xmake.lua 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. add_rules("mode.debug", "mode.release")
  2. add_requires("libiconv")
  3. -- add options
  4. option("symbologies", {description = "Select symbologies to compile"})
  5. option("vers", {description = "Set the version"})
  6. option("LIB_VERSION", {description = "Set the library version"})
  7. set_version("$(vers)")
  8. if has_config("LIB_VERSION") then
  9. local lib_vers = get_config("LIB_VERSION")
  10. local cur = lib_vers:match("([^:]+)")
  11. local age = lib_vers:match(".*:(.*)$")
  12. local major = tonumber(cur) - tonumber(age)
  13. local minor = tonumber(age)
  14. local revision = lib_vers:match("^[^:]*:([^:]*):.*$")
  15. set_configvar("LIB_VERSION_MAJOR", major, {quote = false})
  16. set_configvar("LIB_VERSION_MINOR", minor, {quote = false})
  17. set_configvar("LIB_VERSION_REVISION", revision, {quote = false})
  18. end
  19. set_configvar("PACKAGE", "zbar")
  20. set_configvar("PACKAGE_NAME", "zbar")
  21. set_configvar("PACKAGE_TARNAME", "zbar")
  22. set_configvar("PACKAGE_BUGREPORT", "[email protected]")
  23. set_configvar("PACKAGE_URL", "")
  24. includes("@builtin/check")
  25. -- config.h variables
  26. configvar_check_cincludes("HAVE_SYS_TIME_H", "sys/time.h")
  27. configvar_check_cincludes("HAVE_INTTYPES_H", "inttypes.h")
  28. target("zbar")
  29. set_kind("$(kind)")
  30. if is_plat("linux", "bsd") then
  31. add_syslinks("pthread")
  32. elseif is_plat("windows") then
  33. add_syslinks("winmm")
  34. if is_kind("shared") then
  35. add_rules("utils.symbols.export_all")
  36. end
  37. end
  38. add_packages("libiconv")
  39. add_includedirs("include")
  40. add_includedirs("zbar")
  41. add_headerfiles("include/zbar.h")
  42. add_headerfiles("include/zbar/Scanner.h", "include/zbar/Decoder.h",
  43. "include/zbar/Exception.h", "include/zbar/Symbol.h", "include/zbar/Image.h",
  44. "include/zbar/ImageScanner.h", "include/zbar/Video.h", "include/zbar/Window.h",
  45. "include/zbar/Processor.h", {prefixdir = "zbar"})
  46. set_configdir("include")
  47. add_configfiles("include/(config.h.in)", {filename = "config.h"})
  48. add_files(
  49. "zbar/config.c",
  50. "zbar/error.c",
  51. "zbar/symbol.c",
  52. "zbar/image.c",
  53. "zbar/convert.c",
  54. "zbar/refcnt.c",
  55. "zbar/window.c",
  56. "zbar/video.c",
  57. "zbar/img_scanner.c",
  58. "zbar/scanner.c",
  59. "zbar/decoder.c",
  60. "zbar/misc.c",
  61. "zbar/sqcode.c")
  62. local symbologies = {{name = "ean", files = {"zbar/decoder/ean.c"}},
  63. {name = "databar", files = {"zbar/decoder/databar.c"}},
  64. {name = "code128", files = {"zbar/decoder/code128.c"}},
  65. {name = "code93", files = {"zbar/decoder/code93.c"}},
  66. {name = "code39", files = {"zbar/decoder/code39.c"}},
  67. {name = "codabar", files = {"zbar/decoder/codabar.c"}},
  68. {name = "i25", files = {"zbar/decoder/i25.c"}},
  69. {name = "qrcode", files = {"zbar/decoder/qr_finder.c", "zbar/qrcode/*.c"}},
  70. {name = "sqcode", files = {"zbar/decoder/sq_finder.c"}},
  71. {name = "pdf417", files = {"zbar/decoder/pdf417.c"}}}
  72. local enabled_symbologies = get_config("symbologies")
  73. if enabled_symbologies then
  74. for _, symbology in ipairs(symbologies) do
  75. if enabled_symbologies:find(symbology.name) or enabled_symbologies:find("all") then
  76. add_files(symbology.files)
  77. set_configvar("ENABLE_" .. symbology.name:upper(), 1)
  78. end
  79. end
  80. end
  81. -- "null" implementation for window module and video module
  82. add_files("zbar/window/null.c", "zbar/video/null.c", "zbar/processor/null.c")
  83. if is_plat("windows", "mingw") then
  84. add_files("zbar/libzbar.rc")
  85. end