Description
I'm on macOS (64-bit 10.14.6, if you care) and I'm compiling to x86_64-apple-darwin. I'm trying (and very much failing) to use CARGO_TARGET_X86_64_APPLE_DARWIN_RUSTFLAGS to set -C link-arg= to something I need to be passed to the compiler for it to choose the correct linker (I'm using a version of clang that selects its own version of ld unless I override it to Apple's ld64 with -fuse-ld=/usr/bin/ld). While CARGO_TARGET_X86_64_APPLE_DARWIN_LINKER does seem to override the linker, and while I know my rustflags are at least being parsed (as if I try to -C something invalid it throws an immediate error), -C link-args is being ignored, which makes me sad :(. (FWIW, using bare RUSTFLAGS doesn't seem to help.)
$ cargo --version
cargo 1.49.0 (d00d64df9 2020-12-05)
$ rustc --version
rustc 1.49.0 (e1884a8e3 2020-12-29)
Here is the repository I happen to be working with:
$ git clone https://github.com/brave-intl/challenge-bypass-ristretto-ffi.git
Cloning into 'challenge-bypass-ristretto-ffi'...
remote: Enumerating objects: 6, done.
remote: Counting objects: 100% (6/6), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 320 (delta 0), reused 0 (delta 0), pack-reused 314
Receiving objects: 100% (320/320), 100.41 KiB | 952.00 KiB/s, done.
Resolving deltas: 100% (174/174), done.
$ cd challenge-bypass-ristretto-ffi
This should fail with an error on --invalid from clang:
$ git clean -fxd && CARGO_TARGET_X86_64_APPLE_DARWIN_RUSTFLAGS='-C link-arg=--invalid' cargo build --verbose --lib --release --target x86_64-apple-darwin -j1
Removing target/
Compiling typenum v1.12.0
Running `rustc --crate-name build_script_main /Users/saurik/.cargo/registry/src/github.com-1ecc6299db9ec823/typenum-1.12.0/build/main.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type bin --emit=dep-info,link -C embed-bitcode=no -C debug-assertions=off -C metadata=43e81e5495885b7c -C extra-filename=-43e81e5495885b7c --out-dir /Users/saurik/qq/challenge-bypass-ristretto-ffi/target/release/build/typenum-43e81e5495885b7c -L dependency=/Users/saurik/qq/challenge-bypass-ristretto-ffi/target/release/deps --cap-lints allow`
Compiling rand_core v0.4.2
...
I know the triple and CARGO_TARGET_* are "in play":
$ git clean -fxd && CARGO_TARGET_X86_64_APPLE_DARWIN_LINKER=false cargo build --verbose --lib --release --target x86_64-apple-darwin -j1
Removing target/
Compiling typenum v1.12.0
Running `rustc --crate-name build_script_main /Users/saurik/.cargo/registry/src/github.com-1ecc6299db9ec823/typenum-1.12.0/build/main.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type bin --emit=dep-info,link -C embed-bitcode=no -C debug-assertions=off -C metadata=43e81e5495885b7c -C extra-filename=-43e81e5495885b7c --out-dir /Users/saurik/qq/challenge-bypass-ristretto-ffi/target/release/build/typenum-43e81e5495885b7c -C linker=false -L dependency=/Users/saurik/qq/challenge-bypass-ristretto-ffi/target/release/deps --cap-lints allow`
error: linking with `false` failed: exit code: 1
|
= note: "false" "-m64" "-arch" "x86_64" "-L" "/Users/saurik/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib" "/Users/saurik/qq/challenge-bypass-ristretto-ffi/target/release/build/typenum-43e81e5495885b7c/build_script_main-43e81e5495885b7c.build_script_main.6p3nhvh5-cgu.0.rcgu.o" "/Users/saurik/qq/challenge-bypass-ristretto-ffi/target/release/build/typenum-43e81e5495885b7c/build_script_main-43e81e5495885b7c.build_script_main.6p3nhvh5-cgu.1.rcgu.o" "/Users/saurik/qq/challenge-bypass-ristretto-ffi/target/release/build/typenum-43e81e5495885b7c/build_script_main-43e81e5495885b7c.build_script_main.6p3nhvh5-cgu.10.rcgu.o" "/Users/saurik/qq/challenge-bypass-ristretto-ffi/target/release/build/typenum-43e81e5495885b7c/build_script_main-43e81e5495885b7c.build_script_main.6p3nhvh5-cgu.11.rcgu.o" "/Users/saurik/qq/challenge-bypass-ristretto-ffi/target/release/build/typenum-43e81e5495885b7c/build_script_main-43e81e5495885b7c.build_script_main.6p3nhvh5-cgu.12.rcgu.o" "/Users/saurik/qq/challenge-bypass-ristretto-ffi/target/release/build/typenum-43e81e5495885b7c/build_script_main-43e81e5495885b7c.build_script_main.6p3nhvh5-cgu.13.rcgu.o" "/Users/saurik/qq/challenge-bypass-ristretto-ffi/target/release/build/typenum-43e81e5495885b7c/build_script_main-43e81e5495885b7c.build_script_main.6p3nhvh5-cgu.14.rcgu.o" "/Users/saurik/qq/challenge-bypass-ristretto-ffi/target/release/build/typenum-43e81e5495885b7c/build_script_main-43e81e5495885b7c.build_script_main.6p3nhvh5-cgu.15.rcgu.o" "/Users/saurik/qq/challenge-bypass-ristretto-ffi/target/release/build/typenum-43e81e5495885b7c/build_script_main-43e81e5495885b7c.build_script_main.6p3nhvh5-cgu.2.rcgu.o" "/Users/saurik/qq/challenge-bypass-ristretto-ffi/target/release/build/typenum-43e81e5495885b7c/build_script_main-43e81e5495885b7c.build_script_main.6p3nhvh5-cgu.3.rcgu.o" "/Users/saurik/qq/challenge-bypass-ristretto-ffi/target/release/build/typenum-43e81e5495885b7c/build_script_main-43e81e5495885b7c.build_script_main.6p3nhvh5-cgu.4.rcgu.o" "/Users/saurik/qq/challenge-bypass-ristretto-ffi/target/release/build/typenum-43e81e5495885b7c/build_script_main-43e81e5495885b7c.build_script_main.6p3nhvh5-cgu.5.rcgu.o" "/Users/saurik/qq/challenge-bypass-ristretto-ffi/target/release/build/typenum-43e81e5495885b7c/build_script_main-43e81e5495885b7c.build_script_main.6p3nhvh5-cgu.6.rcgu.o" "/Users/saurik/qq/challenge-bypass-ristretto-ffi/target/release/build/typenum-43e81e5495885b7c/build_script_main-43e81e5495885b7c.build_script_main.6p3nhvh5-cgu.7.rcgu.o" "/Users/saurik/qq/challenge-bypass-ristretto-ffi/target/release/build/typenum-43e81e5495885b7c/build_script_main-43e81e5495885b7c.build_script_main.6p3nhvh5-cgu.8.rcgu.o" "/Users/saurik/qq/challenge-bypass-ristretto-ffi/target/release/build/typenum-43e81e5495885b7c/build_script_main-43e81e5495885b7c.build_script_main.6p3nhvh5-cgu.9.rcgu.o" "-o" "/Users/saurik/qq/challenge-bypass-ristretto-ffi/target/release/build/typenum-43e81e5495885b7c/build_script_main-43e81e5495885b7c" "/Users/saurik/qq/challenge-bypass-ristretto-ffi/target/release/build/typenum-43e81e5495885b7c/build_script_main-43e81e5495885b7c.3odpmtn7sqjnz0bt.rcgu.o" "-Wl,-dead_strip" "-nodefaultlibs" "-L" "/Users/saurik/qq/challenge-bypass-ristretto-ffi/target/release/deps" "-L" "/Users/saurik/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib" "/Users/saurik/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/libstd-518979da66993550.rlib" "/Users/saurik/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/libpanic_unwind-f52081aedccc205f.rlib" "/Users/saurik/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/libobject-bad1c02788187328.rlib" "/Users/saurik/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/libaddr2line-6375d8dbf53aee9d.rlib" "/Users/saurik/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/libgimli-0ea8539778b0c0ab.rlib" "/Users/saurik/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/librustc_demangle-64f30c6d69babb18.rlib" "/Users/saurik/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/libhashbrown-e27428d997fd2532.rlib" "/Users/saurik/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/librustc_std_workspace_alloc-f02467a76e5a8054.rlib" "/Users/saurik/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/libunwind-9536efad7116d828.rlib" "/Users/saurik/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/libcfg_if-5ca171f6ec11d7a5.rlib" "/Users/saurik/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/liblibc-14b621861b38e51f.rlib" "/Users/saurik/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/liballoc-38f4a0c206512fa5.rlib" "/Users/saurik/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/librustc_std_workspace_core-99bca6ace58141c5.rlib" "/Users/saurik/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/libcore-72a66f4c97a4c0c8.rlib" "/Users/saurik/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/libcompiler_builtins-e7cd9f0beed2fc0f.rlib" "-lSystem" "-lresolv" "-lc" "-lm"
= note:
error: aborting due to previous error
error: could not compile `typenum`
Caused by:
process didn't exit successfully: `rustc --crate-name build_script_main /Users/saurik/.cargo/registry/src/github.com-1ecc6299db9ec823/typenum-1.12.0/build/main.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type bin --emit=dep-info,link -C embed-bitcode=no -C debug-assertions=off -C metadata=43e81e5495885b7c -C extra-filename=-43e81e5495885b7c --out-dir /Users/saurik/qq/challenge-bypass-ristretto-ffi/target/release/build/typenum-43e81e5495885b7c -C linker=false -L dependency=/Users/saurik/qq/challenge-bypass-ristretto-ffi/target/release/deps --cap-lints allow` (exit code: 1)