Windows: Native build failed due to missing gnulib dependencies
authorFriedrich Beckmann <friedrich.beckmann@gmx.de>
Fri, 18 Mar 2022 15:31:23 +0000 (15:31 +0000)
committerFriedrich Beckmann <friedrich.beckmann@gmx.de>
Fri, 18 Mar 2022 15:31:23 +0000 (15:31 +0000)
The windows build failed because the gnulib header files were not
build before the compilation of c files for the native build.
The gnulib headers are
listed in the BUILT_SOURCES but that must be the first dependency
before the object files belonging to the executable. This is the
case for the default make target but not for an individual
executable like src/ui/terminal/pspp. I adapted the make file
to use the default make target.
See: https://www.gnu.org/software/automake/manual/html_node/Sources.html

doc/automake.mk

index 63972bb3e49bbc869ada2657543ad5a96e7af048..5636fa302e1525a8440d20574276badc786794ad 100644 (file)
@@ -193,14 +193,14 @@ native/Makefile:
        $(MKDIR_P) native
        (cd native && $(abs_top_srcdir)/configure --host=$(build) --without-gui)
 
-native/gl/libgl.la: native/Makefile
-       (cd native && flock --verbose $(top_builddir)/native-lock $(MAKE) gl/libgl.la)
+# The gnulib header files are required for the object files of the native pspp
+# They are defined in BUILT_SOURCES but that is only defined as a first dependency
+# for the make all target. src/ui/terminal/pspp as a target will try to compile the
+# objects first but that fails without the header files. Therefore I build the native
+# executables via the default make target
+$(pspp) $(pspp_output) &: native/Makefile
+       (cd native && flock --verbose $(top_builddir)/native-lock $(MAKE) )
 
-$(pspp): native/gl/libgl.la
-       (cd native && flock --verbose $(top_builddir)/native-lock $(MAKE) src/ui/terminal/pspp)
-
-$(pspp_output): native/gl/libgl.la
-       (cd native && flock --verbose $(top_builddir)/native-lock $(MAKE) utilities/pspp-output)
 else
 pspp = src/ui/terminal/pspp$(EXEEXT)
 pspp_output = utilities/pspp-output$(EXEEXT)