]> git.ipfire.org Git - thirdparty/bash.git/blame - configure.ac
Bash-5.0 patch 4: the wait builtin without arguments only waits for known children...
[thirdparty/bash.git] / configure.ac
CommitLineData
ac50fbac 1dnl
d233b485 2dnl Configure script for bash-5.0
ac50fbac
CR
3dnl
4dnl report bugs to chet@po.cwru.edu
5dnl
6dnl Process this file with autoconf to produce a configure script.
7
d233b485 8# Copyright (C) 1987-2018 Free Software Foundation, Inc.
ac50fbac
CR
9
10#
11# This program is free software: you can redistribute it and/or modify
12# it under the terms of the GNU General Public License as published by
13# the Free Software Foundation, either version 3 of the License, or
14# (at your option) any later version.
15#
16# This program is distributed in the hope that it will be useful,
17# but WITHOUT ANY WARRANTY; without even the implied warranty of
18# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19# GNU General Public License for more details.
20#
21# You should have received a copy of the GNU General Public License
22# along with this program. If not, see <http://www.gnu.org/licenses/>.
23
d233b485 24AC_REVISION([for Bash 5.0, version 5.005])dnl
ac50fbac 25
d233b485 26define(bashvers, 5.0)
ac50fbac
CR
27define(relstatus, release)
28
29AC_INIT([bash], bashvers-relstatus, [bug-bash@gnu.org])
30
31dnl make sure we are using a recent autoconf version
32AC_PREREQ(2.61)
33
34AC_CONFIG_SRCDIR(shell.h)
35dnl where to find install.sh, config.sub, and config.guess
36AC_CONFIG_AUX_DIR(./support)
37AC_CONFIG_HEADERS(config.h)
38
39dnl checks for version info
40BASHVERS=bashvers
41RELSTATUS=relstatus
42
43dnl defaults for debug settings
44case "$RELSTATUS" in
a0c0a00f 45alp*|bet*|dev*|rc*|releng*|maint*) DEBUG='-DDEBUG' MALLOC_DEBUG='-DMALLOC_DEBUG' ;;
ac50fbac
CR
46*) DEBUG= MALLOC_DEBUG= ;;
47esac
48
49dnl canonicalize the host and os so we can do some tricky things before
50dnl parsing options
51AC_CANONICAL_HOST
52AC_CANONICAL_BUILD
53
54dnl configure defaults
55opt_bash_malloc=yes
ac50fbac
CR
56opt_afs=no
57opt_curses=no
58opt_with_installed_readline=no
59
60#htmldir=
61
62dnl some systems should be configured without the bash malloc by default
63dnl and some need a special compiler or loader
64dnl look in the NOTES file for more
65case "${host_cpu}-${host_os}" in
d233b485 66# mostly obsolete platforms
ac50fbac
CR
67alpha*-*) opt_bash_malloc=no ;; # alpha running osf/1 or linux
68*[[Cc]]ray*-*) opt_bash_malloc=no ;; # Crays
69*-osf1*) opt_bash_malloc=no ;; # other osf/1 machines
d233b485 70*-dgux*) opt_bash_malloc=no ;; # DG/UX machines
ac50fbac 71sparc-svr4*) opt_bash_malloc=no ;; # sparc SVR4, SVR4.2
ac50fbac 72m68k-sysv) opt_bash_malloc=no ;; # fixes file descriptor leak in closedir
d233b485
CR
73*-bsdi2.1|*-bsdi3.?) opt_bash_malloc=no ; : ${CC:=shlicc2} ;; # for loadable builtins
74*-opennt*|*-interix*) opt_bash_malloc=no ;; # Interix, now owned by Microsoft
75*-beos*) opt_bash_malloc=no ;; # they say it's suitable
76# These need additional investigation
ac50fbac 77sparc-linux*) opt_bash_malloc=no ;; # sparc running linux; requires ELF
ac50fbac 78*-aix*) opt_bash_malloc=no ;; # AIX machines
d233b485
CR
79*-cygwin*) opt_bash_malloc=no ;; # Cygnus's CYGWIN environment
80# Mach-derived systems have a ton of extra malloc functions and lack sbrk(2)
ac50fbac
CR
81*-nextstep*) opt_bash_malloc=no ;; # NeXT machines running NeXTstep
82*-openstep*) opt_bash_malloc=no ;; # i386/Sparc/HP machines running Openstep
83*-macos*) opt_bash_malloc=no ;; # Apple MacOS X
84*-rhapsody*) opt_bash_malloc=no ;; # Apple Rhapsody (MacOS X)
85*-darwin*) opt_bash_malloc=no ;; # Apple Darwin (MacOS X)
ac50fbac 86*-machten4) opt_bash_malloc=no ;; # MachTen 4.x
d233b485
CR
87# Niche or non-mainstream-shell-user systems
88*-qnx*) opt_bash_malloc=no ;; # QNX 4.2, QNX [67].x
ac50fbac
CR
89*-nsk*) opt_bash_malloc=no ;; # HP NonStop
90*-haiku*) opt_bash_malloc=no ;; # Haiku OS
d233b485
CR
91# Deprecated -- bash malloc is suitable
92#sparc-netbsd*) opt_bash_malloc=no ;; # needs 8-byte alignment
93#mips-irix6*) opt_bash_malloc=no ;; # needs 8-byte alignment
94#*-freebsd*-gnu) opt_bash_malloc=no ;; # there's some undetermined problem here
95#*-freebsd*) opt_bash_malloc=no ;; # they claim it's better; I disagree
96#*-openbsd*) opt_bash_malloc=no ;; # they claim it needs eight-bit alignment
97#*-mirbsd*) opt_bash_malloc=no ;; # they claim it needs eight-bit alignment
ac50fbac
CR
98esac
99
100# memory scrambling on free()
101case "${host_os}" in
102sco3.2v5*|sco3.2v4*) opt_memscramble=no ;;
103*) opt_memscramble=yes ;;
104esac
105
106dnl
107dnl macros for the bash debugger
108dnl
109dnl AM_PATH_LISPDIR
110AC_ARG_VAR(DEBUGGER_START_FILE, [location of bash debugger initialization file])
111
112dnl arguments to configure
113dnl packages
114AC_ARG_WITH(afs, AC_HELP_STRING([--with-afs], [if you are running AFS]), opt_afs=$withval)
115AC_ARG_WITH(bash-malloc, AC_HELP_STRING([--with-bash-malloc], [use the Bash version of malloc]), opt_bash_malloc=$withval)
116AC_ARG_WITH(curses, AC_HELP_STRING([--with-curses], [use the curses library instead of the termcap library]), opt_curses=$withval)
117AC_ARG_WITH(gnu-malloc, AC_HELP_STRING([--with-gnu-malloc], [synonym for --with-bash-malloc]), opt_bash_malloc=$withval)
118AC_ARG_WITH(installed-readline, AC_HELP_STRING([--with-installed-readline], [use a version of the readline library that is already installed]), opt_with_installed_readline=$withval)
ac50fbac
CR
119
120if test "$opt_bash_malloc" = yes; then
121 MALLOC_TARGET=malloc
122 MALLOC_SRC=malloc.c
123
124 MALLOC_LIB='-lmalloc'
125 MALLOC_LIBRARY='$(ALLOC_LIBDIR)/libmalloc.a'
126 MALLOC_LDFLAGS='-L$(ALLOC_LIBDIR)'
127 MALLOC_DEP='$(MALLOC_LIBRARY)'
128
129 AC_DEFINE(USING_BASH_MALLOC)
130else
131 MALLOC_LIB=
132 MALLOC_LIBRARY=
133 MALLOC_LDFLAGS=
134 MALLOC_DEP=
135fi
136
ac50fbac
CR
137if test "$opt_afs" = yes; then
138 AC_DEFINE(AFS)
139fi
140
141if test "$opt_curses" = yes; then
142 prefer_curses=yes
143fi
144
145if test -z "${DEBUGGER_START_FILE}"; then
146 DEBUGGER_START_FILE='${datadir}/bashdb/bashdb-main.inc'
147fi
148
149dnl optional shell features in config.h.in
150opt_minimal_config=no
151
152opt_job_control=yes
153opt_alias=yes
154opt_readline=yes
155opt_history=yes
156opt_bang_history=yes
157opt_dirstack=yes
158opt_restricted=yes
159opt_process_subst=yes
160opt_prompt_decoding=yes
161opt_select=yes
162opt_help=yes
163opt_array_variables=yes
164opt_dparen_arith=yes
165opt_extended_glob=yes
166opt_brace_expansion=yes
167opt_disabled_builtins=no
168opt_command_timing=yes
169opt_xpg_echo=no
170opt_strict_posix=no
171opt_cond_command=yes
172opt_cond_regexp=yes
173opt_coproc=yes
174opt_arith_for_command=yes
175opt_net_redirs=yes
176opt_progcomp=yes
177opt_separate_help=no
178opt_multibyte=yes
179opt_debugger=yes
180opt_single_longdoc_strings=yes
181opt_casemod_attrs=yes
182opt_casemod_expansions=yes
183opt_extglob_default=no
184opt_dircomplete_expand_default=no
d233b485 185opt_globascii_default=yes
a0c0a00f 186opt_function_import=yes
d233b485 187opt_dev_fd_stat_broken=no
ac50fbac
CR
188
189dnl options that affect how bash is compiled and linked
190opt_static_link=no
191opt_profiling=no
192
193dnl argument parsing for optional features
194AC_ARG_ENABLE(minimal-config, AC_HELP_STRING([--enable-minimal-config], [a minimal sh-like configuration]), opt_minimal_config=$enableval)
195
196dnl a minimal configuration turns everything off, but features can be
197dnl added individually
198if test $opt_minimal_config = yes; then
199 opt_job_control=no opt_alias=no opt_readline=no
200 opt_history=no opt_bang_history=no opt_dirstack=no
201 opt_restricted=no opt_process_subst=no opt_prompt_decoding=no
202 opt_select=no opt_help=no opt_array_variables=no opt_dparen_arith=no
203 opt_brace_expansion=no opt_disabled_builtins=no opt_command_timing=no
204 opt_extended_glob=no opt_cond_command=no opt_arith_for_command=no
205 opt_net_redirs=no opt_progcomp=no opt_separate_help=no
206 opt_multibyte=yes opt_cond_regexp=no opt_coproc=no
207 opt_casemod_attrs=no opt_casemod_expansions=no opt_extglob_default=no
d233b485 208 opt_globascii_default=yes
ac50fbac
CR
209fi
210
211AC_ARG_ENABLE(alias, AC_HELP_STRING([--enable-alias], [enable shell aliases]), opt_alias=$enableval)
212AC_ARG_ENABLE(arith-for-command, AC_HELP_STRING([--enable-arith-for-command], [enable arithmetic for command]), opt_arith_for_command=$enableval)
213AC_ARG_ENABLE(array-variables, AC_HELP_STRING([--enable-array-variables], [include shell array variables]), opt_array_variables=$enableval)
214AC_ARG_ENABLE(bang-history, AC_HELP_STRING([--enable-bang-history], [turn on csh-style history substitution]), opt_bang_history=$enableval)
215AC_ARG_ENABLE(brace-expansion, AC_HELP_STRING([--enable-brace-expansion], [include brace expansion]), opt_brace_expansion=$enableval)
216AC_ARG_ENABLE(casemod-attributes, AC_HELP_STRING([--enable-casemod-attributes], [include case-modifying variable attributes]), opt_casemod_attrs=$enableval)
217AC_ARG_ENABLE(casemod-expansions, AC_HELP_STRING([--enable-casemod-expansions], [include case-modifying word expansions]), opt_casemod_expansions=$enableval)
218AC_ARG_ENABLE(command-timing, AC_HELP_STRING([--enable-command-timing], [enable the time reserved word and command timing]), opt_command_timing=$enableval)
219AC_ARG_ENABLE(cond-command, AC_HELP_STRING([--enable-cond-command], [enable the conditional command]), opt_cond_command=$enableval)
220AC_ARG_ENABLE(cond-regexp, AC_HELP_STRING([--enable-cond-regexp], [enable extended regular expression matching in conditional commands]), opt_cond_regexp=$enableval)
221AC_ARG_ENABLE(coprocesses, AC_HELP_STRING([--enable-coprocesses], [enable coprocess support and the coproc reserved word]), opt_coproc=$enableval)
222AC_ARG_ENABLE(debugger, AC_HELP_STRING([--enable-debugger], [enable support for bash debugger]), opt_debugger=$enableval)
d233b485 223AC_ARG_ENABLE(dev-fd-stat-broken, AC_HELP_STRING([--enable-dev-fd-stat-broken], [enable this option if stat on /dev/fd/N and fstat on file descriptor N don't return the same results]), opt_dev_fd_stat_broken=$enableval)
ac50fbac
CR
224AC_ARG_ENABLE(direxpand-default, AC_HELP_STRING([--enable-direxpand-default], [enable the direxpand shell option by default]), opt_dircomplete_expand_default=$enableval)
225AC_ARG_ENABLE(directory-stack, AC_HELP_STRING([--enable-directory-stack], [enable builtins pushd/popd/dirs]), opt_dirstack=$enableval)
226AC_ARG_ENABLE(disabled-builtins, AC_HELP_STRING([--enable-disabled-builtins], [allow disabled builtins to still be invoked]), opt_disabled_builtins=$enableval)
227AC_ARG_ENABLE(dparen-arithmetic, AC_HELP_STRING([--enable-dparen-arithmetic], [include ((...)) command]), opt_dparen_arith=$enableval)
228AC_ARG_ENABLE(extended-glob, AC_HELP_STRING([--enable-extended-glob], [include ksh-style extended pattern matching]), opt_extended_glob=$enableval)
229AC_ARG_ENABLE(extended-glob-default, AC_HELP_STRING([--enable-extended-glob-default], [force extended pattern matching to be enabled by default]), opt_extglob_default=$enableval)
a0c0a00f 230AC_ARG_ENABLE(function-import, AC_HELP_STRING([--enable-function-import], [allow bash to import exported function definitions by default]), opt_function_import=$enableval)
ac50fbac
CR
231AC_ARG_ENABLE(glob-asciiranges-default, AC_HELP_STRING([--enable-glob-asciiranges-default], [force bracket range expressions in pattern matching to use the C locale by default]), opt_globascii_default=$enableval)
232AC_ARG_ENABLE(help-builtin, AC_HELP_STRING([--enable-help-builtin], [include the help builtin]), opt_help=$enableval)
233AC_ARG_ENABLE(history, AC_HELP_STRING([--enable-history], [turn on command history]), opt_history=$enableval)
234AC_ARG_ENABLE(job-control, AC_HELP_STRING([--enable-job-control], [enable job control features]), opt_job_control=$enableval)
235AC_ARG_ENABLE(multibyte, AC_HELP_STRING([--enable-multibyte], [enable multibyte characters if OS supports them]), opt_multibyte=$enableval)
236AC_ARG_ENABLE(net-redirections, AC_HELP_STRING([--enable-net-redirections], [enable /dev/tcp/host/port redirection]), opt_net_redirs=$enableval)
237AC_ARG_ENABLE(process-substitution, AC_HELP_STRING([--enable-process-substitution], [enable process substitution]), opt_process_subst=$enableval)
238AC_ARG_ENABLE(progcomp, AC_HELP_STRING([--enable-progcomp], [enable programmable completion and the complete builtin]), opt_progcomp=$enableval)
239AC_ARG_ENABLE(prompt-string-decoding, AC_HELP_STRING([--enable-prompt-string-decoding], [turn on escape character decoding in prompts]), opt_prompt_decoding=$enableval)
240AC_ARG_ENABLE(readline, AC_HELP_STRING([--enable-readline], [turn on command line editing]), opt_readline=$enableval)
241AC_ARG_ENABLE(restricted, AC_HELP_STRING([--enable-restricted], [enable a restricted shell]), opt_restricted=$enableval)
242AC_ARG_ENABLE(select, AC_HELP_STRING([--enable-select], [include select command]), opt_select=$enableval)
243AC_ARG_ENABLE(separate-helpfiles, AC_HELP_STRING([--enable-separate-helpfiles], [use external files for help builtin documentation]), opt_separate_help=$enableval)
244AC_ARG_ENABLE(single-help-strings, AC_HELP_STRING([--enable-single-help-strings], [store help documentation as a single string to ease translation]), opt_single_longdoc_strings=$enableval)
245AC_ARG_ENABLE(strict-posix-default, AC_HELP_STRING([--enable-strict-posix-default], [configure bash to be posix-conformant by default]), opt_strict_posix=$enableval)
246AC_ARG_ENABLE(usg-echo-default, AC_HELP_STRING([--enable-usg-echo-default], [a synonym for --enable-xpg-echo-default]), opt_xpg_echo=$enableval)
247AC_ARG_ENABLE(xpg-echo-default, AC_HELP_STRING([--enable-xpg-echo-default], [make the echo builtin expand escape sequences by default]), opt_xpg_echo=$enableval)
248
249dnl options that alter how bash is compiled and linked
250AC_ARG_ENABLE(mem-scramble, AC_HELP_STRING([--enable-mem-scramble], [scramble memory on calls to malloc and free]), opt_memscramble=$enableval)
251AC_ARG_ENABLE(profiling, AC_HELP_STRING([--enable-profiling], [allow profiling with gprof]), opt_profiling=$enableval)
252AC_ARG_ENABLE(static-link, AC_HELP_STRING([--enable-static-link], [link bash statically, for use as a root shell]), opt_static_link=$enableval)
253
254dnl So-called `precious' variables
255AC_ARG_VAR([CC_FOR_BUILD], [C compiler used when compiling binaries used only at build time])
d233b485 256AC_ARG_VAR([CFLAGS_FOR_BUILD], [Compilation options (CFLAGS) used when compiling binaries used only at build time])
ac50fbac
CR
257AC_ARG_VAR([LDFLAGS_FOR_BUILD], [Linker options (LDFLAGS) used when compiling binaries used only at build time])
258AC_ARG_VAR([CPPFLAGS_FOR_BUILD], [C preprocessor options (CPPFLAGS) used when compiling binaries used only at build time])
259
260dnl opt_job_control is handled later, after BASH_JOB_CONTROL_MISSING runs
261
262dnl opt_readline and opt_history are handled later, because AC_PROG_CC needs
263dnl to be run before we can check the version of an already-installed readline
264dnl library
265
266if test $opt_alias = yes; then
267AC_DEFINE(ALIAS)
268fi
269if test $opt_dirstack = yes; then
270AC_DEFINE(PUSHD_AND_POPD)
271fi
272if test $opt_restricted = yes; then
273AC_DEFINE(RESTRICTED_SHELL)
274fi
275if test $opt_process_subst = yes; then
276AC_DEFINE(PROCESS_SUBSTITUTION)
277fi
278if test $opt_prompt_decoding = yes; then
279AC_DEFINE(PROMPT_STRING_DECODE)
280fi
281if test $opt_select = yes; then
282AC_DEFINE(SELECT_COMMAND)
283fi
284if test $opt_help = yes; then
285AC_DEFINE(HELP_BUILTIN)
286fi
287if test $opt_array_variables = yes; then
288AC_DEFINE(ARRAY_VARS)
289fi
290if test $opt_dparen_arith = yes; then
291AC_DEFINE(DPAREN_ARITHMETIC)
292fi
293if test $opt_brace_expansion = yes; then
294AC_DEFINE(BRACE_EXPANSION)
295fi
296if test $opt_disabled_builtins = yes; then
297AC_DEFINE(DISABLED_BUILTINS)
298fi
299if test $opt_command_timing = yes; then
300AC_DEFINE(COMMAND_TIMING)
301fi
302if test $opt_xpg_echo = yes ; then
303AC_DEFINE(DEFAULT_ECHO_TO_XPG)
304fi
305if test $opt_strict_posix = yes; then
306AC_DEFINE(STRICT_POSIX)
307fi
308if test $opt_extended_glob = yes ; then
309AC_DEFINE(EXTENDED_GLOB)
310fi
311if test $opt_extglob_default = yes; then
312AC_DEFINE(EXTGLOB_DEFAULT, 1)
313else
314AC_DEFINE(EXTGLOB_DEFAULT, 0)
315fi
316if test $opt_cond_command = yes ; then
317AC_DEFINE(COND_COMMAND)
318fi
319if test $opt_cond_regexp = yes ; then
320AC_DEFINE(COND_REGEXP)
321fi
322if test $opt_coproc = yes; then
323AC_DEFINE(COPROCESS_SUPPORT)
324fi
325if test $opt_arith_for_command = yes; then
326AC_DEFINE(ARITH_FOR_COMMAND)
327fi
328if test $opt_net_redirs = yes; then
329AC_DEFINE(NETWORK_REDIRECTIONS)
330fi
331if test $opt_progcomp = yes; then
332AC_DEFINE(PROGRAMMABLE_COMPLETION)
333fi
334if test $opt_multibyte = no; then
335AC_DEFINE(NO_MULTIBYTE_SUPPORT)
336fi
337if test $opt_debugger = yes; then
338AC_DEFINE(DEBUGGER)
339fi
340if test $opt_casemod_attrs = yes; then
341AC_DEFINE(CASEMOD_ATTRS)
342fi
343if test $opt_casemod_expansions = yes; then
344AC_DEFINE(CASEMOD_EXPANSIONS)
345fi
346if test $opt_dircomplete_expand_default = yes; then
347AC_DEFINE(DIRCOMPLETE_EXPAND_DEFAULT)
348fi
349if test $opt_globascii_default = yes; then
350AC_DEFINE(GLOBASCII_DEFAULT, 1)
351else
352AC_DEFINE(GLOBASCII_DEFAULT, 0)
353fi
a0c0a00f
CR
354if test $opt_function_import = yes; then
355AC_DEFINE(FUNCTION_IMPORT)
356fi
d233b485
CR
357if test $opt_dev_fd_stat_broken = yes; then
358AC_DEFINE(DEV_FD_STAT_BROKEN)
359fi
ac50fbac
CR
360
361if test $opt_memscramble = yes; then
362AC_DEFINE(MEMSCRAMBLE)
363fi
364
365if test "$opt_minimal_config" = yes; then
366 TESTSCRIPT=run-minimal
367else
368 TESTSCRIPT=run-all
369fi
370
371HELPDIR= HELPDIRDEFINE= HELPINSTALL= HELPFILES_TARGET=
372if test "$opt_separate_help" != no; then
373 if test "$opt_separate_help" = "yes" ; then
374 HELPDIR='${datadir}/bash'
375 else
376 HELPDIR=$opt_separate_help
377 fi
378 HELPDIRDEFINE='-H ${HELPDIR}'
379 HELPINSTALL='install-help'
380 HELPFILES_TARGET='helpdoc'
381fi
382HELPSTRINGS=
383if test "$opt_single_longdoc_strings" != "yes"; then
384 HELPSTRINGS='-S'
385fi
386
387dnl now substitute in the values generated by arguments
388AC_SUBST(TESTSCRIPT)
ac50fbac
CR
389AC_SUBST(MALLOC_TARGET)
390AC_SUBST(MALLOC_SRC)
391
392AC_SUBST(MALLOC_LIB)
393AC_SUBST(MALLOC_LIBRARY)
394AC_SUBST(MALLOC_LDFLAGS)
395AC_SUBST(MALLOC_DEP)
396
397AC_SUBST(htmldir)
398
399AC_SUBST(HELPDIR)
400AC_SUBST(HELPDIRDEFINE)
401AC_SUBST(HELPINSTALL)
402AC_SUBST(HELPFILES_TARGET)
403AC_SUBST(HELPSTRINGS)
404
a0c0a00f
CR
405dnl We want these before the checks, so the checks can modify their values.
406if test -z "$CFLAGS"; then
407 AUTO_CFLAGS="-g ${GCC+-O2} ${GCC+-Wno-parentheses}"
408 AUTO_LDFLAGS="-g ${GCC+-O2}"
409else
410 AUTO_CFLAGS= AUTO_LDFLAGS=
411fi
412
ac50fbac
CR
413echo ""
414echo "Beginning configuration for bash-$BASHVERS-$RELSTATUS for ${host_cpu}-${host_vendor}-${host_os}"
415echo ""
416
417dnl compilation checks
418dnl AC_PROG_CC sets $cross_compiling to `yes' if cross-compiling for a
419dnl different environment
420AC_PROG_CC
421
422dnl test for Unix variants
423AC_ISC_POSIX
424AC_MINIX
425
426AC_SYS_LARGEFILE
427
428dnl BEGIN changes for cross-building (currently cygwin, minGW, and
429dnl (obsolete) BeOS)
430
431SIGNAMES_O=
432SIGNAMES_H=lsignames.h
433
434dnl load up the cross-building cache file -- add more cases and cache
435dnl files as necessary
436
437dnl Note that host and target machine are the same, and different than the
438dnl build machine.
439dnl Set SIGNAMES_H based on whether or not we're cross-compiling.
440
441CROSS_COMPILE=
442if test "x$cross_compiling" = "xyes"; then
443 case "${host}" in
444 *-cygwin*)
445 cross_cache=${srcdir}/cross-build/cygwin32.cache
446 ;;
447 *-mingw*)
448 cross_cache=${srcdir}/cross-build/cygwin32.cache
449 ;;
450 i[[3456]]86-*-beos*)
451 cross_cache=${srcdir}/cross-build/x86-beos.cache
452 ;;
d233b485
CR
453 *-qnx*)
454 cross_cache=${srcdir}/cross-build/qnx.cache
455 ;;
ac50fbac
CR
456 *) echo "configure: cross-compiling for $host is not supported" >&2
457 ;;
458 esac
459 if test -n "${cross_cache}" && test -r "${cross_cache}"; then
460 echo "loading cross-build cache file ${cross_cache}"
461 . ${cross_cache}
462 fi
463 unset cross_cache
464 SIGNAMES_O='signames.o'
465 CROSS_COMPILE='-DCROSS_COMPILING'
466 AC_SUBST(CROSS_COMPILE)
467fi
468AC_SUBST(SIGNAMES_H)
469AC_SUBST(SIGNAMES_O)
470
471dnl END changes for cross-building
472
ac50fbac
CR
473dnl default values
474CFLAGS=${CFLAGS-"$AUTO_CFLAGS"}
475# LDFLAGS=${LDFLAGS="$AUTO_LDFLAGS"} # XXX
476
477dnl handle options that alter how bash is compiled and linked
478dnl these must come after the test for cc/gcc
479if test "$opt_profiling" = "yes"; then
480 PROFILE_FLAGS=-pg
481 case "$host_os" in
d233b485 482 solaris2*|linux*) ;;
ac50fbac
CR
483 *) opt_static_link=yes ;;
484 esac
485 DEBUG= MALLOC_DEBUG=
486fi
487
488prefer_shared=yes
489prefer_static=no
490
491if test "$opt_static_link" = yes; then
492 prefer_static=yes
493 prefer_shared=no
494 # if we're using gcc, add `-static' to LDFLAGS, except on Solaris >= 2
495 if test -n "$GCC" || test "$ac_cv_prog_gcc" = "yes"; then
496 STATIC_LD="-static"
497 case "$host_os" in
d233b485 498 solaris2*|linux*) ;;
ac50fbac
CR
499 *) LDFLAGS="$LDFLAGS -static" ;; # XXX experimental
500 esac
501 fi
502fi
503
504# set the appropriate make variables for building the "build tools"
505# modify defaults based on whether or not we are cross compiling, since the
506# options for the target host may not be appropriate for the build host
507if test "X$cross_compiling" = "Xno"; then
508 CC_FOR_BUILD=${CC_FOR_BUILD-'$(CC)'}
509 CPPFLAGS_FOR_BUILD=${CPPFLAGS_FOR_BUILD-"$CPPFLAGS"} # XXX - should it be '$(CPPFLAGS)'
d233b485
CR
510 if test X"$opt_profiling" = Xyes; then
511 LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-'$(BASE_LDFLAGS)'}
512 else
513 LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-'$(LDFLAGS)'}
514 fi
ac50fbac
CR
515 # CFLAGS set above to default value if not passed in environment
516 CFLAGS_FOR_BUILD=${CFLAGS-'$(CFLAGS)'}
517 LIBS_FOR_BUILD=${LIBS_FOR_BUILD-'$(LIBS)'}
518else
519 CC_FOR_BUILD=${CC_FOR_BUILD-"gcc"}
520 CPPFLAGS_FOR_BUILD=${CPPFLAGS_FOR_BUILD-""}
521 LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-""}
522 CFLAGS_FOR_BUILD=${CFLAGS_FOR_BUILD="-g"}
523 LIBS_FOR_BUILD=${LIBS_FOR_BUILD-""}
524fi
525
526AC_SUBST(CFLAGS)
527AC_SUBST(CPPFLAGS)
528AC_SUBST(LDFLAGS)
529AC_SUBST(STATIC_LD)
530
531AC_SUBST(CC_FOR_BUILD)
532AC_SUBST(CFLAGS_FOR_BUILD)
533AC_SUBST(CPPFLAGS_FOR_BUILD)
534AC_SUBST(LDFLAGS_FOR_BUILD)
535AC_SUBST(LIBS_FOR_BUILD)
536
537AC_PROG_GCC_TRADITIONAL
538
539dnl BEGIN READLINE and HISTORY LIBRARY SECTION
540dnl prepare to allow bash to be linked against an already-installed readline
541
542dnl first test that the readline version is new enough to link bash against
543if test "$opt_readline" = yes && test "$opt_with_installed_readline" != "no"
544then
545 # If the user specified --with-installed-readline=PREFIX and PREFIX
546 # is not `yes', set ac_cv_rl_prefix to PREFIX
547 test $opt_with_installed_readline != "yes" && ac_cv_rl_prefix=$opt_with_installed_readline
548
549 RL_LIB_READLINE_VERSION
550
551 case "$ac_cv_rl_version" in
d233b485 552 8*|9*) ;;
ac50fbac
CR
553 *) opt_with_installed_readline=no
554 AC_MSG_WARN([installed readline library is too old to be linked with bash])
555 AC_MSG_WARN([using private bash version])
556 ;;
557 esac
558fi
559
560TILDE_LIB=-ltilde
561if test $opt_readline = yes; then
562 AC_DEFINE(READLINE)
563 if test "$opt_with_installed_readline" != "no" ; then
564 case "$opt_with_installed_readline" in
565 yes) RL_INCLUDE= ;;
566 *) case "$RL_INCLUDEDIR" in
567 /usr/include) ;;
568 *) RL_INCLUDE='-I${RL_INCLUDEDIR}' ;;
569 esac
570 ;;
571 esac
572 READLINE_DEP=
573 READLINE_LIB=-lreadline
574 # section for OS versions that don't allow unresolved symbols
575 # to be compiled into dynamic libraries.
576 case "$host_os" in
577 cygwin*) TILDE_LIB= ;;
578 esac
579 else
580 RL_LIBDIR='$(dot)/$(LIBSUBDIR)/readline'
581 READLINE_DEP='$(READLINE_LIBRARY)'
582 # section for OS versions that ship an older/broken version of
583 # readline as a standard dynamic library and don't allow a
584 # static version specified as -llibname to override the
585 # dynamic version
586 case "${host_os}" in
587 darwin[[89]]*|darwin10*) READLINE_LIB='${READLINE_LIBRARY}' ;;
588 *) READLINE_LIB=-lreadline ;;
589 esac
590 fi
591else
592 RL_LIBDIR='$(dot)/$(LIBSUBDIR)/readline'
593 READLINE_LIB= READLINE_DEP=
594fi
595if test $opt_history = yes || test $opt_bang_history = yes; then
596 if test $opt_history = yes; then
597 AC_DEFINE(HISTORY)
598 fi
599 if test $opt_bang_history = yes; then
600 AC_DEFINE(BANG_HISTORY)
601 fi
602 if test "$opt_with_installed_readline" != "no"; then
603 HIST_LIBDIR=$RL_LIBDIR
604 HISTORY_DEP=
605 HISTORY_LIB=-lhistory
606 case "$opt_with_installed_readline" in
607 yes) RL_INCLUDE= ;;
608 *) case "$RL_INCLUDEDIR" in
609 /usr/include) ;;
610 *) RL_INCLUDE='-I${RL_INCLUDEDIR}' ;;
611 esac
612 ;;
613 esac
614 else
615 HIST_LIBDIR='$(dot)/$(LIBSUBDIR)/readline'
616 HISTORY_DEP='$(HISTORY_LIBRARY)'
617 # section for OS versions that ship an older version of
618 # readline as a standard dynamic library and don't allow a
619 # static version specified as -llibname to override the
620 # dynamic version
621 case "${host_os}" in
622 darwin[[89]]*|darwin10*) HISTORY_LIB='${HISTORY_LIBRARY}' ;;
623 *) HISTORY_LIB=-lhistory ;;
624 esac
625 fi
626else
627 HIST_LIBDIR='$(dot)/$(LIBSUBDIR)/readline'
628 HISTORY_LIB= HISTORY_DEP=
629fi
630AC_SUBST(READLINE_LIB)
631AC_SUBST(READLINE_DEP)
632AC_SUBST(RL_LIBDIR)
633AC_SUBST(RL_INCLUDEDIR)
634AC_SUBST(RL_INCLUDE)
635AC_SUBST(HISTORY_LIB)
636AC_SUBST(HISTORY_DEP)
637AC_SUBST(HIST_LIBDIR)
638AC_SUBST(TILDE_LIB)
639
640dnl END READLINE and HISTORY LIBRARY SECTION
641
642dnl programs needed by the build and install process
643AC_PROG_INSTALL
644AC_CHECK_TOOL(AR, ar)
645dnl Set default for ARFLAGS, since autoconf does not have a macro for it.
646dnl This allows people to set it when running configure or make
647test -n "$ARFLAGS" || ARFLAGS="cr"
648AC_PROG_RANLIB
649AC_PROG_YACC
650AC_PROG_MAKE_SET
651
652case "$ac_cv_prog_YACC" in
653*bison*) ;;
654*) AC_MSG_WARN([bison not available; needed to process parse.y]) ;;
655esac
656
657case "$host_os" in
658opennt*|interix*) MAKE_SHELL="$INTERIX_ROOT/bin/sh" ;;
659*) MAKE_SHELL=/bin/sh ;;
660esac
661AC_SUBST(MAKE_SHELL)
662
663dnl this is similar to the expanded AC_PROG_RANLIB
664if test x$SIZE = x; then
665 if test x$ac_tool_prefix = x; then
666 SIZE=size
667 else
668 SIZE=${ac_tool_prefix}size
669 save_IFS=$IFS ; IFS=:
670 size_found=0
671 for dir in $PATH; do
672 if test -x $dir/$SIZE ; then
673 size_found=1
674 break
675 fi
676 done
677 if test $size_found -eq 0; then
678 SIZE=:
679 fi
680 IFS=$save_IFS
681 fi
682fi
683AC_SUBST(SIZE)
684
685m4_include([m4/stat-time.m4])
686m4_include([m4/timespec.m4])
687
688dnl Turn on any extensions available in the GNU C library.
689AC_DEFINE(_GNU_SOURCE, 1)
690
691dnl C compiler characteristics
692AC_C_CONST
693AC_C_INLINE
694AC_C_BIGENDIAN
695AC_C_STRINGIZE
696AC_C_LONG_DOUBLE
697AC_C_PROTOTYPES
698AC_C_CHAR_UNSIGNED
699AC_C_VOLATILE
700AC_C_RESTRICT
701
702dnl initialize GNU gettext
703AM_GNU_GETTEXT([no-libtool], [need-ngettext], [lib/intl])
704
705dnl header files
706AC_HEADER_DIRENT
707AC_HEADER_TIME
708
709BASH_HEADER_INTTYPES
710
711AC_CHECK_HEADERS(unistd.h stdlib.h stdarg.h varargs.h limits.h string.h \
712 memory.h locale.h termcap.h termio.h termios.h dlfcn.h \
713 stdbool.h stddef.h stdint.h netdb.h pwd.h grp.h strings.h \
714 regex.h syslog.h ulimit.h)
a0c0a00f 715AC_CHECK_HEADERS(sys/pte.h sys/stream.h sys/select.h sys/file.h sys/ioctl.h \
d233b485 716 sys/mman.h sys/param.h sys/socket.h sys/stat.h \
ac50fbac
CR
717 sys/time.h sys/times.h sys/types.h sys/wait.h)
718AC_CHECK_HEADERS(netinet/in.h arpa/inet.h)
719
720dnl sys/ptem.h requires definitions from sys/stream.h on systems where it
721dnl exists
722AC_CHECK_HEADER(sys/ptem.h, , ,[[
723#if HAVE_SYS_STREAM_H
724# include <sys/stream.h>
725#endif
726]])
727
a0c0a00f
CR
728dnl SunOS 4 needs to include <sys/time.h> before <sys/resource.h> to compile
729dnl autoconf complains about presence but inability to compile
730AC_CHECK_HEADER(sys/resource.h, AC_DEFINE(HAVE_SYS_RESOURCE_H), [], [[
731#if HAVE_SYS_TIME_H
732# include <sys/time.h>
733#endif
734]])
735
ac50fbac
CR
736dnl special checks for libc functions
737AC_FUNC_ALLOCA
a0c0a00f 738AC_FUNC_CHOWN
ac50fbac
CR
739AC_FUNC_GETPGRP
740AC_FUNC_SETVBUF_REVERSED
741AC_FUNC_VPRINTF
742AC_FUNC_STRCOLL
743
744dnl if we're not using the bash malloc but require the C alloca, set things
745dnl up to build a libmalloc.a containing only alloca.o
746
747if test "$ac_cv_func_alloca_works" = "no" && test "$opt_bash_malloc" = "no"; then
748 MALLOC_TARGET=alloca
749 MALLOC_SRC=alloca.c
750
751 MALLOC_LIB='-lmalloc'
752 MALLOC_LIBRARY='$(ALLOC_LIBDIR)/libmalloc.a'
753 MALLOC_LDFLAGS='-L$(ALLOC_LIBDIR)'
754 MALLOC_DEP='$(MALLOC_LIBRARY)'
755fi
756
757dnl if vprintf is not in libc, see if it's defined in stdio.h
758if test "$ac_cv_func_vprintf" = no; then
759 AC_MSG_CHECKING(for declaration of vprintf in stdio.h)
760 AC_EGREP_HEADER([[int[ ]*vprintf[^a-zA-Z0-9]]],stdio.h,ac_cv_func_vprintf=yes)
761 AC_MSG_RESULT($ac_cv_func_vprintf)
762 if test $ac_cv_func_vprintf = yes; then
763 AC_DEFINE(HAVE_VPRINTF)
764 fi
765fi
766
767if test "$ac_cv_func_vprintf" = no && test "$ac_cv_func__doprnt" = "yes"; then
768 AC_LIBOBJ(vprint)
769fi
770
771dnl signal stuff
772AC_TYPE_SIGNAL
773
774dnl checks for certain version-specific system calls and libc functions
775AC_CHECK_FUNC(__setostype, AC_DEFINE(HAVE_SETOSTYPE))
776AC_CHECK_FUNC(wait3, AC_DEFINE(HAVE_WAIT3))
777
778dnl checks for missing libc functions
779AC_CHECK_FUNC(mkfifo,AC_DEFINE(HAVE_MKFIFO),AC_DEFINE(MKFIFO_MISSING))
780
781dnl checks for system calls
782AC_CHECK_FUNCS(dup2 eaccess fcntl getdtablesize getgroups gethostname \
783 getpagesize getpeername getrlimit getrusage gettimeofday \
d233b485 784 kill killpg lstat pselect readlink select setdtablesize \
ac50fbac
CR
785 setitimer tcgetpgrp uname ulimit waitpid)
786AC_REPLACE_FUNCS(rename)
787
788dnl checks for c library functions
789AC_CHECK_FUNCS(bcopy bzero confstr faccessat fnmatch \
790 getaddrinfo gethostbyname getservbyname getservent inet_aton \
a0c0a00f 791 imaxdiv memmove pathconf putenv raise random regcomp regexec \
ac50fbac
CR
792 setenv setlinebuf setlocale setvbuf siginterrupt strchr \
793 sysconf syslog tcgetattr times ttyname tzset unsetenv)
794
795AC_CHECK_FUNCS(vasprintf asprintf)
796AC_CHECK_FUNCS(isascii isblank isgraph isprint isspace isxdigit)
797AC_CHECK_FUNCS(getpwent getpwnam getpwuid)
a0c0a00f 798AC_CHECK_FUNCS(mkstemp)
ac50fbac
CR
799AC_REPLACE_FUNCS(getcwd memset)
800AC_REPLACE_FUNCS(strcasecmp strcasestr strerror strftime strnlen strpbrk strstr)
801AC_REPLACE_FUNCS(strtod strtol strtoul strtoll strtoull strtoimax strtoumax)
802AC_REPLACE_FUNCS(dprintf)
803AC_REPLACE_FUNCS(strchrnul)
804AC_REPLACE_FUNCS(strdup)
805
a0c0a00f 806AC_CHECK_HEADERS(libaudit.h)
ac50fbac
CR
807AC_CHECK_DECLS([AUDIT_USER_TTY],,, [[#include <linux/audit.h>]])
808
809AC_CHECK_DECLS([confstr])
810AC_CHECK_DECLS([printf])
811AC_CHECK_DECLS([sbrk])
812AC_CHECK_DECLS([setregid])
813AC_CHECK_DECLS([strcpy])
814AC_CHECK_DECLS([strsignal])
815
816dnl Extra test to detect the horribly broken HP/UX 11.00 strtold(3)
817AC_CHECK_DECLS([strtold], [
818 AC_MSG_CHECKING([for broken strtold])
819 AC_CACHE_VAL(bash_cv_strtold_broken,
820 [AC_TRY_COMPILE(
821 [#include <stdlib.h>],
d233b485 822 [long double r; char *foo, bar; r = strtold(foo, &bar);],
ac50fbac
CR
823 bash_cv_strtold_broken=no, bash_cv_strtold_broken=yes,
824 [AC_MSG_WARN(cannot check for broken strtold if cross-compiling, defaulting to no)])
825 ]
826 )
827 AC_MSG_RESULT($bash_cv_strtold_broken)
828 if test "$bash_cv_strtold_broken" = "yes" ; then
829 AC_DEFINE(STRTOLD_BROKEN)
830 fi
831])
832
833BASH_CHECK_DECL(strtoimax)
834BASH_CHECK_DECL(strtol)
835BASH_CHECK_DECL(strtoll)
836BASH_CHECK_DECL(strtoul)
837BASH_CHECK_DECL(strtoull)
838BASH_CHECK_DECL(strtoumax)
839
840AC_FUNC_MKTIME
841
842dnl
843dnl Checks for lib/intl and related code (uses some of the output from
844dnl AM_GNU_GETTEXT)
845dnl
846
847AC_CHECK_HEADERS([argz.h errno.h fcntl.h malloc.h stdio_ext.h])
848
849dnl AC_FUNC_MALLOC
850AC_FUNC_MMAP
851AC_CHECK_FUNCS([__argz_count __argz_next __argz_stringify dcgettext mempcpy \
d233b485 852 munmap mremap stpcpy strcspn])
ac50fbac
CR
853
854INTL_DEP= INTL_INC= LIBINTL_H=
855if test "x$USE_INCLUDED_LIBINTL" = "xyes"; then
856 INTL_DEP='${INTL_LIBDIR}/libintl.a'
857 INTL_INC='-I${INTL_LIBSRC} -I${INTL_BUILDDIR}'
858 LIBINTL_H='${INTL_BUILDDIR}/libintl.h'
859fi
860AC_SUBST(INTL_DEP)
861AC_SUBST(INTL_INC)
862AC_SUBST(LIBINTL_H)
863
864dnl
865dnl End of checks needed by files in lib/intl
866dnl
867
868BASH_CHECK_MULTIBYTE
869
870dnl checks for the dynamic loading library functions in libc and libdl
871if test "$opt_static_link" != yes; then
872AC_CHECK_LIB(dl, dlopen)
873AC_CHECK_FUNCS(dlopen dlclose dlsym)
874fi
875
876dnl this defines HAVE_DECL_SYS_SIGLIST
877AC_DECL_SYS_SIGLIST
878
879dnl network functions -- check for inet_aton again
880if test "$ac_cv_func_inet_aton" != 'yes'; then
881BASH_FUNC_INET_ATON
882fi
883
884dnl libraries
885dnl this is reportedly no longer necessary for irix[56].?
886case "$host_os" in
887irix4*) AC_CHECK_LIB(sun, getpwent) ;;
888esac
889
890dnl check for getpeername in the socket library only if it's not in libc
891if test "$ac_cv_func_getpeername" = no; then
892 BASH_CHECK_LIB_SOCKET
893fi
894dnl check for gethostbyname in socket libraries if it's not in libc
895if test "$ac_cv_func_gethostbyname" = no; then
896 BASH_FUNC_GETHOSTBYNAME
897fi
898
899dnl system types
900AC_TYPE_GETGROUPS
901AC_TYPE_OFF_T
902AC_TYPE_MODE_T
903AC_TYPE_UID_T
904AC_TYPE_PID_T
905AC_TYPE_SIZE_T
a0c0a00f
CR
906AC_TYPE_UINTPTR_T
907
ac50fbac
CR
908AC_CHECK_TYPE(ssize_t, int)
909AC_CHECK_TYPE(time_t, long)
910
911BASH_TYPE_LONG_LONG
912BASH_TYPE_UNSIGNED_LONG_LONG
913
914AC_TYPE_SIGNAL
915BASH_TYPE_SIG_ATOMIC_T
916
917AC_CHECK_SIZEOF(char, 1)
918AC_CHECK_SIZEOF(short, 2)
919AC_CHECK_SIZEOF(int, 4)
920AC_CHECK_SIZEOF(long, 4)
921AC_CHECK_SIZEOF(char *, 4)
922AC_CHECK_SIZEOF(double, 8)
923AC_CHECK_SIZEOF([long long], 8)
924
925AC_CHECK_TYPE(u_int, [unsigned int])
926AC_CHECK_TYPE(u_long, [unsigned long])
927
928BASH_TYPE_BITS16_T
929BASH_TYPE_U_BITS16_T
930BASH_TYPE_BITS32_T
931BASH_TYPE_U_BITS32_T
932BASH_TYPE_BITS64_T
933
934BASH_TYPE_PTRDIFF_T
935
936dnl structures
937AC_HEADER_STAT
938
939dnl system services
940AC_SYS_INTERPRETER
941if test $ac_cv_sys_interpreter = yes; then
942AC_DEFINE(HAVE_HASH_BANG_EXEC)
943fi
944
945dnl Miscellaneous Bash tests
946if test "$ac_cv_func_lstat" = "no"; then
947BASH_FUNC_LSTAT
948fi
949
950dnl behavior of system calls and library functions
951BASH_FUNC_CTYPE_NONASCII
952BASH_FUNC_DUP2_CLOEXEC_CHECK
953BASH_SYS_PGRP_SYNC
954BASH_SYS_SIGNAL_VINTAGE
955
956dnl checking for the presence of certain library symbols
957BASH_SYS_ERRLIST
958BASH_SYS_SIGLIST
959BASH_UNDER_SYS_SIGLIST
960
961dnl various system types
962BASH_TYPE_SIGHANDLER
963BASH_CHECK_TYPE(clock_t, [#include <sys/times.h>], long)
964BASH_CHECK_TYPE(sigset_t, [#include <signal.h>], int)
965BASH_CHECK_TYPE(sig_atomic_t, [#include <signal.h>], int)
966BASH_CHECK_TYPE(quad_t, , long, HAVE_QUAD_T)
967BASH_CHECK_TYPE(intmax_t, , $bash_cv_type_long_long)
968BASH_CHECK_TYPE(uintmax_t, , $bash_cv_type_unsigned_long_long)
969if test "$ac_cv_header_sys_socket_h" = "yes"; then
970BASH_CHECK_TYPE(socklen_t, [#include <sys/socket.h>], [unsigned int], HAVE_SOCKLEN_T)
971fi
972BASH_TYPE_RLIMIT
973
974AC_CHECK_SIZEOF(intmax_t, 8)
975
976dnl presence and contents of structures used by system calls
977BASH_STRUCT_TERMIOS_LDISC
978BASH_STRUCT_TERMIO_LDISC
979BASH_STRUCT_DIRENT_D_INO
980BASH_STRUCT_DIRENT_D_FILENO
981BASH_STRUCT_DIRENT_D_NAMLEN
982BASH_STRUCT_WINSIZE
983BASH_STRUCT_TIMEVAL
984AC_CHECK_MEMBERS([struct stat.st_blocks])
985AC_STRUCT_TM
986AC_STRUCT_TIMEZONE
987BASH_STRUCT_TIMEZONE
988
989BASH_STRUCT_WEXITSTATUS_OFFSET
990
991BASH_CHECK_TYPE_STRUCT_TIMESPEC
992BASH_STAT_TIME
993
d233b485
CR
994dnl checks for system calls
995BASH_FUNC_SBRK
996
ac50fbac
CR
997dnl presence and behavior of C library functions
998BASH_FUNC_STRSIGNAL
999BASH_FUNC_OPENDIR_CHECK
1000BASH_FUNC_ULIMIT_MAXFDS
1001BASH_FUNC_FPURGE
1002BASH_FUNC_GETENV
1003if test "$ac_cv_func_getcwd" = "yes"; then
1004BASH_FUNC_GETCWD
1005fi
1006BASH_FUNC_POSIX_SETJMP
1007BASH_FUNC_STRCOLL
1008BASH_FUNC_SNPRINTF
1009BASH_FUNC_VSNPRINTF
1010
1011dnl If putenv or unsetenv is not present, set the right define so the
1012dnl prototype and declaration in lib/sh/getenv.c will be standard-conformant
1013
1014if test "$ac_cv_func_putenv" = "yes"; then
1015BASH_FUNC_STD_PUTENV
1016else
1017AC_DEFINE(HAVE_STD_PUTENV)
1018fi
1019if test "$ac_cv_func_unsetenv" = "yes"; then
1020BASH_FUNC_STD_UNSETENV
1021else
1022AC_DEFINE(HAVE_STD_UNSETENV)
1023fi
1024
1025BASH_FUNC_PRINTF_A_FORMAT
1026
d233b485
CR
1027BASH_FUNC_FNMATCH_EQUIV_FALLBACK
1028
ac50fbac
CR
1029dnl presence and behavior of OS functions
1030BASH_SYS_REINSTALL_SIGHANDLERS
1031BASH_SYS_JOB_CONTROL_MISSING
1032BASH_SYS_NAMED_PIPES
1033
1034dnl presence of certain CPP defines
1035AC_HEADER_TIOCGWINSZ
1036BASH_HAVE_TIOCSTAT
1037BASH_HAVE_FIONREAD
1038
1039BASH_CHECK_WCONTINUED
1040
1041dnl miscellaneous
1042BASH_CHECK_SPEED_T
1043BASH_CHECK_GETPW_FUNCS
1044BASH_CHECK_RTSIGS
1045BASH_CHECK_SYS_SIGLIST
1046
1047dnl special checks
1048case "$host_os" in
1049hpux*) BASH_CHECK_KERNEL_RLIMIT ;;
1050esac
1051
1052if test "$opt_readline" = yes; then
1053dnl yuck
1054case "$host_os" in
1055aix*) prefer_curses=yes ;;
1056esac
1057BASH_CHECK_LIB_TERMCAP
1058fi
1059AC_SUBST(TERMCAP_LIB)
1060AC_SUBST(TERMCAP_DEP)
1061
1062BASH_CHECK_DEV_FD
1063BASH_CHECK_DEV_STDIN
1064BASH_SYS_DEFAULT_MAIL_DIR
1065
1066if test "$bash_cv_job_control_missing" = missing; then
1067 opt_job_control=no
1068fi
1069
1070if test "$opt_job_control" = yes; then
1071AC_DEFINE(JOB_CONTROL)
1072JOBS_O=jobs.o
1073else
1074JOBS_O=nojobs.o
1075fi
1076
1077AC_SUBST(JOBS_O)
1078
1079dnl Defines that we want to propagate to the Makefiles in subdirectories,
1080dnl like glob and readline
1081
1082LOCAL_DEFS=-DSHELL
1083
1084dnl use this section to possibly define more cpp variables, specify local
1085dnl libraries, and specify any additional local cc or ld flags
1086dnl
1087dnl this should really go away someday
1088
1089case "${host_os}" in
1090sysv4.2*) AC_DEFINE(SVR4_2)
1091 AC_DEFINE(SVR4) ;;
1092sysv4*) AC_DEFINE(SVR4) ;;
1093sysv5*) AC_DEFINE(SVR5) ;;
1094hpux9*) LOCAL_CFLAGS="-DHPUX9 -DHPUX" ;;
1095hpux*) LOCAL_CFLAGS=-DHPUX ;;
1096dgux*) LOCAL_CFLAGS=-D_DGUX_SOURCE; LOCAL_LIBS=-ldgc ;;
1097isc*) LOCAL_CFLAGS=-Disc386 ;;
1098rhapsody*) LOCAL_CFLAGS=-DRHAPSODY ;;
1099darwin*) LOCAL_CFLAGS=-DMACOSX ;;
1100sco3.2v5*) LOCAL_CFLAGS="-b elf -DWAITPID_BROKEN -DPATH_MAX=1024" ;;
1101sco3.2v4*) LOCAL_CFLAGS="-DMUST_UNBLOCK_CHLD -DPATH_MAX=1024" ;;
1102sco3.2*) LOCAL_CFLAGS=-DMUST_UNBLOCK_CHLD ;;
1103sunos4*) LOCAL_CFLAGS=-DSunOS4 ;;
1104solaris2.5*) LOCAL_CFLAGS="-DSunOS5 -DSOLARIS" ;;
1105solaris2.8*) LOCAL_CFLAGS=-DSOLARIS ;;
1106solaris2.9*) LOCAL_CFLAGS=-DSOLARIS ;;
1107solaris2.10*) LOCAL_CFLAGS=-DSOLARIS ;;
1108solaris2*) LOCAL_CFLAGS=-DSOLARIS ;;
1109lynxos*) LOCAL_CFLAGS=-DRECYCLES_PIDS ;;
1110linux*) LOCAL_LDFLAGS=-rdynamic # allow dynamic loading
1111 case "`uname -r`" in
d233b485
CR
1112 1.*|2.[[0123]]*) : ;;
1113 *) AC_DEFINE(PGRP_PIPE) ;;
ac50fbac 1114 esac ;;
d233b485
CR
1115netbsd*|openbsd*) LOCAL_CFLAGS="-DDEV_FD_STAT_BROKEN" ;;
1116*qnx[[67]]*) LOCAL_LIBS="-lncurses" ;;
ac50fbac
CR
1117*qnx*) LOCAL_CFLAGS="-Dqnx -F -3s" LOCAL_LDFLAGS="-3s" LOCAL_LIBS="-lunix -lncurses" ;;
1118powerux*) LOCAL_LIBS="-lgen" ;;
1119cygwin*) LOCAL_CFLAGS=-DRECYCLES_PIDS ;;
1120opennt*|interix*) LOCAL_CFLAGS="-DNO_MAIN_ENV_ARG -DBROKEN_DIRENT_D_INO -D_POSIX_SOURCE -D_ALL_SOURCE -DRECYCLES_PIDS" ;;
1121*openstep*) LOCAL_CFLAGS="-D__APPLE_CC__" ;;
1122esac
1123
1124dnl Stanza for OS/compiler pair-specific flags
1125case "${host_os}-${CC}" in
1126aix4.2*-*gcc*) LOCAL_LDFLAGS="-Xlinker -bexpall -Xlinker -brtl" ;;
1127aix4.2*) LOCAL_LDFLAGS="-bexpall -brtl" ;;
1128bsdi4*-*gcc*) LOCAL_LDFLAGS="-rdynamic" ;; # allow dynamic loading, like Linux
a0c0a00f
CR
1129bsdi5*-*gcc*) LOCAL_LDFLAGS="-rdynamic" ;; # allow dynamic loading, like Linux
1130hpux11*-gcc*) LOCAL_LDFLAGS="-Wl,-E" ;; # allow dynamic loading
ac50fbac
CR
1131esac
1132
1133dnl FreeBSD-3.x can have either a.out or ELF
1134case "${host_os}" in
1135freebsd[[3-9]]*)
1136 if test -x /usr/bin/objformat && test "`/usr/bin/objformat`" = "elf" ; then
1137 LOCAL_LDFLAGS=-rdynamic # allow dynamic loading
1138 fi ;;
1139freebsdelf*) LOCAL_LDFLAGS=-rdynamic ;; # allow dynamic loading
1140dragonfly*) LOCAL_LDFLAGS=-rdynamic ;; # allow dynamic loading
1141esac
1142
1143case "$host_cpu" in
1144*cray*) LOCAL_CFLAGS="-DCRAY" ;; # shell var so config.h can use it
1145esac
1146
1147case "$host_cpu-$host_os" in
1148ibmrt-*bsd4*) LOCAL_CFLAGS="-ma -U__STDC__" ;;
1149esac
1150
1151case "$host_cpu-$host_vendor-$host_os" in
1152m88k-motorola-sysv3) LOCAL_CFLAGS=-DWAITPID_BROKEN ;;
1153mips-pyramid-sysv4) LOCAL_CFLAGS=-Xa ;;
1154esac
1155
d233b485
CR
1156# turn off paren warnings in gcc
1157if test "$GCC" = yes # && test -n "$DEBUG"
1158then
1159 CFLAGS="$CFLAGS -Wno-parentheses -Wno-format-security"
1160# if test -n "$DEBUG"
1161# then
1162# CFLAGS="$CFLAGS -Werror"
1163# fi
1164fi
1165
ac50fbac
CR
1166#
1167# Shared object configuration section. These values are generated by
1168# ${srcdir}/support/shobj-conf
1169#
1170if test "$ac_cv_func_dlopen" = "yes" && test -f ${srcdir}/support/shobj-conf
1171then
1172 AC_MSG_CHECKING(shared object configuration for loadable builtins)
1173 eval `${CONFIG_SHELL-/bin/sh} ${srcdir}/support/shobj-conf -C "${CC}" -c "${host_cpu}" -o "${host_os}" -v "${host_vendor}"`
1174 AC_SUBST(SHOBJ_CC)
1175 AC_SUBST(SHOBJ_CFLAGS)
1176 AC_SUBST(SHOBJ_LD)
1177 AC_SUBST(SHOBJ_LDFLAGS)
1178 AC_SUBST(SHOBJ_XLDFLAGS)
1179 AC_SUBST(SHOBJ_LIBS)
1180 AC_SUBST(SHOBJ_STATUS)
1181 AC_MSG_RESULT($SHOBJ_STATUS)
d233b485
CR
1182else
1183 SHOBJ_STATUS=unsupported
1184 AC_SUBST(SHOBJ_STATUS)
ac50fbac
CR
1185fi
1186
1187# try to create a directory tree if the source is elsewhere
1188# this should be packaged into a script accessible via ${srcdir}/support
1189case "$srcdir" in
1190.) ;;
1191*) for d in doc tests support lib examples; do # dirs
1192 test -d $d || mkdir $d
1193 done
1194 for ld in readline glob tilde malloc sh termcap; do # libdirs
1195 test -d lib/$ld || mkdir lib/$ld
1196 done
1197 test -d examples/loadables || mkdir examples/loadables # loadable builtins
1198 test -d examples/loadables/perl || mkdir examples/loadables/perl
1199 ;;
1200esac
1201
1202BUILD_DIR=`pwd`
1203case "$BUILD_DIR" in
1204*\ *) BUILD_DIR=`echo "$BUILD_DIR" | sed 's: :\\\\ :g'` ;;
1205*) ;;
1206esac
1207
1208if test -z "$localedir"; then
1209 localedir='${datarootdir}/locale'
1210fi
1211if test -z "$datarootdir"; then
1212 datarootdir='${prefix}/share'
1213fi
1214
1215AC_SUBST(PROFILE_FLAGS)
1216
1217AC_SUBST(incdir)
1218AC_SUBST(BUILD_DIR)
1219
1220# Some versions of autoconf don't substitute these automatically
1221AC_SUBST(datarootdir)
1222AC_SUBST(localedir)
1223
a0c0a00f
CR
1224# directory where we install dynamically loadable builtins
1225if test -z "$loadablesdir"; then
1226 loadablesdir='${libdir}/bash'
1227fi
1228AC_SUBST(loadablesdir)
1229if test -z "$headersdir"; then
1230 headersdir='$(includedir)/$(PACKAGE_NAME)'
1231fi
1232AC_SUBST(headersdir)
1233
ac50fbac
CR
1234AC_SUBST(YACC)
1235AC_SUBST(AR)
1236AC_SUBST(ARFLAGS)
1237
1238AC_SUBST(BASHVERS)
1239AC_SUBST(RELSTATUS)
1240AC_SUBST(DEBUG)
1241AC_SUBST(MALLOC_DEBUG)
1242
1243AC_SUBST(host_cpu)
1244AC_SUBST(host_vendor)
1245AC_SUBST(host_os)
1246
1247AC_SUBST(LOCAL_LIBS)
1248AC_SUBST(LOCAL_CFLAGS)
1249AC_SUBST(LOCAL_LDFLAGS)
1250AC_SUBST(LOCAL_DEFS)
1251
1252#AC_SUBST(ALLOCA_SOURCE)
1253#AC_SUBST(ALLOCA_OBJECT)
1254
1255AC_OUTPUT([Makefile builtins/Makefile lib/readline/Makefile lib/glob/Makefile \
1256 lib/intl/Makefile \
1257 lib/malloc/Makefile lib/sh/Makefile lib/termcap/Makefile \
1258 lib/tilde/Makefile doc/Makefile support/Makefile po/Makefile.in \
a0c0a00f
CR
1259 examples/loadables/Makefile examples/loadables/Makefile.inc \
1260 examples/loadables/perl/Makefile \
d233b485 1261 support/bash.pc support/bashbug.sh],
ac50fbac
CR
1262[
1263# Makefile uses this timestamp file to record whether config.h is up to date.
1264echo timestamp > stamp-h
1265])