mk: install symlinks before build step
A race condition can happen during parallel builds, where a header might be installed in RTE_OUT/include before CFLAGS is recursively expanded. This causes GCC to sometimes pick the header path as SRCDIR/... and sometimes as RTE_OUT/include/... making the build unreproducible, as the full path is used for the expansion of __FILE__ and in the DWARF directory listing. Installing all symlinks before all builds solves the problem. It is still suboptimal, as the (fixed) path recorded in the DWARF dir listing will include the user-configurable build output directory, and thus will result in a different binary between different users despite all other conditions being equal, but it is a simpler approach that will anyway be obsolete once the build system is switched to Meson. Suggested-by: Ferruh Yigit <ferruh.yigit@intel.com> Signed-off-by: Luca Boccassi <luca.boccassi@gmail.com>
This commit is contained in:
parent
ffe2fe3a95
commit
1cd28daf82
@ -59,14 +59,20 @@ endif
|
|||||||
|
|
||||||
|
|
||||||
_BUILD = $(LIB)
|
_BUILD = $(LIB)
|
||||||
_INSTALL = $(INSTALL-FILES-y) $(SYMLINK-FILES-y) $(RTE_OUTPUT)/lib/$(LIB)
|
PREINSTALL = $(SYMLINK-FILES-y)
|
||||||
|
_INSTALL = $(INSTALL-FILES-y) $(RTE_OUTPUT)/lib/$(LIB)
|
||||||
_CLEAN = doclean
|
_CLEAN = doclean
|
||||||
|
|
||||||
.PHONY: all
|
.PHONY: all
|
||||||
all: install
|
all: install
|
||||||
|
|
||||||
.PHONY: install
|
.PHONY: install
|
||||||
|
ifeq ($(SYMLINK-FILES-y),)
|
||||||
install: build _postinstall
|
install: build _postinstall
|
||||||
|
else
|
||||||
|
install: _preinstall build _postinstall
|
||||||
|
build: _preinstall
|
||||||
|
endif
|
||||||
|
|
||||||
_postinstall: build
|
_postinstall: build
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user