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