]> git.ipfire.org Git - thirdparty/glibc.git/blame - sysdeps/x86_64/Makefile
x86: Add support to build strcmp/strlen/strchr with explicit ISA level
[thirdparty/glibc.git] / sysdeps / x86_64 / Makefile
CommitLineData
c9cf6dde
AJ
1# The i387 `long double' is a distinct type we support.
2long-double-fcts = yes
3
4ifeq ($(subdir),csu)
b0ecde3a 5gen-as-const-headers += link-defines.sym
c9cf6dde 6endif
6dbdc56c
AJ
7
8ifeq ($(subdir),gmon)
9sysdep_routines += _mcount
97f71127
L
10# We cannot compile _mcount.S with -pg because that would create
11# recursive calls when ENTRY is used. Just copy the normal static
12# object.
87a07a43 13sysdep_noprof += _mcount
6dbdc56c 14endif
bfe6f5fa
UD
15
16ifeq ($(subdir),string)
c69f960b
NG
17sysdep_routines += \
18 strcasecmp_l-nonascii \
19 strcspn-generic \
20 strncase_l-nonascii \
21 strpbrk-generic \
22 strspn-generic \
23 varshift \
24# sysdep_routines
42e08a54 25gen-as-const-headers += locale-defines.sym
a6e7c374
L
26tests += \
27 tst-rsi-strlen
bfe6f5fa 28endif
c9ff0187
UD
29
30ifeq ($(subdir),elf)
38d22f9f
L
31# There is no good reason to use MMX in x86-64 ld.so with GCC.
32CFLAGS-.os += $(if $(filter $(@F),$(patsubst %,%.os,$(all-rtld-routines))),\
33 -mno-mmx)
34
031e519c 35sysdep-dl-routines += tlsdesc dl-tlsdesc tls_get_addr
16d2ea4c 36
f3dcae82
L
37tests += ifuncmain8
38modules-names += ifuncmod8
39
40$(objpfx)ifuncmain8: $(objpfx)ifuncmod8.so
41
df8a552f
L
42tests += tst-quad1 tst-quad2
43modules-names += tst-quadmod1 tst-quadmod2
44
45$(objpfx)tst-quad1: $(objpfx)tst-quadmod1.so
46$(objpfx)tst-quad2: $(objpfx)tst-quadmod2.so
47
48quad-pie-test += tst-quad1pie tst-quad2pie
49tests += $(quad-pie-test)
50tests-pie += $(quad-pie-test)
b4bcb3ae
AS
51test-extras += tst-quadmod1pie tst-quadmod2pie
52extra-test-objs += tst-quadmod1pie.o tst-quadmod2pie.o
df8a552f
L
53
54$(objpfx)tst-quad1pie: $(objpfx)tst-quadmod1pie.o
55$(objpfx)tst-quad2pie: $(objpfx)tst-quadmod2pie.o
73709b26 56
fcd94237
NA
57CFLAGS-tst-quad1pie.c = $(PIE-ccflag)
58CFLAGS-tst-quad2pie.c = $(PIE-ccflag)
59
45ff3463
L
60tests += tst-x86_64-1
61modules-names += x86_64/tst-x86_64mod-1
1fe00d3e 62extra-test-objs += tst-x86_64mod-1.o
45ff3463 63LDFLAGS-tst-x86_64mod-1.so = -Wl,-soname,tst-x86_64mod-1.so
b52b0d79
L
64ifneq (no,$(have-tunables))
65# Test the state size for XSAVE when XSAVEC is disabled.
107e6a3c 66tst-x86_64-1-ENV = GLIBC_TUNABLES=glibc.cpu.hwcaps=-XSAVEC
b52b0d79 67endif
45ff3463
L
68
69$(objpfx)tst-x86_64-1: $(objpfx)x86_64/tst-x86_64mod-1.so
70
4d916f0f
L
71ifneq (no,$(have-tunables))
72tests += tst-platform-1
73modules-names += tst-platformmod-1 x86_64/tst-platformmod-2
1fe00d3e 74extra-test-objs += tst-platformmod-2.o
4d916f0f
L
75CFLAGS-tst-platform-1.c = -mno-avx
76CFLAGS-tst-platformmod-1.c = -mno-avx
77CFLAGS-tst-platformmod-2.c = -mno-avx
78LDFLAGS-tst-platformmod-2.so = -Wl,-soname,tst-platformmod-2.so
79$(objpfx)tst-platform-1: $(objpfx)tst-platformmod-1.so
80$(objpfx)tst-platform-1.out: $(objpfx)x86_64/tst-platformmod-2.so
107e6a3c 81# Turn off AVX512F and AVX2 so that GLRO(dl_platform) is
4d916f0f
L
82# always set to x86_64.
83tst-platform-1-ENV = LD_PRELOAD=$(objpfx)\$$PLATFORM/tst-platformmod-2.so \
107e6a3c 84 GLIBC_TUNABLES=glibc.cpu.hwcaps=-AVX512F,-AVX2
4d916f0f
L
85endif
86
3403a17f
L
87tests += tst-audit3 tst-audit4 tst-audit5 tst-audit6 tst-audit7 \
88 tst-audit10 tst-sse tst-avx tst-avx512
89test-extras += tst-audit4-aux tst-audit10-aux \
90 tst-avx-aux tst-avx512-aux
91extra-test-objs += tst-audit4-aux.o tst-audit10-aux.o \
92 tst-avx-aux.o tst-avx512-aux.o
fa19d5c4 93
19f1a11e 94ifeq ($(have-insert),yes)
fa19d5c4
PJ
95tests += tst-split-dynreloc
96LDFLAGS-tst-split-dynreloc = -Wl,-T,$(..)sysdeps/x86_64/tst-split-dynreloc.lds
97tst-split-dynreloc-ENV = LD_BIND_NOW=1
19f1a11e 98endif
fa19d5c4 99
73709b26
JM
100modules-names += tst-auditmod3a tst-auditmod3b \
101 tst-auditmod4a tst-auditmod4b \
102 tst-auditmod5a tst-auditmod5b \
103 tst-auditmod6a tst-auditmod6b tst-auditmod6c \
2d63a517 104 tst-auditmod7a tst-auditmod7b \
3403a17f
L
105 tst-auditmod10a tst-auditmod10b \
106 tst-ssemod tst-avxmod tst-avx512mod
73709b26
JM
107
108$(objpfx)tst-audit3: $(objpfx)tst-auditmod3a.so
109$(objpfx)tst-audit3.out: $(objpfx)tst-auditmod3b.so
110tst-audit3-ENV = LD_AUDIT=$(objpfx)tst-auditmod3b.so
111
3c0f7407 112$(objpfx)tst-audit4: $(objpfx)tst-audit4-aux.o $(objpfx)tst-auditmod4a.so
73709b26
JM
113$(objpfx)tst-audit4.out: $(objpfx)tst-auditmod4b.so
114tst-audit4-ENV = LD_AUDIT=$(objpfx)tst-auditmod4b.so
115
116$(objpfx)tst-audit5: $(objpfx)tst-auditmod5a.so
117$(objpfx)tst-audit5.out: $(objpfx)tst-auditmod5b.so
118tst-audit5-ENV = LD_AUDIT=$(objpfx)tst-auditmod5b.so
119
120$(objpfx)tst-audit6: $(objpfx)tst-auditmod6a.so
121$(objpfx)tst-audit6.out: $(objpfx)tst-auditmod6b.so \
122 $(objpfx)tst-auditmod6c.so
123tst-audit6-ENV = LD_AUDIT=$(objpfx)tst-auditmod6b.so:$(objpfx)tst-auditmod6c.so
124
125$(objpfx)tst-audit7: $(objpfx)tst-auditmod7a.so
126$(objpfx)tst-audit7.out: $(objpfx)tst-auditmod7b.so
127tst-audit7-ENV = LD_AUDIT=$(objpfx)tst-auditmod7b.so
128
3c0f7407 129$(objpfx)tst-audit10: $(objpfx)tst-audit10-aux.o $(objpfx)tst-auditmod10a.so
2d63a517
IZ
130$(objpfx)tst-audit10.out: $(objpfx)tst-auditmod10b.so
131tst-audit10-ENV = LD_AUDIT=$(objpfx)tst-auditmod10b.so
132
3403a17f
L
133$(objpfx)tst-sse: $(objpfx)tst-ssemod.so
134$(objpfx)tst-avx: $(objpfx)tst-avx-aux.o $(objpfx)tst-avxmod.so
135$(objpfx)tst-avx512: $(objpfx)tst-avx512-aux.o $(objpfx)tst-avx512mod.so
136
ae5d8eae 137AVX-CFLAGS=-mavx -mno-vzeroupper
3c0f7407 138CFLAGS-tst-audit4-aux.c += $(AVX-CFLAGS)
73709b26
JM
139CFLAGS-tst-auditmod4a.c += $(AVX-CFLAGS)
140CFLAGS-tst-auditmod4b.c += $(AVX-CFLAGS)
141CFLAGS-tst-auditmod6b.c += $(AVX-CFLAGS)
142CFLAGS-tst-auditmod6c.c += $(AVX-CFLAGS)
143CFLAGS-tst-auditmod7b.c += $(AVX-CFLAGS)
3403a17f
L
144CFLAGS-tst-avx-aux.c += $(AVX-CFLAGS)
145CFLAGS-tst-avxmod.c += $(AVX-CFLAGS)
2d63a517 146AVX512-CFLAGS = -mavx512f
3c0f7407 147CFLAGS-tst-audit10-aux.c += $(AVX512-CFLAGS)
2d63a517
IZ
148CFLAGS-tst-auditmod10a.c += $(AVX512-CFLAGS)
149CFLAGS-tst-auditmod10b.c += $(AVX512-CFLAGS)
3403a17f
L
150CFLAGS-tst-avx512-aux.c += $(AVX512-CFLAGS)
151CFLAGS-tst-avx512mod.c += $(AVX512-CFLAGS)
f267e1c9
FW
152
153$(objpfx)tst-glibc-hwcaps: $(objpfx)libmarkermod2-1.so \
154 $(objpfx)libmarkermod3-1.so $(objpfx)libmarkermod4-1.so
155$(objpfx)tst-glibc-hwcaps.out: \
156 $(objpfx)libmarkermod2.so \
157 $(objpfx)glibc-hwcaps/x86-64-v2/libmarkermod2.so \
158 $(objpfx)libmarkermod3.so \
159 $(objpfx)glibc-hwcaps/x86-64-v2/libmarkermod3.so \
160 $(objpfx)glibc-hwcaps/x86-64-v3/libmarkermod3.so \
161 $(objpfx)libmarkermod4.so \
162 $(objpfx)glibc-hwcaps/x86-64-v2/libmarkermod4.so \
163 $(objpfx)glibc-hwcaps/x86-64-v3/libmarkermod4.so \
164 $(objpfx)glibc-hwcaps/x86-64-v4/libmarkermod4.so \
165
166$(objpfx)glibc-hwcaps/x86-64-v2/libmarkermod2.so: $(objpfx)libmarkermod2-2.so
167 $(make-target-directory)
168 cp $< $@
169$(objpfx)glibc-hwcaps/x86-64-v2/libmarkermod3.so: $(objpfx)libmarkermod3-2.so
170 $(make-target-directory)
171 cp $< $@
172$(objpfx)glibc-hwcaps/x86-64-v3/libmarkermod3.so: $(objpfx)libmarkermod3-3.so
173 $(make-target-directory)
174 cp $< $@
175$(objpfx)glibc-hwcaps/x86-64-v2/libmarkermod4.so: $(objpfx)libmarkermod4-2.so
176 $(make-target-directory)
177 cp $< $@
178$(objpfx)glibc-hwcaps/x86-64-v3/libmarkermod4.so: $(objpfx)libmarkermod4-3.so
179 $(make-target-directory)
180 cp $< $@
181$(objpfx)glibc-hwcaps/x86-64-v4/libmarkermod4.so: $(objpfx)libmarkermod4-4.so
182 $(make-target-directory)
183 cp $< $@
184
185ifeq (no,$(build-hardcoded-path-in-tests))
186# This is an ld.so.cache test, and RPATH/RUNPATH in the executable
187# interferes with its test objectives.
188tests-container += tst-glibc-hwcaps-cache
c9ff0187
UD
189endif
190
b1ec623e
L
191tests-internal += tst-x86-64-tls-1
192
f267e1c9
FW
193endif # $(subdir) == elf
194
c9ff0187 195ifeq ($(subdir),csu)
031e519c 196gen-as-const-headers += tlsdesc.sym rtld-offsets.sym
c9ff0187 197endif
45ff3463 198
a6e7c374 199ifeq ($(subdir),wcsmbs)
ceabdcd1
NG
200
201sysdep_routines += \
202 wcsncmp-generic \
203 wcsnlen-generic \
204# sysdep_routines
205
a6e7c374
L
206tests += \
207 tst-rsi-wcslen
208endif
209
45ff3463
L
210$(objpfx)x86_64/tst-x86_64mod-1.os: $(objpfx)tst-x86_64mod-1.os
211 $(make-target-directory)
212 rm -f $@
213 ln $< $@
214
215do-tests-clean common-mostlyclean: tst-x86_64-1-clean
216
217.PHONY: tst-x86_64-1-clean
218tst-x86_64-1-clean:
219 -rm -rf $(objpfx)x86_64
4d916f0f
L
220
221$(objpfx)x86_64/tst-platformmod-2.os: $(objpfx)tst-platformmod-2.os
222 $(make-target-directory)
223 rm -f $@
224 ln $< $@