xmake.lua 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. option("xmem", {showmenu = true, description = "build support for the xmem codec proxy", default = false})
  2. option("ver", {showmenu = true, default = ""})
  3. add_rules("mode.debug", "mode.release")
  4. set_languages("c++20")
  5. add_requires("rsm-mmio", "rsm-binary-io", "lz4", "zlib")
  6. if is_plat("windows", "linux") then
  7. add_requires("directxtex")
  8. end
  9. if has_config("ver") then
  10. set_version(get_config("ver"))
  11. local vers = get_config("ver"):split("%.")
  12. major_ver = vers[1] or ""
  13. minor_ver = vers[2] or ""
  14. patch_ver = vers[3] or ""
  15. set_configvar("PROJECT_VERSION_MAJOR", major_ver)
  16. set_configvar("PROJECT_VERSION_MINOR", minor_ver)
  17. set_configvar("PROJECT_VERSION_PATCH", patch_ver)
  18. set_configvar("PROJECT_VERSION", get_config("ver"))
  19. end
  20. if has_config("xmem") then
  21. add_requires("reproc", "expected-lite", "xbyak", "taywee_args")
  22. add_requires("rsm-binary-io~32", {arch = "x86"})
  23. add_requires("rsm-mmio~32", {arch = "x86"})
  24. add_requires("expected-lite~32", {arch = "x86"})
  25. add_requires("xbyak~32", {arch = "x86"})
  26. add_requires("taywee_args~32", {arch = "x86"})
  27. target("rsm-bsa-common")
  28. set_kind("$(kind)")
  29. add_files("extras/xmem/src/bsa/**.cpp")
  30. add_includedirs("extras/xmem/src", {public = true})
  31. add_headerfiles("extras/xmem/src/(bsa/**.hpp)")
  32. add_packages("rsm-binary-io", "rsm-mmio", "expected-lite", "xbyak", {public = true})
  33. if is_plat("windows") and is_kind("shared") then
  34. add_rules("utils.symbols.export_all", {export_classes = true})
  35. end
  36. target("rsm-bsa-common-32")
  37. set_kind("static")
  38. add_files("extras/xmem/src/bsa/**.cpp")
  39. add_includedirs("extras/xmem/src", {public = true})
  40. add_packages("rsm-binary-io~32", "rsm-mmio~32", "expected-lite~32", "xbyak~32", {public = true})
  41. target("xmem")
  42. set_kind("binary")
  43. set_arch("x86")
  44. add_files("extras/xmem/src/main.cpp")
  45. add_files("extras/xmem/src/version.rc")
  46. add_includedirs("include")
  47. add_deps("rsm-bsa-common-32")
  48. add_packages("taywee_args~32")
  49. set_configdir("extras/xmem/src")
  50. add_configfiles("extras/xmem/cmake/version.rc.in", {pattern = "@(.-)@"})
  51. set_configvar("PROJECT_NAME", "bsa")
  52. end
  53. target("rsm-bsa")
  54. set_kind("$(kind)")
  55. add_files("src/**.cpp")
  56. add_includedirs("include", "src")
  57. add_headerfiles("include/(bsa/**.hpp)")
  58. add_installfiles("visualizers/*.natvis", {prefixdir = "include/natvis"})
  59. set_configdir("include/bsa")
  60. add_configfiles("cmake/project_version.hpp.in", {pattern = "@(.-)@"})
  61. add_packages("rsm-mmio", "rsm-binary-io", "lz4", "zlib")
  62. if is_plat("windows", "linux") then
  63. add_packages("directxtex")
  64. if is_plat("windows") then
  65. add_syslinks("ole32")
  66. if is_kind("shared") then
  67. add_rules("utils.symbols.export_all", {export_classes = true})
  68. end
  69. end
  70. end
  71. if has_config("xmem") then
  72. add_deps("rsm-bsa-common")
  73. add_defines("BSA_SUPPORT_XMEM=1")
  74. add_packages("reproc")
  75. end