diff options
| author | SirLynix <[email protected]> | 2025-05-07 19:14:13 +0200 |
|---|---|---|
| committer | SirLynix <[email protected]> | 2025-05-07 19:14:13 +0200 |
| commit | c05d4bf0adc8a4d8a320b960d6383832775f13de (patch) | |
| tree | 340317b895100a0a8ac67cada55c03d04118ba7d /xmake/modules/package | |
| parent | 7301a531f1581e5b22897c13c66d2704c493dbd9 (diff) | |
cargo: fix package cross-compilation
Diffstat (limited to 'xmake/modules/package')
| -rw-r--r-- | xmake/modules/package/manager/cargo/find_package.lua | 7 | ||||
| -rw-r--r-- | xmake/modules/package/manager/cargo/install_package.lua | 6 |
2 files changed, 11 insertions, 2 deletions
diff --git a/xmake/modules/package/manager/cargo/find_package.lua b/xmake/modules/package/manager/cargo/find_package.lua index cc66f63df..f2c7a8919 100644 --- a/xmake/modules/package/manager/cargo/find_package.lua +++ b/xmake/modules/package/manager/cargo/find_package.lua @@ -136,6 +136,12 @@ function main(name, opt) local librarydir_host = path.join(opt.installdir, "lib", "host") local libfiles = os.files(path.join(librarydir, "*.rlib")) + local frameworkdirs = {} + table.insert(frameworkdirs, librarydir) + if os.exists(librarydir_host) then + table.insert(frameworkdirs, librarydir_host) + end + -- @see https://github.com/xmake-io/xmake/issues/4228 local libfiles_native local plat = opt.plat @@ -165,7 +171,6 @@ function main(name, opt) libraryname = "lib" .. libraryname end if names:has(libraryname) and not libraries_set[libraryname] then - frameworkdirs = frameworkdirs or {} frameworks = frameworks or {} table.insert(frameworkdirs, path.directory(libraryfile)) table.insert(frameworks, libraryfile) diff --git a/xmake/modules/package/manager/cargo/install_package.lua b/xmake/modules/package/manager/cargo/install_package.lua index d6e8048a2..9f5d069cb 100644 --- a/xmake/modules/package/manager/cargo/install_package.lua +++ b/xmake/modules/package/manager/cargo/install_package.lua @@ -23,6 +23,7 @@ import("core.base.option") import("core.project.config") import("lib.detect.find_tool") import("private.tools.rust.check_target") +import("private.tools.rust.target_triple") -- translate local path in dependencies -- @see https://github.com/xmake-io/xmake/issues/4222 @@ -78,7 +79,10 @@ function main(name, opt) -- get target -- e.g. x86_64-pc-windows-msvc, aarch64-unknown-none -- @see https://github.com/xmake-io/xmake/issues/4049 - local target = check_target(opt.arch, true) and opt.arch or nil + local target = #opt.arch:split("%-") >= 2 and check_target(opt.arch, true) and opt.arch + if not target then + target = target_triple(opt.plat, opt.arch) + end -- generate Cargo.toml local sourcedir = path.join(opt.cachedir, "source") |
