48 lines
2.8 KiB
Diff
48 lines
2.8 KiB
Diff
Workaround -L path order by passing local library paths before
|
|
systemwide paths to avoid pulling libnixstore.so from system
|
|
instead of locally-built library.
|
|
|
|
The patch is not perfect because it passes LDFLAGS after local
|
|
libraries but it makes nix link correctly.
|
|
|
|
Bug: https://github.com/NixOS/nix/issues/3087
|
|
--- a/mk/libraries.mk
|
|
+++ b/mk/libraries.mk
|
|
@@ -91,7 +91,7 @@ define build-library
|
|
$(1)_PATH := $$(_d)/$$($(1)_NAME).$(SO_EXT)
|
|
|
|
$$($(1)_PATH): $$($(1)_OBJS) $$(_libs) | $$(_d)/
|
|
- +$$(trace-ld) $(CXX) -o $$(abspath $$@) -shared $$(LDFLAGS) $$(GLOBAL_LDFLAGS) $$($(1)_OBJS) $$($(1)_LDFLAGS) $$($(1)_LDFLAGS_PROPAGATED) $$(foreach lib, $$($(1)_LIBS), $$($$(lib)_LDFLAGS_USE)) $$($(1)_LDFLAGS_UNINSTALLED)
|
|
+ +$$(trace-ld) $(CXX) -o $$(abspath $$@) -shared $$(foreach lib, $$($(1)_LIBS), $$($$(lib)_LDFLAGS_USE)) $$($(1)_LDFLAGS_UNINSTALLED) $$(LDFLAGS) $$(GLOBAL_LDFLAGS) $$($(1)_OBJS) $$($(1)_LDFLAGS) $$($(1)_LDFLAGS_PROPAGATED)
|
|
|
|
ifneq ($(OS), Darwin)
|
|
$(1)_LDFLAGS_USE += -Wl,-rpath,$$(abspath $$(_d))
|
|
@@ -105,7 +105,7 @@ define build-library
|
|
$$(eval $$(call create-dir, $$($(1)_INSTALL_DIR)))
|
|
|
|
$$($(1)_INSTALL_PATH): $$($(1)_OBJS) $$(_libs_final) | $(DESTDIR)$$($(1)_INSTALL_DIR)/
|
|
- +$$(trace-ld) $(CXX) -o $$@ -shared $$(LDFLAGS) $$(GLOBAL_LDFLAGS) $$($(1)_OBJS) $$($(1)_LDFLAGS) $$($(1)_LDFLAGS_PROPAGATED) $$(foreach lib, $$($(1)_LIBS), $$($$(lib)_LDFLAGS_USE_INSTALLED))
|
|
+ +$$(trace-ld) $(CXX) -o $$@ -shared $$(foreach lib, $$($(1)_LIBS), $$($$(lib)_LDFLAGS_USE_INSTALLED)) $$(LDFLAGS) $$(GLOBAL_LDFLAGS) $$($(1)_OBJS) $$($(1)_LDFLAGS) $$($(1)_LDFLAGS_PROPAGATED)
|
|
|
|
$(1)_LDFLAGS_USE_INSTALLED += -L$$(DESTDIR)$$($(1)_INSTALL_DIR) -l$$(patsubst lib%,%,$$(strip $$($(1)_NAME)))
|
|
ifneq ($(OS), Darwin)
|
|
--- a/mk/programs.mk
|
|
+++ b/mk/programs.mk
|
|
@@ -32,7 +32,7 @@ define build-program
|
|
$$(eval $$(call create-dir, $$(_d)))
|
|
|
|
$$($(1)_PATH): $$($(1)_OBJS) $$(_libs) | $$(_d)/
|
|
- +$$(trace-ld) $(CXX) -o $$@ $$(LDFLAGS) $$(GLOBAL_LDFLAGS) $$($(1)_OBJS) $$($(1)_LDFLAGS) $$(foreach lib, $$($(1)_LIBS), $$($$(lib)_LDFLAGS_USE))
|
|
+ +$$(trace-ld) $(CXX) -o $$@ $$(foreach lib, $$($(1)_LIBS), $$($$(lib)_LDFLAGS_USE)) $$(LDFLAGS) $$(GLOBAL_LDFLAGS) $$($(1)_OBJS) $$($(1)_LDFLAGS)
|
|
|
|
$(1)_INSTALL_DIR ?= $$(bindir)
|
|
$(1)_INSTALL_PATH := $$($(1)_INSTALL_DIR)/$(1)
|
|
@@ -49,7 +49,7 @@ define build-program
|
|
_libs_final := $$(foreach lib, $$($(1)_LIBS), $$($$(lib)_INSTALL_PATH))
|
|
|
|
$(DESTDIR)$$($(1)_INSTALL_PATH): $$($(1)_OBJS) $$(_libs_final) | $(DESTDIR)$$($(1)_INSTALL_DIR)/
|
|
- +$$(trace-ld) $(CXX) -o $$@ $$(LDFLAGS) $$(GLOBAL_LDFLAGS) $$($(1)_OBJS) $$($(1)_LDFLAGS) $$(foreach lib, $$($(1)_LIBS), $$($$(lib)_LDFLAGS_USE_INSTALLED))
|
|
+ +$$(trace-ld) $(CXX) -o $$@ $$(foreach lib, $$($(1)_LIBS), $$($$(lib)_LDFLAGS_USE_INSTALLED)) $$(LDFLAGS) $$(GLOBAL_LDFLAGS) $$($(1)_OBJS) $$($(1)_LDFLAGS)
|
|
|
|
else
|
|
|