diff options
author | John Ericson <git@JohnEricson.me> | 2022-12-06 21:48:07 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-12-06 21:48:07 -0500 |
commit | 8890f3b893ac6fc61723c4fab26294d4040071f9 (patch) | |
tree | e0b0f255768a95df295bd5a468fdf8d305424952 /pkgs/build-support/rust | |
parent | fa01623a880c73ae98939f19e0872023f789a4c3 (diff) | |
parent | fde3b57055a370dd43041b38ef07af66c86fbc3e (diff) |
Merge pull request #203766 from obsidiansystems/build-rust-crate-link-flags
buildRustCrate: Support `cargo:rustc-link-arg` and some friends from build.rs
Diffstat (limited to 'pkgs/build-support/rust')
-rw-r--r-- | pkgs/build-support/rust/build-rust-crate/configure-crate.nix | 5 | ||||
-rw-r--r-- | pkgs/build-support/rust/build-rust-crate/lib.sh | 6 |
2 files changed, 9 insertions, 2 deletions
diff --git a/pkgs/build-support/rust/build-rust-crate/configure-crate.nix b/pkgs/build-support/rust/build-rust-crate/configure-crate.nix index 473a91f9ce07e..ea150c2fe85d3 100644 --- a/pkgs/build-support/rust/build-rust-crate/configure-crate.nix +++ b/pkgs/build-support/rust/build-rust-crate/configure-crate.nix @@ -186,7 +186,10 @@ in '' set +e EXTRA_BUILD=$(sed -n "s/^cargo:rustc-flags=\(.*\)/\1/p" target/build/${crateName}.opt | tr '\n' ' ' | sort -u) EXTRA_FEATURES=$(sed -n "s/^cargo:rustc-cfg=\(.*\)/--cfg \1/p" target/build/${crateName}.opt | tr '\n' ' ') - EXTRA_LINK=$(sed -n "s/^cargo:rustc-link-lib=\(.*\)/\1/p" target/build/${crateName}.opt | tr '\n' ' ') + EXTRA_LINK_ARGS=$(sed -n "s/^cargo:rustc-link-arg=\(.*\)/-C link-arg=\1/p" target/build/${crateName}.opt | tr '\n' ' ') + EXTRA_LINK_ARGS_BINS=$(sed -n "s/^cargo:rustc-link-arg-bins=\(.*\)/-C link-arg=\1/p" target/build/${crateName}.opt | tr '\n' ' ') + EXTRA_LINK_ARGS_LIB=$(sed -n "s/^cargo:rustc-link-arg-lib=\(.*\)/-C link-arg=\1/p" target/build/${crateName}.opt | tr '\n' ' ') + EXTRA_LINK_LIBS=$(sed -n "s/^cargo:rustc-link-lib=\(.*\)/\1/p" target/build/${crateName}.opt | tr '\n' ' ') EXTRA_LINK_SEARCH=$(sed -n "s/^cargo:rustc-link-search=\(.*\)/\1/p" target/build/${crateName}.opt | tr '\n' ' ' | sort -u) # We want to read part of every line that has cargo:rustc-env= prefix and diff --git a/pkgs/build-support/rust/build-rust-crate/lib.sh b/pkgs/build-support/rust/build-rust-crate/lib.sh index 39f7d53f6f75d..7f98701b5409c 100644 --- a/pkgs/build-support/rust/build-rust-crate/lib.sh +++ b/pkgs/build-support/rust/build-rust-crate/lib.sh @@ -17,6 +17,8 @@ build_lib() { -L dependency=target/deps \ --cap-lints allow \ $LINK \ + $EXTRA_LINK_ARGS \ + $EXTRA_LINK_ARGS_LIB \ $LIB_RUSTC_OPTS \ $BUILD_OUT_DIR \ $EXTRA_BUILD \ @@ -47,6 +49,8 @@ build_bin() { --out-dir target/bin \ -L dependency=target/deps \ $LINK \ + $EXTRA_LINK_ARGS \ + $EXTRA_LINK_ARGS_BINS \ $EXTRA_LIB \ --cap-lints allow \ $BUILD_OUT_DIR \ @@ -94,7 +98,7 @@ setup_link_paths() { done fi done - echo "$EXTRA_LINK" | while read i; do + echo "$EXTRA_LINK_LIBS" | while read i; do if [[ ! -z "$i" ]]; then for library in $i; do echo "-l $library" >> target/link |