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
Related show

Commit Message

H.J. Lu via Libc-alpha June 17, 2021, 5:44 a.m.
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(-)

-- 
2.31.1

Comments

Andreas Schwab June 17, 2021, 8:36 a.m. | #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.

-- 
Andreas Schwab, schwab@linux-m68k.org
GPG Key fingerprint = 7578 EB47 D4E5 4D69 2510  2552 DF73 E780 A9DA AEC1
"And now for something completely different."
H.J. Lu via Libc-alpha June 17, 2021, 10:38 a.m. | #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.
H.J. Lu via Libc-alpha June 17, 2021, 10:49 a.m. | #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

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 $@