]> git.ipfire.org Git - thirdparty/glibc.git/blob - aclocal.m4
x86: In ld.so, diagnose missing APX support in APX-only builds
[thirdparty/glibc.git] / aclocal.m4
1 dnl We require that everyone use exactly the same Autoconf version so that
2 dnl the internal functions defined and used by the main configure script
3 dnl match those expected by the fragments. When changing this version,
4 dnl install.texi also needs to be updated.
5 m4_define([GLIBC_AUTOCONF_VERSION], [2.71])
6 m4_if(m4_defn([AC_AUTOCONF_VERSION]), GLIBC_AUTOCONF_VERSION, [],
7 [m4_fatal(m4_flatten(
8 Exactly version GLIBC_AUTOCONF_VERSION of Autoconf is required but you have
9 m4_defn([AC_AUTOCONF_VERSION])
10 ), [63])])dnl
11 dnl
12 dnl We define the macro GLIBC_PROVIDES to do an AC_PROVIDE for each macro
13 dnl which appears in configure.ac before the sysdep configure scripts are run.
14 dnl Each sysdep configure.ac does GLIBC_PROVIDES first, to avoid any
15 dnl AC_REQUIREs or AC_BEFOREs duplicating their code.
16 dnl
17 define([GLIBC_PROVIDES], [dnl
18 AC_PROVIDE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
19 AC_PROVIDE([AC_CONFIG_SUBDIRS])dnl
20 AC_PROVIDE([_AS_ECHO_N_PREPARE])dnl
21 AC_PROVIDE([_AS_ECHO_PREPARE])dnl
22 AC_PROVIDE([_AS_CR_PREPARE])dnl
23 AC_PROVIDE([_AS_TR_SH_PREPARE])dnl
24 AC_PROVIDE([_AS_VAR_ARITH_PREPARE])dnl
25 AC_PROVIDE([AC_PROG_INSTALL])dnl
26 AC_PROVIDE([AC_PROG_CC])dnl
27 AC_PROVIDE([AC_PROG_CPP])dnl
28 AC_PROVIDE([_AS_PATH_SEPARATOR_PREPARE])dnl
29 AC_PROVIDE([_AS_TEST_PREPARE])dnl
30 AC_PROVIDE([_AS_BASENAME_PREPARE])dnl
31 AC_PROVIDE([_AS_ME_PREPARE])dnl
32 AC_PROVIDE([_AS_LINENO_PREPARE])dnl
33 AC_PROVIDE([AS_SHELL_FN_as_fn_set_status])dnl
34 AC_PROVIDE([AS_SHELL_FN_as_fn_exit])dnl
35 AC_PROVIDE([AS_SHELL_FN_as_fn_arith])dnl
36 AC_PROVIDE([AS_SHELL_FN_ac_fn_c_try_compile])dnl
37 AC_PROVIDE([AS_SHELL_FN_ac_fn_c_try_cpp])dnl
38 define([AS_MESSAGE_LOG_FD],5)dnl
39 define([AS_MESSAGE_FD],6)dnl
40 dnl Ripped out of AS_INIT, which does more cruft we do not want.
41 m4_wrap([m4_divert_pop([BODY])[]])
42 m4_divert_push([BODY])[]dnl
43 dnl End of ripped out of AS_INIT.
44 # This file is generated from configure.ac by Autoconf. DO NOT EDIT!
45 define([_AC_LANG], [C])dnl
46 ])dnl
47 dnl
48 dnl Check for a symbol
49 dnl
50 AC_DEFUN([AC_CHECK_SYMBOL], [dnl
51 AC_MSG_CHECKING(for $1)
52 AC_CACHE_VAL(ac_cv_check_symbol_$1, [dnl
53 AC_TRY_LINK(,
54 changequote(,)dnl
55 extern char *$1[]; puts(*$1);,
56 changequote([,])dnl
57 ac_cv_check_symbol_$1=yes, ac_cv_check_symbol_$1=no)])
58 if test "$ac_cv_check_symbol_$1" = yes; then
59 changequote(,)dnl
60 ac_tr_symbol=`echo $1 | tr '[a-z]' '[A-Z]'`
61 changequote([,])dnl
62 AC_DEFINE_UNQUOTED(HAVE_${ac_tr_symbol})
63 fi
64 AC_MSG_RESULT($ac_cv_check_symbol_$1)])dnl
65 dnl
66
67 dnl Locate a program and check that its version is acceptable.
68 dnl AC_PROG_CHECK_VER(var, namelist, version-switch,
69 dnl [version-extract-regexp], version-glob [, do-if-fail])
70 AC_DEFUN([AC_CHECK_PROG_VER],
71 [AC_CHECK_PROGS([$1], [$2])
72 if test -z "[$]$1"; then
73 ac_verc_fail=yes
74 else
75 # Found it, now check the version.
76 AC_MSG_CHECKING([version of [$]$1])
77 changequote(<<,>>)dnl
78 ac_prog_version=`<<$>>$1 $3 2>&1 ifelse(<<$4>>,,,
79 <<| sed -n 's/^.*patsubst(<<$4>>,/,\/).*$/\1/p'>>)`
80 case $ac_prog_version in
81 '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
82 <<$5>>)
83 changequote([,])dnl
84 ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
85 *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
86
87 esac
88 AC_MSG_RESULT([$ac_prog_version])
89 fi
90 ifelse([$6],,,
91 [if test $ac_verc_fail = yes; then
92 $6
93 fi])
94 ])
95
96 dnl These modifications are to allow for an empty cross compiler tree.
97 define([_AC_COMPILER_EXEEXT], [EXEEXT=
98 ])
99
100 AC_DEFUN([LIBC_PROG_FOO_GNU],
101 [# Most GNU programs take a -v and spit out some text including
102 # the word 'GNU'. Some try to read stdin, so give them /dev/null.
103 if $1 -o conftest -v </dev/null 2>&1 | grep GNU > /dev/null 2>&1; then
104 $2
105 else
106 $3
107 fi
108 rm -fr contest*])
109
110 AC_DEFUN([LIBC_PROG_BINUTILS],
111 [# Was a --with-binutils option given?
112 if test -n "$path_binutils"; then
113 # Make absolute; ensure a single trailing slash.
114 path_binutils=`(cd $path_binutils; pwd) | sed 's%/*$%/%'`
115 CC="$CC -B$path_binutils"
116 fi
117 case "$CC" in
118 *fuse-ld=lld*) LDNAME=ld.lld;;
119 *) LDNAME=ld;;
120 esac
121 if test -z "$LD"; then
122 LD=`$CC -print-prog-name=$LDNAME`
123 fi
124 if test -z "$AR"; then
125 AR=`$CC -print-prog-name=ar`
126 fi
127 AC_SUBST(AR)
128 if test -z "$OBJCOPY"; then
129 OBJCOPY=`$CC -print-prog-name=objcopy`
130 fi
131 AC_SUBST(OBJCOPY)
132 if test -z "$GPROF"; then
133 GPROF=`$CC -print-prog-name=gprof`
134 fi
135 AC_SUBST(GPROF)
136 if test -z "$READELF"; then
137 READELF=`$CC -print-prog-name=readelf`
138 fi
139 AC_SUBST(READELF)
140 if test -z "$OBJDUMP"; then
141 OBJDUMP=`$CC -print-prog-name=objdump`
142 fi
143 AC_SUBST(OBJDUMP)
144 if test -z "$NM"; then
145 NM=`$CC -print-prog-name=nm`
146 fi
147 AC_SUBST(NM)
148 ])
149
150 dnl Run a static link test with -nostdlib -nostartfiles.
151 dnl LIBC_TRY_LINK_STATIC([code], [action-if-true], [action-if-false])
152 AC_DEFUN([LIBC_TRY_LINK_STATIC],
153 [cat > conftest.c <<EOF
154 int _start (void) { return 0; }
155 int __start (void) { return 0; }
156 $1
157 EOF
158 AS_IF([AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS $no_ssp -o conftest
159 conftest.c -static -nostartfiles -nostdlib
160 1>&AS_MESSAGE_LOG_FD])],
161 [$2], [$3])
162 rm -f conftest*])
163
164 dnl Test a compiler option or options with an empty input file.
165 dnl LIBC_TRY_CC_OPTION([options], [action-if-true], [action-if-false])
166 AC_DEFUN([LIBC_TRY_CC_OPTION],
167 [AS_IF([AC_TRY_COMMAND([${CC-cc} $1 -xc /dev/null -S -o /dev/null])],
168 [$2], [$3])])
169
170 dnl Find and source sysdeps/*/preconfigure.
171 dnl LIBC_PRECONFIGURE([$srcdir], [for])
172 AC_DEFUN([LIBC_PRECONFIGURE], [dnl
173 if frags=`ls -d $1/sysdeps/*/preconfigure 2> /dev/null`
174 then
175 AC_MSG_CHECKING($2 preconfigure fragments)
176 for frag in $frags; do
177 name=`echo "$frag" | sed 's@/[[^/]]*[$]@@;s@^.*/@@'`
178 echo $ECHO_N "$name $ECHO_C" >&AS_MESSAGE_FD
179 . "$frag"
180 done
181 AC_MSG_RESULT()
182 fi])
183
184 # These two macros are taken from GCC's config/acx.m4.
185 dnl Support the --with-pkgversion configure option.
186 dnl ACX_PKGVERSION(default-pkgversion)
187 AC_DEFUN([ACX_PKGVERSION],[
188 AC_ARG_WITH(pkgversion,
189 AS_HELP_STRING([--with-pkgversion=PKG],
190 [Use PKG in the version string in place of "$1"]),
191 [case "$withval" in
192 yes) AC_MSG_ERROR([package version not specified]) ;;
193 no) PKGVERSION= ;;
194 *) PKGVERSION="($withval) " ;;
195 esac],
196 PKGVERSION="($1) "
197 )
198 PKGVERSION_TEXI=`echo "$PKGVERSION" | sed 's/@/@@/g'`
199 AC_SUBST(PKGVERSION)
200 AC_SUBST(PKGVERSION_TEXI)
201 ])
202
203 dnl Support the --with-bugurl configure option.
204 dnl ACX_BUGURL(default-bugurl)
205 AC_DEFUN([ACX_BUGURL],[
206 AC_ARG_WITH(bugurl,
207 AS_HELP_STRING([--with-bugurl=URL],
208 [Direct users to URL to report a bug]),
209 [case "$withval" in
210 yes) AC_MSG_ERROR([bug URL not specified]) ;;
211 no) BUGURL=
212 ;;
213 *) BUGURL="$withval"
214 ;;
215 esac],
216 BUGURL="$1"
217 )
218 case ${BUGURL} in
219 "")
220 REPORT_BUGS_TO=
221 REPORT_BUGS_TEXI=
222 ;;
223 *)
224 REPORT_BUGS_TO="<$BUGURL>"
225 REPORT_BUGS_TEXI=@uref{`echo "$BUGURL" | sed 's/@/@@/g'`}
226 ;;
227 esac;
228 AC_SUBST(REPORT_BUGS_TO)
229 AC_SUBST(REPORT_BUGS_TEXI)
230 ])
231
232 dnl Check linker option support.
233 dnl LIBC_LINKER_FEATURE([ld_option], [cc_option], [action-if-true], [action-if-false])
234 AC_DEFUN([LIBC_LINKER_FEATURE],
235 [AC_MSG_CHECKING([for linker that supports $1])
236 libc_linker_feature=no
237 cat > conftest.c <<EOF
238 int _start (void) { return 42; }
239 EOF
240 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS $no_ssp
241 $2 -nostdlib -nostartfiles
242 -fPIC -shared -o conftest.so conftest.c
243 1>&AS_MESSAGE_LOG_FD])
244 then
245 if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS $no_ssp $2 -nostdlib \
246 -nostartfiles -fPIC -shared -o conftest.so conftest.c 2>&1 \
247 | grep "warning: $1 ignored" > /dev/null 2>&1; then
248 true
249 else
250 libc_linker_feature=yes
251 fi
252 fi
253 rm -f conftest*
254 if test $libc_linker_feature = yes; then
255 $3
256 else
257 $4
258 fi
259 AC_MSG_RESULT($libc_linker_feature)])
260
261 dnl Add a makefile variable, with value set from a shell string
262 dnl (expanded by the shell inside double quotes), to config.make.
263 dnl LIBC_CONFIG_VAR(make-variable, shell-value)
264 AC_DEFUN([LIBC_CONFIG_VAR],
265 [config_vars="$config_vars
266 $1 = $2"])
267
268 dnl Check that function FUNC was inlined as a builtin. The code fragment
269 dnl CODE is compiled with additional options CC_OPTION. If FUNC is
270 dnl not found in the assembly then it is assumed the compiler has support
271 dnl for this builtin and has inlined the call. If the compiler has the
272 dnl feature then ACTION-IF-TRUE is called, otherwise ACTION-IF-FALSE.
273 dnl It is up to the caller to provide a CC_OPTION that ensures the
274 dnl builtin is inlined if present.
275 dnl Warning: This may not work for some machines. For example on ARM the
276 dnl ABI dictates that some functions should not be inlined and instead
277 dnl should be provided by a compiler helper library e.g. __aeabi_memcpy.
278 dnl This is done to reduce code size.
279 dnl LIBC_COMPILER_BUILTIN([func], [code], [cc_option], [action-if-true], [action-if-false])
280 AC_DEFUN([LIBC_COMPILER_BUILTIN_INLINED],
281 [AC_MSG_CHECKING([for compiler support of inlined builtin function $1])
282 libc_compiler_builtin_inlined=no
283 cat > conftest.c <<EOF
284 int _start (void) { $2 return 0; }
285 EOF
286 if ! AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS $no_ssp
287 $3 -nostdlib -nostartfiles
288 -S conftest.c -o - | grep -F "$1"
289 1>&AS_MESSAGE_LOG_FD])
290 then
291 libc_compiler_builtin_inlined=yes
292 fi
293 rm -f conftest*
294 if test $libc_compiler_builtin_inlined = yes; then
295 $4
296 else
297 $5
298 fi
299 AC_MSG_RESULT($libc_compiler_builtin_inlined)])
300
301 dnl Default to slibdir named SLIBDIR instead of "lib", and rtlddir
302 dnl named RTLDDIR instead of "lib". This is used to put 64-bit
303 dnl libraries in /lib64.
304 dnl LIBC_SLIBDIR_RTLDDIR([slibdir], [rtlddir])
305 AC_DEFUN([LIBC_SLIBDIR_RTLDDIR],
306 [test -n "$libc_cv_slibdir" ||
307 case "$prefix" in
308 /usr | /usr/)
309 libc_cv_slibdir='/$1'
310 libc_cv_rtlddir='/$2'
311 if test "$libdir" = '${exec_prefix}/lib'; then
312 libdir='${exec_prefix}/$1';
313 # Locale data can be shared between 32-bit and 64-bit libraries.
314 libc_cv_complocaledir='${exec_prefix}/lib/locale'
315 fi
316 ;;
317 esac])