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.082])dnl
27 define(relstatus, release)
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*|releng*|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"
467 CFLAGS="$CFLAGS -Wno-parentheses -Wno-format-security"
470 dnl handle options that alter how bash is compiled and linked
471 dnl these must come after the test for cc/gcc
472 if test "$opt_profiling" = "yes"; then
476 *) opt_static_link=yes ;;
484 if test "$opt_static_link" = yes; then
487 # if we're using gcc, add `-static' to LDFLAGS, except on Solaris >= 2
488 if test -n "$GCC" || test "$ac_cv_prog_gcc" = "yes"; then
492 *) LDFLAGS="$LDFLAGS -static" ;; # XXX experimental
497 # set the appropriate make variables for building the "build tools"
498 # modify defaults based on whether or not we are cross compiling, since the
499 # options for the target host may not be appropriate for the build host
500 if test "X$cross_compiling" = "Xno"; then
501 CC_FOR_BUILD=${CC_FOR_BUILD-'$(CC)'}
502 CPPFLAGS_FOR_BUILD=${CPPFLAGS_FOR_BUILD-"$CPPFLAGS"} # XXX - should it be '$(CPPFLAGS)'
503 LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-'$(LDFLAGS)'}
504 # CFLAGS set above to default value if not passed in environment
505 CFLAGS_FOR_BUILD=${CFLAGS-'$(CFLAGS)'}
506 LIBS_FOR_BUILD=${LIBS_FOR_BUILD-'$(LIBS)'}
508 CC_FOR_BUILD=${CC_FOR_BUILD-"gcc"}
509 CPPFLAGS_FOR_BUILD=${CPPFLAGS_FOR_BUILD-""}
510 LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-""}
511 CFLAGS_FOR_BUILD=${CFLAGS_FOR_BUILD="-g"}
512 LIBS_FOR_BUILD=${LIBS_FOR_BUILD-""}
520 AC_SUBST(CC_FOR_BUILD)
521 AC_SUBST(CFLAGS_FOR_BUILD)
522 AC_SUBST(CPPFLAGS_FOR_BUILD)
523 AC_SUBST(LDFLAGS_FOR_BUILD)
524 AC_SUBST(LIBS_FOR_BUILD)
526 AC_PROG_GCC_TRADITIONAL
528 dnl BEGIN READLINE and HISTORY LIBRARY SECTION
529 dnl prepare to allow bash to be linked against an already-installed readline
531 dnl first test that the readline version is new enough to link bash against
532 if test "$opt_readline" = yes && test "$opt_with_installed_readline" != "no"
534 # If the user specified --with-installed-readline=PREFIX and PREFIX
535 # is not `yes', set ac_cv_rl_prefix to PREFIX
536 test $opt_with_installed_readline != "yes" && ac_cv_rl_prefix=$opt_with_installed_readline
538 RL_LIB_READLINE_VERSION
540 case "$ac_cv_rl_version" in
542 *) opt_with_installed_readline=no
543 AC_MSG_WARN([installed readline library is too old to be linked with bash])
544 AC_MSG_WARN([using private bash version])
550 if test $opt_readline = yes; then
552 if test "$opt_with_installed_readline" != "no" ; then
553 case "$opt_with_installed_readline" in
555 *) case "$RL_INCLUDEDIR" in
557 *) RL_INCLUDE='-I${RL_INCLUDEDIR}' ;;
562 READLINE_LIB=-lreadline
563 # section for OS versions that don't allow unresolved symbols
564 # to be compiled into dynamic libraries.
566 cygwin*) TILDE_LIB= ;;
569 RL_LIBDIR='$(dot)/$(LIBSUBDIR)/readline'
570 READLINE_DEP='$(READLINE_LIBRARY)'
571 # section for OS versions that ship an older/broken version of
572 # readline as a standard dynamic library and don't allow a
573 # static version specified as -llibname to override the
576 darwin[[89]]*|darwin10*) READLINE_LIB='${READLINE_LIBRARY}' ;;
577 *) READLINE_LIB=-lreadline ;;
581 RL_LIBDIR='$(dot)/$(LIBSUBDIR)/readline'
582 READLINE_LIB= READLINE_DEP=
584 if test $opt_history = yes || test $opt_bang_history = yes; then
585 if test $opt_history = yes; then
588 if test $opt_bang_history = yes; then
589 AC_DEFINE(BANG_HISTORY)
591 if test "$opt_with_installed_readline" != "no"; then
592 HIST_LIBDIR=$RL_LIBDIR
594 HISTORY_LIB=-lhistory
595 case "$opt_with_installed_readline" in
597 *) case "$RL_INCLUDEDIR" in
599 *) RL_INCLUDE='-I${RL_INCLUDEDIR}' ;;
604 HIST_LIBDIR='$(dot)/$(LIBSUBDIR)/readline'
605 HISTORY_DEP='$(HISTORY_LIBRARY)'
606 # section for OS versions that ship an older version of
607 # readline as a standard dynamic library and don't allow a
608 # static version specified as -llibname to override the
611 darwin[[89]]*|darwin10*) HISTORY_LIB='${HISTORY_LIBRARY}' ;;
612 *) HISTORY_LIB=-lhistory ;;
616 HIST_LIBDIR='$(dot)/$(LIBSUBDIR)/readline'
617 HISTORY_LIB= HISTORY_DEP=
619 AC_SUBST(READLINE_LIB)
620 AC_SUBST(READLINE_DEP)
622 AC_SUBST(RL_INCLUDEDIR)
624 AC_SUBST(HISTORY_LIB)
625 AC_SUBST(HISTORY_DEP)
626 AC_SUBST(HIST_LIBDIR)
629 dnl END READLINE and HISTORY LIBRARY SECTION
631 dnl programs needed by the build and install process
633 AC_CHECK_TOOL(AR, ar)
634 dnl Set default for ARFLAGS, since autoconf does not have a macro for it.
635 dnl This allows people to set it when running configure or make
636 test -n "$ARFLAGS" || ARFLAGS="cr"
641 case "$ac_cv_prog_YACC" in
643 *) AC_MSG_WARN([bison not available; needed to process parse.y]) ;;
647 opennt*|interix*) MAKE_SHELL="$INTERIX_ROOT/bin/sh" ;;
648 *) MAKE_SHELL=/bin/sh ;;
652 dnl this is similar to the expanded AC_PROG_RANLIB
653 if test x$SIZE = x; then
654 if test x$ac_tool_prefix = x; then
657 SIZE=${ac_tool_prefix}size
658 save_IFS=$IFS ; IFS=:
661 if test -x $dir/$SIZE ; then
666 if test $size_found -eq 0; then
674 m4_include([m4/stat-time.m4])
675 m4_include([m4/timespec.m4])
677 dnl Turn on any extensions available in the GNU C library.
678 AC_DEFINE(_GNU_SOURCE, 1)
680 dnl C compiler characteristics
691 dnl initialize GNU gettext
692 AM_GNU_GETTEXT([no-libtool], [need-ngettext], [lib/intl])
700 AC_CHECK_HEADERS(unistd.h stdlib.h stdarg.h varargs.h limits.h string.h \
701 memory.h locale.h termcap.h termio.h termios.h dlfcn.h \
702 stdbool.h stddef.h stdint.h netdb.h pwd.h grp.h strings.h \
703 regex.h syslog.h ulimit.h)
704 AC_CHECK_HEADERS(sys/pte.h sys/stream.h sys/select.h sys/file.h sys/ioctl.h \
705 sys/param.h sys/socket.h sys/stat.h \
706 sys/time.h sys/times.h sys/types.h sys/wait.h)
707 AC_CHECK_HEADERS(netinet/in.h arpa/inet.h)
709 dnl sys/ptem.h requires definitions from sys/stream.h on systems where it
711 AC_CHECK_HEADER(sys/ptem.h, , ,[[
712 #if HAVE_SYS_STREAM_H
713 # include <sys/stream.h>
717 dnl SunOS 4 needs to include <sys/time.h> before <sys/resource.h> to compile
718 dnl autoconf complains about presence but inability to compile
719 AC_CHECK_HEADER(sys/resource.h, AC_DEFINE(HAVE_SYS_RESOURCE_H), [], [[
721 # include <sys/time.h>
725 dnl special checks for libc functions
729 AC_FUNC_SETVBUF_REVERSED
733 dnl if we're not using the bash malloc but require the C alloca, set things
734 dnl up to build a libmalloc.a containing only alloca.o
736 if test "$ac_cv_func_alloca_works" = "no" && test "$opt_bash_malloc" = "no"; then
740 MALLOC_LIB='-lmalloc'
741 MALLOC_LIBRARY='$(ALLOC_LIBDIR)/libmalloc.a'
742 MALLOC_LDFLAGS='-L$(ALLOC_LIBDIR)'
743 MALLOC_DEP='$(MALLOC_LIBRARY)'
746 dnl if vprintf is not in libc, see if it's defined in stdio.h
747 if test "$ac_cv_func_vprintf" = no; then
748 AC_MSG_CHECKING(for declaration of vprintf in stdio.h)
749 AC_EGREP_HEADER([[int[ ]*vprintf[^a-zA-Z0-9]]],stdio.h,ac_cv_func_vprintf=yes)
750 AC_MSG_RESULT($ac_cv_func_vprintf)
751 if test $ac_cv_func_vprintf = yes; then
752 AC_DEFINE(HAVE_VPRINTF)
756 if test "$ac_cv_func_vprintf" = no && test "$ac_cv_func__doprnt" = "yes"; then
763 dnl checks for certain version-specific system calls and libc functions
764 AC_CHECK_FUNC(__setostype, AC_DEFINE(HAVE_SETOSTYPE))
765 AC_CHECK_FUNC(wait3, AC_DEFINE(HAVE_WAIT3))
767 dnl checks for missing libc functions
768 AC_CHECK_FUNC(mkfifo,AC_DEFINE(HAVE_MKFIFO),AC_DEFINE(MKFIFO_MISSING))
770 dnl checks for system calls
771 AC_CHECK_FUNCS(dup2 eaccess fcntl getdtablesize getgroups gethostname \
772 getpagesize getpeername getrlimit getrusage gettimeofday \
773 kill killpg lstat pselect readlink sbrk select setdtablesize \
774 setitimer tcgetpgrp uname ulimit waitpid)
775 AC_REPLACE_FUNCS(rename)
777 dnl checks for c library functions
778 AC_CHECK_FUNCS(bcopy bzero confstr faccessat fnmatch \
779 getaddrinfo gethostbyname getservbyname getservent inet_aton \
780 imaxdiv memmove pathconf putenv raise random regcomp regexec \
781 setenv setlinebuf setlocale setvbuf siginterrupt strchr \
782 sysconf syslog tcgetattr times ttyname tzset unsetenv)
784 AC_CHECK_FUNCS(vasprintf asprintf)
785 AC_CHECK_FUNCS(isascii isblank isgraph isprint isspace isxdigit)
786 AC_CHECK_FUNCS(getpwent getpwnam getpwuid)
787 AC_CHECK_FUNCS(mkstemp)
788 AC_REPLACE_FUNCS(getcwd memset)
789 AC_REPLACE_FUNCS(strcasecmp strcasestr strerror strftime strnlen strpbrk strstr)
790 AC_REPLACE_FUNCS(strtod strtol strtoul strtoll strtoull strtoimax strtoumax)
791 AC_REPLACE_FUNCS(dprintf)
792 AC_REPLACE_FUNCS(strchrnul)
793 AC_REPLACE_FUNCS(strdup)
795 AC_CHECK_HEADERS(libaudit.h)
796 AC_CHECK_DECLS([AUDIT_USER_TTY],,, [[#include <linux/audit.h>]])
798 AC_CHECK_DECLS([confstr])
799 AC_CHECK_DECLS([printf])
800 AC_CHECK_DECLS([sbrk])
801 AC_CHECK_DECLS([setregid])
802 AC_CHECK_DECLS([strcpy])
803 AC_CHECK_DECLS([strsignal])
805 dnl Extra test to detect the horribly broken HP/UX 11.00 strtold(3)
806 AC_CHECK_DECLS([strtold], [
807 AC_MSG_CHECKING([for broken strtold])
808 AC_CACHE_VAL(bash_cv_strtold_broken,
810 [#include <stdlib.h>],
811 [int main() { long double r; char *foo, bar; r = strtold(foo, &bar);}],
812 bash_cv_strtold_broken=no, bash_cv_strtold_broken=yes,
813 [AC_MSG_WARN(cannot check for broken strtold if cross-compiling, defaulting to no)])
816 AC_MSG_RESULT($bash_cv_strtold_broken)
817 if test "$bash_cv_strtold_broken" = "yes" ; then
818 AC_DEFINE(STRTOLD_BROKEN)
822 BASH_CHECK_DECL(strtoimax)
823 BASH_CHECK_DECL(strtol)
824 BASH_CHECK_DECL(strtoll)
825 BASH_CHECK_DECL(strtoul)
826 BASH_CHECK_DECL(strtoull)
827 BASH_CHECK_DECL(strtoumax)
832 dnl Checks for lib/intl and related code (uses some of the output from
836 AC_CHECK_HEADERS([argz.h errno.h fcntl.h malloc.h stdio_ext.h])
840 AC_CHECK_FUNCS([__argz_count __argz_next __argz_stringify dcgettext mempcpy \
841 munmap stpcpy strcspn])
843 INTL_DEP= INTL_INC= LIBINTL_H=
844 if test "x$USE_INCLUDED_LIBINTL" = "xyes"; then
845 INTL_DEP='${INTL_LIBDIR}/libintl.a'
846 INTL_INC='-I${INTL_LIBSRC} -I${INTL_BUILDDIR}'
847 LIBINTL_H='${INTL_BUILDDIR}/libintl.h'
854 dnl End of checks needed by files in lib/intl
859 dnl checks for the dynamic loading library functions in libc and libdl
860 if test "$opt_static_link" != yes; then
861 AC_CHECK_LIB(dl, dlopen)
862 AC_CHECK_FUNCS(dlopen dlclose dlsym)
865 dnl this defines HAVE_DECL_SYS_SIGLIST
868 dnl network functions -- check for inet_aton again
869 if test "$ac_cv_func_inet_aton" != 'yes'; then
874 dnl this is reportedly no longer necessary for irix[56].?
876 irix4*) AC_CHECK_LIB(sun, getpwent) ;;
879 dnl check for getpeername in the socket library only if it's not in libc
880 if test "$ac_cv_func_getpeername" = no; then
881 BASH_CHECK_LIB_SOCKET
883 dnl check for gethostbyname in socket libraries if it's not in libc
884 if test "$ac_cv_func_gethostbyname" = no; then
885 BASH_FUNC_GETHOSTBYNAME
897 AC_CHECK_TYPE(ssize_t, int)
898 AC_CHECK_TYPE(time_t, long)
901 BASH_TYPE_UNSIGNED_LONG_LONG
904 BASH_TYPE_SIG_ATOMIC_T
906 AC_CHECK_SIZEOF(char, 1)
907 AC_CHECK_SIZEOF(short, 2)
908 AC_CHECK_SIZEOF(int, 4)
909 AC_CHECK_SIZEOF(long, 4)
910 AC_CHECK_SIZEOF(char *, 4)
911 AC_CHECK_SIZEOF(double, 8)
912 AC_CHECK_SIZEOF([long long], 8)
914 AC_CHECK_TYPE(u_int, [unsigned int])
915 AC_CHECK_TYPE(u_long, [unsigned long])
930 if test $ac_cv_sys_interpreter = yes; then
931 AC_DEFINE(HAVE_HASH_BANG_EXEC)
934 dnl Miscellaneous Bash tests
935 if test "$ac_cv_func_lstat" = "no"; then
939 dnl behavior of system calls and library functions
940 BASH_FUNC_CTYPE_NONASCII
941 BASH_FUNC_DUP2_CLOEXEC_CHECK
943 BASH_SYS_SIGNAL_VINTAGE
945 dnl checking for the presence of certain library symbols
948 BASH_UNDER_SYS_SIGLIST
950 dnl various system types
952 BASH_CHECK_TYPE(clock_t, [#include <sys/times.h>], long)
953 BASH_CHECK_TYPE(sigset_t, [#include <signal.h>], int)
954 BASH_CHECK_TYPE(sig_atomic_t, [#include <signal.h>], int)
955 BASH_CHECK_TYPE(quad_t, , long, HAVE_QUAD_T)
956 BASH_CHECK_TYPE(intmax_t, , $bash_cv_type_long_long)
957 BASH_CHECK_TYPE(uintmax_t, , $bash_cv_type_unsigned_long_long)
958 if test "$ac_cv_header_sys_socket_h" = "yes"; then
959 BASH_CHECK_TYPE(socklen_t, [#include <sys/socket.h>], [unsigned int], HAVE_SOCKLEN_T)
963 AC_CHECK_SIZEOF(intmax_t, 8)
965 dnl presence and contents of structures used by system calls
966 BASH_STRUCT_TERMIOS_LDISC
967 BASH_STRUCT_TERMIO_LDISC
968 BASH_STRUCT_DIRENT_D_INO
969 BASH_STRUCT_DIRENT_D_FILENO
970 BASH_STRUCT_DIRENT_D_NAMLEN
973 AC_CHECK_MEMBERS([struct stat.st_blocks])
978 BASH_STRUCT_WEXITSTATUS_OFFSET
980 BASH_CHECK_TYPE_STRUCT_TIMESPEC
983 dnl presence and behavior of C library functions
985 BASH_FUNC_OPENDIR_CHECK
986 BASH_FUNC_ULIMIT_MAXFDS
989 if test "$ac_cv_func_getcwd" = "yes"; then
992 BASH_FUNC_POSIX_SETJMP
997 dnl If putenv or unsetenv is not present, set the right define so the
998 dnl prototype and declaration in lib/sh/getenv.c will be standard-conformant
1000 if test "$ac_cv_func_putenv" = "yes"; then
1001 BASH_FUNC_STD_PUTENV
1003 AC_DEFINE(HAVE_STD_PUTENV)
1005 if test "$ac_cv_func_unsetenv" = "yes"; then
1006 BASH_FUNC_STD_UNSETENV
1008 AC_DEFINE(HAVE_STD_UNSETENV)
1011 BASH_FUNC_PRINTF_A_FORMAT
1013 dnl presence and behavior of OS functions
1014 BASH_SYS_REINSTALL_SIGHANDLERS
1015 BASH_SYS_JOB_CONTROL_MISSING
1016 BASH_SYS_NAMED_PIPES
1018 dnl presence of certain CPP defines
1019 AC_HEADER_TIOCGWINSZ
1023 BASH_CHECK_WCONTINUED
1027 BASH_CHECK_GETPW_FUNCS
1029 BASH_CHECK_SYS_SIGLIST
1033 hpux*) BASH_CHECK_KERNEL_RLIMIT ;;
1036 if test "$opt_readline" = yes; then
1039 aix*) prefer_curses=yes ;;
1041 BASH_CHECK_LIB_TERMCAP
1043 AC_SUBST(TERMCAP_LIB)
1044 AC_SUBST(TERMCAP_DEP)
1047 BASH_CHECK_DEV_STDIN
1048 BASH_SYS_DEFAULT_MAIL_DIR
1050 if test "$bash_cv_job_control_missing" = missing; then
1054 if test "$opt_job_control" = yes; then
1055 AC_DEFINE(JOB_CONTROL)
1063 dnl Defines that we want to propagate to the Makefiles in subdirectories,
1064 dnl like glob and readline
1068 dnl use this section to possibly define more cpp variables, specify local
1069 dnl libraries, and specify any additional local cc or ld flags
1071 dnl this should really go away someday
1073 case "${host_os}" in
1074 sysv4.2*) AC_DEFINE(SVR4_2)
1076 sysv4*) AC_DEFINE(SVR4) ;;
1077 sysv5*) AC_DEFINE(SVR5) ;;
1078 hpux9*) LOCAL_CFLAGS="-DHPUX9 -DHPUX" ;;
1079 hpux*) LOCAL_CFLAGS=-DHPUX ;;
1080 dgux*) LOCAL_CFLAGS=-D_DGUX_SOURCE; LOCAL_LIBS=-ldgc ;;
1081 isc*) LOCAL_CFLAGS=-Disc386 ;;
1082 rhapsody*) LOCAL_CFLAGS=-DRHAPSODY ;;
1083 darwin*) LOCAL_CFLAGS=-DMACOSX ;;
1084 sco3.2v5*) LOCAL_CFLAGS="-b elf -DWAITPID_BROKEN -DPATH_MAX=1024" ;;
1085 sco3.2v4*) LOCAL_CFLAGS="-DMUST_UNBLOCK_CHLD -DPATH_MAX=1024" ;;
1086 sco3.2*) LOCAL_CFLAGS=-DMUST_UNBLOCK_CHLD ;;
1087 sunos4*) LOCAL_CFLAGS=-DSunOS4 ;;
1088 solaris2.5*) LOCAL_CFLAGS="-DSunOS5 -DSOLARIS" ;;
1089 solaris2.8*) LOCAL_CFLAGS=-DSOLARIS ;;
1090 solaris2.9*) LOCAL_CFLAGS=-DSOLARIS ;;
1091 solaris2.10*) LOCAL_CFLAGS=-DSOLARIS ;;
1092 solaris2*) LOCAL_CFLAGS=-DSOLARIS ;;
1093 lynxos*) LOCAL_CFLAGS=-DRECYCLES_PIDS ;;
1094 linux*) LOCAL_LDFLAGS=-rdynamic # allow dynamic loading
1095 case "`uname -r`" in
1096 2.[[456789]]*|[[34]]*) AC_DEFINE(PGRP_PIPE) ;;
1098 *qnx6*) LOCAL_CFLAGS="-Dqnx -Dqnx6" LOCAL_LIBS="-lncurses" ;;
1099 *qnx*) LOCAL_CFLAGS="-Dqnx -F -3s" LOCAL_LDFLAGS="-3s" LOCAL_LIBS="-lunix -lncurses" ;;
1100 powerux*) LOCAL_LIBS="-lgen" ;;
1101 cygwin*) LOCAL_CFLAGS=-DRECYCLES_PIDS ;;
1102 opennt*|interix*) LOCAL_CFLAGS="-DNO_MAIN_ENV_ARG -DBROKEN_DIRENT_D_INO -D_POSIX_SOURCE -D_ALL_SOURCE -DRECYCLES_PIDS" ;;
1103 *openstep*) LOCAL_CFLAGS="-D__APPLE_CC__" ;;
1106 dnl Stanza for OS/compiler pair-specific flags
1107 case "${host_os}-${CC}" in
1108 aix4.2*-*gcc*) LOCAL_LDFLAGS="-Xlinker -bexpall -Xlinker -brtl" ;;
1109 aix4.2*) LOCAL_LDFLAGS="-bexpall -brtl" ;;
1110 bsdi4*-*gcc*) LOCAL_LDFLAGS="-rdynamic" ;; # allow dynamic loading, like Linux
1111 bsdi5*-*gcc*) LOCAL_LDFLAGS="-rdynamic" ;; # allow dynamic loading, like Linux
1112 hpux11*-gcc*) LOCAL_LDFLAGS="-Wl,-E" ;; # allow dynamic loading
1115 dnl FreeBSD-3.x can have either a.out or ELF
1116 case "${host_os}" in
1118 if test -x /usr/bin/objformat && test "`/usr/bin/objformat`" = "elf" ; then
1119 LOCAL_LDFLAGS=-rdynamic # allow dynamic loading
1121 freebsdelf*) LOCAL_LDFLAGS=-rdynamic ;; # allow dynamic loading
1122 dragonfly*) LOCAL_LDFLAGS=-rdynamic ;; # allow dynamic loading
1126 *cray*) LOCAL_CFLAGS="-DCRAY" ;; # shell var so config.h can use it
1129 case "$host_cpu-$host_os" in
1130 ibmrt-*bsd4*) LOCAL_CFLAGS="-ma -U__STDC__" ;;
1133 case "$host_cpu-$host_vendor-$host_os" in
1134 m88k-motorola-sysv3) LOCAL_CFLAGS=-DWAITPID_BROKEN ;;
1135 mips-pyramid-sysv4) LOCAL_CFLAGS=-Xa ;;
1139 # Shared object configuration section. These values are generated by
1140 # ${srcdir}/support/shobj-conf
1142 if test "$ac_cv_func_dlopen" = "yes" && test -f ${srcdir}/support/shobj-conf
1144 AC_MSG_CHECKING(shared object configuration for loadable builtins)
1145 eval `${CONFIG_SHELL-/bin/sh} ${srcdir}/support/shobj-conf -C "${CC}" -c "${host_cpu}" -o "${host_os}" -v "${host_vendor}"`
1147 AC_SUBST(SHOBJ_CFLAGS)
1149 AC_SUBST(SHOBJ_LDFLAGS)
1150 AC_SUBST(SHOBJ_XLDFLAGS)
1151 AC_SUBST(SHOBJ_LIBS)
1152 AC_SUBST(SHOBJ_STATUS)
1153 AC_MSG_RESULT($SHOBJ_STATUS)
1156 # try to create a directory tree if the source is elsewhere
1157 # this should be packaged into a script accessible via ${srcdir}/support
1160 *) for d in doc tests support lib examples; do # dirs
1161 test -d $d || mkdir $d
1163 for ld in readline glob tilde malloc sh termcap; do # libdirs
1164 test -d lib/$ld || mkdir lib/$ld
1166 test -d examples/loadables || mkdir examples/loadables # loadable builtins
1167 test -d examples/loadables/perl || mkdir examples/loadables/perl
1172 case "$BUILD_DIR" in
1173 *\ *) BUILD_DIR=`echo "$BUILD_DIR" | sed 's: :\\\\ :g'` ;;
1177 if test -z "$localedir"; then
1178 localedir='${datarootdir}/locale'
1180 if test -z "$datarootdir"; then
1181 datarootdir='${prefix}/share'
1184 AC_SUBST(PROFILE_FLAGS)
1189 # Some versions of autoconf don't substitute these automatically
1190 AC_SUBST(datarootdir)
1193 # directory where we install dynamically loadable builtins
1194 if test -z "$loadablesdir"; then
1195 loadablesdir='${libdir}/bash'
1197 AC_SUBST(loadablesdir)
1198 if test -z "$headersdir"; then
1199 headersdir='$(includedir)/$(PACKAGE_NAME)'
1201 AC_SUBST(headersdir)
1210 AC_SUBST(MALLOC_DEBUG)
1213 AC_SUBST(host_vendor)
1216 AC_SUBST(LOCAL_LIBS)
1217 AC_SUBST(LOCAL_CFLAGS)
1218 AC_SUBST(LOCAL_LDFLAGS)
1219 AC_SUBST(LOCAL_DEFS)
1221 #AC_SUBST(ALLOCA_SOURCE)
1222 #AC_SUBST(ALLOCA_OBJECT)
1224 AC_OUTPUT([Makefile builtins/Makefile lib/readline/Makefile lib/glob/Makefile \
1226 lib/malloc/Makefile lib/sh/Makefile lib/termcap/Makefile \
1227 lib/tilde/Makefile doc/Makefile support/Makefile po/Makefile.in \
1228 examples/loadables/Makefile examples/loadables/Makefile.inc \
1229 examples/loadables/perl/Makefile \
1232 # Makefile uses this timestamp file to record whether config.h is up to date.
1233 echo timestamp > stamp-h