]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
BZ#17496: Fix gnu/lib-names.h dependency.
authorRoland McGrath <roland@hack.frob.com>
Fri, 31 Oct 2014 22:07:36 +0000 (15:07 -0700)
committerRoland McGrath <roland@hack.frob.com>
Fri, 31 Oct 2014 22:07:36 +0000 (15:07 -0700)
ChangeLog
Makerules

index d65c7193ed9b8294a124bb66ef45ab9e331a703b..2f7e6f62b5e0aa1cde784ff823ca2b009b1b5bad 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2014-10-31  Roland McGrath  <roland@hack.frob.com>
+
+       [BZ #17496]
+       * Makerules: Move gnu/lib-names.h generation chunk up, to right after
+       gen-as-const-headers chunk.  Add a big scare comment after the last
+       safe place to touch before-compile.
+
 2014-10-31  Joseph Myers  <joseph@codesourcery.com>
 
        * manual/install.texi (Tools for Compilation): Update autoconf
index 3951bb185b62a4630f8029e60b910ebe1ce96c6a..4f2eec35bc337c7376a2795558e6bb76fa2fa9c0 100644 (file)
--- a/Makerules
+++ b/Makerules
@@ -211,6 +211,73 @@ $(objpfx)test-as-const-%.c: $(..)scripts/gen-as-const.awk $(..)Makerules \
        mv -f $@T $@
 endif
 \f
+ifeq (yes,$(build-shared))
+# Generate the header containing the names of all shared libraries.
+# We use a stamp file to avoid unnecessary recompilations.
+before-compile += $(common-objpfx)gnu/lib-names.h
+ifeq ($(soversions.mk-done),t)
+ifndef abi-variants
+lib-names-h-abi = gnu/lib-names.h
+lib-names-stmp-abi = gnu/lib-names.stmp
+else
+lib-names-h-abi = gnu/lib-names-$(default-abi).h
+lib-names-stmp-abi = gnu/lib-names-$(default-abi).stmp
+before-compile += $(common-objpfx)$(lib-names-h-abi)
+common-generated += gnu/lib-names.h
+install-others-nosubdir: $(inst_includedir)/$(lib-names-h-abi)
+$(common-objpfx)gnu/lib-names.h:
+       $(make-target-directory)
+       { \
+        echo '/* This file is automatically generated.';\
+        echo '   It defines macros to allow user program to find the shared'; \
+        echo '   library files which come as part of GNU libc.  */'; \
+        echo '#ifndef __GNU_LIB_NAMES_H'; \
+        echo '#define __GNU_LIB_NAMES_H        1'; \
+        echo ''; \
+        $(if $(abi-includes), \
+         $(foreach h,$(abi-includes), echo '#include <$(h)>';) \
+         echo '';) \
+        $(foreach v,$(abi-variants),\
+        $(if $(abi-$(v)-condition),\
+        echo '#if $(abi-$(v)-condition)'; \
+        echo '# include <gnu/lib-names-$(v).h>'); \
+        $(if $(abi-$(v)-condition),echo '#endif';)) \
+        echo ''; \
+        echo '#endif   /* gnu/lib-names.h */'; \
+       } >  $@
+endif
+$(common-objpfx)$(lib-names-h-abi): $(common-objpfx)$(lib-names-stmp-abi); @:
+$(common-objpfx)$(lib-names-stmp-abi): $(..)scripts/lib-names.awk \
+                                      $(common-objpfx)soversions.i
+       $(make-target-directory)
+       { \
+        $(if $(abi-variants), \
+        echo '/* This file is automatically generated.  */';\
+        echo '#ifndef __GNU_LIB_NAMES_H'; \
+        echo '# error "Never use <$(lib-names-h-abi)> directly; include <gnu/lib-names.h> instead."'; \
+        echo '#endif';, \
+        echo '/* This file is automatically generated.';\
+        echo '   It defines macros to allow user program to find the shared'; \
+        echo '   library files which come as part of GNU libc.  */'; \
+        echo '#ifndef __GNU_LIB_NAMES_H'; \
+        echo '#define __GNU_LIB_NAMES_H        1';) \
+        echo ''; \
+        ($(foreach s,$(all-sonames), echo $(s);)) \
+        | LC_ALL=C $(AWK) -f $(firstword $^) | LC_ALL=C sort; \
+        $(if $(abi-variants),, \
+        echo ''; \
+        echo '#endif   /* gnu/lib-names.h */';) \
+       } >  ${@:stmp=T}
+       $(move-if-change) ${@:stmp=T} ${@:stmp=h}
+       touch $@
+endif
+common-generated += $(lib-names-h-abi) $(lib-names-stmp-abi)
+endif
+\f
+###############################################################################
+# NOTE!  Everything adding to before-compile needs to come before this point! #
+###############################################################################
+
 # Generate an ordered list of implicit rules which find the source files in
 # each sysdep directory.  The old method was to use vpath to search all the
 # sysdep directories.  However, that had the problem that a .S file in a
@@ -1276,7 +1343,7 @@ endif
 endif
 
 endif
-
+\f
 # These will have been set by sysdeps/posix/Makefile.
 L_tmpnam  ?= 1
 TMP_MAX   ?= 0
@@ -1324,69 +1391,6 @@ ifndef no_deps
 -include $(stdio_lim:h=d)
 endif
 common-generated += bits/stdio_lim.h bits/stdio_lim.d bits/stdio_lim.st
-
-ifeq (yes,$(build-shared))
-# Generate the header containing the names of all shared libraries.
-# We use a stamp file to avoid unnecessary recompilations.
-before-compile += $(common-objpfx)gnu/lib-names.h
-ifeq ($(soversions.mk-done),t)
-ifndef abi-variants
-lib-names-h-abi = gnu/lib-names.h
-lib-names-stmp-abi = gnu/lib-names.stmp
-else
-lib-names-h-abi = gnu/lib-names-$(default-abi).h
-lib-names-stmp-abi = gnu/lib-names-$(default-abi).stmp
-before-compile += $(common-objpfx)$(lib-names-h-abi)
-common-generated += gnu/lib-names.h
-install-others-nosubdir: $(inst_includedir)/$(lib-names-h-abi)
-$(common-objpfx)gnu/lib-names.h:
-       $(make-target-directory)
-       { \
-        echo '/* This file is automatically generated.';\
-        echo '   It defines macros to allow user program to find the shared'; \
-        echo '   library files which come as part of GNU libc.  */'; \
-        echo '#ifndef __GNU_LIB_NAMES_H'; \
-        echo '#define __GNU_LIB_NAMES_H        1'; \
-        echo ''; \
-        $(if $(abi-includes), \
-         $(foreach h,$(abi-includes), echo '#include <$(h)>';) \
-         echo '';) \
-        $(foreach v,$(abi-variants),\
-        $(if $(abi-$(v)-condition),\
-        echo '#if $(abi-$(v)-condition)'; \
-        echo '# include <gnu/lib-names-$(v).h>'); \
-        $(if $(abi-$(v)-condition),echo '#endif';)) \
-        echo ''; \
-        echo '#endif   /* gnu/lib-names.h */'; \
-       } >  $@
-endif
-$(common-objpfx)$(lib-names-h-abi): $(common-objpfx)$(lib-names-stmp-abi); @:
-$(common-objpfx)$(lib-names-stmp-abi): $(..)scripts/lib-names.awk \
-                                      $(common-objpfx)soversions.i
-       $(make-target-directory)
-       { \
-        $(if $(abi-variants), \
-        echo '/* This file is automatically generated.  */';\
-        echo '#ifndef __GNU_LIB_NAMES_H'; \
-        echo '# error "Never use <$(lib-names-h-abi)> directly; include <gnu/lib-names.h> instead."'; \
-        echo '#endif';, \
-        echo '/* This file is automatically generated.';\
-        echo '   It defines macros to allow user program to find the shared'; \
-        echo '   library files which come as part of GNU libc.  */'; \
-        echo '#ifndef __GNU_LIB_NAMES_H'; \
-        echo '#define __GNU_LIB_NAMES_H        1';) \
-        echo ''; \
-        ($(foreach s,$(all-sonames), echo $(s);)) \
-        | LC_ALL=C $(AWK) -f $(firstword $^) | LC_ALL=C sort; \
-        $(if $(abi-variants),, \
-        echo ''; \
-        echo '#endif   /* gnu/lib-names.h */';) \
-       } >  ${@:stmp=T}
-       $(move-if-change) ${@:stmp=T} ${@:stmp=h}
-       touch $@
-endif
-common-generated += $(lib-names-h-abi) $(lib-names-stmp-abi)
-endif
 \f
 FORCE: