ldbl-128ibm-compat: Add strfmon_l with IEEE long double format
[glibc.git] / sysdeps / ieee754 / ldbl-128ibm-compat / Makefile
blob6ec0739b4c2bd60be752d155de9c1d46f30e73dc
1 ifeq ($(subdir),libio)
2 ldbl-extra-routines += fwscanf \
3 swscanf \
4 wscanf \
5 vswscanf \
6 vwscanf
7 endif
9 ifeq ($(subdir),stdio-common)
10 ldbl-extra-routines += printf_size \
11 asprintf \
12 dprintf \
13 fprintf \
14 printf \
15 snprintf \
16 sprintf \
17 vasprintf \
18 vdprintf \
19 vfprintf \
20 vprintf \
21 vsnprintf \
22 vsprintf \
23 fwprintf \
24 swprintf \
25 wprintf \
26 vfwprintf \
27 vswprintf \
28 vwprintf \
29 fscanf \
30 scanf \
31 sscanf \
32 vfscanf \
33 vscanf \
34 vsscanf \
35 vfwscanf \
36 obprintf \
37 obstack_chk \
38 vobstack_chk
40 # Printing long double values with IEEE binary128 format reuses part
41 # of the internal float128 implementation (__printf_fp, __printf_fphex,
42 # and __float128 variables and union members). Likewise, reading these
43 # values reuses __strtof128_internal. Thus, the compilation of the
44 # following functions, must have -mfloat128 and -mabi=ibmlongdouble
45 # passed to the compiler.
46 CFLAGS-vfprintf-internal.c += -mfloat128 -mabi=ibmlongdouble
47 CFLAGS-vfwprintf-internal.c += -mfloat128 -mabi=ibmlongdouble
48 CFLAGS-vfscanf-internal.c += -mfloat128 -mabi=ibmlongdouble
49 CFLAGS-vfwscanf-internal.c += -mfloat128 -mabi=ibmlongdouble
51 # Basic tests for the implementation of long double with IEEE binary128
52 # format and for the related redirections in installed headers.
53 tests-internal += test-printf-ieee128 test-printf-ibm128
54 CFLAGS-test-printf-ieee128.c += -mfloat128 -mabi=ieeelongdouble -Wno-psabi
55 CFLAGS-test-printf-ibm128.c += -mabi=ibmlongdouble -Wno-psabi
57 tests-internal += test-wprintf-ieee128 test-wprintf-ibm128
58 CFLAGS-test-wprintf-ieee128.c += -mfloat128 -mabi=ieeelongdouble -Wno-psabi
59 CFLAGS-test-wprintf-ibm128.c += -mabi=ibmlongdouble -Wno-psabi
61 tests-internal += test-obstack-ieee128 test-obstack-ibm128
62 CFLAGS-test-obstack-ieee128.c += -mfloat128 -mabi=ieeelongdouble -Wno-psabi
63 CFLAGS-test-obstack-ibm128.c += -mabi=ibmlongdouble -Wno-psabi
65 tests-internal += test-obstack-chk-ieee128 test-obstack-chk-ibm128
66 CFLAGS-test-obstack-chk-ieee128.c += -mfloat128 -mabi=ieeelongdouble -Wno-psabi
67 CFLAGS-test-obstack-chk-ibm128.c += -mabi=ibmlongdouble -Wno-psabi
69 tests-internal += test-scanf-ieee128 test-scanf-ibm128
70 CFLAGS-test-scanf-ieee128.c += -mfloat128 -mabi=ieeelongdouble -Wno-psabi
71 CFLAGS-test-scanf-ibm128.c += -mabi=ibmlongdouble -Wno-psabi
73 $(objpfx)test-scanf-ieee128: gnulib-tests += $(f128-loader-link)
75 tests-internal += test-wscanf-ieee128 test-wscanf-ibm128
76 CFLAGS-test-wscanf-ieee128.c += -mfloat128 -mabi=ieeelongdouble -Wno-psabi
77 CFLAGS-test-wscanf-ibm128.c += -mabi=ibmlongdouble -Wno-psabi
79 $(objpfx)test-wscanf-ieee128: gnulib-tests += $(f128-loader-link)
81 ifeq ($(run-built-tests),yes)
82 tests-special += $(objpfx)test-scanf-ieee128.out
83 tests-special += $(objpfx)test-scanf-ibm128.out
85 tests-special += $(objpfx)test-wscanf-ieee128.out
86 tests-special += $(objpfx)test-wscanf-ibm128.out
87 endif
89 $(objpfx)test-scanf-ieee128.out: \
90 ../sysdeps/ieee754/ldbl-128ibm-compat/test-scanf-ldbl-compat.sh \
91 $(objpfx)test-scanf-ieee128
92 $(SHELL) $^ '$(test-program-prefix)' $@; \
93 $(evaluate-test)
95 $(objpfx)test-scanf-ibm128.out: \
96 ../sysdeps/ieee754/ldbl-128ibm-compat/test-scanf-ldbl-compat.sh \
97 $(objpfx)test-scanf-ibm128
98 $(SHELL) $^ '$(test-program-prefix)' $@; \
99 $(evaluate-test)
101 $(objpfx)test-wscanf-ieee128.out: \
102 ../sysdeps/ieee754/ldbl-128ibm-compat/test-scanf-ldbl-compat.sh \
103 $(objpfx)test-wscanf-ieee128
104 $(SHELL) $^ '$(test-program-prefix)' $@; \
105 $(evaluate-test)
107 $(objpfx)test-wscanf-ibm128.out: \
108 ../sysdeps/ieee754/ldbl-128ibm-compat/test-scanf-ldbl-compat.sh \
109 $(objpfx)test-wscanf-ibm128
110 $(SHELL) $^ '$(test-program-prefix)' $@; \
111 $(evaluate-test)
113 tests-internal += test-printf-size-ieee128 test-printf-size-ibm128
114 CFLAGS-test-printf-size-ieee128.c += -mfloat128 -mabi=ieeelongdouble -Wno-psabi
115 CFLAGS-test-printf-size-ibm128.c += -mabi=ibmlongdouble -Wno-psabi
117 ifeq ($(run-built-tests),yes)
118 tests-special += $(objpfx)test-printf-size-ieee128.out
119 tests-special += $(objpfx)test-printf-size-ibm128.out
120 endif
122 $(objpfx)test-printf-size-ieee128.out: \
123 tst-printfsz-islongdouble.sh $(objpfx)test-printf-size-ieee128
124 $(SHELL) $^ '$(test-program-prefix)' $@; \
125 $(evaluate-test)
127 $(objpfx)test-printf-size-ibm128.out: \
128 tst-printfsz-islongdouble.sh $(objpfx)test-printf-size-ibm128
129 $(SHELL) $^ '$(test-program-prefix)' $@; \
130 $(evaluate-test)
131 endif
133 ifeq ($(subdir),debug)
134 ldbl-extra-routines += asprintf_chk \
135 dprintf_chk \
136 fprintf_chk \
137 printf_chk \
138 snprintf_chk \
139 sprintf_chk \
140 vasprintf_chk \
141 vdprintf_chk \
142 vfprintf_chk \
143 vprintf_chk \
144 vsnprintf_chk \
145 vsprintf_chk \
146 fwprintf_chk \
147 swprintf_chk \
148 wprintf_chk \
149 vfwprintf_chk \
150 vswprintf_chk \
151 vwprintf_chk
153 tests-internal += test-printf-chk-ieee128 test-printf-chk-ibm128
154 CFLAGS-test-printf-chk-ieee128.c += -mfloat128 -mabi=ieeelongdouble -Wno-psabi
155 CFLAGS-test-printf-chk-ibm128.c += -mabi=ibmlongdouble -Wno-psabi
157 tests-internal += test-printf-chk-redir-ieee128 test-printf-chk-redir-ibm128
158 CFLAGS-test-printf-chk-redir-ieee128.c += -mfloat128 -mabi=ieeelongdouble \
159 -Wno-psabi -Wno-unused-result
160 CFLAGS-test-printf-chk-redir-ibm128.c += -mabi=ibmlongdouble -Wno-psabi \
161 -Wno-unused-result
163 tests-internal += test-wprintf-chk-ieee128 test-wprintf-chk-ibm128
164 CFLAGS-test-wprintf-chk-ieee128.c += -mfloat128 -mabi=ieeelongdouble -Wno-psabi
165 CFLAGS-test-wprintf-chk-ibm128.c += -mabi=ibmlongdouble -Wno-psabi
167 tests-internal += test-wprintf-chk-redir-ieee128 test-wprintf-chk-redir-ibm128
168 CFLAGS-test-wprintf-chk-redir-ieee128.c += -mfloat128 -mabi=ieeelongdouble \
169 -Wno-psabi -Wno-unused-result
170 CFLAGS-test-wprintf-chk-redir-ibm128.c += -mabi=ibmlongdouble -Wno-psabi \
171 -Wno-unused-result
172 endif
174 ifeq ($(subdir),argp)
175 ldbl-extra-routines += argp-help
177 $(objpfx)tst-ieee128-argp.c: tst-ldbl-argp.c
178 cp $< $@
180 $(objpfx)tst-ibm128-argp.c: tst-ldbl-argp.c
181 cp $< $@
183 tests-internal += tst-ieee128-argp tst-ibm128-argp
184 CFLAGS-tst-ieee128-argp.c += -mfloat128 -mabi=ieeelongdouble -Wno-psabi
185 CFLAGS-tst-ibm128-argp.c += -mabi=ibmlongdouble -Wno-psabi
186 endif
188 ifeq ($(subdir),misc)
189 ldbl-extra-routines += err \
190 error \
191 syslog
193 tests-internal += tst-ibm128-warn tst-ieee128-warn
194 tests-internal += tst-ibm128-error tst-ieee128-error
196 $(objpfx)tst-ibm128-%.c: tst-ldbl-%.c
197 cp $< $@
199 $(objpfx)tst-ieee128-%.c: tst-ldbl-%.c
200 cp $< $@
202 CFLAGS-tst-ibm128-warn.c += -mabi=ibmlongdouble -Wno-psabi
203 CFLAGS-tst-ibm128-error.c += -mabi=ibmlongdouble -Wno-psabi
205 CFLAGS-tst-ieee128-warn.c += -mfloat128 -mabi=ieeelongdouble -Wno-psabi
206 CFLAGS-tst-ieee128-error.c += -mfloat128 -mabi=ieeelongdouble -Wno-psabi
208 tests-container += test-syslog-ieee128 test-syslog-ibm128
209 CFLAGS-test-syslog-ieee128.c += -mfloat128 -mabi=ieeelongdouble -Wno-psabi
210 CFLAGS-test-syslog-ibm128.c += -mabi=ibmlongdouble -Wno-psabi
212 tests-container += test-syslog-chk-ieee128 test-syslog-chk-ibm128
213 CFLAGS-test-syslog-chk-ieee128.c += -mfloat128 -mabi=ieeelongdouble -Wno-psabi
214 CFLAGS-test-syslog-chk-ibm128.c += -mabi=ibmlongdouble -Wno-psabi
215 endif
217 ifeq ($(subdir),stdlib)
218 ldbl-extra-routines += strfmon strfmon_l
220 # Printing long double values with IEEE binary128 format reuses part
221 # of the internal float128 implementation (__printf_fp, __printf_fphex,
222 # and __float128 variables and union members). Thus, the compilation of
223 # the following files, must have -mfloat128 passed to the compiler.
224 # Also, guarantee that they are compiled in IBM long double mode.
225 CFLAGS-strfmon.c += -mfloat128 -mabi=ibmlongdouble
226 CFLAGS-strfmon_l.c += -mfloat128 -mabi=ibmlongdouble
227 endif
229 # Add IEEE binary128 files as make targets.
230 routines += $(foreach r,$(ldbl-extra-routines),ieee128-$(r))
232 # On powerpc64le, the routines responsible for converting between long
233 # double and string (e.g.: printf, scanf, strtold, strfroml) default to
234 # IBM long double mode. When support for TS 18661-3 was added, several
235 # internal functions were modified so that they could also handle
236 # floating-point variables with IEEE binary128 format, but as an
237 # additional type, _Float128.
239 # The following rule ensures that the string conversion routines will
240 # always be built in IBM long double mode, with additional support for
241 # IEEE binary128, through the use of -mabi=ibmlongdouble and -mfloat128.
242 ldbl-ibm128-files := $(objpfx)test-%-ibm128^ \
243 $(foreach r,$(ldbl-extra-routines),$(objpfx)$(r)^) \
244 $(foreach r,$(ldbl-extra-routines),$(objpfx)$(r)-internal^)
245 obj-suf-foreach = $(foreach suf,$(all-object-suffixes),$(subst ^,$(suf),$(1)))
246 $(call obj-suf-foreach,$(ldbl-ibm128-files)): \
247 sysdep-CFLAGS += -mabi=ibmlongdouble