Re: Bug: Makefile ignores CARGO_TARGET_DIR

Todd Zullinger <[email protected]> Tue, 28 Jul 2026 14:01:38 -0400
Newsgroups org.kernel.vger.git
Message-ID <[email protected]>
William Pursell wrote:
> The Makefile hardcodes the path to the Rust static library at line
> 962, but the cargo invocation at line 3036 does not override
> CARGO_TARGET_DIR. (line numbers are relative to 9a0c4701)
> 
> When CARGO_TARGET_DIR is set in the environment, the link step fails:
> 
> clang: error: no such file or directory: 'target/release/libgitcore.a'

If the fix simply to add `--target $*` as is used a few
lines below in RUST_MEMBER_LIBS, e.g.:

diff --git i/Makefile w/Makefile
index 98e995e4be..fa6e4b2702 100644
--- i/Makefile
+++ w/Makefile
@@ -3034,7 +3034,7 @@ $(LIB_FILE): $(LIB_OBJS)
 ifndef NO_RUST
 ifeq ($(RUST_TARGETS),)
 $(RUST_LIB): Cargo.toml $(RUST_SOURCES) $(LIB_FILE)
-	$(QUIET_CARGO)cargo build $(CARGO_ARGS)
+	$(QUIET_CARGO)cargo build $(CARGO_ARGS) --target $*
 else
 ifneq ($(words $(RUST_TARGETS)),1)
 ifneq ($(uname_S),Darwin)

Does this also affect the `cargo build` calls in the
libgit-sys and libgit-rs make targets (~lines 4090 and
4092)?

-- 
Todd