abilist-pattern configurability

This patch creates implicit rules to match the abifiles if
abilist-pattern is defined in the architecture Makefile. This allows
machine specific Makefiles to define different abifiles names
(for instance *-le.abilist for powerpc64le).
This commit is contained in:
Adhemerval Zanella 2014-02-04 09:48:47 -02:00
parent dc98b8f5a9
commit 1695c77376
3 changed files with 47 additions and 0 deletions

View File

@ -1,3 +1,14 @@
2014-02-04 Roland McGrath <roland@hack.frob.com>
Adhemerval Zanella <azanella@linux.vnet.ibm.com>
* sysdeps/powerpc/Makefile [$(config-machine) ends with 'le']
(abilist-pattern): New variable, set to %-le.abilist.
* Makerules (abilist-pattern): New variable.
(vpath): Use $(abilist-pattern) in place of %.abilist.
(check-abi-% pattern rule): Likewise.
(check-abi, update-abi): Likewise.
2014-02-04 Eric Wong <normalperson@yhbt.net> 2014-02-04 Eric Wong <normalperson@yhbt.net>
* sysdeps/x86_64/fpu/libm-test-ulps: Update. * sysdeps/x86_64/fpu/libm-test-ulps: Update.

View File

@ -1175,6 +1175,14 @@ ifeq ($(build-shared),yes)
LC_ALL=C $(OBJDUMP) --dynamic-syms $< > $@T LC_ALL=C $(OBJDUMP) --dynamic-syms $< > $@T
mv -f $@T $@ mv -f $@T $@
# A sysdeps/.../Makefile can set abilist-pattern to something like
# %-foo.abilist to look for libc-foo.abilist instead of libc.abilist.
# This makes sense if multiple ABIs can be most cleanly supported by a
# configuration without using separate sysdeps directories for each.
ifdef abilist-pattern
vpath $(abilist-pattern) $(+sysdep_dirs)
endif
vpath %.abilist $(+sysdep_dirs) vpath %.abilist $(+sysdep_dirs)
# The .PRECIOUS rule prevents the files built by an implicit rule whose # The .PRECIOUS rule prevents the files built by an implicit rule whose
@ -1184,18 +1192,42 @@ vpath %.abilist $(+sysdep_dirs)
.PRECIOUS: %.symlist .PRECIOUS: %.symlist
generated += $(extra-libs:=.symlist) generated += $(extra-libs:=.symlist)
ifdef abilist-pattern
check-abi-%: $(common-objpfx)config.make $(abilist-pattern) $(objpfx)%.symlist
$(check-abi-pattern)
check-abi-%: $(common-objpfx)config.make $(abilist-pattern) \
$(common-objpfx)%.symlist
$(check-abi-pattern)
endif
check-abi-%: $(common-objpfx)config.make %.abilist $(objpfx)%.symlist check-abi-%: $(common-objpfx)config.make %.abilist $(objpfx)%.symlist
$(check-abi) $(check-abi)
check-abi-%: $(common-objpfx)config.make %.abilist $(common-objpfx)%.symlist check-abi-%: $(common-objpfx)config.make %.abilist $(common-objpfx)%.symlist
$(check-abi) $(check-abi)
define check-abi-pattern
diff -p -U 0 $(filter $(abilist-pattern),$^) $(filter %.symlist,$^)
endef
define check-abi define check-abi
diff -p -U 0 $(filter %.abilist,$^) $(filter %.symlist,$^) diff -p -U 0 $(filter %.abilist,$^) $(filter %.symlist,$^)
endef endef
ifdef abilist-pattern
update-abi-%: $(objpfx)%.symlist $(abilist-pattern)
$(update-abi-pattern)
update-abi-%: $(common-objpfx)%.symlist $(abilist-pattern)
$(update-abi-pattern)
endif
update-abi-%: $(objpfx)%.symlist %.abilist update-abi-%: $(objpfx)%.symlist %.abilist
$(update-abi) $(update-abi)
update-abi-%: $(common-objpfx)%.symlist %.abilist update-abi-%: $(common-objpfx)%.symlist %.abilist
$(update-abi) $(update-abi)
define update-abi-pattern
@if cmp -s $^ 2> /dev/null; \
then \
echo '+++ $(filter $(abilist-pattern),$^) is unchanged'; \
else cp -f $^; \
echo '*** Now check $(filter $(abilist-pattern),$^) changes for correctness ***'; \
fi
endef
define update-abi define update-abi
@if cmp -s $^ 2> /dev/null; \ @if cmp -s $^ 2> /dev/null; \
then \ then \

View File

@ -27,3 +27,7 @@ ifeq ($(subdir),misc)
sysdep_headers += sys/platform/ppc.h sysdep_headers += sys/platform/ppc.h
tests += test-gettimebase tests += test-gettimebase
endif endif
ifneq (,$(filter %le,$(config-machine)))
abilist-pattern = %-le.abilist
endif