diff mbox series

Makeconfig: Fix time64-compat.mk target

Message ID 20210617054445.1981632-1-siddhesh@sourceware.org
State New
Headers show
Series Makeconfig: Fix time64-compat.mk target | expand

Commit Message

Siddhesh Poyarekar June 17, 2021, 5:44 a.m. UTC
The time64-compat.i needed for the time64-compat.mk Makeconfig include
ends up trying to include libc-modules.h, which is not generated until
later.  This results in an error during build which is not noticed
because it somehow does not terminate the build.

Exclude the modules cppflags from the pre-processing command and fix
up the time64-compat.mk target so that the build runs without issues.
---
 Makeconfig | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

Comments

Andreas Schwab June 17, 2021, 8:36 a.m. UTC | #1
On Jun 17 2021, Siddhesh Poyarekar via Libc-alpha wrote:

> The time64-compat.i needed for the time64-compat.mk Makeconfig include
> ends up trying to include libc-modules.h, which is not generated until
> later.  This results in an error during build which is not noticed
> because it somehow does not terminate the build.
>
> Exclude the modules cppflags from the pre-processing command and fix
> up the time64-compat.mk target so that the build runs without issues.

Ok.

Andreas.
Adhemerval Zanella Netto June 17, 2021, 10:38 a.m. UTC | #2
On 17/06/2021 02:44, Siddhesh Poyarekar wrote:
> The time64-compat.i needed for the time64-compat.mk Makeconfig include
> ends up trying to include libc-modules.h, which is not generated until
> later.  This results in an error during build which is not noticed
> because it somehow does not terminate the build.
> 
> Exclude the modules cppflags from the pre-processing command and fix
> up the time64-compat.mk target so that the build runs without issues.

Thanks for catching it.  Out of curiosity, how do you trigger this issue?
I am building it glibc and tests with this patch for some time and I didn't
see it.
Siddhesh Poyarekar June 17, 2021, 10:49 a.m. UTC | #3
On 6/17/21 4:08 PM, Adhemerval Zanella wrote:
> Thanks for catching it.  Out of curiosity, how do you trigger this issue?
> I am building it glibc and tests with this patch for some time and I didn't
> see it.

It happens all the time, just that it does not terminate the build and 
hence would be nearly impossible to notice unless you read the full 
build messages line by line.  However, I have this curious habit of 
running the build as `make -j16 > /dev/null` due to which only stderr 
gets printed on the terminal.  The bright red error from gcc complaining 
about missing libc-modules.h was hard to miss :)

Siddhesh
diff mbox series

Patch

diff --git a/Makeconfig b/Makeconfig
index b6357d0b19..6482a43025 100644
--- a/Makeconfig
+++ b/Makeconfig
@@ -970,7 +970,7 @@  module-cppflags-real = -include $(common-objpfx)libc-modules.h \
 # facility.  In fact, shlib-versions should not use it because that will
 # create a circular dependency as libc-modules.h is generated from
 # shlib-versions.
-module-cppflags = $(if $(filter %.v.i,$(@F)),,$(module-cppflags-real))
+module-cppflags = $(if $(filter %.mk.i %.v.i,$(@F)),,$(module-cppflags-real))
 
 # These are the variables that the implicit compilation rules use.
 # Note that we can't use -std=* in CPPFLAGS, because it overrides
@@ -1239,11 +1239,11 @@  endif # $(build-shared) = yes
 -include $(common-objpfx)time64-compat.mk
 postclean-generated += time64-compat.mk
 
-$(common-objpfx)time64-compat.mk: $(sysd-versions-force) \
-				  $(common-objpfx)time64-compat.i
+$(common-objpfx)time64-compat.mk: $(common-objpfx)time64-compat.mk.i \
+				  $(sysd-versions-force)
 	sed '/^[        ]*#/d;/^[       ]*$$/d' $< > $@T
 	mv -f $@T $@
-$(common-objpfx)time64-compat.i: $(..)Makeconfig
+$(common-objpfx)time64-compat.mk.i: $(..)Makeconfig
 	printf "#include <time64-compat.h>\n#ifdef TIME64_NON_DEFAULT\nhave-time64-compat = yes\n#endif" \
 	| $(CC) -E -undef $(CPPFLAGS) -x assembler-with-cpp - > $@T
 	mv -f $@T $@