summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorxq114 <[email protected]>2023-02-17 00:13:55 +0800
committerxq114 <[email protected]>2023-02-17 00:13:55 +0800
commita02e5791bfe8d2bcfc1bd91c731c9194beaaa136 (patch)
treec77da99dbc7c491c9461901c29936dccab5fd268
parente4716ca9e43b1fc5b7eedbdef96f88b361153da6 (diff)
improve windows cross-compilation for meson
-rw-r--r--xmake/modules/package/tools/meson.lua21
1 files changed, 20 insertions, 1 deletions
diff --git a/xmake/modules/package/tools/meson.lua b/xmake/modules/package/tools/meson.lua
index 218bbcec5..05e34883d 100644
--- a/xmake/modules/package/tools/meson.lua
+++ b/xmake/modules/package/tools/meson.lua
@@ -54,7 +54,7 @@ function _is_cross_compilation(package)
if package:is_plat("macosx") and not package:is_arch(os.subarch()) then
return true
end
- if package:is_plat("windows") and package:is_arch("arm64") then
+ if package:is_plat("windows") and not package:is_arch(os.arch()) then
return true
end
return false
@@ -200,6 +200,25 @@ function _get_cross_file(package, opt)
file:print("cpu_family = '%s'", cpu_family)
file:print("cpu = '%s'", cpu)
file:print("endian = 'little'")
+ elseif package:is_plat("windows") then
+ local cpu
+ local cpu_family
+ if package:is_arch("arm64") then
+ cpu = "aarch64"
+ cpu_family = "aarch64"
+ elseif package:is_arch("x86") then
+ cpu = "x86"
+ cpu_family = "x86"
+ elseif package:is_arch("x64") then
+ cpu = "x86_64"
+ cpu_family = "x86_64"
+ else
+ raise("unsupported arch(%s)", package:arch())
+ end
+ file:print("system = 'windows'")
+ file:print("cpu_family = '%s'", cpu_family)
+ file:print("cpu = '%s'", cpu)
+ file:print("endian = 'little'")
elseif package:is_plat("wasm") then
file:print("system = 'emscripten'")
file:print("cpu_family = 'wasm32'")