mk: install symlinks before build step
authorLuca Boccassi <luca.boccassi@gmail.com>
Thu, 12 Oct 2017 13:15:54 +0000 (14:15 +0100)
committerThomas Monjalon <thomas@monjalon.net>
Thu, 12 Oct 2017 20:31:33 +0000 (22:31 +0200)
commit1cd28daf8216725444f59df9862ac267f5593337
treea4fe8d4015e544cd6d48091a2776e7ac98abee31
parentffe2fe3a95abd89e60618d007951f2d01a7771e3
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>
mk/rte.lib.mk