52 lines
2.4 KiB
Diff
52 lines
2.4 KiB
Diff
From: rubenslte-builder <builder@rubenslte>
|
|
Date: Wed, 22 Jul 2026 10:30:00 +0200
|
|
Subject: [PATCH 2/8] build-core-fix-ar-absolute-paths
|
|
|
|
Fix ar absolute path issues by extracting to temp dir instead of per-member piping.
|
|
$(abspath ...) is only safe for TARGET_AR, which is a relative prebuilt path used
|
|
after `cd $$ldir`; HOST_AR is bare `ar` (GNU make built-in AR via combo/select.mk)
|
|
and is resolved through PATH, so it must NOT be abspath'd (abspath of `ar` yields
|
|
$TREE/ar, which does not exist).
|
|
---
|
|
diff --git a/build/core/definitions.mk b/build/core/definitions.mk
|
|
--- a/build/core/definitions.mk
|
|
+++ b/build/core/definitions.mk
|
|
@@ -1180,13 +1180,11 @@ define _extract-and-include-single-target-whole-static-lib
|
|
$(hide) ldir=$(PRIVATE_INTERMEDIATES_DIR)/WHOLE/$(basename $(notdir $(1)))_objs;\
|
|
rm -rf $$ldir; \
|
|
mkdir -p $$ldir; \
|
|
- filelist=; \
|
|
- for f in `$($(PRIVATE_2ND_ARCH_VAR_PREFIX)TARGET_AR) t $(1)`; do \
|
|
- $($(PRIVATE_2ND_ARCH_VAR_PREFIX)TARGET_AR) p $(1) $$f > $$ldir/$$f; \
|
|
- filelist="$$filelist $$ldir/$$f"; \
|
|
- done ; \
|
|
- $($(PRIVATE_2ND_ARCH_VAR_PREFIX)TARGET_AR) $($(PRIVATE_2ND_ARCH_VAR_PREFIX)TARGET_GLOBAL_ARFLAGS) \
|
|
- $(PRIVATE_ARFLAGS) $@ $$filelist
|
|
+ cp $(1) $$ldir/input.a; \
|
|
+ cd $$ldir && $(abspath $($(PRIVATE_2ND_ARCH_VAR_PREFIX)TARGET_AR)) x input.a; \
|
|
+ rm -f $$ldir/input.a; \
|
|
+ $(abspath $($(PRIVATE_2ND_ARCH_VAR_PREFIX)TARGET_AR)) $($(PRIVATE_2ND_ARCH_VAR_PREFIX)TARGET_GLOBAL_ARFLAGS) \
|
|
+ $(PRIVATE_ARFLAGS) $@ $$ldir/*.o
|
|
|
|
endef
|
|
|
|
@@ -1217,13 +1215,11 @@ define _extract-and-include-single-host-whole-static-lib
|
|
$(hide) ldir=$(PRIVATE_INTERMEDIATES_DIR)/WHOLE/$(basename $(notdir $(1)))_objs;\
|
|
rm -rf $$ldir; \
|
|
mkdir -p $$ldir; \
|
|
- filelist=; \
|
|
- for f in `$($(PRIVATE_2ND_ARCH_VAR_PREFIX)HOST_AR) t $(1) | \grep '\.o$$'`; do \
|
|
- $($(PRIVATE_2ND_ARCH_VAR_PREFIX)HOST_AR) p $(1) $$f > $$ldir/$$f; \
|
|
- filelist="$$filelist $$ldir/$$f"; \
|
|
- done ; \
|
|
- $($(PRIVATE_2ND_ARCH_VAR_PREFIX)HOST_AR) $($(PRIVATE_2ND_ARCH_VAR_PREFIX)HOST_GLOBAL_ARFLAGS) \
|
|
- $(PRIVATE_ARFLAGS) $@ $$filelist
|
|
+ cp $(1) $$ldir/input.a; \
|
|
+ cd $$ldir && $($(PRIVATE_2ND_ARCH_VAR_PREFIX)HOST_AR) x input.a; \
|
|
+ rm -f $$ldir/input.a; \
|
|
+ $($(PRIVATE_2ND_ARCH_VAR_PREFIX)HOST_AR) $($(PRIVATE_2ND_ARCH_VAR_PREFIX)HOST_GLOBAL_ARFLAGS) \
|
|
+ $(PRIVATE_ARFLAGS) $@ $$ldir/*.o
|
|
|
|
endef
|
|
|