2 dnl Configure script for bash-4.4
4 dnl report bugs to chet@po.cwru.edu
6 dnl Process this file with autoconf to produce a configure script.
8 # Copyright (C) 1987-2016 Free Software Foundation, Inc.
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.
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.
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/>.
24 AC_REVISION([for Bash 4.4, version 4.080])dnl
27 define(relstatus, rc2)
29 AC_INIT([bash], bashvers-relstatus, [bug-bash@gnu.org])
31 dnl make sure we are using a recent autoconf version
34 AC_CONFIG_SRCDIR(shell.h)
35 dnl where to find install.sh, config.sub, and config.guess
36 AC_CONFIG_AUX_DIR(./support)
37 AC_CONFIG_HEADERS(config.h)
39 dnl checks for version info
43 dnl defaults for debug settings
45 alp*|bet*|dev*|rc*|maint*) DEBUG='-DDEBUG' MALLOC_DEBUG='-DMALLOC_DEBUG' ;;
46 *) DEBUG= MALLOC_DEBUG= ;;
49 dnl canonicalize the host and os so we can do some tricky things before
54 dnl configure defaults
58 opt_with_installed_readline=no
62 dnl some systems should be configured without the bash malloc by default
63 dnl and some need a special compiler or loader
64 dnl look in the NOTES file for more
65 case "${host_cpu}-${host_os}" in
66 alpha*-*) opt_bash_malloc=no ;; # alpha running osf/1 or linux
67 *[[Cc]]ray*-*) opt_bash_malloc=no ;; # Crays
68 *-osf1*) opt_bash_malloc=no ;; # other osf/1 machines
69 sparc-svr4*) opt_bash_malloc=no ;; # sparc SVR4, SVR4.2
70 sparc-netbsd*) opt_bash_malloc=no ;; # needs 8-byte alignment
71 mips-irix6*) opt_bash_malloc=no ;; # needs 8-byte alignment
72 m68k-sysv) opt_bash_malloc=no ;; # fixes file descriptor leak in closedir
73 sparc-linux*) opt_bash_malloc=no ;; # sparc running linux; requires ELF
74 #*-freebsd*-gnu) opt_bash_malloc=no ;; # there's some undetermined problem here
75 #*-freebsd*) opt_bash_malloc=no ;; # they claim it's better; I disagree
76 *-openbsd*) opt_bash_malloc=no ;; # they claim it needs eight-bit alignment
77 *-mirbsd*) opt_bash_malloc=no ;; # they claim it needs eight-bit alignment
78 *-aix*) opt_bash_malloc=no ;; # AIX machines
79 *-nextstep*) opt_bash_malloc=no ;; # NeXT machines running NeXTstep
80 *-openstep*) opt_bash_malloc=no ;; # i386/Sparc/HP machines running Openstep
81 *-macos*) opt_bash_malloc=no ;; # Apple MacOS X
82 *-rhapsody*) opt_bash_malloc=no ;; # Apple Rhapsody (MacOS X)
83 *-darwin*) opt_bash_malloc=no ;; # Apple Darwin (MacOS X)
84 *-dgux*) opt_bash_malloc=no ;; # DG/UX machines
85 *-qnx*) opt_bash_malloc=no ;; # QNX 4.2, QNX 6.x
86 *-machten4) opt_bash_malloc=no ;; # MachTen 4.x
87 *-bsdi2.1|*-bsdi3.?) opt_bash_malloc=no ; : ${CC:=shlicc2} ;; # for loadable builtins
88 *-beos*) opt_bash_malloc=no ;; # they say it's suitable
89 *-cygwin*) opt_bash_malloc=no ;; # Cygnus's CYGWIN environment
90 *-opennt*|*-interix*) opt_bash_malloc=no ;; # Interix, now owned by Microsoft
91 *-nsk*) opt_bash_malloc=no ;; # HP NonStop
92 *-haiku*) opt_bash_malloc=no ;; # Haiku OS
95 # memory scrambling on free()
97 sco3.2v5*|sco3.2v4*) opt_memscramble=no ;;
98 *) opt_memscramble=yes ;;
102 dnl macros for the bash debugger
105 AC_ARG_VAR(DEBUGGER_START_FILE, [location of bash debugger initialization file])
107 dnl arguments to configure
109 AC_ARG_WITH(afs, AC_HELP_STRING([--with-afs], [if you are running AFS]), opt_afs=$withval)
110 AC_ARG_WITH(bash-malloc, AC_HELP_STRING([--with-bash-malloc], [use the Bash version of malloc]), opt_bash_malloc=$withval)
111 AC_ARG_WITH(curses, AC_HELP_STRING([--with-curses], [use the curses library instead of the termcap library]), opt_curses=$withval)
112 AC_ARG_WITH(gnu-malloc, AC_HELP_STRING([--with-gnu-malloc], [synonym for --with-bash-malloc]), opt_bash_malloc=$withval)
113 AC_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)
115 if test "$opt_bash_malloc" = yes; then
119 MALLOC_LIB='-lmalloc'
120 MALLOC_LIBRARY='$(ALLOC_LIBDIR)/libmalloc.a'
121 MALLOC_LDFLAGS='-L$(ALLOC_LIBDIR)'
122 MALLOC_DEP='$(MALLOC_LIBRARY)'
124 AC_DEFINE(USING_BASH_MALLOC)
132 if test "$opt_afs" = yes; then
136 if test "$opt_curses" = yes; then
140 if test -z "${DEBUGGER_START_FILE}"; then
141 DEBUGGER_START_FILE='${datadir}/bashdb/bashdb-main.inc'
144 dnl optional shell features in config.h.in
145 opt_minimal_config=no
154 opt_process_subst=yes
155 opt_prompt_decoding=yes
158 opt_array_variables=yes
160 opt_extended_glob=yes
161 opt_brace_expansion=yes
162 opt_disabled_builtins=no
163 opt_command_timing=yes
169 opt_arith_for_command=yes
175 opt_single_longdoc_strings=yes
176 opt_casemod_attrs=yes
177 opt_casemod_expansions=yes
178 opt_extglob_default=no
179 opt_dircomplete_expand_default=no
180 opt_globascii_default=no
181 opt_function_import=yes
183 dnl options that affect how bash is compiled and linked
187 dnl argument parsing for optional features
188 AC_ARG_ENABLE(minimal-config, AC_HELP_STRING([--enable-minimal-config], [a minimal sh-like configuration]), opt_minimal_config=$enableval)
190 dnl a minimal configuration turns everything off, but features can be
191 dnl added individually
192 if test $opt_minimal_config = yes; then
193 opt_job_control=no opt_alias=no opt_readline=no
194 opt_history=no opt_bang_history=no opt_dirstack=no
195 opt_restricted=no opt_process_subst=no opt_prompt_decoding=no
196 opt_select=no opt_help=no opt_array_variables=no opt_dparen_arith=no
197 opt_brace_expansion=no opt_disabled_builtins=no opt_command_timing=no
198 opt_extended_glob=no opt_cond_command=no opt_arith_for_command=no
199 opt_net_redirs=no opt_progcomp=no opt_separate_help=no
200 opt_multibyte=yes opt_cond_regexp=no opt_coproc=no
201 opt_casemod_attrs=no opt_casemod_expansions=no opt_extglob_default=no
202 opt_globascii_default=no
205 AC_ARG_ENABLE(alias, AC_HELP_STRING([--enable-alias], [enable shell aliases]), opt_alias=$enableval)
206 AC_ARG_ENABLE(arith-for-command, AC_HELP_STRING([--enable-arith-for-command], [enable arithmetic for command]), opt_arith_for_command=$enableval)
207 AC_ARG_ENABLE(array-variables, AC_HELP_STRING([--enable-array-variables], [include shell array variables]), opt_array_variables=$enableval)
208 AC_ARG_ENABLE(bang-history, AC_HELP_STRING([--enable-bang-history], [turn on csh-style history substitution]), opt_bang_history=$enableval)
209 AC_ARG_ENABLE(brace-expansion, AC_HELP_STRING([--enable-brace-expansion], [include brace expansion]), opt_brace_expansion=$enableval)
210 AC_ARG_ENABLE(casemod-attributes, AC_HELP_STRING([--enable-casemod-attributes], [include case-modifying variable attributes]), opt_casemod_attrs=$enableval)
211 AC_ARG_ENABLE(casemod-expansions, AC_HELP_STRING([--enable-casemod-expansions], [include case-modifying word expansions]), opt_casemod_expansions=$enableval)
212 AC_ARG_ENABLE(command-timing, AC_HELP_STRING([--enable-command-timing], [enable the time reserved word and command timing]), opt_command_timing=$enableval)
213 AC_ARG_ENABLE(cond-command, AC_HELP_STRING([--enable-cond-command], [enable the conditional command]), opt_cond_command=$enableval)
214 AC_ARG_ENABLE(cond-regexp, AC_HELP_STRING([--enable-cond-regexp], [enable extended regular expression matching in conditional commands]), opt_cond_regexp=$enableval)
215 AC_ARG_ENABLE(coprocesses, AC_HELP_STRING([--enable-coprocesses], [enable coprocess support and the coproc reserved word]), opt_coproc=$enableval)
216 AC_ARG_ENABLE(debugger, AC_HELP_STRING([--enable-debugger], [enable support for bash debugger]), opt_debugger=$enableval)
217 AC_ARG_ENABLE(direxpand-default, AC_HELP_STRING([--enable-direxpand-default], [enable the direxpand shell option by default]), opt_dircomplete_expand_default=$enableval)
218 AC_ARG_ENABLE(directory-stack, AC_HELP_STRING([--enable-directory-stack], [enable builtins pushd/popd/dirs]), opt_dirstack=$enableval)
219 AC_ARG_ENABLE(disabled-builtins, AC_HELP_STRING([--enable-disabled-builtins], [allow disabled builtins to still be invoked]), opt_disabled_builtins=$enableval)
220 AC_ARG_ENABLE(dparen-arithmetic, AC_HELP_STRING([--enable-dparen-arithmetic], [include ((...)) command]), opt_dparen_arith=$enableval)
221 AC_ARG_ENABLE(extended-glob, AC_HELP_STRING([--enable-extended-glob], [include ksh-style extended pattern matching]), opt_extended_glob=$enableval)
222 AC_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)
223 AC_ARG_ENABLE(function-import, AC_HELP_STRING([--enable-function-import], [allow bash to import exported function definitions by default]), opt_function_import=$enableval)
224 AC_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)
225 AC_ARG_ENABLE(help-builtin, AC_HELP_STRING([--enable-help-builtin], [include the help builtin]), opt_help=$enableval)
226 AC_ARG_ENABLE(history, AC_HELP_STRING([--enable-history], [turn on command history]), opt_history=$enableval)
227 AC_ARG_ENABLE(job-control, AC_HELP_STRING([--enable-job-control], [enable job control features]), opt_job_control=$enableval)
228 AC_ARG_ENABLE(multibyte, AC_HELP_STRING([--enable-multibyte], [enable multibyte characters if OS supports them]), opt_multibyte=$enableval)
229 AC_ARG_ENABLE(net-redirections, AC_HELP_STRING([--enable-net-redirections], [enable /dev/tcp/host/port redirection]), opt_net_redirs=$enableval)
230 AC_ARG_ENABLE(process-substitution, AC_HELP_STRING([--enable-process-substitution], [enable process substitution]), opt_process_subst=$enableval)
231 AC_ARG_ENABLE(progcomp, AC_HELP_STRING([--enable-progcomp], [enable programmable completion and the complete builtin]), opt_progcomp=$enableval)
232 AC_ARG_ENABLE(prompt-string-decoding, AC_HELP_STRING([--enable-prompt-string-decoding], [turn on escape character decoding in prompts]), opt_prompt_decoding=$enableval)
233 AC_ARG_ENABLE(readline, AC_HELP_STRING([--enable-readline], [turn on command line editing]), opt_readline=$enableval)
234 AC_ARG_ENABLE(restricted, AC_HELP_STRING([--enable-restricted], [enable a restricted shell]), opt_restricted=$enableval)
235 AC_ARG_ENABLE(select, AC_HELP_STRING([--enable-select], [include select command]), opt_select=$enableval)
236 AC_ARG_ENABLE(separate-helpfiles, AC_HELP_STRING([--enable-separate-helpfiles], [use external files for help builtin documentation]), opt_separate_help=$enableval)
237 AC_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)
238 AC_ARG_ENABLE(strict-posix-default, AC_HELP_STRING([--enable-strict-posix-default], [configure bash to be posix-conformant by default]), opt_strict_posix=$enableval)
239 AC_ARG_ENABLE(usg-echo-default, AC_HELP_STRING([--enable-usg-echo-default], [a synonym for --enable-xpg-echo-default]), opt_xpg_echo=$enableval)
240 AC_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)
242 dnl options that alter how bash is compiled and linked
243 AC_ARG_ENABLE(mem-scramble, AC_HELP_STRING([--enable-mem-scramble], [scramble memory on calls to malloc and free]), opt_memscramble=$enableval)
244 AC_ARG_ENABLE(profiling, AC_HELP_STRING([--enable-profiling], [allow profiling with gprof]), opt_profiling=$enableval)
245 AC_ARG_ENABLE(static-link, AC_HELP_STRING([--enable-static-link], [link bash statically, for use as a root shell]), opt_static_link=$enableval)
247 dnl So-called `precious' variables
248 AC_ARG_VAR([CC_FOR_BUILD], [C compiler used when compiling binaries used only at build time])
249 AC_ARG_VAR([CFLAGS_FOR_BUILD], [Compliation options (CFLAGS) used when compiling binaries used only at build time])
250 AC_ARG_VAR([LDFLAGS_FOR_BUILD], [Linker options (LDFLAGS) used when compiling binaries used only at build time])
251 AC_ARG_VAR([CPPFLAGS_FOR_BUILD], [C preprocessor options (CPPFLAGS) used when compiling binaries used only at build time])
253 dnl opt_job_control is handled later, after BASH_JOB_CONTROL_MISSING runs
255 dnl opt_readline and opt_history are handled later, because AC_PROG_CC needs
256 dnl to be run before we can check the version of an already-installed readline
259 if test $opt_alias = yes; then
262 if test $opt_dirstack = yes; then
263 AC_DEFINE(PUSHD_AND_POPD)
265 if test $opt_restricted = yes; then
266 AC_DEFINE(RESTRICTED_SHELL)
268 if test $opt_process_subst = yes; then
269 AC_DEFINE(PROCESS_SUBSTITUTION)
271 if test $opt_prompt_decoding = yes; then
272 AC_DEFINE(PROMPT_STRING_DECODE)
274 if test $opt_select = yes; then
275 AC_DEFINE(SELECT_COMMAND)
277 if test $opt_help = yes; then
278 AC_DEFINE(HELP_BUILTIN)
280 if test $opt_array_variables = yes; then
281 AC_DEFINE(ARRAY_VARS)
283 if test $opt_dparen_arith = yes; then
284 AC_DEFINE(DPAREN_ARITHMETIC)
286 if test $opt_brace_expansion = yes; then
287 AC_DEFINE(BRACE_EXPANSION)
289 if test $opt_disabled_builtins = yes; then
290 AC_DEFINE(DISABLED_BUILTINS)
292 if test $opt_command_timing = yes; then
293 AC_DEFINE(COMMAND_TIMING)
295 if test $opt_xpg_echo = yes ; then
296 AC_DEFINE(DEFAULT_ECHO_TO_XPG)
298 if test $opt_strict_posix = yes; then
299 AC_DEFINE(STRICT_POSIX)
301 if test $opt_extended_glob = yes ; then
302 AC_DEFINE(EXTENDED_GLOB)
304 if test $opt_extglob_default = yes; then
305 AC_DEFINE(EXTGLOB_DEFAULT, 1)
307 AC_DEFINE(EXTGLOB_DEFAULT, 0)
309 if test $opt_cond_command = yes ; then
310 AC_DEFINE(COND_COMMAND)
312 if test $opt_cond_regexp = yes ; then
313 AC_DEFINE(COND_REGEXP)
315 if test $opt_coproc = yes; then
316 AC_DEFINE(COPROCESS_SUPPORT)
318 if test $opt_arith_for_command = yes; then
319 AC_DEFINE(ARITH_FOR_COMMAND)
321 if test $opt_net_redirs = yes; then
322 AC_DEFINE(NETWORK_REDIRECTIONS)
324 if test $opt_progcomp = yes; then
325 AC_DEFINE(PROGRAMMABLE_COMPLETION)
327 if test $opt_multibyte = no; then
328 AC_DEFINE(NO_MULTIBYTE_SUPPORT)
330 if test $opt_debugger = yes; then
333 if test $opt_casemod_attrs = yes; then
334 AC_DEFINE(CASEMOD_ATTRS)
336 if test $opt_casemod_expansions = yes; then
337 AC_DEFINE(CASEMOD_EXPANSIONS)
339 if test $opt_dircomplete_expand_default = yes; then
340 AC_DEFINE(DIRCOMPLETE_EXPAND_DEFAULT)
342 if test $opt_globascii_default = yes; then
343 AC_DEFINE(GLOBASCII_DEFAULT, 1)
345 AC_DEFINE(GLOBASCII_DEFAULT, 0)
347 if test $opt_function_import = yes; then
348 AC_DEFINE(FUNCTION_IMPORT)
351 if test $opt_memscramble = yes; then
352 AC_DEFINE(MEMSCRAMBLE)
355 if test "$opt_minimal_config" = yes; then
356 TESTSCRIPT=run-minimal
361 HELPDIR= HELPDIRDEFINE= HELPINSTALL= HELPFILES_TARGET=
362 if test "$opt_separate_help" != no; then
363 if test "$opt_separate_help" = "yes" ; then
364 HELPDIR='${datadir}/bash'
366 HELPDIR=$opt_separate_help
368 HELPDIRDEFINE='-H ${HELPDIR}'
369 HELPINSTALL='install-help'
370 HELPFILES_TARGET='helpdoc'
373 if test "$opt_single_longdoc_strings" != "yes"; then
377 dnl now substitute in the values generated by arguments
379 AC_SUBST(MALLOC_TARGET)
383 AC_SUBST(MALLOC_LIBRARY)
384 AC_SUBST(MALLOC_LDFLAGS)
390 AC_SUBST(HELPDIRDEFINE)
391 AC_SUBST(HELPINSTALL)
392 AC_SUBST(HELPFILES_TARGET)
393 AC_SUBST(HELPSTRINGS)
395 dnl We want these before the checks, so the checks can modify their values.
396 if test -z "$CFLAGS"; then
397 AUTO_CFLAGS="-g ${GCC+-O2} ${GCC+-Wno-parentheses}"
398 AUTO_LDFLAGS="-g ${GCC+-O2}"
400 AUTO_CFLAGS= AUTO_LDFLAGS=
404 echo "Beginning configuration for bash-$BASHVERS-$RELSTATUS for ${host_cpu}-${host_vendor}-${host_os}"
407 dnl compilation checks
408 dnl AC_PROG_CC sets $cross_compiling to `yes' if cross-compiling for a
409 dnl different environment
412 dnl test for Unix variants
418 dnl BEGIN changes for cross-building (currently cygwin, minGW, and
422 SIGNAMES_H=lsignames.h
424 dnl load up the cross-building cache file -- add more cases and cache
425 dnl files as necessary
427 dnl Note that host and target machine are the same, and different than the
429 dnl Set SIGNAMES_H based on whether or not we're cross-compiling.
432 if test "x$cross_compiling" = "xyes"; then
435 cross_cache=${srcdir}/cross-build/cygwin32.cache
438 cross_cache=${srcdir}/cross-build/cygwin32.cache
441 cross_cache=${srcdir}/cross-build/x86-beos.cache
443 *) echo "configure: cross-compiling for $host is not supported" >&2
446 if test -n "${cross_cache}" && test -r "${cross_cache}"; then
447 echo "loading cross-build cache file ${cross_cache}"
451 SIGNAMES_O='signames.o'
452 CROSS_COMPILE='-DCROSS_COMPILING'
453 AC_SUBST(CROSS_COMPILE)
458 dnl END changes for cross-building
461 CFLAGS=${CFLAGS-"$AUTO_CFLAGS"}
462 # LDFLAGS=${LDFLAGS="$AUTO_LDFLAGS"} # XXX
464 # turn off paren warnings in gcc
465 if test "$GCC" = yes && test -n "$DEBUG"; then
466 CFLAGS="$CFLAGS -Wno-parentheses -Wno-format-security"
469 dnl handle options that alter how bash is compiled and linked
470 dnl these must come after the test for cc/gcc
471 if test "$opt_profiling" = "yes"; then
475 *) opt_static_link=yes ;;
483 if test "$opt_static_link" = yes; then
486 # if we're using gcc, add `-static' to LDFLAGS, except on Solaris >= 2
487 if test -n "$GCC" || test "$ac_cv_prog_gcc" = "yes"; then
491 *) LDFLAGS="$LDFLAGS -static" ;; # XXX experimental
496 # set the appropriate make variables for building the "build tools"
497 # modify defaults based on whether or not we are cross compiling, since the
498 # options for the target host may not be appropriate for the build host
499 if test "X$cross_compiling" = "Xno"; then
500 CC_FOR_BUILD=${CC_FOR_BUILD-'$(CC)'}
501 CPPFLAGS_FOR_BUILD=${CPPFLAGS_FOR_BUILD-"$CPPFLAGS"} # XXX - should it be '$(CPPFLAGS)'
502 LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-'$(LDFLAGS)'}
503 # CFLAGS set above to default value if not passed in environment
504 CFLAGS_FOR_BUILD=${CFLAGS-'$(CFLAGS)'}
505 LIBS_FOR_BUILD=${LIBS_FOR_BUILD-'$(LIBS)'}
507 CC_FOR_BUILD=${CC_FOR_BUILD-"gcc"}
508 CPPFLAGS_FOR_BUILD=${CPPFLAGS_FOR_BUILD-""}
509 LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-""}
510 CFLAGS_FOR_BUILD=${CFLAGS_FOR_BUILD="-g"}
511 LIBS_FOR_BUILD=${LIBS_FOR_BUILD-""}
519 AC_SUBST(CC_FOR_BUILD)
520 AC_SUBST(CFLAGS_FOR_BUILD)
521 AC_SUBST(CPPFLAGS_FOR_BUILD)
522 AC_SUBST(LDFLAGS_FOR_BUILD)
523 AC_SUBST(LIBS_FOR_BUILD)
525 AC_PROG_GCC_TRADITIONAL
527 dnl BEGIN READLINE and HISTORY LIBRARY SECTION
528 dnl prepare to allow bash to be linked against an already-installed readline
530 dnl first test that the readline version is new enough to link bash against
531 if test "$opt_readline" = yes && test "$opt_with_installed_readline" != "no"
533 # If the user specified --with-installed-readline=PREFIX and PREFIX
534 # is not `yes', set ac_cv_rl_prefix to PREFIX
535 test $opt_with_installed_readline != "yes" && ac_cv_rl_prefix=$opt_with_installed_readline
537 RL_LIB_READLINE_VERSION
539 case "$ac_cv_rl_version" in
541 *) opt_with_installed_readline=no
542 AC_MSG_WARN([installed readline library is too old to be linked with bash])
543 AC_MSG_WARN([using private bash version])
549 if test $opt_readline = yes; then
551 if test "$opt_with_installed_readline" != "no" ; then
552 case "$opt_with_installed_readline" in
554 *) case "$RL_INCLUDEDIR" in
556 *) RL_INCLUDE='-I${RL_INCLUDEDIR}' ;;
561 READLINE_LIB=-lreadline
562 # section for OS versions that don't allow unresolved symbols
563 # to be compiled into dynamic libraries.
565 cygwin*) TILDE_LIB= ;;
568 RL_LIBDIR='$(dot)/$(LIBSUBDIR)/readline'
569 READLINE_DEP='$(READLINE_LIBRARY)'
570 # section for OS versions that ship an older/broken version of
571 # readline as a standard dynamic library and don't allow a
572 # static version specified as -llibname to override the
575 darwin[[89]]*|darwin10*) READLINE_LIB='${READLINE_LIBRARY}' ;;
576 *) READLINE_LIB=-lreadline ;;
580 RL_LIBDIR='$(dot)/$(LIBSUBDIR)/readline'
581 READLINE_LIB= READLINE_DEP=
583 if test $opt_history = yes || test $opt_bang_history = yes; then
584 if test $opt_history = yes; then
587 if test $opt_bang_history = yes; then
588 AC_DEFINE(BANG_HISTORY)
590 if test "$opt_with_installed_readline" != "no"; then
591 HIST_LIBDIR=$RL_LIBDIR
593 HISTORY_LIB=-lhistory
594 case "$opt_with_installed_readline" in
596 *) case "$RL_INCLUDEDIR" in
598 *) RL_INCLUDE='-I${RL_INCLUDEDIR}' ;;
603 HIST_LIBDIR='$(dot)/$(LIBSUBDIR)/readline'
604 HISTORY_DEP='$(HISTORY_LIBRARY)'
605 # section for OS versions that ship an older version of
606 # readline as a standard dynamic library and don't allow a
607 # static version specified as -llibname to override the
610 darwin[[89]]*|darwin10*) HISTORY_LIB='${HISTORY_LIBRARY}' ;;
611 *) HISTORY_LIB=-lhistory ;;
615 HIST_LIBDIR='$(dot)/$(LIBSUBDIR)/readline'
616 HISTORY_LIB= HISTORY_DEP=
618 AC_SUBST(READLINE_LIB)
619 AC_SUBST(READLINE_DEP)
621 AC_SUBST(RL_INCLUDEDIR)
623 AC_SUBST(HISTORY_LIB)
624 AC_SUBST(HISTORY_DEP)
625 AC_SUBST(HIST_LIBDIR)
628 dnl END READLINE and HISTORY LIBRARY SECTION
630 dnl programs needed by the build and install process
632 AC_CHECK_TOOL(AR, ar)
633 dnl Set default for ARFLAGS, since autoconf does not have a macro for it.
634 dnl This allows people to set it when running configure or make
635 test -n "$ARFLAGS" || ARFLAGS="cr"
640 case "$ac_cv_prog_YACC" in
642 *) AC_MSG_WARN([bison not available; needed to process parse.y]) ;;
646 opennt*|interix*) MAKE_SHELL="$INTERIX_ROOT/bin/sh" ;;
647 *) MAKE_SHELL=/bin/sh ;;
651 dnl this is similar to the expanded AC_PROG_RANLIB
652 if test x$SIZE = x; then
653 if test x$ac_tool_prefix = x; then
656 SIZE=${ac_tool_prefix}size
657 save_IFS=$IFS ; IFS=:
660 if test -x $dir/$SIZE ; then
665 if test $size_found -eq 0; then
673 m4_include([m4/stat-time.m4])
674 m4_include([m4/timespec.m4])
676 dnl Turn on any extensions available in the GNU C library.
677 AC_DEFINE(_GNU_SOURCE, 1)
679 dnl C compiler characteristics
690 dnl initialize GNU gettext
691 AM_GNU_GETTEXT([no-libtool], [need-ngettext], [lib/intl])
699 AC_CHECK_HEADERS(unistd.h stdlib.h stdarg.h varargs.h limits.h string.h \
700 memory.h locale.h termcap.h termio.h termios.h dlfcn.h \
701 stdbool.h stddef.h stdint.h netdb.h pwd.h grp.h strings.h \
702 regex.h syslog.h ulimit.h)
703 AC_CHECK_HEADERS(sys/pte.h sys/stream.h sys/select.h sys/file.h sys/ioctl.h \
704 sys/param.h sys/socket.h sys/stat.h \
705 sys/time.h sys/times.h sys/types.h sys/wait.h)
706 AC_CHECK_HEADERS(netinet/in.h arpa/inet.h)
708 dnl sys/ptem.h requires definitions from sys/stream.h on systems where it
710 AC_CHECK_HEADER(sys/ptem.h, , ,[[
711 #if HAVE_SYS_STREAM_H
712 # include <sys/stream.h>
716 dnl SunOS 4 needs to include <sys/time.h> before <sys/resource.h> to compile
717 dnl autoconf complains about presence but inability to compile
718 AC_CHECK_HEADER(sys/resource.h, AC_DEFINE(HAVE_SYS_RESOURCE_H), [], [[
720 # include <sys/time.h>
724 dnl special checks for libc functions
728 AC_FUNC_SETVBUF_REVERSED
732 dnl if we're not using the bash malloc but require the C alloca, set things
733 dnl up to build a libmalloc.a containing only alloca.o
735 if test "$ac_cv_func_alloca_works" = "no" && test "$opt_bash_malloc" = "no"; then
739 MALLOC_LIB='-lmalloc'
740 MALLOC_LIBRARY='$(ALLOC_LIBDIR)/libmalloc.a'
741 MALLOC_LDFLAGS='-L$(ALLOC_LIBDIR)'
742 MALLOC_DEP='$(MALLOC_LIBRARY)'
745 dnl if vprintf is not in libc, see if it's defined in stdio.h
746 if test "$ac_cv_func_vprintf" = no; then
747 AC_MSG_CHECKING(for declaration of vprintf in stdio.h)
748 AC_EGREP_HEADER([[int[ ]*vprintf[^a-zA-Z0-9]]],stdio.h,ac_cv_func_vprintf=yes)
749 AC_MSG_RESULT($ac_cv_func_vprintf)
750 if test $ac_cv_func_vprintf = yes; then
751 AC_DEFINE(HAVE_VPRINTF)
755 if test "$ac_cv_func_vprintf" = no && test "$ac_cv_func__doprnt" = "yes"; then
762 dnl checks for certain version-specific system calls and libc functions
763 AC_CHECK_FUNC(__setostype, AC_DEFINE(HAVE_SETOSTYPE))
764 AC_CHECK_FUNC(wait3, AC_DEFINE(HAVE_WAIT3))
766 dnl checks for missing libc functions
767 AC_CHECK_FUNC(mkfifo,AC_DEFINE(HAVE_MKFIFO),AC_DEFINE(MKFIFO_MISSING))
769 dnl checks for system calls
770 AC_CHECK_FUNCS(dup2 eaccess fcntl getdtablesize getgroups gethostname \
771 getpagesize getpeername getrlimit getrusage gettimeofday \
772 kill killpg lstat pselect readlink sbrk select setdtablesize \
773 setitimer tcgetpgrp uname ulimit waitpid)
774 AC_REPLACE_FUNCS(rename)
776 dnl checks for c library functions
777 AC_CHECK_FUNCS(bcopy bzero confstr faccessat fnmatch \
778 getaddrinfo gethostbyname getservbyname getservent inet_aton \
779 imaxdiv memmove pathconf putenv raise random regcomp regexec \
780 setenv setlinebuf setlocale setvbuf siginterrupt strchr \
781 sysconf syslog tcgetattr times ttyname tzset unsetenv)
783 AC_CHECK_FUNCS(vasprintf asprintf)
784 AC_CHECK_FUNCS(isascii isblank isgraph isprint isspace isxdigit)
785 AC_CHECK_FUNCS(getpwent getpwnam getpwuid)
786 AC_CHECK_FUNCS(mkstemp)
787 AC_REPLACE_FUNCS(getcwd memset)
788 AC_REPLACE_FUNCS(strcasecmp strcasestr strerror strftime strnlen strpbrk strstr)
789 AC_REPLACE_FUNCS(strtod strtol strtoul strtoll strtoull strtoimax strtoumax)
790 AC_REPLACE_FUNCS(dprintf)
791 AC_REPLACE_FUNCS(strchrnul)
792 AC_REPLACE_FUNCS(strdup)
794 AC_CHECK_HEADERS(libaudit.h)
795 AC_CHECK_DECLS([AUDIT_USER_TTY],,, [[#include <linux/audit.h>]])
797 AC_CHECK_DECLS([confstr])
798 AC_CHECK_DECLS([printf])
799 AC_CHECK_DECLS([sbrk])
800 AC_CHECK_DECLS([setregid])
801 AC_CHECK_DECLS([strcpy])
802 AC_CHECK_DECLS([strsignal])
804 dnl Extra test to detect the horribly broken HP/UX 11.00 strtold(3)
805 AC_CHECK_DECLS([strtold], [
806 AC_MSG_CHECKING([for broken strtold])
807 AC_CACHE_VAL(bash_cv_strtold_broken,
809 [#include <stdlib.h>],
810 [int main() { long double r; char *foo, bar; r = strtold(foo, &bar);}],
811 bash_cv_strtold_broken=no, bash_cv_strtold_broken=yes,
812 [AC_MSG_WARN(cannot check for broken strtold if cross-compiling, defaulting to no)])
815 AC_MSG_RESULT($bash_cv_strtold_broken)
816 if test "$bash_cv_strtold_broken" = "yes" ; then
817 AC_DEFINE(STRTOLD_BROKEN)
821 BASH_CHECK_DECL(strtoimax)
822 BASH_CHECK_DECL(strtol)
823 BASH_CHECK_DECL(strtoll)
824 BASH_CHECK_DECL(strtoul)
825 BASH_CHECK_DECL(strtoull)
826 BASH_CHECK_DECL(strtoumax)
831 dnl Checks for lib/intl and related code (uses some of the output from
835 AC_CHECK_HEADERS([argz.h errno.h fcntl.h malloc.h stdio_ext.h])
839 AC_CHECK_FUNCS([__argz_count __argz_next __argz_stringify dcgettext mempcpy \
840 munmap stpcpy strcspn])
842 INTL_DEP= INTL_INC= LIBINTL_H=
843 if test "x$USE_INCLUDED_LIBINTL" = "xyes"; then
844 INTL_DEP='${INTL_LIBDIR}/libintl.a'
845 INTL_INC='-I${INTL_LIBSRC} -I${INTL_BUILDDIR}'
846 LIBINTL_H='${INTL_BUILDDIR}/libintl.h'
853 dnl End of checks needed by files in lib/intl
858 dnl checks for the dynamic loading library functions in libc and libdl
859 if test "$opt_static_link" != yes; then
860 AC_CHECK_LIB(dl, dlopen)
861 AC_CHECK_FUNCS(dlopen dlclose dlsym)
864 dnl this defines HAVE_DECL_SYS_SIGLIST
867 dnl network functions -- check for inet_aton again
868 if test "$ac_cv_func_inet_aton" != 'yes'; then
873 dnl this is reportedly no longer necessary for irix[56].?
875 irix4*) AC_CHECK_LIB(sun, getpwent) ;;
878 dnl check for getpeername in the socket library only if it's not in libc
879 if test "$ac_cv_func_getpeername" = no; then
880 BASH_CHECK_LIB_SOCKET
882 dnl check for gethostbyname in socket libraries if it's not in libc
883 if test "$ac_cv_func_gethostbyname" = no; then
884 BASH_FUNC_GETHOSTBYNAME
894 AC_CHECK_TYPE(ssize_t, int)
895 AC_CHECK_TYPE(time_t, long)
898 BASH_TYPE_UNSIGNED_LONG_LONG
901 BASH_TYPE_SIG_ATOMIC_T
903 AC_CHECK_SIZEOF(char, 1)
904 AC_CHECK_SIZEOF(short, 2)
905 AC_CHECK_SIZEOF(int, 4)
906 AC_CHECK_SIZEOF(long, 4)
907 AC_CHECK_SIZEOF(char *, 4)
908 AC_CHECK_SIZEOF(double, 8)
909 AC_CHECK_SIZEOF([long long], 8)
911 AC_CHECK_TYPE(u_int, [unsigned int])
912 AC_CHECK_TYPE(u_long, [unsigned long])
927 if test $ac_cv_sys_interpreter = yes; then
928 AC_DEFINE(HAVE_HASH_BANG_EXEC)
931 dnl Miscellaneous Bash tests
932 if test "$ac_cv_func_lstat" = "no"; then
936 dnl behavior of system calls and library functions
937 BASH_FUNC_CTYPE_NONASCII
938 BASH_FUNC_DUP2_CLOEXEC_CHECK
940 BASH_SYS_SIGNAL_VINTAGE
942 dnl checking for the presence of certain library symbols
945 BASH_UNDER_SYS_SIGLIST
947 dnl various system types
949 BASH_CHECK_TYPE(clock_t, [#include <sys/times.h>], long)
950 BASH_CHECK_TYPE(sigset_t, [#include <signal.h>], int)
951 BASH_CHECK_TYPE(sig_atomic_t, [#include <signal.h>], int)
952 BASH_CHECK_TYPE(quad_t, , long, HAVE_QUAD_T)
953 BASH_CHECK_TYPE(intmax_t, , $bash_cv_type_long_long)
954 BASH_CHECK_TYPE(uintmax_t, , $bash_cv_type_unsigned_long_long)
955 if test "$ac_cv_header_sys_socket_h" = "yes"; then
956 BASH_CHECK_TYPE(socklen_t, [#include <sys/socket.h>], [unsigned int], HAVE_SOCKLEN_T)
960 AC_CHECK_SIZEOF(intmax_t, 8)
962 dnl presence and contents of structures used by system calls
963 BASH_STRUCT_TERMIOS_LDISC
964 BASH_STRUCT_TERMIO_LDISC
965 BASH_STRUCT_DIRENT_D_INO
966 BASH_STRUCT_DIRENT_D_FILENO
967 BASH_STRUCT_DIRENT_D_NAMLEN
970 AC_CHECK_MEMBERS([struct stat.st_blocks])
975 BASH_STRUCT_WEXITSTATUS_OFFSET
977 BASH_CHECK_TYPE_STRUCT_TIMESPEC
980 dnl presence and behavior of C library functions
982 BASH_FUNC_OPENDIR_CHECK
983 BASH_FUNC_ULIMIT_MAXFDS
986 if test "$ac_cv_func_getcwd" = "yes"; then
989 BASH_FUNC_POSIX_SETJMP
994 dnl If putenv or unsetenv is not present, set the right define so the
995 dnl prototype and declaration in lib/sh/getenv.c will be standard-conformant
997 if test "$ac_cv_func_putenv" = "yes"; then
1000 AC_DEFINE(HAVE_STD_PUTENV)
1002 if test "$ac_cv_func_unsetenv" = "yes"; then
1003 BASH_FUNC_STD_UNSETENV
1005 AC_DEFINE(HAVE_STD_UNSETENV)
1008 BASH_FUNC_PRINTF_A_FORMAT
1010 dnl presence and behavior of OS functions
1011 BASH_SYS_REINSTALL_SIGHANDLERS
1012 BASH_SYS_JOB_CONTROL_MISSING
1013 BASH_SYS_NAMED_PIPES
1015 dnl presence of certain CPP defines
1016 AC_HEADER_TIOCGWINSZ
1020 BASH_CHECK_WCONTINUED
1024 BASH_CHECK_GETPW_FUNCS
1026 BASH_CHECK_SYS_SIGLIST
1030 hpux*) BASH_CHECK_KERNEL_RLIMIT ;;
1033 if test "$opt_readline" = yes; then
1036 aix*) prefer_curses=yes ;;
1038 BASH_CHECK_LIB_TERMCAP
1040 AC_SUBST(TERMCAP_LIB)
1041 AC_SUBST(TERMCAP_DEP)
1044 BASH_CHECK_DEV_STDIN
1045 BASH_SYS_DEFAULT_MAIL_DIR
1047 if test "$bash_cv_job_control_missing" = missing; then
1051 if test "$opt_job_control" = yes; then
1052 AC_DEFINE(JOB_CONTROL)
1060 dnl Defines that we want to propagate to the Makefiles in subdirectories,
1061 dnl like glob and readline
1065 dnl use this section to possibly define more cpp variables, specify local
1066 dnl libraries, and specify any additional local cc or ld flags
1068 dnl this should really go away someday
1070 case "${host_os}" in
1071 sysv4.2*) AC_DEFINE(SVR4_2)
1073 sysv4*) AC_DEFINE(SVR4) ;;
1074 sysv5*) AC_DEFINE(SVR5) ;;
1075 hpux9*) LOCAL_CFLAGS="-DHPUX9 -DHPUX" ;;
1076 hpux*) LOCAL_CFLAGS=-DHPUX ;;
1077 dgux*) LOCAL_CFLAGS=-D_DGUX_SOURCE; LOCAL_LIBS=-ldgc ;;
1078 isc*) LOCAL_CFLAGS=-Disc386 ;;
1079 rhapsody*) LOCAL_CFLAGS=-DRHAPSODY ;;
1080 darwin*) LOCAL_CFLAGS=-DMACOSX ;;
1081 sco3.2v5*) LOCAL_CFLAGS="-b elf -DWAITPID_BROKEN -DPATH_MAX=1024" ;;
1082 sco3.2v4*) LOCAL_CFLAGS="-DMUST_UNBLOCK_CHLD -DPATH_MAX=1024" ;;
1083 sco3.2*) LOCAL_CFLAGS=-DMUST_UNBLOCK_CHLD ;;
1084 sunos4*) LOCAL_CFLAGS=-DSunOS4 ;;
1085 solaris2.5*) LOCAL_CFLAGS="-DSunOS5 -DSOLARIS" ;;
1086 solaris2.8*) LOCAL_CFLAGS=-DSOLARIS ;;
1087 solaris2.9*) LOCAL_CFLAGS=-DSOLARIS ;;
1088 solaris2.10*) LOCAL_CFLAGS=-DSOLARIS ;;
1089 solaris2*) LOCAL_CFLAGS=-DSOLARIS ;;
1090 lynxos*) LOCAL_CFLAGS=-DRECYCLES_PIDS ;;
1091 linux*) LOCAL_LDFLAGS=-rdynamic # allow dynamic loading
1092 case "`uname -r`" in
1093 2.[[456789]]*|[[34]]*) AC_DEFINE(PGRP_PIPE) ;;
1095 *qnx6*) LOCAL_CFLAGS="-Dqnx -Dqnx6" LOCAL_LIBS="-lncurses" ;;
1096 *qnx*) LOCAL_CFLAGS="-Dqnx -F -3s" LOCAL_LDFLAGS="-3s" LOCAL_LIBS="-lunix -lncurses" ;;
1097 powerux*) LOCAL_LIBS="-lgen" ;;
1098 cygwin*) LOCAL_CFLAGS=-DRECYCLES_PIDS ;;
1099 opennt*|interix*) LOCAL_CFLAGS="-DNO_MAIN_ENV_ARG -DBROKEN_DIRENT_D_INO -D_POSIX_SOURCE -D_ALL_SOURCE -DRECYCLES_PIDS" ;;
1100 *openstep*) LOCAL_CFLAGS="-D__APPLE_CC__" ;;
1103 dnl Stanza for OS/compiler pair-specific flags
1104 case "${host_os}-${CC}" in
1105 aix4.2*-*gcc*) LOCAL_LDFLAGS="-Xlinker -bexpall -Xlinker -brtl" ;;
1106 aix4.2*) LOCAL_LDFLAGS="-bexpall -brtl" ;;
1107 bsdi4*-*gcc*) LOCAL_LDFLAGS="-rdynamic" ;; # allow dynamic loading, like Linux
1108 bsdi5*-*gcc*) LOCAL_LDFLAGS="-rdynamic" ;; # allow dynamic loading, like Linux
1109 hpux11*-gcc*) LOCAL_LDFLAGS="-Wl,-E" ;; # allow dynamic loading
1112 dnl FreeBSD-3.x can have either a.out or ELF
1113 case "${host_os}" in
1115 if test -x /usr/bin/objformat && test "`/usr/bin/objformat`" = "elf" ; then
1116 LOCAL_LDFLAGS=-rdynamic # allow dynamic loading
1118 freebsdelf*) LOCAL_LDFLAGS=-rdynamic ;; # allow dynamic loading
1119 dragonfly*) LOCAL_LDFLAGS=-rdynamic ;; # allow dynamic loading
1123 *cray*) LOCAL_CFLAGS="-DCRAY" ;; # shell var so config.h can use it
1126 case "$host_cpu-$host_os" in
1127 ibmrt-*bsd4*) LOCAL_CFLAGS="-ma -U__STDC__" ;;
1130 case "$host_cpu-$host_vendor-$host_os" in
1131 m88k-motorola-sysv3) LOCAL_CFLAGS=-DWAITPID_BROKEN ;;
1132 mips-pyramid-sysv4) LOCAL_CFLAGS=-Xa ;;
1136 # Shared object configuration section. These values are generated by
1137 # ${srcdir}/support/shobj-conf
1139 if test "$ac_cv_func_dlopen" = "yes" && test -f ${srcdir}/support/shobj-conf
1141 AC_MSG_CHECKING(shared object configuration for loadable builtins)
1142 eval `${CONFIG_SHELL-/bin/sh} ${srcdir}/support/shobj-conf -C "${CC}" -c "${host_cpu}" -o "${host_os}" -v "${host_vendor}"`
1144 AC_SUBST(SHOBJ_CFLAGS)
1146 AC_SUBST(SHOBJ_LDFLAGS)
1147 AC_SUBST(SHOBJ_XLDFLAGS)
1148 AC_SUBST(SHOBJ_LIBS)
1149 AC_SUBST(SHOBJ_STATUS)
1150 AC_MSG_RESULT($SHOBJ_STATUS)
1153 # try to create a directory tree if the source is elsewhere
1154 # this should be packaged into a script accessible via ${srcdir}/support
1157 *) for d in doc tests support lib examples; do # dirs
1158 test -d $d || mkdir $d
1160 for ld in readline glob tilde malloc sh termcap; do # libdirs
1161 test -d lib/$ld || mkdir lib/$ld
1163 test -d examples/loadables || mkdir examples/loadables # loadable builtins
1164 test -d examples/loadables/perl || mkdir examples/loadables/perl
1169 case "$BUILD_DIR" in
1170 *\ *) BUILD_DIR=`echo "$BUILD_DIR" | sed 's: :\\\\ :g'` ;;
1174 if test -z "$localedir"; then
1175 localedir='${datarootdir}/locale'
1177 if test -z "$datarootdir"; then
1178 datarootdir='${prefix}/share'
1181 AC_SUBST(PROFILE_FLAGS)
1186 # Some versions of autoconf don't substitute these automatically
1187 AC_SUBST(datarootdir)
1190 # directory where we install dynamically loadable builtins
1191 if test -z "$loadablesdir"; then
1192 loadablesdir='${libdir}/bash'
1194 AC_SUBST(loadablesdir)
1195 if test -z "$headersdir"; then
1196 headersdir='$(includedir)/$(PACKAGE_NAME)'
1198 AC_SUBST(headersdir)
1207 AC_SUBST(MALLOC_DEBUG)
1210 AC_SUBST(host_vendor)
1213 AC_SUBST(LOCAL_LIBS)
1214 AC_SUBST(LOCAL_CFLAGS)
1215 AC_SUBST(LOCAL_LDFLAGS)
1216 AC_SUBST(LOCAL_DEFS)
1218 #AC_SUBST(ALLOCA_SOURCE)
1219 #AC_SUBST(ALLOCA_OBJECT)
1221 AC_OUTPUT([Makefile builtins/Makefile lib/readline/Makefile lib/glob/Makefile \
1223 lib/malloc/Makefile lib/sh/Makefile lib/termcap/Makefile \
1224 lib/tilde/Makefile doc/Makefile support/Makefile po/Makefile.in \
1225 examples/loadables/Makefile examples/loadables/Makefile.inc \
1226 examples/loadables/perl/Makefile \
1229 # Makefile uses this timestamp file to record whether config.h is up to date.
1230 echo timestamp > stamp-h