Enable libmvec support for AArch64
[platform/upstream/glibc.git] / sysdeps / aarch64 / configure
1 # This file is generated from configure.ac by Autoconf.  DO NOT EDIT!
2  # Local configure fragment for sysdeps/aarch64.
3
4 # Static PIE is supported.
5 $as_echo "#define SUPPORT_STATIC_PIE 1" >>confdefs.h
6
7
8 # We check to see if the compiler and flags are
9 # selecting the big endian ABI and if they are then
10 # we set libc_cv_aarch64_be to yes which causes
11 # HAVE_AARCH64_BE to be defined in config.h and
12 # in include/libc-symbols.h and thus available to
13 # shlib-versions to select the appropriate name for
14 # the dynamic linker via %ifdef.
15
16
17 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
18 $as_echo_n "checking for grep that handles long lines and -e... " >&6; }
19 if ${ac_cv_path_GREP+:} false; then :
20   $as_echo_n "(cached) " >&6
21 else
22   if test -z "$GREP"; then
23   ac_path_GREP_found=false
24   # Loop through the user's path and test for each of PROGNAME-LIST
25   as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
26 for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
27 do
28   IFS=$as_save_IFS
29   test -z "$as_dir" && as_dir=.
30     for ac_prog in grep ggrep; do
31     for ac_exec_ext in '' $ac_executable_extensions; do
32       ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
33       as_fn_executable_p "$ac_path_GREP" || continue
34 # Check for GNU ac_path_GREP and select it if it is found.
35   # Check for GNU $ac_path_GREP
36 case `"$ac_path_GREP" --version 2>&1` in
37 *GNU*)
38   ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
39 *)
40   ac_count=0
41   $as_echo_n 0123456789 >"conftest.in"
42   while :
43   do
44     cat "conftest.in" "conftest.in" >"conftest.tmp"
45     mv "conftest.tmp" "conftest.in"
46     cp "conftest.in" "conftest.nl"
47     $as_echo 'GREP' >> "conftest.nl"
48     "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
49     diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
50     as_fn_arith $ac_count + 1 && ac_count=$as_val
51     if test $ac_count -gt ${ac_path_GREP_max-0}; then
52       # Best one so far, save it but keep looking for a better one
53       ac_cv_path_GREP="$ac_path_GREP"
54       ac_path_GREP_max=$ac_count
55     fi
56     # 10*(2^10) chars as input seems more than enough
57     test $ac_count -gt 10 && break
58   done
59   rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
60 esac
61
62       $ac_path_GREP_found && break 3
63     done
64   done
65   done
66 IFS=$as_save_IFS
67   if test -z "$ac_cv_path_GREP"; then
68     as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
69   fi
70 else
71   ac_cv_path_GREP=$GREP
72 fi
73
74 fi
75 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
76 $as_echo "$ac_cv_path_GREP" >&6; }
77  GREP="$ac_cv_path_GREP"
78
79
80 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
81 $as_echo_n "checking for egrep... " >&6; }
82 if ${ac_cv_path_EGREP+:} false; then :
83   $as_echo_n "(cached) " >&6
84 else
85   if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
86    then ac_cv_path_EGREP="$GREP -E"
87    else
88      if test -z "$EGREP"; then
89   ac_path_EGREP_found=false
90   # Loop through the user's path and test for each of PROGNAME-LIST
91   as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
92 for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
93 do
94   IFS=$as_save_IFS
95   test -z "$as_dir" && as_dir=.
96     for ac_prog in egrep; do
97     for ac_exec_ext in '' $ac_executable_extensions; do
98       ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
99       as_fn_executable_p "$ac_path_EGREP" || continue
100 # Check for GNU ac_path_EGREP and select it if it is found.
101   # Check for GNU $ac_path_EGREP
102 case `"$ac_path_EGREP" --version 2>&1` in
103 *GNU*)
104   ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
105 *)
106   ac_count=0
107   $as_echo_n 0123456789 >"conftest.in"
108   while :
109   do
110     cat "conftest.in" "conftest.in" >"conftest.tmp"
111     mv "conftest.tmp" "conftest.in"
112     cp "conftest.in" "conftest.nl"
113     $as_echo 'EGREP' >> "conftest.nl"
114     "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
115     diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
116     as_fn_arith $ac_count + 1 && ac_count=$as_val
117     if test $ac_count -gt ${ac_path_EGREP_max-0}; then
118       # Best one so far, save it but keep looking for a better one
119       ac_cv_path_EGREP="$ac_path_EGREP"
120       ac_path_EGREP_max=$ac_count
121     fi
122     # 10*(2^10) chars as input seems more than enough
123     test $ac_count -gt 10 && break
124   done
125   rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
126 esac
127
128       $ac_path_EGREP_found && break 3
129     done
130   done
131   done
132 IFS=$as_save_IFS
133   if test -z "$ac_cv_path_EGREP"; then
134     as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
135   fi
136 else
137   ac_cv_path_EGREP=$EGREP
138 fi
139
140    fi
141 fi
142 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
143 $as_echo "$ac_cv_path_EGREP" >&6; }
144  EGREP="$ac_cv_path_EGREP"
145
146
147 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for big endian" >&5
148 $as_echo_n "checking for big endian... " >&6; }
149 if ${libc_cv_aarch64_be+:} false; then :
150   $as_echo_n "(cached) " >&6
151 else
152   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
153 /* end confdefs.h.  */
154 #ifdef __AARCH64EB__
155                       yes
156                      #endif
157
158 _ACEOF
159 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
160   $EGREP "yes" >/dev/null 2>&1; then :
161   libc_cv_aarch64_be=yes
162 else
163   libc_cv_aarch64_be=no
164 fi
165 rm -f conftest*
166
167 fi
168 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_aarch64_be" >&5
169 $as_echo "$libc_cv_aarch64_be" >&6; }
170 if test $libc_cv_aarch64_be = yes; then
171   $as_echo "#define HAVE_AARCH64_BE 1" >>confdefs.h
172
173   config_vars="$config_vars
174 default-abi = lp64_be"
175 else
176   config_vars="$config_vars
177 default-abi = lp64"
178 fi
179
180 # Only consider BTI supported if -mbranch-protection=bti is
181 # on by default in the compiler and the linker produces
182 # binaries with GNU property notes in PT_GNU_PROPERTY segment.
183 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for BTI support" >&5
184 $as_echo_n "checking for BTI support... " >&6; }
185 if ${libc_cv_aarch64_bti+:} false; then :
186   $as_echo_n "(cached) " >&6
187 else
188     cat > conftest.c <<EOF
189 void foo (void) { }
190 EOF
191   libc_cv_aarch64_bti=no
192   if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -nostdlib -nostartfiles $no_ssp -shared -fPIC -o conftest.so conftest.c'
193   { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
194   (eval $ac_try) 2>&5
195   ac_status=$?
196   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
197   test $ac_status = 0; }; } \
198      && { ac_try='$READELF -lW conftest.so | grep -q GNU_PROPERTY'
199   { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
200   (eval $ac_try) 2>&5
201   ac_status=$?
202   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
203   test $ac_status = 0; }; } \
204      && { ac_try='$READELF -nW conftest.so | grep -q "NT_GNU_PROPERTY_TYPE_0.*AArch64 feature:.* BTI"'
205   { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
206   (eval $ac_try) 2>&5
207   ac_status=$?
208   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
209   test $ac_status = 0; }; }
210   then
211     libc_cv_aarch64_bti=yes
212   fi
213   rm -rf conftest.*
214 fi
215 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_aarch64_bti" >&5
216 $as_echo "$libc_cv_aarch64_bti" >&6; }
217 config_vars="$config_vars
218 aarch64-bti = $libc_cv_aarch64_bti"
219 if test $libc_cv_aarch64_bti = yes; then
220   $as_echo "#define HAVE_AARCH64_BTI 1" >>confdefs.h
221
222 fi
223
224 # Check if glibc is built with return address signing, i.e.
225 # if -mbranch-protection=pac-ret is on. We need this because
226 # pac-ret relies on unwinder support so it's not safe to use
227 # it in assembly code unconditionally, but there is no
228 # feature test macro for it in gcc.
229 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if pac-ret is enabled" >&5
230 $as_echo_n "checking if pac-ret is enabled... " >&6; }
231 if ${libc_cv_aarch64_pac_ret+:} false; then :
232   $as_echo_n "(cached) " >&6
233 else
234     cat > conftest.c <<EOF
235 int bar (void);
236 int foo (void) { return bar () + 1; }
237 EOF
238   libc_cv_aarch64_pac_ret=no
239   if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -S -o conftest.s conftest.c'
240   { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
241   (eval $ac_try) 2>&5
242   ac_status=$?
243   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
244   test $ac_status = 0; }; } \
245      && { ac_try='grep -q -E '\''(hint( |       )+25|paciasp)'\'' conftest.s'
246   { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
247   (eval $ac_try) 2>&5
248   ac_status=$?
249   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
250   test $ac_status = 0; }; }
251   then
252     libc_cv_aarch64_pac_ret=yes
253   fi
254   rm -rf conftest.*
255 fi
256 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_aarch64_pac_ret" >&5
257 $as_echo "$libc_cv_aarch64_pac_ret" >&6; }
258 if test $libc_cv_aarch64_pac_ret = yes; then
259   $as_echo "#define HAVE_AARCH64_PAC_RET 1" >>confdefs.h
260
261 fi
262
263 # Check if binutils supports variant PCS symbols.
264 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for variant PCS support" >&5
265 $as_echo_n "checking for variant PCS support... " >&6; }
266 if ${libc_cv_aarch64_variant_pcs+:} false; then :
267   $as_echo_n "(cached) " >&6
268 else
269     cat > conftest.S <<EOF
270 .global foo
271 .type foo, %function
272 .variant_pcs foo
273 foo:
274         ret
275 .global bar
276 .type bar, %function
277 bar:
278         b foo
279 EOF
280   libc_cv_aarch64_variant_pcs=no
281   if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -nostdlib -nostartfiles $no_ssp -shared -fPIC -o conftest.so conftest.S'
282   { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
283   (eval $ac_try) 2>&5
284   ac_status=$?
285   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
286   test $ac_status = 0; }; } \
287      && { ac_try='$READELF -dW conftest.so | grep -q AARCH64_VARIANT_PCS'
288   { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
289   (eval $ac_try) 2>&5
290   ac_status=$?
291   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
292   test $ac_status = 0; }; }
293   then
294     libc_cv_aarch64_variant_pcs=yes
295   fi
296   rm -rf conftest.*
297 fi
298 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_aarch64_variant_pcs" >&5
299 $as_echo "$libc_cv_aarch64_variant_pcs" >&6; }
300 config_vars="$config_vars
301 aarch64-variant-pcs = $libc_cv_aarch64_variant_pcs"
302
303 # Check if asm support armv8.2-a+sve
304 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SVE support in assembler" >&5
305 $as_echo_n "checking for SVE support in assembler... " >&6; }
306 if ${libc_cv_aarch64_sve_asm+:} false; then :
307   $as_echo_n "(cached) " >&6
308 else
309   cat > conftest.s <<\EOF
310         ptrue p0.b
311 EOF
312 if { ac_try='${CC-cc} -c -march=armv8.2-a+sve conftest.s 1>&5'
313   { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
314   (eval $ac_try) 2>&5
315   ac_status=$?
316   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
317   test $ac_status = 0; }; }; then
318   libc_cv_aarch64_sve_asm=yes
319 else
320   libc_cv_aarch64_sve_asm=no
321 fi
322 rm -f conftest*
323 fi
324 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_aarch64_sve_asm" >&5
325 $as_echo "$libc_cv_aarch64_sve_asm" >&6; }
326 if test $libc_cv_aarch64_sve_asm = yes; then
327   $as_echo "#define HAVE_AARCH64_SVE_ASM 1" >>confdefs.h
328
329 fi
330
331 if test x"$build_mathvec" = xnotset; then
332   build_mathvec=yes
333 fi
334
335 # Check if compiler is sufficient to build mathvec (needs SVE ACLE)
336 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for availability of SVE ACLE" >&5
337 $as_echo_n "checking for availability of SVE ACLE... " >&6; }
338 if ${libc_cv_has_sve_acle+:} false; then :
339   $as_echo_n "(cached) " >&6
340 else
341     if test $build_mathvec = yes; then
342     cat > conftest.c <<EOF
343 #include <arm_sve.h>
344 EOF
345     if ! ${CC-cc} conftest.c -fsyntax-only; then
346       as_fn_error 1 "mathvec is enabled but compiler does not have SVE ACLE. Either use a compatible compiler or configure with --disable-mathvec (this results in incomplete ABI)."
347     fi
348     rm conftest.c
349   fi
350 fi
351 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_has_sve_acle" >&5
352 $as_echo "$libc_cv_has_sve_acle" >&6; }