]>
Commit | Line | Data |
---|---|---|
2b778ceb | 1 | # Copyright (C) 1991-2021 Free Software Foundation, Inc. |
28f540f4 RM |
2 | # This file is part of the GNU C Library. |
3 | ||
4 | # The GNU C Library is free software; you can redistribute it and/or | |
41bdb6e2 AJ |
5 | # modify it under the terms of the GNU Lesser General Public |
6 | # License as published by the Free Software Foundation; either | |
7 | # version 2.1 of the License, or (at your option) any later version. | |
28f540f4 RM |
8 | |
9 | # The GNU C Library is distributed in the hope that it will be useful, | |
10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
41bdb6e2 | 12 | # Lesser General Public License for more details. |
28f540f4 | 13 | |
41bdb6e2 | 14 | # You should have received a copy of the GNU Lesser General Public |
59ba27a6 | 15 | # License along with the GNU C Library; if not, see |
5a82c748 | 16 | # <https://www.gnu.org/licenses/>. |
28f540f4 RM |
17 | |
18 | # | |
19 | # Makefile for stdlib routines | |
20 | # | |
21 | subdir := stdlib | |
22 | ||
a5f891ac JM |
23 | include ../Makeconfig |
24 | ||
f62c8abc | 25 | headers := stdlib.h bits/stdlib.h bits/stdlib-ldbl.h bits/stdlib-float.h \ |
c6251f03 | 26 | monetary.h bits/monetary-ldbl.h \ |
a27a4f47 | 27 | inttypes.h stdint.h bits/wordsize.h bits/timesize.h \ |
974393ea | 28 | errno.h sys/errno.h bits/errno.h bits/types/error_t.h \ |
e27f41ba | 29 | ucontext.h sys/ucontext.h bits/indirect-return.h \ |
cc7834d6 | 30 | alloca.h fmtmsg.h \ |
17680430 | 31 | bits/stdlib-bsearch.h sys/random.h bits/stdint-intn.h \ |
d51f99ce | 32 | bits/stdint-uintn.h bits/time64.h \ |
28f540f4 RM |
33 | |
34 | routines := \ | |
7cc27f44 | 35 | atof atoi atol atoll \ |
28f540f4 RM |
36 | abort \ |
37 | bsearch qsort msort \ | |
f65fd747 | 38 | getenv putenv setenv secure-getenv \ |
c08bc50a | 39 | exit on_exit atexit cxa_atexit cxa_finalize old_atexit \ |
ba384f6e | 40 | quick_exit at_quick_exit cxa_at_quick_exit cxa_thread_atexit_impl \ |
59dd8641 RM |
41 | abs labs llabs \ |
42 | div ldiv lldiv \ | |
28f540f4 | 43 | mblen mbstowcs mbtowc wcstombs wctomb \ |
a18f587d | 44 | random random_r rand rand_r \ |
60478656 RM |
45 | drand48 erand48 lrand48 nrand48 mrand48 jrand48 \ |
46 | srand48 seed48 lcong48 \ | |
47 | drand48_r erand48_r lrand48_r nrand48_r mrand48_r jrand48_r \ | |
48 | srand48_r seed48_r lcong48_r \ | |
92dcaa3e | 49 | drand48-iter getrandom getentropy \ |
6962682f | 50 | strfromf strfromd strfroml \ |
2f6d1f1b | 51 | strtol strtoul strtoll strtoull \ |
0501d603 | 52 | strtol_l strtoul_l strtoll_l strtoull_l \ |
28f540f4 | 53 | strtof strtod strtold \ |
0501d603 | 54 | strtof_l strtod_l strtold_l \ |
e02cabec | 55 | strtof_nan strtod_nan strtold_nan \ |
fa0bc87c | 56 | system canonicalize \ |
857fa1b8 | 57 | a64l l64a \ |
b9b49b44 | 58 | rpmatch strfmon strfmon_l getsubopt xpg_basename fmtmsg \ |
af69217f | 59 | getcontext setcontext makecontext swapcontext |
72f10127 | 60 | aux = grouping groupingwc tens_in_limb |
28f540f4 | 61 | |
c08bc50a UD |
62 | # These routines will be omitted from the libc shared object. |
63 | # Instead the static object files will be included in a special archive | |
64 | # linked against when the shared library will be used. | |
610e67ed | 65 | static-only-routines = atexit at_quick_exit |
c08bc50a | 66 | |
9f6c1fc4 | 67 | test-srcs := tst-fmtmsg |
3ca97e8f UD |
68 | tests := tst-strtol tst-strtod testmb testrand testsort testdiv \ |
69 | test-canon test-canon2 tst-strtoll tst-environ \ | |
f17c2202 | 70 | tst-xpg-basename tst-random tst-random2 tst-bsearch \ |
7c3018f9 | 71 | tst-limits tst-rand48 bug-strtod tst-setcontext \ |
4eda036f | 72 | tst-setcontext2 test-a64l tst-qsort testmb2 \ |
7c3018f9 ZW |
73 | bug-strtod2 tst-atof1 tst-atof2 tst-strtod2 \ |
74 | tst-rand48-2 tst-makecontext tst-strtod5 \ | |
2e807f29 | 75 | tst-qsort2 tst-makecontext2 tst-strtod6 tst-unsetenv1 \ |
84b3fd84 | 76 | tst-makecontext3 bug-getcontext bug-fmtmsg1 \ |
2a27fd6d | 77 | tst-secure-getenv tst-strtod-overflow tst-strtod-round \ |
7c3018f9 | 78 | tst-tininess tst-strtod-underflow tst-setcontext3 \ |
47dd3543 | 79 | tst-strtol-locale tst-strtod-nan-locale tst-strfmon_l \ |
5b17fd0d | 80 | tst-quick_exit tst-thread-quick_exit tst-width \ |
7c3018f9 | 81 | tst-width-stdint tst-strfrom tst-strfrom-locale \ |
5f3b183d | 82 | tst-getrandom tst-atexit tst-at_quick_exit \ |
26e70aec | 83 | tst-cxa_atexit tst-on_exit test-atexit-race \ |
16adc58e VB |
84 | test-at_quick_exit-race test-cxa_atexit-race \ |
85 | test-cxa_atexit-race2 \ | |
8a5df95f | 86 | test-on_exit-race test-dlclose-exit-race \ |
8516ad2d | 87 | tst-makecontext-align test-bz22786 tst-strtod-nan-sign \ |
375a4844 L |
88 | tst-swapcontext1 tst-setcontext4 tst-setcontext5 \ |
89 | tst-setcontext6 tst-setcontext7 tst-setcontext8 \ | |
c1760eaf MS |
90 | tst-setcontext9 tst-bz20544 tst-canon-bz26341 \ |
91 | tst-realpath | |
5f3b183d | 92 | |
7c3018f9 ZW |
93 | tests-internal := tst-strtod1i tst-strtod3 tst-strtod4 tst-strtod5i \ |
94 | tst-tls-atexit tst-tls-atexit-nodelete | |
95 | tests-static := tst-secure-getenv | |
4eda036f | 96 | tests-container := tst-system |
7c3018f9 | 97 | |
41389c40 SP |
98 | ifeq ($(build-hardcoded-path-in-tests),yes) |
99 | tests += tst-empty-env | |
100 | endif | |
7c3018f9 | 101 | |
26e70aec PP |
102 | LDLIBS-test-atexit-race = $(shared-thread-library) |
103 | LDLIBS-test-at_quick_exit-race = $(shared-thread-library) | |
104 | LDLIBS-test-cxa_atexit-race = $(shared-thread-library) | |
16adc58e | 105 | LDLIBS-test-cxa_atexit-race2 = $(shared-thread-library) |
26e70aec | 106 | LDLIBS-test-on_exit-race = $(shared-thread-library) |
961d7cff | 107 | LDLIBS-tst-canon-bz26341 = $(shared-thread-library) |
26e70aec | 108 | |
6f1c7010 | 109 | LDLIBS-test-dlclose-exit-race = $(shared-thread-library) |
e5e4d7cc PP |
110 | LDFLAGS-test-dlclose-exit-race = $(LDFLAGS-rdynamic) |
111 | LDLIBS-test-dlclose-exit-race-helper.so = $(libsupport) $(shared-thread-library) | |
112 | ||
47dd3543 CD |
113 | ifeq ($(have-cxx-thread_local),yes) |
114 | CFLAGS-tst-quick_exit.o = -std=c++11 | |
115 | LDLIBS-tst-quick_exit = -lstdc++ | |
116 | CFLAGS-tst-thread-quick_exit.o = -std=c++11 | |
117 | LDLIBS-tst-thread-quick_exit = -lstdc++ | |
118 | $(objpfx)tst-thread-quick_exit: $(shared-thread-library) | |
119 | else | |
120 | tests-unsupported += tst-quick_exit tst-thread-quick_exit | |
121 | endif | |
28f540f4 | 122 | |
e5e4d7cc | 123 | modules-names = tst-tls-atexit-lib test-dlclose-exit-race-helper |
b4bcb3ae | 124 | extra-test-objs += $(addsuffix .os, $(modules-names)) |
ba384f6e | 125 | |
574b268e UD |
126 | ifeq ($(build-shared),yes) |
127 | tests += tst-putenv | |
128 | endif | |
3ef21326 RM |
129 | |
130 | # Several mpn functions from GNU MP are used by the strtod function. | |
0e3426bb | 131 | mpn-routines := inlines add_n addmul_1 cmp divmod_1 divrem udiv_qrnnd \ |
b5a08c5a | 132 | lshift rshift mod_1 mul mul_1 mul_n sub_n submul_1 |
3ef21326 RM |
133 | mpn-headers = longlong.h gmp.h gmp-impl.h gmp-mparam.h asm-syntax.h |
134 | ||
135 | routines := $(strip $(routines) $(mpn-routines)) \ | |
136 | dbl2mpn ldbl2mpn \ | |
137 | mpn2flt mpn2dbl mpn2ldbl | |
9c7ff11a | 138 | aux += fpioconst mp_clz_tab |
574b268e UD |
139 | |
140 | tests-extras += tst-putenvmod | |
376e973a | 141 | extra-test-objs += tst-putenvmod.os |
3ef21326 | 142 | |
574b268e | 143 | generated += isomac isomac.out tst-putenvmod.so |
3ef21326 | 144 | |
36975e8e L |
145 | CFLAGS-bsearch.c += $(uses-callbacks) |
146 | CFLAGS-msort.c += $(uses-callbacks) | |
147 | CFLAGS-qsort.c += $(uses-callbacks) | |
148 | CFLAGS-system.c += -fexceptions | |
6bbc689e | 149 | CFLAGS-system.os = -fomit-frame-pointer |
36975e8e | 150 | CFLAGS-fmtmsg.c += -fexceptions |
dff14448 | 151 | |
36975e8e L |
152 | CFLAGS-strfmon.c += $(libio-mtsafe) |
153 | CFLAGS-strfmon_l.c += $(libio-mtsafe) | |
917e27b8 | 154 | |
6962682f GG |
155 | # The strfrom class of functions call __printf_fp in order to convert the |
156 | # floating-point value to characters. This requires the value of IO_MTSAFE_IO. | |
36975e8e L |
157 | CFLAGS-strfromd.c += $(libio-mtsafe) |
158 | CFLAGS-strfromf.c += $(libio-mtsafe) | |
159 | CFLAGS-strfroml.c += $(libio-mtsafe) | |
6962682f | 160 | |
36975e8e L |
161 | CFLAGS-tst-bsearch.c += $(stack-align-test-flags) |
162 | CFLAGS-tst-qsort.c += $(stack-align-test-flags) | |
e535ce25 | 163 | CFLAGS-tst-makecontext.c += -funwind-tables |
36975e8e | 164 | CFLAGS-tst-makecontext2.c += $(stack-align-test-flags) |
a4db3439 | 165 | |
f214606a JM |
166 | # Run a test on the header files we use. |
167 | tests-special += $(objpfx)isomac.out | |
168 | ||
169 | ifeq ($(run-built-tests),yes) | |
170 | tests-special += $(objpfx)tst-fmtmsg.out | |
171 | endif | |
172 | ||
28f540f4 | 173 | include ../Rules |
3ef21326 | 174 | |
f881f6ff | 175 | ifeq ($(run-built-tests),yes) |
f5eee5c7 | 176 | LOCALES := cs_CZ.UTF-8 de_DE.UTF-8 en_US.ISO-8859-1 tr_TR.UTF-8 \ |
bd80111e | 177 | tr_TR.ISO-8859-9 tg_TJ.UTF-8 hr_HR.UTF-8 hi_IN.UTF-8 \ |
985fc132 | 178 | el_GR.UTF-8 |
f881f6ff AS |
179 | include ../gen-locales.mk |
180 | ||
181 | $(objpfx)bug-strtod2.out: $(gen-locales) | |
182 | $(objpfx)testmb2.out: $(gen-locales) | |
183 | $(objpfx)tst-strtod.out: $(gen-locales) | |
e4890300 | 184 | $(objpfx)tst-strtod1i.out: $(gen-locales) |
f881f6ff AS |
185 | $(objpfx)tst-strtod3.out: $(gen-locales) |
186 | $(objpfx)tst-strtod4.out: $(gen-locales) | |
187 | $(objpfx)tst-strtod5.out: $(gen-locales) | |
e4890300 | 188 | $(objpfx)tst-strtod5i.out: $(gen-locales) |
f5eee5c7 | 189 | $(objpfx)tst-strtol-locale.out: $(gen-locales) |
a7f0c5ae | 190 | $(objpfx)tst-strtod-nan-locale.out: $(gen-locales) |
985fc132 | 191 | $(objpfx)tst-strfmon_l.out: $(gen-locales) |
cd74aa4d RS |
192 | $(objpfx)tst-strfrom.out: $(gen-locales) |
193 | $(objpfx)tst-strfrom-locale.out: $(gen-locales) | |
e5e4d7cc | 194 | $(objpfx)test-dlclose-exit-race.out: $(objpfx)test-dlclose-exit-race-helper.so |
f881f6ff AS |
195 | endif |
196 | ||
e25054c4 | 197 | # Testdir has to be named stdlib and needs to be writable |
9f835f5f | 198 | test-canon-ARGS = --test-dir=${common-objpfx}stdlib |
e25054c4 | 199 | |
400aa020 | 200 | bug-fmtmsg1-ENV = SEV_LEVEL=foo,11,newsev |
98d3e993 | 201 | |
ca41028b | 202 | $(objpfx)isomac.out: $(objpfx)isomac |
7eff7a05 | 203 | $(dir $<)$(notdir $<) '$(CC)' \ |
d5afb385 | 204 | '-I../include $(+sysdep-includes) $(sysincludes) -I..' > $@; \ |
f0881698 | 205 | $(evaluate-test) |
1eb687d0 | 206 | |
e69924e3 | 207 | isomac-CFLAGS = -O |
1eb687d0 UD |
208 | $(objpfx)isomac: isomac.c |
209 | $(native-compile) | |
9f6c1fc4 UD |
210 | |
211 | $(objpfx)tst-fmtmsg.out: tst-fmtmsg.sh $(objpfx)tst-fmtmsg | |
8540f6d2 JM |
212 | $(SHELL) $< $(common-objpfx) '$(test-program-prefix-before-env)' \ |
213 | '$(run-program-env)' '$(test-program-prefix-after-env)' \ | |
8f8052c2 | 214 | $(common-objpfx)stdlib/; \ |
f0881698 | 215 | $(evaluate-test) |
574b268e UD |
216 | |
217 | $(objpfx)tst-putenv: $(objpfx)tst-putenvmod.so | |
8b196ac4 | 218 | LDFLAGS-tst-putenv = -Wl,--no-as-needed |
574b268e | 219 | |
fab7ce3f | 220 | $(objpfx)tst-putenvmod.so: $(objpfx)tst-putenvmod.os $(link-libc-deps) |
574b268e | 221 | $(build-module) |
9cd47470 | 222 | libof-tst-putenvmod = extramodules |
75ea32ab | 223 | |
79520f4b | 224 | $(objpfx)bug-getcontext: $(libm) |
45f39d45 | 225 | $(objpfx)bug-strtod2: $(libm) |
79520f4b JM |
226 | $(objpfx)tst-strtod-round: $(libm) |
227 | $(objpfx)tst-tininess: $(libm) | |
228 | $(objpfx)tst-strtod-underflow: $(libm) | |
229 | $(objpfx)tst-strtod6: $(libm) | |
a7f0c5ae | 230 | $(objpfx)tst-strtod-nan-locale: $(libm) |
b12c1e79 | 231 | $(objpfx)tst-strtod-nan-sign: $(libm) |
ba384f6e SP |
232 | |
233 | tst-tls-atexit-lib.so-no-z-defs = yes | |
e5e4d7cc | 234 | test-dlclose-exit-race-helper.so-no-z-defs = yes |
ba384f6e | 235 | |
6f1c7010 | 236 | $(objpfx)tst-tls-atexit: $(shared-thread-library) |
ba384f6e | 237 | $(objpfx)tst-tls-atexit.out: $(objpfx)tst-tls-atexit-lib.so |
c92d40c0 | 238 | |
6f1c7010 | 239 | $(objpfx)tst-tls-atexit-nodelete: $(shared-thread-library) |
90b37cac SP |
240 | $(objpfx)tst-tls-atexit-nodelete.out: $(objpfx)tst-tls-atexit-lib.so |
241 | ||
c92d40c0 CD |
242 | $(objpfx)tst-setcontext3.out: tst-setcontext3.sh $(objpfx)tst-setcontext3 |
243 | $(SHELL) $< $(common-objpfx) '$(test-program-prefix-before-env)' \ | |
244 | '$(run-program-env)' '$(test-program-prefix-after-env)' \ | |
8f8052c2 | 245 | $(common-objpfx)stdlib/; \ |
c92d40c0 | 246 | $(evaluate-test) |