xmake.lua 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. includes("@builtin/check")
  2. add_rules("mode.release", "mode.debug")
  3. option("version", {description = "The ninja version."})
  4. set_version("$(version)")
  5. set_languages("c++14")
  6. check_cfuncs("USE_PPOLL=1", "ppoll", {includes = "poll.h"})
  7. target("libninja")
  8. set_kind("$(kind)")
  9. set_basename("ninja")
  10. add_files("src/build_log.cc")
  11. add_files("src/build.cc")
  12. add_files("src/clean.cc")
  13. add_files("src/clparser.cc")
  14. add_files("src/debug_flags.cc")
  15. add_files("src/deps_log.cc")
  16. add_files("src/disk_interface.cc")
  17. add_files("src/edit_distance.cc")
  18. add_files("src/eval_env.cc")
  19. add_files("src/graph.cc")
  20. add_files("src/graphviz.cc")
  21. add_files("src/line_printer.cc")
  22. add_files("src/manifest_parser.cc")
  23. add_files("src/metrics.cc")
  24. add_files("src/state.cc")
  25. add_files("src/string_piece_util.cc")
  26. add_files("src/util.cc")
  27. add_files("src/version.cc")
  28. add_files("src/depfile_parser.cc", "src/lexer.cc")
  29. if is_plat("windows") then
  30. add_files("src/subprocess-win32.cc")
  31. add_files("src/includes_normalize-win32.cc")
  32. add_files("src/msvc_helper-win32.cc")
  33. add_files("src/msvc_helper_main-win32.cc")
  34. add_files("src/getopt.c", {sourcekind = "cxx"})
  35. add_files("src/minidump-win32.cc")
  36. add_defines("NOMINMAX")
  37. else
  38. add_files("src/subprocess-posix.cc")
  39. end
  40. if is_plat("mingw") then
  41. add_defines("_WIN32_WINNT=0x0601", "__USE_MINGW_ANSI_STDIO=1")
  42. end
  43. on_load(function (target)
  44. import("core.base.semver")
  45. local version = semver.new(target:version())
  46. if version:ge("1.13.1") then
  47. target:add("files", "src/elide_middle.cc")
  48. target:add("files", "src/jobserver.cc")
  49. target:add("files", "src/real_command_runner.cc")
  50. target:add("files", "src/status_printer.cc")
  51. if target:is_plat("windows") then
  52. target:add("files", "src/jobserver-win32.cc")
  53. else
  54. target:add("files", "src/jobserver-posix.cc")
  55. end
  56. end
  57. if version:ge("1.11.0") then
  58. if version:lt("1.13.1") then
  59. target:add("files", "src/status.cc")
  60. end
  61. target:add("files", "src/json.cc")
  62. target:add("files", "src/missing_deps.cc")
  63. end
  64. if version:ge("1.10.0") then
  65. target:add("files", "src/dyndep.cc")
  66. target:add("files", "src/dyndep_parser.cc")
  67. target:add("files", "src/parser.cc")
  68. end
  69. end)
  70. target("ninja")
  71. set_kind("binary")
  72. add_deps("libninja")
  73. add_files("src/ninja.cc")
  74. if is_plat("windows") then
  75. add_files("windows/ninja.manifest")
  76. end