diff options
| author | ruki <[email protected]> | 2023-08-09 00:45:21 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2023-08-09 00:45:21 +0800 |
| commit | d56fd4e78dd1d5a64409df3b8c889a54a4f740eb (patch) | |
| tree | fa70ae50d2aca8f0b198a7d4c3ad3360da8acfee | |
| parent | 04ff2a200ba3be2334827b3fe0385038aee9c090 (diff) | |
use arch to select target
| -rw-r--r-- | tests/projects/rust/cargo_deps_cross_build/xmake.lua | 3 | ||||
| -rw-r--r-- | xmake/modules/package/manager/cargo/install_package.lua | 18 | ||||
| -rw-r--r-- | xmake/toolchains/rust/xmake.lua | 17 | ||||
| -rw-r--r-- | xmake/toolchains/xcode/load_macosx.lua | 3 |
4 files changed, 22 insertions, 19 deletions
diff --git a/tests/projects/rust/cargo_deps_cross_build/xmake.lua b/tests/projects/rust/cargo_deps_cross_build/xmake.lua index 36a0e73c7..e02e14f82 100644 --- a/tests/projects/rust/cargo_deps_cross_build/xmake.lua +++ b/tests/projects/rust/cargo_deps_cross_build/xmake.lua @@ -1,6 +1,7 @@ -- rustup target add aarch64-unknown-none --- xmake f -p cross --cross=aarch64-unknown-none +-- xmake f -a aarch64-unknown-none +set_arch("aarch64-unknown-none") add_rules("mode.release", "mode.debug") add_requires("cargo::test", {configs = { std = false, diff --git a/xmake/modules/package/manager/cargo/install_package.lua b/xmake/modules/package/manager/cargo/install_package.lua index 60c059f40..7d58553e6 100644 --- a/xmake/modules/package/manager/cargo/install_package.lua +++ b/xmake/modules/package/manager/cargo/install_package.lua @@ -52,6 +52,15 @@ function main(name, opt) require_version = "*" end + -- get target + -- e.g. x86_64-pc-windows-msvc, aarch64-unknown-none + -- @see https://github.com/xmake-io/xmake/issues/4049 + local target + local arch = opt.arch + if arch and #arch:split("%-") > 1 then + target = arch + end + -- generate Cargo.toml local sourcedir = path.join(opt.cachedir, "source") local cargotoml = path.join(sourcedir, "Cargo.toml") @@ -88,11 +97,11 @@ function main(name, opt) -- generate .cargo/config.toml local configtoml = path.join(sourcedir, ".cargo", "config.toml") - if configs.build_target then + if target then io.writefile(configtoml, format([[ [build] target = "%s" -]], configs.build_target)) +]], target)) end -- generate main.rs @@ -132,9 +141,8 @@ target = "%s" -- do install local installdir = opt.installdir os.tryrm(path.join(installdir, "lib")) - local cross = get_config("cross") - if cross then - os.vcp(path.join(sourcedir, "target", cross, opt.mode == "debug" and "debug" or "release", "deps"), path.join(installdir, "lib")) + if target then + os.vcp(path.join(sourcedir, "target", target, opt.mode == "debug" and "debug" or "release", "deps"), path.join(installdir, "lib")) else os.vcp(path.join(sourcedir, "target", opt.mode == "debug" and "debug" or "release", "deps"), path.join(installdir, "lib")) end diff --git a/xmake/toolchains/rust/xmake.lua b/xmake/toolchains/rust/xmake.lua index 0bb6ad36f..e997eaa21 100644 --- a/xmake/toolchains/rust/xmake.lua +++ b/xmake/toolchains/rust/xmake.lua @@ -23,24 +23,17 @@ toolchain("rust") set_homepage("https://www.rust-lang.org/") set_description("Rust Programming Language Compiler") --- set_kind("standalone") - set_toolset("rc", "$(env RC)", "rustc") set_toolset("rcld", "$(env RC)", "rustc") set_toolset("rcsh", "$(env RC)", "rustc") set_toolset("rcar", "$(env RC)", "rustc") - on_check(function (toolchain) - import("lib.detect.find_tool") - return find_tool("rustc") - end) - on_load(function (toolchain) - -- for cross-compilation, e.g. xmake f -p cross --cross=aarch64-unknown-none - local cross = toolchain:cross() - if toolchain:is_cross() and cross then - toolchain:add("rcshflags", "--target=" .. cross) - toolchain:add("rcldflags", "--target=" .. cross) + -- e.g. x86_64-pc-windows-msvc, aarch64-unknown-none + local arch = toolchain:arch() + if arch and #arch:split("%-") > 1 then + toolchain:add("rcshflags", "--target=" .. arch) + toolchain:add("rcldflags", "--target=" .. arch) else toolchain:set("rcshflags", "") toolchain:set("rcldflags", "") diff --git a/xmake/toolchains/xcode/load_macosx.lua b/xmake/toolchains/xcode/load_macosx.lua index 69afce0e9..fb7c3d615 100644 --- a/xmake/toolchains/xcode/load_macosx.lua +++ b/xmake/toolchains/xcode/load_macosx.lua @@ -78,7 +78,8 @@ function main(toolchain) -- init flags for c/c++ toolchain:add("ldflags", "-stdlib=libc++") toolchain:add("shflags", "-stdlib=libc++") - toolchain:add("syslinks", "z") + toolchain:add("ldflags", "-lz") + toolchain:add("shflags", "-lz") -- init flags for objc/c++ (with ldflags and shflags) -- we can use `add_mxflags("-fno-objc-arc")` to override it in xmake.lua |
