Normally adding `gitversion.h` to `BUILT_SOURCES` would be enough
to make sure `gitversion.h` is created early enough. But `isl`
also has `interface/isl.py` in `BUILT_SOURCES`. That pulls in
`gitversion.h` via a long depdendency chain:
interface/isl.py -> interface/isldlname.py ->
libisl.la
-> isl_version.lo -> gitversion.h
I noticed as an occasional build failure in `--shuffle` build mode:
$ make -j16 --shuffle
...
isl_version.c:2:10: fatal error: gitversion.h: No such file or directory
2 | #include "gitversion.h"
| ^~~~~~~~~~~~~~
compilation terminated.
make: *** [Makefile:2017: isl_version.lo] Error 1 shuffle=459247208
The change adds an explicit dependency on object file that depends on
`gitversion.h`.
Before the change about 50% of builds failes in `--shuffle` mode.
After the change `isl` survived 20 rebuilds without failures.
Signed-off-by: Sergei Trofimovich <
sly...@gmail.com>
---
Makefile.am | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/Makefile.am b/Makefile.am
index 29371d95..c5a3918c 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -726,6 +726,20 @@ pkgconfig_DATA = $(pkgconfig_libfile)
gitversion.h: @GIT_HEAD@
$(AM_V_GEN)echo '#define GIT_HEAD_ID "'@GIT_HEAD_VERSION@'"' > $@
+# Specify explicit dependency as BUILT_SOURCES have an interdependency
+# internally between `interface/isl.py` and `gitversion.h`:
+# interface/isl.py -> interface/isldlname.py ->
libisl.la
+# -> isl_version.lo -> gitversion.h
+# Without the depenndency the build sometimes fails:
+# $ make -j16 --shuffle
+# ...
+# isl_version.c:2:10: fatal error: gitversion.h: No such file or directory
+# 2 | #include "gitversion.h"
+# | ^~~~~~~~~~~~~~
+# compilation terminated.
+# make: *** [Makefile:2017: isl_version.lo] Error 1 shuffle=459247208
+isl_version.lo: gitversion.h
+
install-data-local: $(srcdir)/libisl-gdb.py
@libisl=`sed -ne "/^library_names=/{s/.*='//;s/'$$//;s/ .*//;p;}" \
$(builddir)/
libisl.la`; \
--
2.50.1