]> git.ipfire.org Git - thirdparty/gcc.git/blame - libiberty/configure.ac
configure: Implement --enable-host-pie
[thirdparty/gcc.git] / libiberty / configure.ac
CommitLineData
3affd5f0 1dnl Process this file with autoconf to produce a configure script
6599da04 2
a4f74b58
KC
3AC_INIT
4AC_CONFIG_SRCDIR([xmalloc.c])
1f237573 5AC_CONFIG_MACRO_DIRS([../config])
6599da04 6
6706f116
AO
7# This works around the fact that libtool configuration may change LD
8# for this particular configuration, but some shells, instead of
9# keeping the changes in LD private, export them just because LD is
10# exported. We don't use libtool yet, but some day we might, so...
11ORIGINAL_LD_FOR_MULTILIBS=$LD
12
3affd5f0
JL
13dnl We use these options to decide which functions to include.
14AC_ARG_WITH(target-subdir,
cd862df8
L
15[ --with-target-subdir=SUBDIR Configuring in a subdirectory for target])
16AC_ARG_WITH(build-subdir,
17[ --with-build-subdir=SUBDIR Configuring in a subdirectory for build])
ca6b370d
JL
18AC_ARG_WITH(cross-host,
19[ --with-cross-host=HOST Configuring with a cross compiler])
3affd5f0
JL
20AC_ARG_WITH(newlib,
21[ --with-newlib Configuring with newlib])
6599da04 22
3affd5f0 23if test "${srcdir}" = "."; then
cd862df8
L
24 if test -n "${with_build_subdir}"; then
25 libiberty_topdir="${srcdir}/../.."
26 with_target_subdir=
27 elif test -z "${with_target_subdir}"; then
3affd5f0
JL
28 libiberty_topdir="${srcdir}/.."
29 else
30 if test "${with_target_subdir}" != "."; then
31 libiberty_topdir="${srcdir}/${with_multisrctop}../.."
32 else
33 libiberty_topdir="${srcdir}/${with_multisrctop}.."
34 fi
35 fi
36else
37 libiberty_topdir="${srcdir}/.."
38fi
d8c22ce7 39AC_SUBST(libiberty_topdir)
3affd5f0
JL
40AC_CONFIG_AUX_DIR($libiberty_topdir)
41
aaa5f039
DD
42dnl Very limited version of automake's enable-maintainer-mode
43
44AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
45 dnl maintainer-mode is disabled by default
46 AC_ARG_ENABLE(maintainer-mode,
47[ --enable-maintainer-mode
48 enable make rules and dependencies not useful
49 (and sometimes confusing) to the casual installer],
50 maintainer_mode=$enableval,
51 maintainer_mode=no)
52
53AC_MSG_RESULT($maintainer_mode)
54
55if test "$maintainer_mode" = "yes"; then
56 MAINT=''
57 NOTMAINT='#'
58else
59 MAINT='#'
60 NOTMAINT=''
61fi
62AC_SUBST(MAINT)dnl
63AC_SUBST(NOTMAINT)dnl
64
909b30a1
EG
65if test -z "$ETAGS"; then
66 ETAGS=etags
67fi
68AC_SUBST([ETAGS])
69
ae9092da
DD
70# Do we have a single-tree copy of texinfo? Even if we do, we can't
71# rely on it - libiberty is built before texinfo.
72AC_CHECK_PROG(MAKEINFO, makeinfo, makeinfo, )
f749bd83
AM
73if test "x$MAKEINFO" = "x"; then
74 MAKEINFO="@echo makeinfo missing; true"
ae9092da 75 BUILD_INFO=
f749bd83
AM
76else
77 BUILD_INFO=info
c0590bfd
L
78 case "$MAKEINFO" in
79 */missing\ makeinfo*)
f749bd83
AM
80 BUILD_INFO=
81 AC_MSG_WARN([
c0590bfd
L
82*** Makeinfo is missing. Info documentation will not be built.])
83 ;;
84 *)
85 case x"`$MAKEINFO --version | grep 'GNU texinfo'`" in
86 x*\ [[1-3]].* )
87 MAKEINFO="@echo $MAKEINFO is too old, 4.0 or newer required; true"
88 BUILD_INFO=
89 AC_MSG_WARN([
ae9092da 90*** Makeinfo is too old. Info documentation will not be built.])
c0590bfd
L
91 ;;
92 esac
f749bd83
AM
93 ;;
94 esac
95fi
ae9092da 96AC_SUBST(MAKEINFO)
aaa5f039
DD
97AC_SUBST(BUILD_INFO)
98
99AC_CHECK_PROG(PERL, perl, perl, )
100if test x"$PERL" = x""; then
101 HAVE_PERL='#'
102else
103 HAVE_PERL=''
104fi
105AC_SUBST(HAVE_PERL)
106
3affd5f0
JL
107AC_CANONICAL_HOST
108
109dnl When we start using automake:
110dnl AM_INIT_AUTOMAKE(libiberty, 1.0)
111
112dnl These must be called before AM_PROG_LIBTOOL, because it may want
113dnl to call AC_CHECK_PROG.
114AC_CHECK_TOOL(AR, ar)
115AC_CHECK_TOOL(RANLIB, ranlib, :)
116
abea993f
GK
117dnl When switching to automake, replace the following with AM_ENABLE_MULTILIB.
118# Add --enable-multilib to configure.
119# Default to --enable-multilib
120AC_ARG_ENABLE(multilib,
121[ --enable-multilib build many library versions (default)],
122[case "$enableval" in
123 yes) multilib=yes ;;
124 no) multilib=no ;;
125 *) AC_MSG_ERROR([bad value $enableval for multilib option]) ;;
126 esac],
127 [multilib=yes])
128
129# Even if the default multilib is not a cross compilation,
130# it may be that some of the other multilibs are.
131if test $cross_compiling = no && test $multilib = yes \
132 && test "x${with_multisubdir}" != x ; then
133 cross_compiling=maybe
134fi
135
8c9fddf4
MB
136# We may wish to install the target headers somewhere.
137AC_MSG_CHECKING([whether to install libiberty headers and static library])
138dnl install-libiberty is disabled by default
139
140AC_ARG_ENABLE(install-libiberty,
141[ --enable-install-libiberty Install headers and library for end users],
142enable_install_libiberty=$enableval,
143enable_install_libiberty=no)dnl
144
145# Option parsed, now set things appropriately.
146case x"$enable_install_libiberty" in
147 xyes|x)
148 target_header_dir=libiberty
149 ;;
150 xno)
151 target_header_dir=
152 ;;
153 *)
154 # This could be sanity-checked in various ways...
155 target_header_dir="${enable_install_libiberty}"
156 ;;
157esac
158AC_MSG_RESULT($enable_install_libiberty)
159AC_MSG_NOTICE([target_header_dir = $target_header_dir])
160
238235ef
DJ
161GCC_NO_EXECUTABLES
162AC_PROG_CC
f50f17e6 163AC_GNU_SOURCE
d208e2d2 164AC_SYS_LARGEFILE
b033df90 165AC_PROG_CPP_WERROR
238235ef 166
aa2480c5 167ACX_PROG_CC_WARNING_OPTS([-W -Wall -Wwrite-strings -Wc++-compat \
3eb89071
MW
168 -Wstrict-prototypes \
169 -Wshadow=local], [ac_libiberty_warn_cflags])
aa2480c5 170ACX_PROG_CC_WARNING_ALMOST_PEDANTIC([], [ac_libiberty_warn_cflags])
3affd5f0 171
24f2cabb
L
172AC_PROG_CC_C_O
173# autoconf is lame and doesn't give us any substitution variable for this.
174if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then
175 NO_MINUS_C_MINUS_O=yes
176else
177 OUTPUT_OPTION='-o $@'
178fi
179AC_SUBST(NO_MINUS_C_MINUS_O)
180AC_SUBST(OUTPUT_OPTION)
181
d1209685
ZW
182AC_C_CONST
183AC_C_INLINE
fbc1bc09 184AC_C_BIGENDIAN
3affd5f0 185
24f2cabb 186dnl When we start using libtool:
3affd5f0
JL
187dnl Default to a non shared library. This may be overridden by the
188dnl configure option --enable-shared.
24f2cabb 189dnl AM_DISABLE_SHARED
3affd5f0 190
24f2cabb
L
191dnl When we start using libtool:
192dnl AM_PROG_LIBTOOL
3affd5f0
JL
193
194dnl When we start using automake:
195dnl AM_CONFIG_HEADER(config.h:config.in)
196AC_CONFIG_HEADER(config.h:config.in)
197
198dnl When we start using automake:
199dnl AM_MAINTAINER_MODE
dd8f3ed5 200dnl AC_EXEEXT
3affd5f0
JL
201
202dnl When we start using automake:
203dnl AM_PROG_INSTALL
204AC_PROG_INSTALL
6599da04 205
769b009e
KC
206# Don't build the shared library for build.
207if [[ -n "${with_build_subdir}" ]]; then
208 enable_shared=no
209fi
210
211frag=
212case "${host}" in
213 rs6000-ibm-aix3.1 | rs6000-ibm-aix)
214 frag=mh-aix ;;
215 *-*-cxux7*) frag=mh-cxux7 ;;
216 *-*-freebsd2.1.*) frag=mh-fbsd21 ;;
217 *-*-freebsd2.2.[[012]]) frag=mh-fbsd21 ;;
218 i370-*-opened*) frag=mh-openedition ;;
219 i[[34567]]86-*-windows*) frag=mh-windows ;;
220esac
221
222if [[ -n "${frag}" ]]; then
c91c9c2e 223 frag=${libiberty_topdir}/libiberty/config/$frag
769b009e
KC
224fi
225
e3aa9eba
RO
226GCC_PICFLAG
227
769b009e
KC
228# If they didn't specify --enable-shared, don't generate shared libs.
229case "${enable_shared}" in
230 yes) shared=yes ;;
231 no) shared=no ;;
232 "") shared=no ;;
233 *) shared=yes ;;
234esac
459260ec 235
251c72a6
MP
236# ...unless --enable-host-{shared,pie} was passed from top-level config:
237if [[ "${enable_host_shared}" = "yes" ]] || [[ "${enable_host_pie}" = "yes" ]]; then
459260ec
DM
238 shared=yes
239fi
240
e3aa9eba
RO
241if [[ "${shared}" != "yes" ]]; then
242 PICFLAG=
769b009e 243fi
c91c9c2e 244AC_SUBST(PICFLAG)
769b009e 245
4f148bbc
JJ
246NOASANFLAG=
247case " ${CFLAGS} " in
248 *\ -fsanitize=address\ *) NOASANFLAG=-fno-sanitize=address ;;
170e618e 249 *\ -fsanitize=hwaddress\ *) NOASANFLAG=-fno-sanitize=hwaddress ;;
4f148bbc
JJ
250esac
251AC_SUBST(NOASANFLAG)
252
8fc8bf80
L
253GCC_CET_HOST_FLAGS(CET_HOST_FLAGS)
254AC_SUBST(CET_HOST_FLAGS)
255
769b009e
KC
256echo "# Warning: this fragment is automatically generated" > temp-frag
257
c91c9c2e
PB
258if [[ -n "${frag}" ]] && [[ -f "${frag}" ]]; then
259 echo "Appending ${frag} to xhost-mkfrag"
260 echo "# Following fragment copied from ${frag}" >> temp-frag
261 cat ${frag} >> temp-frag
262fi
769b009e
KC
263
264# record if we want to build shared libs.
265if [[ "${shared}" = "yes" ]]; then
266 echo enable_shared = yes >> temp-frag
267else
268 echo enable_shared = no >> temp-frag
269fi
270
271frag=xhost-mkfrag
272${CONFIG_SHELL-/bin/sh} ${libiberty_topdir}/move-if-change temp-frag xhost-mkfrag
273
6599da04 274host_makefile_frag=${frag}
3affd5f0
JL
275AC_SUBST_FILE(host_makefile_frag)
276
277# It's OK to check for header files. Although the compiler may not be
278# able to link anything, it had better be able to at least compile
279# something.
52ae149d 280AC_CHECK_HEADERS(sys/file.h sys/param.h limits.h stdlib.h malloc.h string.h unistd.h strings.h sys/time.h time.h sys/resource.h sys/stat.h sys/mman.h fcntl.h alloca.h sys/pstat.h sys/sysmp.h sys/sysinfo.h machine/hal_sysinfo.h sys/table.h sys/sysctl.h sys/systemcfg.h stdint.h stdio_ext.h process.h sys/prctl.h)
a6458d1d 281AC_HEADER_SYS_WAIT
c6451ce1 282AC_HEADER_TIME
6599da04 283
3b58c099
MS
284libiberty_AC_DECLARE_ERRNO
285
ea41822a 286# Determine sizes of some types.
d49d0907 287AC_CHECK_SIZEOF([int])
ea41822a 288AC_CHECK_SIZEOF([long])
126e0b6b 289AC_CHECK_SIZEOF([size_t])
ea41822a
YG
290
291# Check for presense of long long
292AC_CHECK_TYPE([long long],
293 [AC_DEFINE(HAVE_LONG_LONG, 1, [Define if you have the `long long' type.]) AC_CHECK_SIZEOF([long long])],
294 [])
d49d0907 295
9bf3c9cc
RH
296# Look for a 64-bit type.
297AC_MSG_CHECKING([for a 64-bit type])
298AC_CACHE_VAL(liberty_cv_uint64,
299[AC_TRY_COMPILE(
300[#ifdef HAVE_STDINT_H
301#include <stdint.h>
302#endif],
303[extern uint64_t foo;],
304liberty_cv_uint64=uint64_t,
305[AC_TRY_COMPILE(
306[#ifdef HAVE_LIMITS_H
307#include <limits.h>
308#endif
309#ifndef CHAR_BIT
310#define CHAR_BIT 8
311#endif],
312[extern char foo[sizeof(long) * CHAR_BIT >= 64 ? 1 : -1];],
313liberty_cv_uint64="unsigned long",
314[AC_TRY_COMPILE(
315[#ifdef HAVE_LIMITS_H
316#include <limits.h>
317#endif
318#ifndef CHAR_BIT
319#define CHAR_BIT 8
320#endif],
321[extern char foo[sizeof(long long) * CHAR_BIT >= 64 ? 1 : -1];],
322liberty_cv_uint64="unsigned long long", liberty_cv_uint64=none)])])])
323AC_MSG_RESULT($liberty_cv_uint64)
324if test "$liberty_cv_uint64" != none; then
6489430a
MR
325 AC_DEFINE_UNQUOTED(UNSIGNED_64BIT_TYPE, $liberty_cv_uint64,
326 [Define to an unsigned 64-bit type available in the compiler.])
9bf3c9cc
RH
327fi
328
0e497905
OS
329AC_TYPE_INTPTR_T
330AC_TYPE_UINTPTR_T
1cfabf34 331AC_TYPE_SSIZE_T
0e497905 332
39e8d049
KG
333# Given the above check, we always have uintptr_t or a fallback
334# definition. So define HAVE_UINTPTR_T in case any imported code
335# relies on it.
336AC_DEFINE(HAVE_UINTPTR_T, 1, [Define if you have the \`uintptr_t' type.])
d3982b71 337
deae2ed9
MM
338AC_TYPE_PID_T
339
3affd5f0
JL
340# This is the list of functions which libiberty will provide if they
341# are not available on the host.
342
343funcs="asprintf"
344funcs="$funcs atexit"
345funcs="$funcs basename"
346funcs="$funcs bcmp"
347funcs="$funcs bcopy"
dac45916 348funcs="$funcs bsearch"
3affd5f0 349funcs="$funcs bzero"
a9acf741 350funcs="$funcs calloc"
3affd5f0 351funcs="$funcs clock"
29650b2b 352funcs="$funcs ffs"
3affd5f0
JL
353funcs="$funcs getcwd"
354funcs="$funcs getpagesize"
17049f0b 355funcs="$funcs gettimeofday"
3affd5f0
JL
356funcs="$funcs index"
357funcs="$funcs insque"
358funcs="$funcs memchr"
359funcs="$funcs memcmp"
360funcs="$funcs memcpy"
5fbd9447 361funcs="$funcs memmem"
3affd5f0 362funcs="$funcs memmove"
029bcc09 363funcs="$funcs mempcpy"
3affd5f0 364funcs="$funcs memset"
687361c8 365funcs="$funcs mkstemps"
9eb4080f 366funcs="$funcs putenv"
3affd5f0
JL
367funcs="$funcs random"
368funcs="$funcs rename"
369funcs="$funcs rindex"
9eb4080f 370funcs="$funcs setenv"
bd3fbc6b 371funcs="$funcs snprintf"
3affd5f0 372funcs="$funcs sigsetmask"
029bcc09
KG
373funcs="$funcs stpcpy"
374funcs="$funcs stpncpy"
3affd5f0
JL
375funcs="$funcs strcasecmp"
376funcs="$funcs strchr"
377funcs="$funcs strdup"
378funcs="$funcs strncasecmp"
17998b22 379funcs="$funcs strndup"
9a9baa52 380funcs="$funcs strnlen"
3affd5f0
JL
381funcs="$funcs strrchr"
382funcs="$funcs strstr"
383funcs="$funcs strtod"
384funcs="$funcs strtol"
385funcs="$funcs strtoul"
ea41822a
YG
386funcs="$funcs strtoll"
387funcs="$funcs strtoull"
83fbfe42 388funcs="$funcs strverscmp"
3affd5f0
JL
389funcs="$funcs tmpnam"
390funcs="$funcs vasprintf"
391funcs="$funcs vfprintf"
392funcs="$funcs vprintf"
bd3fbc6b 393funcs="$funcs vsnprintf"
3affd5f0
JL
394funcs="$funcs vsprintf"
395funcs="$funcs waitpid"
6e9bd0f8 396funcs="$funcs setproctitle"
3affd5f0
JL
397
398# Also in the old function.def file: alloca, vfork, getopt.
399
aa9dc53d 400vars="sys_errlist sys_nerr sys_siglist"
3affd5f0 401
d423df48 402checkfuncs="__fsetlocking canonicalize_file_name dup3 getrlimit getrusage \
df1346b4 403 getsysinfo gettimeofday on_exit pipe2 psignal pstat_getdynamic pstat_getstatic \
fbb334a6 404 realpath setrlimit spawnve spawnvpe strerror strsignal sysconf sysctl \
d423df48 405 sysmp table times wait3 wait4"
3affd5f0 406
fbb334a6
IS
407# Darwin has sbrk, but it is deprecated and that produces build-time warnings
408# so do not check for it.
409case "${host}" in
410 *-*-darwin*) ;;
411 *) checkfuncs="$checkfuncs sbrk"
412esac
413
3affd5f0
JL
414# These are neither executed nor required, but they help keep
415# autoheader happy without adding a bunch of text to acconfig.h.
416if test "x" = "y"; then
59a8dc25
BE
417 AC_CHECK_FUNCS(asprintf atexit \
418 basename bcmp bcopy bsearch bzero \
419 calloc canonicalize_file_name clock \
3b63ca7e 420 dup3 \
59a8dc25 421 ffs __fsetlocking \
d423df48 422 getcwd getpagesize getrlimit getrusage getsysinfo gettimeofday \
59a8dc25
BE
423 index insque \
424 memchr memcmp memcpy memmem memmove memset mkstemps \
425 on_exit \
df1346b4 426 pipe2 psignal pstat_getdynamic pstat_getstatic putenv \
59a8dc25 427 random realpath rename rindex \
d423df48 428 sbrk setenv setproctitle setrlimit sigsetmask snprintf spawnve spawnvpe \
3b63ca7e 429 stpcpy stpncpy strcasecmp strchr strdup \
9a9baa52 430 strerror strncasecmp strndup strnlen strrchr strsignal strstr strtod \
ea41822a 431 strtol strtoul strtoll strtoull strverscmp sysconf sysctl sysmp \
59a8dc25
BE
432 table times tmpnam \
433 vasprintf vfprintf vprintf vsprintf \
434 wait3 wait4 waitpid)
63d9caf9 435 AC_CHECK_DECLS([basename(char *), ffs, asprintf, vasprintf, snprintf, vsnprintf, strtol, strtoul, strtoll, strtoull, strnlen])
d1209685
ZW
436 AC_DEFINE(HAVE_SYS_ERRLIST, 1, [Define if you have the sys_errlist variable.])
437 AC_DEFINE(HAVE_SYS_NERR, 1, [Define if you have the sys_nerr variable.])
438 AC_DEFINE(HAVE_SYS_SIGLIST, 1, [Define if you have the sys_siglist variable.])
6599da04
JM
439fi
440
3affd5f0
JL
441# For each of these functions, if the host does not provide the
442# function we want to put FN.o in LIBOBJS, and if the host does
b548dffb 443# provide the function, we want to define HAVE_FN in config.h.
3affd5f0
JL
444
445setobjs=
7c72138a 446CHECK=
3affd5f0
JL
447if test -n "${with_target_subdir}"; then
448
ca6b370d 449 # We are being configured as a target library. AC_REPLACE_FUNCS
3affd5f0 450 # may not work correctly, because the compiler may not be able to
ca6b370d
JL
451 # link executables. Note that we may still be being configured
452 # native.
3affd5f0
JL
453
454 # If we are being configured for newlib, we know which functions
455 # newlib provide and which ones we will be expected to provide.
456
457 if test "x${with_newlib}" = "xyes"; then
238235ef
DJ
458 AC_LIBOBJ([asprintf])
459 AC_LIBOBJ([basename])
460 AC_LIBOBJ([insque])
461 AC_LIBOBJ([random])
462 AC_LIBOBJ([strdup])
463 AC_LIBOBJ([vasprintf])
3affd5f0
JL
464
465 for f in $funcs; do
466 case "$f" in
ca6b370d 467 asprintf | basename | insque | random | strdup | vasprintf)
3affd5f0
JL
468 ;;
469 *)
470 n=HAVE_`echo $f | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
471 AC_DEFINE_UNQUOTED($n)
472 ;;
473 esac
474 done
475
476 # newlib doesnt provide any of the variables in $vars, so we
477 # dont have to check them here.
478
ca6b370d 479 # Of the functions in $checkfuncs, newlib only has strerror.
c1300f45 480 AC_DEFINE(HAVE_STRERROR)
3affd5f0
JL
481
482 setobjs=yes
483
484 fi
7c72138a 485
70aec81b
CV
486 # If we are being configured for Mingw, we know which functions
487 # Mingw provides and which ones we will be expected to provide.
488
489 case "${host}" in
490 *-*-mingw*)
491 AC_LIBOBJ([asprintf])
492 AC_LIBOBJ([basename])
493 AC_LIBOBJ([bcmp])
494 AC_LIBOBJ([bcopy])
495 AC_LIBOBJ([bzero])
496 AC_LIBOBJ([clock])
497 AC_LIBOBJ([ffs])
498 AC_LIBOBJ([getpagesize])
499 AC_LIBOBJ([index])
500 AC_LIBOBJ([insque])
501 AC_LIBOBJ([mempcpy])
502 AC_LIBOBJ([mkstemps])
503 AC_LIBOBJ([random])
504 AC_LIBOBJ([rindex])
505 AC_LIBOBJ([sigsetmask])
506 AC_LIBOBJ([stpcpy])
507 AC_LIBOBJ([stpncpy])
508 AC_LIBOBJ([strndup])
9a9baa52 509 AC_LIBOBJ([strnlen])
70aec81b
CV
510 AC_LIBOBJ([strverscmp])
511 AC_LIBOBJ([vasprintf])
512 AC_LIBOBJ([waitpid])
513
514 for f in $funcs; do
515 case "$f" in
9a9baa52 516 asprintf | basename | bcmp | bcopy | bzero | clock | ffs | getpagesize | index | insque | mempcpy | mkstemps | random | rindex | sigsetmask | stpcpy | stpncpy | strdup | strndup | strnlen | strverscmp | vasprintf | waitpid)
70aec81b
CV
517 ;;
518 *)
519 n=HAVE_`echo $f | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
520 AC_DEFINE_UNQUOTED($n)
521 ;;
522 esac
523 done
524
525 # Mingw doesnt provide any of the variables in $vars, so we
526 # dont have to check them here.
527
528 # Of the functions in $checkfuncs, Mingw only has strerror.
529 AC_DEFINE(HAVE_STRERROR)
530
01459fb5
EZ
531 setobjs=yes
532 ;;
533
534 *-*-msdosdjgpp)
535 AC_LIBOBJ([vasprintf])
536 AC_LIBOBJ([vsnprintf])
537 AC_LIBOBJ([snprintf])
538 AC_LIBOBJ([asprintf])
539
540 for f in atexit basename bcmp bcopy bsearch bzero calloc clock ffs \
541 getcwd getpagesize getrusage gettimeofday \
542 index insque memchr memcmp memcpy memmove memset psignal \
543 putenv random rename rindex sbrk setenv stpcpy strcasecmp \
544 strchr strdup strerror strncasecmp strrchr strstr strtod \
545 strtol strtoul sysconf times tmpnam vfprintf vprintf \
546 vsprintf waitpid
547 do
548 n=HAVE_`echo $f | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
549 AC_DEFINE_UNQUOTED($n)
550 done
551
552
70aec81b
CV
553 setobjs=yes
554 ;;
555
556 esac
557
7c72138a
TT
558else
559
560 # Not a target library, so we set things up to run the test suite.
a584cf65 561 CHECK=really-check
7c72138a 562
3affd5f0
JL
563fi
564
7c72138a 565AC_SUBST(CHECK)
48d7db63 566AC_SUBST(target_header_dir)
7c72138a 567
b1c45ae4 568case "${host}" in
46af757b 569 *-*-cygwin* | *-*-mingw*)
c1300f45
KC
570 AC_DEFINE(HAVE_SYS_ERRLIST)
571 AC_DEFINE(HAVE_SYS_NERR)
b1c45ae4
CF
572 ;;
573esac
574
3affd5f0
JL
575if test -z "${setobjs}"; then
576 case "${host}" in
577
578 *-*-vxworks*)
579 # Handle VxWorks configuration specially, since on VxWorks the
580 # libraries are actually on the target board, not in the file
581 # system.
238235ef
DJ
582 AC_LIBOBJ([basename])
583 AC_LIBOBJ([getpagesize])
584 AC_LIBOBJ([insque])
585 AC_LIBOBJ([random])
586 AC_LIBOBJ([strcasecmp])
587 AC_LIBOBJ([strncasecmp])
588 AC_LIBOBJ([strdup])
589 AC_LIBOBJ([vfork])
590 AC_LIBOBJ([waitpid])
591 AC_LIBOBJ([vasprintf])
3affd5f0
JL
592 for f in $funcs; do
593 case "$f" in
594 basename | getpagesize | insque | random | strcasecmp)
595 ;;
596 strncasecmp | strdup | vfork | waitpid | vasprintf)
597 ;;
598 *)
599 n=HAVE_`echo $f | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
600 AC_DEFINE_UNQUOTED($n)
601 ;;
602 esac
603 done
604
605 # VxWorks doesn't provide any of the variables in $vars, so we
606 # don't have to check them here.
607
608 # Of the functions in $checkfuncs, VxWorks only has strerror.
c1300f45 609 AC_DEFINE(HAVE_STRERROR)
3affd5f0
JL
610
611 setobjs=yes
612 ;;
613
614 esac
615fi
616
617if test -z "${setobjs}"; then
618
619 case "${host}" in
620
41fdbd54
JB
621 *-*-android*)
622 # On android, getpagesize is defined in unistd.h as a static inline
623 # function, which AC_CHECK_FUNCS does not handle properly.
624 ac_cv_func_getpagesize=yes
625 ;;
626
a0864ce8
JDA
627 hppa*-*-hpux*)
628 # Replace system snprintf and vsnprintf with libiberty implementations.
629 AC_LIBOBJ([snprintf])
630 AC_LIBOBJ([vsnprintf])
631 ;;
632
3affd5f0
JL
633 *-*-mingw32*)
634 # Under mingw32, sys_nerr and sys_errlist exist, but they are
635 # macros, so the test below won't find them.
d1209685
ZW
636 libiberty_cv_var_sys_nerr=yes
637 libiberty_cv_var_sys_errlist=yes
3affd5f0
JL
638 ;;
639
b3df8be1 640 *-*-msdosdjgpp*)
fe8ee922
DD
641 # vfork and fork are stubs.
642 ac_cv_func_vfork_works=no
643 ;;
644
89f602a7
MK
645 *-*-uwin*)
646 # Under some versions of uwin, vfork is notoriously buggy and the test
647 # can hang configure; on other versions, vfork exists just as a stub.
648 # FIXME: This should be removed once vfork in uwin's runtime is fixed.
649 ac_cv_func_vfork_works=no
62133b5e
MK
650 # Under uwin 2.0+, sys_nerr and sys_errlist exist, but they are
651 # macros (actually, these are imported from a DLL, but the end effect
652 # is the same), so the test below won't find them.
d1209685
ZW
653 libiberty_cv_var_sys_nerr=yes
654 libiberty_cv_var_sys_errlist=yes
89f602a7
MK
655 ;;
656
ee262b6f
DR
657 *-*-*vms*)
658 # Under VMS, vfork works very different than on Unix. The standard test
659 # won't work, and it isn't easily adaptable. It makes more sense to
660 # just force it.
661 ac_cv_func_vfork_works=yes
662 ;;
663
3affd5f0
JL
664 esac
665
666 # We haven't set the list of objects yet. Use the standard autoconf
667 # tests. This will only work if the compiler works.
238235ef 668 AC_ISC_POSIX
3affd5f0 669 AC_REPLACE_FUNCS($funcs)
b548dffb 670 libiberty_AC_FUNC_C_ALLOCA
a4f74b58 671 AC_FUNC_FORK
3affd5f0 672 if test $ac_cv_func_vfork_works = no; then
238235ef 673 AC_LIBOBJ([vfork])
3affd5f0 674 fi
e490616e
ZW
675 # We only need _doprnt if we might use it to implement v*printf.
676 if test $ac_cv_func_vprintf != yes \
677 || test $ac_cv_func_vfprintf != yes \
678 || test $ac_cv_func_vsprintf != yes; then
679 AC_REPLACE_FUNCS(_doprnt)
9ce3f7e5
DD
680 else
681 AC_CHECK_FUNCS(_doprnt)
e490616e
ZW
682 fi
683
3affd5f0
JL
684 for v in $vars; do
685 AC_MSG_CHECKING([for $v])
686 AC_CACHE_VAL(libiberty_cv_var_$v,
f418bc3c 687 [AC_LINK_IFELSE([AC_LANG_PROGRAM([[extern int $v [];]],[[if ($v [0]) return 1;]])],
a4f74b58
KC
688 [eval "libiberty_cv_var_$v=yes"],
689 [eval "libiberty_cv_var_$v=no"])])
3affd5f0
JL
690 if eval "test \"`echo '$libiberty_cv_var_'$v`\" = yes"; then
691 AC_MSG_RESULT(yes)
692 n=HAVE_`echo $v | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
693 AC_DEFINE_UNQUOTED($n)
6599da04 694 else
3affd5f0 695 AC_MSG_RESULT(no)
6599da04 696 fi
3affd5f0 697 done
aa9dc53d
ACY
698
699 # special check for _system_configuration because AIX <4.3.2 do not
700 # contain the `physmem' member.
701 AC_MSG_CHECKING([for external symbol _system_configuration])
a4f74b58
KC
702 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/systemcfg.h>]],
703 [[double x = _system_configuration.physmem;]])],
aa9dc53d
ACY
704 [AC_MSG_RESULT([yes])
705 AC_DEFINE(HAVE__SYSTEM_CONFIGURATION, 1,
a4f74b58 706 [Define if you have the _system_configuration variable.])],
aa9dc53d
ACY
707 [AC_MSG_RESULT([no])])
708
3affd5f0 709 AC_CHECK_FUNCS($checkfuncs)
c3f247f4 710 AC_CHECK_DECLS([basename(char *), ffs, asprintf, vasprintf, snprintf, vsnprintf])
fbb334a6
IS
711 AC_CHECK_DECLS([calloc, getenv, getopt, malloc, realloc])
712 case "${host}" in
713 *-*-darwin*) ;; # Darwin's sbrk implementation is deprecated.
714 *) AC_CHECK_DECLS([sbrk]);;
715 esac
2d3a2063 716 AC_CHECK_DECLS([strtol, strtoul, strtoll, strtoull])
83fbfe42 717 AC_CHECK_DECLS([strverscmp])
63d9caf9 718 AC_CHECK_DECLS([strnlen])
4876b2b4 719 libiberty_NEED_DECLARATION(canonicalize_file_name)
3affd5f0
JL
720fi
721
55d0e5e0
ZW
722# Figure out which version of pexecute to use.
723case "${host}" in
16f60fcb
TG
724 *-*-mingw* | *-*-winnt*) pexecute=pex-win32 ;;
725 *-*-msdosdjgpp*) pexecute=pex-djgpp ;;
726 *-*-msdos*) pexecute=pex-msdos ;;
727 *) pexecute=pex-unix ;;
55d0e5e0
ZW
728esac
729AC_SUBST(pexecute)
730
a9266bfa
KG
731libiberty_AC_FUNC_STRNCMP
732
3affd5f0
JL
733# Install a library built with a cross compiler in $(tooldir) rather
734# than $(libdir).
ca6b370d 735if test -z "${with_cross_host}"; then
3affd5f0
JL
736 INSTALL_DEST=libdir
737else
738 INSTALL_DEST=tooldir
6599da04 739fi
3affd5f0
JL
740AC_SUBST(INSTALL_DEST)
741
ad49d865
L
742m4_pattern_allow(LIBOBJS)
743L=""
744for l in x $LIBOBJS; do
745 case $l in
746 x) ;;
747 *) L="$L ./$l" ;;
748 esac
749done
750LIBOBJS="$L"
751
cf61af07
CD
752dnl Required by html and install-html
753AC_SUBST(datarootdir)
754AC_SUBST(docdir)
755AC_SUBST(htmldir)
756
3affd5f0 757# We need multilib support, but only if configuring for the target.
a4f74b58
KC
758AC_CONFIG_FILES([Makefile testsuite/Makefile])
759AC_CONFIG_COMMANDS([default],
760 [[test -z "$CONFIG_HEADERS" || echo timestamp > stamp-h
3affd5f0 761if test -n "$CONFIG_FILES"; then
27cfe310 762 if test -n "${with_target_subdir}"; then
3affd5f0
JL
763 # FIXME: We shouldn't need to set ac_file
764 ac_file=Makefile
6706f116 765 LD="${ORIGINAL_LD_FOR_MULTILIBS}"
3affd5f0
JL
766 . ${libiberty_topdir}/config-ml.in
767 fi
a4f74b58
KC
768fi]],
769[[srcdir=${srcdir}
3affd5f0
JL
770host=${host}
771target=${target}
772with_target_subdir=${with_target_subdir}
773with_multisubdir=${with_multisubdir}
774ac_configure_args="--enable-multilib ${ac_configure_args}"
775CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
3343fdd2 776ORIGINAL_LD_FOR_MULTILIBS="${ORIGINAL_LD_FOR_MULTILIBS}"
3affd5f0 777libiberty_topdir=${libiberty_topdir}
a4f74b58
KC
778]])
779AC_OUTPUT