diff options
author | Roland McGrath <roland@gnu.org> | 2002-03-14 23:33:10 +0000 |
---|---|---|
committer | Roland McGrath <roland@gnu.org> | 2002-03-14 23:33:10 +0000 |
commit | f3787738d8dc97223747038fe431d3ed2713cfc9 (patch) | |
tree | c79cc716f60ab14e1e87ecd73918071b61c9babd /Makeconfig | |
parent | 951641e7a3ca2287b10da9ab8f916cc88a5c3b22 (diff) | |
download | glibc-f3787738d8dc97223747038fe431d3ed2713cfc9.tar.gz |
* Makerules ($(common-objpfx)Versions.v.i): Depend on abi-versions.h.
* Makeconfig (%.v.i, %.v): New implicit rules.
(preprocess-versions): Variable removed.
($(common-objpfx)shlib-versions.v.i): New target giving just the
shlib-versions input files as dependencies.
($(common-objpfx)soversions.i): Depend on that instead of the input
files. Use it as input instead of using a pipeline.
(postclean-generated): Append soversions.i, shlib-versions.v, and
shlib-versions.v.i here.
* Makerules ($(common-objpfx)Versions.def.v.i): New target giving just
the Versions.def input files as dependencies.
($(common-objpfx)Versions.v.i): Likewise for Versions files.
($(common-objpfx)Versions.all): Depend on that instead of the input
files. Use it as input instead of using a pipeline.
($(common-objpfx)sysd-versions): Likewise with Versions.v.i.
(postclean-generated): Append those .v and .v.i files here.
Diffstat (limited to 'Makeconfig')
-rw-r--r-- | Makeconfig | 72 |
1 files changed, 40 insertions, 32 deletions
diff --git a/Makeconfig b/Makeconfig index ee3a880b6c..d7c7172db6 100644 --- a/Makeconfig +++ b/Makeconfig @@ -1,4 +1,4 @@ -# Copyright (C) 1991-2000, 2001 Free Software Foundation, Inc. +# Copyright (C) 1991-2000,01,02 Free Software Foundation, Inc. # This file is part of the GNU C Library. # The GNU C Library is free software; you can redistribute it and/or @@ -731,15 +731,24 @@ endif ifeq (yes, $(build-shared)) -# Commands to put in a pipeline to preprocess a file with # comments -# %ifdef et al based on config.h settings or other %include'd files. -define preprocess-versions -sed '/^[ ]*#/d;s/^[ ]*%/#/' \ -| $(CC) -E -undef -I$(common-objdir) -I$(..)include \ - -include $(common-objpfx)config.h \ - -DASSEMBLER -x assembler-with-cpp - \ -| sed '/^[ ]*#/d;/^[ ]*$$/d' -endef +# This is a pair of implicit rules to preprocess a file with # comments, +# %ifdef et al, based on config.h settings or other %include'd files. +# We use chained rules instead of a pipeline here so that we can properly +# check the exit status of cpp rather than using its bad output when there +# is a preprocessing error. Another rule should depend on the output file +# `FOO.v', and along with that `FOO.v.i' should be given dependencies +# listing both its input files, and any header files that it may reference +# (but no commands). +%.v.i: $(common-objpfx)config.h + sed '/^[ ]*#/d;s/^[ ]*%/#/' $(filter-out FORCE %.h,$^) \ + | $(CC) -E -undef -I$(common-objdir) -I$(..)include \ + -include $(common-objpfx)config.h \ + -DASSEMBLER -x assembler-with-cpp - \ + > $@T + mv -f $@T $@ +%.v: %.v.i + sed '/^[ ]*#/d;/^[ ]*$$/d' $< > $@T + mv -f $@T $@ # Process the shlib-versions file, which tells us what shared library # version numbers to use when we install shared objects on this system. @@ -747,28 +756,26 @@ endef ifeq ($(sysd-sorted-done),t) -include $(common-objpfx)soversions.mk ifndef avoid-generated -$(common-objpfx)soversions.i: $(..)shlib-versions $(..)Makeconfig \ - $(wildcard $(patsubst %, $(..)%/shlib-versions,\ - $(add-ons) \ - $(subdirs))) \ - $(common-objpfx)config.make - cat $(filter-out $(..)Makeconfig $(common-objpfx)config.make,$^) \ - | $(preprocess-versions) \ - | while read conf version setname; do \ - test -n "$$version" && \ - test `expr '$(config-machine)-$(config-vendor)-$(config-os)' \ - : "$$conf"` != 0 || continue; \ - if test "x$$version" = xDEFAULT; then \ - default_setname="$$setname"; \ - else \ - lib=`echo $$version | sed 's/=.*$$//'`; \ - if eval test -z "\$${versioned_$${lib}}"; then \ - eval versioned_$${lib}=yes; \ - number=`echo $$version | sed "s/^.*=//"`; \ - echo $$lib $$number $${setname:-$${default_setname}}; \ - fi; \ +$(common-objpfx)shlib-versions.v.i: \ + $(..)shlib-versions $(wildcard $(patsubst %, $(..)%/shlib-versions,\ + $(add-ons) \ + $(subdirs))) +$(common-objpfx)soversions.i: $(common-objpfx)shlib-versions.v + while read conf version setname; do \ + test -n "$$version" && \ + test `expr '$(config-machine)-$(config-vendor)-$(config-os)' \ + : "$$conf"` != 0 || continue; \ + if test "x$$version" = xDEFAULT; then \ + default_setname="$$setname"; \ + else \ + lib=`echo $$version | sed 's/=.*$$//'`; \ + if eval test -z "\$${versioned_$${lib}}"; then \ + eval versioned_$${lib}=yes; \ + number=`echo $$version | sed "s/^.*=//"`; \ + echo $$lib $$number $${setname:-$${default_setname}}; \ fi; \ - done > $@T; exit 0 + fi; \ + done < $< > $@T; exit 0 mv -f $@T $@ $(common-objpfx)soversions.mk: $(common-objpfx)soversions.i (while read lib number setname; do \ @@ -784,7 +791,8 @@ $(common-objpfx)soversions.mk: $(common-objpfx)soversions.i endif endif -postclean-generated += soversions.mk +postclean-generated += soversions.mk soversions.i \ + shlib-versions.v shlib-versions.v.i # Generate the header containing the names of all shared libraries. # We use a stamp file to avoid uncessary recompilations. |