aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoland McGrath <roland@hack.frob.com>2014-10-31 15:07:36 -0700
committerRoland McGrath <roland@hack.frob.com>2014-10-31 15:07:36 -0700
commit67c379871ed04c4494f3fb01b012504d6cf63f6e (patch)
tree7f640bb88cab4bc12c9762b27bf378cd8becfa81
parentf3f5d89569fa72a65aa244be05dc61af83caaae8 (diff)
downloadglibc-67c379871ed04c4494f3fb01b012504d6cf63f6e.tar
glibc-67c379871ed04c4494f3fb01b012504d6cf63f6e.tar.gz
glibc-67c379871ed04c4494f3fb01b012504d6cf63f6e.tar.bz2
glibc-67c379871ed04c4494f3fb01b012504d6cf63f6e.zip
BZ#17496: Fix gnu/lib-names.h dependency.
-rw-r--r--ChangeLog7
-rw-r--r--Makerules132
2 files changed, 75 insertions, 64 deletions
diff --git a/ChangeLog b/ChangeLog
index d65c7193ed..2f7e6f62b5 100644
--- 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
diff --git a/Makerules b/Makerules
index 3951bb185b..4f2eec35bc 100644
--- a/Makerules
+++ b/Makerules
@@ -211,6 +211,73 @@ $(objpfx)test-as-const-%.c: $(..)scripts/gen-as-const.awk $(..)Makerules \
mv -f $@T $@
endif
+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
+
+###############################################################################
+# 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
-
+
# 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
FORCE: