Fix library ordering in Makefiles

The existing ordering linked `libutil` before `libstore`, which causes
link failures when building statically. This is due to `libstore` using
functions from `libutil`, and the fact that symbol resolution works
"forward" - i.e. if you pass `-lfoo -lbar -lbaz`, any symbols that
`libbar` uses from `libbaz` will be resolved, but symbols from `libfoo`
will not since it comes first in the command line.

All this to say: this commit reorders the libraries which fixes the link
errors.
This commit is contained in:
Andrew Dunham 2018-04-21 21:10:52 -07:00
parent 040acdcee2
commit 3a918014b2
3 changed files with 3 additions and 3 deletions

View file

@ -4,6 +4,6 @@ build-remote_DIR := $(d)
build-remote_INSTALL_DIR := $(libexecdir)/nix build-remote_INSTALL_DIR := $(libexecdir)/nix
build-remote_LIBS = libmain libutil libformat libstore build-remote_LIBS = libmain libformat libstore libutil
build-remote_SOURCES := $(d)/build-remote.cc build-remote_SOURCES := $(d)/build-remote.cc

View file

@ -2,6 +2,6 @@ programs += nix-channel
nix-channel_DIR := $(d) nix-channel_DIR := $(d)
nix-channel_LIBS = libmain libutil libformat libstore nix-channel_LIBS = libmain libformat libstore libutil
nix-channel_SOURCES := $(d)/nix-channel.cc nix-channel_SOURCES := $(d)/nix-channel.cc

View file

@ -2,6 +2,6 @@ programs += nix-copy-closure
nix-copy-closure_DIR := $(d) nix-copy-closure_DIR := $(d)
nix-copy-closure_LIBS = libmain libutil libformat libstore nix-copy-closure_LIBS = libmain libformat libstore libutil
nix-copy-closure_SOURCES := $(d)/nix-copy-closure.cc nix-copy-closure_SOURCES := $(d)/nix-copy-closure.cc