Skip to content

Commit 4062323

Browse files
rsm-bsa: add package (#2452)
* rsm-bsa: add package * fix syslinks * disable plat * try latest version * Revert "try latest version" This reverts commit c4bec91. * disable plat * enable linux for directxtex * enable linux for directxmath * fix sal.h * fix sal.h * enable linux for directx-headers * directx-headers: fix test * directx-headers: fix test * directx-headers: fix test * directx-headers: fix test * directx-headers: fix test
1 parent 3b46c58 commit 4062323

File tree

5 files changed

+177
-11
lines changed

5 files changed

+177
-11
lines changed

packages/d/directx-headers/xmake.lua

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,20 @@ package("directx-headers")
1515
add_deps("cmake")
1616
if is_plat("mingw") then
1717
add_defines("__REQUIRED_RPCNDR_H_VERSION__=475")
18+
elseif is_plat("linux") then
19+
add_includedirs("include", "include/wsl/stubs")
1820
end
1921

20-
on_install("windows", "mingw", function (package)
22+
on_install("windows", "mingw", "linux", function (package)
2123
local configs = {"-DDXHEADERS_BUILD_TEST=OFF", "-DDXHEADERS_BUILD_GOOGLE_TEST=OFF"}
22-
table.insert(configs, "-DCMAKE_BUILD_TYPE=" .. (package:debug() and "Debug" or "Release"))
24+
table.insert(configs, "-DCMAKE_BUILD_TYPE=" .. (package:is_debug() and "Debug" or "Release"))
2325
import("package.tools.cmake").install(package, configs)
2426
end)
2527

2628
on_test(function (package)
27-
assert(package:has_cxxtypes("CD3DX12FeatureSupport", {configs = {languages = "cxx14"}, includes = "directx/d3dx12.h"}))
29+
if package:is_plat("windows", "mingw") then
30+
assert(package:has_cxxtypes("CD3DX12FeatureSupport", {configs = {languages = "cxx14"}, includes = "directx/d3dx12.h"}))
31+
else
32+
assert(package:has_cxxincludes("wsl/winadapter.h", {configs = {languages = "cxx14"}}))
33+
end
2834
end)

packages/d/directxmath/xmake.lua

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,17 @@ package("directxmath")
1212
add_urls("https://github.com/microsoft/DirectXMath.git")
1313
add_versions("2022.12", "2ed0ae7d7fe5d11ad11f6d3d9b31ce686024a551cf82ade723de86aa7b4b57e1")
1414

15+
if is_plat("linux") then
16+
add_resources("2022.12", "headers", "https://raw.githubusercontent.com/dotnet/runtime/2201016c1e13bdb9abf49e2e38cadf4ee0568df2/src/coreclr/pal/inc/rt/sal.h", "7dae281adc3a09a691291fb90526f05e4f9ef8b16d7f33d716ba690f7241a492")
17+
end
18+
1519
add_deps("cmake")
1620
add_includedirs("include/directxmath")
17-
on_install("windows", "mingw", function (package)
21+
22+
on_install("windows", "mingw", "linux", function (package)
23+
if package:is_plat("linux") then
24+
os.cp("../resources/headers/sal.h", package:installdir("include", "directxmath"))
25+
end
1826
import("package.tools.cmake").install(package, {"-DBUILD_TESTING=OFF"})
1927
end)
2028

packages/d/directxtex/xmake.lua

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,31 +13,38 @@ package("directxtex")
1313

1414
add_versions("2023.06", "51f0ff3bee0d1015c110e0c92ebdd9704aa6acd91185328fd92f10b9558f4c62")
1515

16-
add_configs("dx11", {description = "Build with DirectX11 Runtime support", default = true, type = "boolean"})
17-
add_configs("dx12", {description = "Build with DirectX12 Runtime support", default = true, type = "boolean"})
16+
if is_plat("windows") then
17+
add_configs("dx11", {description = "Build with DirectX11 Runtime support", default = true, type = "boolean"})
18+
add_configs("dx12", {description = "Build with DirectX12 Runtime support", default = true, type = "boolean"})
19+
add_configs("spectre", {description = "Build using /Qspectre for MSVC", default = false, type = "boolean"})
20+
end
1821
add_configs("openmp", {description = "Build with OpenMP support", default = false, type = "boolean"})
19-
add_configs("spectre", {description = "Build using /Qspectre for MSVC", default = false, type = "boolean"})
2022
add_configs("iterator_debugging", {description = "Disable iterator debugging in Debug configurations with the MSVC CRT", default = false, type = "boolean"})
2123
add_configs("code_analysis", {description = "Use Static Code Analysis on build", default = false, type = "boolean"})
2224
add_configs("prebuild_shader", {description = "Use externally built HLSL shaders", default = false, type = "boolean"})
2325
add_configs("openexr", {description = "Build with OpenEXR support", default = false, type = "boolean"})
2426

2527
add_deps("cmake")
28+
if is_plat("linux") then
29+
add_deps("directxmath", "directx-headers")
30+
end
2631

2732
on_load(function (package)
2833
if package:config("openexr") then
2934
package:add("deps", "openexr")
3035
end
3136
end)
3237

33-
on_install("windows", function (package)
38+
on_install("windows", "linux", function (package)
3439
local configs = {"-DBUILD_TOOLS=OFF", "-DBUILD_SAMPLE=OFF"}
3540
table.insert(configs, "-DCMAKE_BUILD_TYPE=" .. (package:is_debug() and "Debug" or "Release"))
3641
table.insert(configs, "-DBUILD_SHARED_LIBS=" .. (package:config("shared") and "ON" or "OFF"))
37-
table.insert(configs, "-DBUILD_DX11=" .. (package:config("dx11") and "ON" or "OFF"))
38-
table.insert(configs, "-DBUILD_DX12=" .. (package:config("dx12") and "ON" or "OFF"))
42+
if package:is_plat("windows") then
43+
table.insert(configs, "-DBUILD_DX11=" .. (package:config("dx11") and "ON" or "OFF"))
44+
table.insert(configs, "-DBUILD_DX12=" .. (package:config("dx12") and "ON" or "OFF"))
45+
table.insert(configs, "-DENABLE_SPECTRE_MITIGATION=" .. (package:config("spectre") and "ON" or "OFF"))
46+
end
3947
table.insert(configs, "-DBC_USE_OPENMP=" .. (package:config("openmp") and "ON" or "OFF"))
40-
table.insert(configs, "-DENABLE_SPECTRE_MITIGATION=" .. (package:config("spectre") and "ON" or "OFF"))
4148
table.insert(configs, "-DDISABLE_MSVC_ITERATOR_DEBUGGING=" .. (package:config("iterator_debugging") and "ON" or "OFF"))
4249
table.insert(configs, "-DENABLE_CODE_ANALYSIS=" .. (package:config("code_analysis") and "ON" or "OFF"))
4350
table.insert(configs, "-DUSE_PREBUILT_SHADERS=" .. (package:config("prebuild_shader") and "ON" or "OFF"))

packages/r/rsm-bsa/port/xmake.lua

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
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

packages/r/rsm-bsa/xmake.lua

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
package("rsm-bsa")
2+
set_homepage("https://github.com/Ryan-rsm-McKenzie/bsa")
3+
set_description("C++ library for working with the Bethesda archive file format")
4+
set_license("MIT")
5+
6+
add_urls("https://github.com/Ryan-rsm-McKenzie/bsa/archive/refs/tags/$(version).tar.gz",
7+
"https://github.com/Ryan-rsm-McKenzie/bsa.git")
8+
9+
add_versions("4.1.0", "c2942eb1adc35114a256720a917cfae833aa98482da3b38f9d652762d1c281b2")
10+
11+
add_configs("xmem", {description = "build support for the xmem codec proxy", default = false, type = "boolean", readonly = true})
12+
13+
add_deps("rsm-mmio", "rsm-binary-io", "lz4", "zlib")
14+
if is_plat("windows", "linux") then
15+
add_deps("directxtex")
16+
if is_plat("windows") then
17+
add_syslinks("ole32")
18+
end
19+
end
20+
21+
on_load(function (package)
22+
if package:config("xmem") then
23+
package:add("defines", "BSA_SUPPORT_XMEM=1")
24+
package:add("deps", "reproc", "expected-lite", "xbyak")
25+
package:add("deps", "rsm-mmio~32", "rsm-binary-io~32")
26+
package:add("deps", "expected-lite~32", "xbyak~32", "taywee_args~32")
27+
end
28+
end)
29+
30+
on_install("windows", "linux", function (package)
31+
os.cp(path.join(os.scriptdir(), "port", "xmake.lua"), "xmake.lua")
32+
33+
local configs = {}
34+
configs.ver = package:version_str()
35+
if package:config("xmem") then
36+
configs.xmem = true
37+
end
38+
import("package.tools.xmake").install(package, configs)
39+
end)
40+
41+
on_test(function (package)
42+
assert(package:check_cxxsnippets({test = [[
43+
#include <bsa/tes4.hpp>
44+
void test() {
45+
const char payload[] = { "Hello world!\n" };
46+
bsa::tes4::file f;
47+
f.set_data({ reinterpret_cast<const std::byte*>(payload), sizeof(payload) - 1 });
48+
}
49+
]]}, {configs = {languages = "c++20"}}))
50+
end)

0 commit comments

Comments
 (0)