aboutsummaryrefslogtreecommitdiff
path: root/math/Makefile
diff options
context:
space:
mode:
authorPaul E. Murphy <murphyp@linux.vnet.ibm.com>2016-09-08 08:48:08 -0500
committerPaul E. Murphy <murphyp@linux.vnet.ibm.com>2016-09-20 14:37:40 -0500
commit9f9834f582f87cc84bfaa11cff5f98fb661c288d (patch)
tree871f7a56da332d8fadb01fb81eae95a7ed6545c2 /math/Makefile
parent8837917cf17b083ac4178352c740b0bfeada4d7f (diff)
downloadglibc-9f9834f582f87cc84bfaa11cff5f98fb661c288d.tar
glibc-9f9834f582f87cc84bfaa11cff5f98fb661c288d.tar.gz
glibc-9f9834f582f87cc84bfaa11cff5f98fb661c288d.tar.bz2
glibc-9f9834f582f87cc84bfaa11cff5f98fb661c288d.zip
Make ldexpF generic.
This one is a little more tricky since it is built both for libm and libc, and exports multiple aliases. To simplify aliasing, a new macro is introduced which handles aliasing to two symbols. By default, it just applies declare_mgen_alias to both target symbols. Likewise, the makefile is tweaked a little to generate templates for shared files too, and a new rule is added to build m_*.c objects from the objpfx directory. Verified there are no symbol or code changes using a script to diff the *_ldexp* object files on s390x, aarch64, arm, x86_64, and ppc64.
Diffstat (limited to 'math/Makefile')
-rw-r--r--math/Makefile20
1 files changed, 15 insertions, 5 deletions
diff --git a/math/Makefile b/math/Makefile
index fc48960fb0..367f73e227 100644
--- a/math/Makefile
+++ b/math/Makefile
@@ -120,7 +120,8 @@ libm-routines = $(strip $(libm-support) $(libm-compat-calls) \
# In libm-calls (above), list m_foo in place of s_foo for any
# routine that should be compiled separately for its libc and libm versions.
calls = s_isinfF s_isnanF s_finiteF s_copysignF s_modfF s_scalbnF s_frexpF \
- s_ldexpF s_signbitF
+ s_signbitF $(gen-calls)
+gen-calls = s_ldexpF
generated += $(foreach s,.c .S,$(call type-foreach, $(calls:s_%=m_%$(s))))
routines = $(call type-foreach, $(calls))
@@ -272,12 +273,15 @@ extra-objs += libieee.a ieee-math.o
include ../Rules
-generated += $(addsuffix .c,$(call type-foreach,$(gen-libm-calls))) \
+gen-all-calls = $(gen-libm-calls) $(gen-calls)
+
+generated += $(addsuffix .c,$(call type-foreach,$(gen-all-calls))) \
gen-libm-templates.stmp
# Create wrappers in the math build directory.
-$(objpfx)gen-libm-templates.stmp:
- for gcall in $(gen-libm-calls); do \
+$(objpfx)gen-libm-templates.stmp: Makefile
+ $(make-target-directory)
+ for gcall in $(gen-all-calls); do \
func=$${gcall%F*}$${gcall#*F}; \
for type in $(foreach t,$(types),$(t)__$(type-$(t)-suffix)); do \
suff=$${type#*__}; \
@@ -292,7 +296,7 @@ $(objpfx)gen-libm-templates.stmp:
echo > $(@)
# Add dependency to ensure the generator runs prior.
-$(foreach t, $(call type-foreach, $(gen-libm-calls)), \
+$(foreach t, $(call type-foreach, $(gen-all-calls)), \
$(objpfx)$(t).c): $(objpfx)gen-libm-templates.stmp
ifneq (no,$(PERL))
@@ -334,6 +338,12 @@ endef
object-suffixes-left := $(all-object-suffixes)
include $(o-iterator)
+# Likewise, for those generated files shared with libc.
+define o-iterator-doit
+$(objpfx)m_%$o: $(objpfx)s_%.c $(before-compile); $$(compile-command.c)
+endef
+object-suffixes-left := $(all-object-suffixes)
+include $(o-iterator)
# This file defines the default _LIB_VERSION variable that controls
# the error return conventions for the math functions.