Message ID | 20210617054445.1981632-1-siddhesh@sourceware.org |
---|---|
State | New |
Headers | show |
Series | Makeconfig: Fix time64-compat.mk target | expand |
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.
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.
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 --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 $@