2 dnl Configure script for bash-4.2
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-2012 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.2, version 4.052])dnl
27 define(relstatus, maint)
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
60 opt_with_installed_readline=no
64 dnl some systems should be configured without the bash malloc by default
65 dnl and some need a special compiler or loader
66 dnl look in the NOTES file for more
67 case "${host_cpu}-${host_os}" in
68 alpha*-*) opt_bash_malloc=no ;; # alpha running osf/1 or linux
69 *[[Cc]]ray*-*) opt_bash_malloc=no ;; # Crays
70 *-osf1*) opt_bash_malloc=no ;; # other osf/1 machines
71 sparc-svr4*) opt_bash_malloc=no ;; # sparc SVR4, SVR4.2
72 sparc-netbsd*) opt_bash_malloc=no ;; # needs 8-byte alignment
73 mips-irix6*) opt_bash_malloc=no ;; # needs 8-byte alignment
74 m68k-sysv) opt_bash_malloc=no ;; # fixes file descriptor leak in closedir
75 sparc-linux*) opt_bash_malloc=no ;; # sparc running linux; requires ELF
76 #*-freebsd*-gnu) opt_bash_malloc=no ;; # there's some undetermined problem here
77 #*-freebsd*) opt_bash_malloc=no ;; # they claim it's better; I disagree
78 *-openbsd*) opt_bash_malloc=no ;; # they claim it needs eight-bit alignment
79 *-mirbsd*) opt_bash_malloc=no ;; # they claim it needs eight-bit alignment
80 *-aix*) opt_bash_malloc=no ;; # AIX machines
81 *-nextstep*) opt_bash_malloc=no ;; # NeXT machines running NeXTstep
82 *-macos*) opt_bash_malloc=no ;; # Apple MacOS X
83 *-rhapsody*) opt_bash_malloc=no ;; # Apple Rhapsody (MacOS X)
84 *-darwin*) opt_bash_malloc=no ;; # Apple Darwin (MacOS X)
85 *-dgux*) opt_bash_malloc=no ;; # DG/UX machines
86 *-qnx*) opt_bash_malloc=no ;; # QNX 4.2, QNX 6.x
87 *-machten4) opt_bash_malloc=no ;; # MachTen 4.x
88 *-bsdi2.1|*-bsdi3.?) opt_bash_malloc=no ; : ${CC:=shlicc2} ;; # for loadable builtins
89 *-beos*) opt_bash_malloc=no ;; # they say it's suitable
90 *-cygwin*) opt_bash_malloc=no ;; # Cygnus's CYGWIN environment
91 *-opennt*|*-interix*) opt_bash_malloc=no ;; # Interix, now owned by Microsoft
92 *-nsk*) opt_bash_malloc=no ;; # HP NonStop
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)
114 AC_ARG_WITH(purecov, AC_HELP_STRING([--with-purecov], [configure to postprocess with pure coverage]), opt_purecov=$withval)
115 AC_ARG_WITH(purify, AC_HELP_STRING([--with-purify], [configure to postprocess with purify]), opt_purify=$withval)
117 if test "$opt_bash_malloc" = yes; then
121 MALLOC_LIB='-lmalloc'
122 MALLOC_LIBRARY='$(ALLOC_LIBDIR)/libmalloc.a'
123 MALLOC_LDFLAGS='-L$(ALLOC_LIBDIR)'
124 MALLOC_DEP='$(MALLOC_LIBRARY)'
126 AC_DEFINE(USING_BASH_MALLOC)
134 if test "$opt_purify" = yes; then
136 AC_DEFINE(DISABLE_MALLOC_WRAPPERS)
141 if test "$opt_purecov" = yes; then
142 PURIFY="${PURIFY}purecov"
145 if test "$opt_afs" = yes; then
149 if test "$opt_curses" = yes; then
153 if test -z "${DEBUGGER_START_FILE}"; then
154 DEBUGGER_START_FILE='${datadir}/bashdb/bashdb-main.inc'
157 dnl optional shell features in config.h.in
158 opt_minimal_config=no
167 opt_process_subst=yes
168 opt_prompt_decoding=yes
171 opt_array_variables=yes
173 opt_extended_glob=yes
174 opt_brace_expansion=yes
175 opt_disabled_builtins=no
176 opt_command_timing=yes
182 opt_arith_for_command=yes
188 opt_single_longdoc_strings=yes
189 opt_casemod_attrs=yes
190 opt_casemod_expansions=yes
191 opt_extglob_default=no
192 opt_dircomplete_expand_default=no
194 dnl options that affect how bash is compiled and linked
198 dnl argument parsing for optional features
199 AC_ARG_ENABLE(minimal-config, AC_HELP_STRING([--enable-minimal-config], [a minimal sh-like configuration]), opt_minimal_config=$enableval)
201 dnl a minimal configuration turns everything off, but features can be
202 dnl added individually
203 if test $opt_minimal_config = yes; then
204 opt_job_control=no opt_alias=no opt_readline=no
205 opt_history=no opt_bang_history=no opt_dirstack=no
206 opt_restricted=no opt_process_subst=no opt_prompt_decoding=no
207 opt_select=no opt_help=no opt_array_variables=no opt_dparen_arith=no
208 opt_brace_expansion=no opt_disabled_builtins=no opt_command_timing=no
209 opt_extended_glob=no opt_cond_command=no opt_arith_for_command=no
210 opt_net_redirs=no opt_progcomp=no opt_separate_help=no
211 opt_multibyte=yes opt_cond_regexp=no opt_coproc=no
212 opt_casemod_attrs=no opt_casemod_expansions=no opt_extglob_default=no
215 AC_ARG_ENABLE(alias, AC_HELP_STRING([--enable-alias], [enable shell aliases]), opt_alias=$enableval)
216 AC_ARG_ENABLE(arith-for-command, AC_HELP_STRING([--enable-arith-for-command], [enable arithmetic for command]), opt_arith_for_command=$enableval)
217 AC_ARG_ENABLE(array-variables, AC_HELP_STRING([--enable-array-variables], [include shell array variables]), opt_array_variables=$enableval)
218 AC_ARG_ENABLE(bang-history, AC_HELP_STRING([--enable-bang-history], [turn on csh-style history substitution]), opt_bang_history=$enableval)
219 AC_ARG_ENABLE(brace-expansion, AC_HELP_STRING([--enable-brace-expansion], [include brace expansion]), opt_brace_expansion=$enableval)
220 AC_ARG_ENABLE(casemod-attributes, AC_HELP_STRING([--enable-casemod-attributes], [include case-modifying variable attributes]), opt_casemod_attrs=$enableval)
221 AC_ARG_ENABLE(casemod-expansions, AC_HELP_STRING([--enable-casemod-expansions], [include case-modifying word expansions]), opt_casemod_expansions=$enableval)
222 AC_ARG_ENABLE(command-timing, AC_HELP_STRING([--enable-command-timing], [enable the time reserved word and command timing]), opt_command_timing=$enableval)
223 AC_ARG_ENABLE(cond-command, AC_HELP_STRING([--enable-cond-command], [enable the conditional command]), opt_cond_command=$enableval)
224 AC_ARG_ENABLE(cond-regexp, AC_HELP_STRING([--enable-cond-regexp], [enable extended regular expression matching in conditional commands]), opt_cond_regexp=$enableval)
225 AC_ARG_ENABLE(coprocesses, AC_HELP_STRING([--enable-coprocesses], [enable coprocess support and the coproc reserved word]), opt_coproc=$enableval)
226 AC_ARG_ENABLE(debugger, AC_HELP_STRING([--enable-debugger], [enable support for bash debugger]), opt_debugger=$enableval)
227 AC_ARG_ENABLE(direxpand-default, AC_HELP_STRING([--enable-direxpand-default], [enable the direxpand shell option by default]), opt_dircomplete_expand_default=$enableval)
228 AC_ARG_ENABLE(directory-stack, AC_HELP_STRING([--enable-directory-stack], [enable builtins pushd/popd/dirs]), opt_dirstack=$enableval)
229 AC_ARG_ENABLE(disabled-builtins, AC_HELP_STRING([--enable-disabled-builtins], [allow disabled builtins to still be invoked]), opt_disabled_builtins=$enableval)
230 AC_ARG_ENABLE(dparen-arithmetic, AC_HELP_STRING([--enable-dparen-arithmetic], [include ((...)) command]), opt_dparen_arith=$enableval)
231 AC_ARG_ENABLE(extended-glob, AC_HELP_STRING([--enable-extended-glob], [include ksh-style extended pattern matching]), opt_extended_glob=$enableval)
232 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)
233 AC_ARG_ENABLE(help-builtin, AC_HELP_STRING([--enable-help-builtin], [include the help builtin]), opt_help=$enableval)
234 AC_ARG_ENABLE(history, AC_HELP_STRING([--enable-history], [turn on command history]), opt_history=$enableval)
235 AC_ARG_ENABLE(job-control, AC_HELP_STRING([--enable-job-control], [enable job control features]), opt_job_control=$enableval)
236 AC_ARG_ENABLE(multibyte, AC_HELP_STRING([--enable-multibyte], [enable multibyte characters if OS supports them]), opt_multibyte=$enableval)
237 AC_ARG_ENABLE(net-redirections, AC_HELP_STRING([--enable-net-redirections], [enable /dev/tcp/host/port redirection]), opt_net_redirs=$enableval)
238 AC_ARG_ENABLE(process-substitution, AC_HELP_STRING([--enable-process-substitution], [enable process substitution]), opt_process_subst=$enableval)
239 AC_ARG_ENABLE(progcomp, AC_HELP_STRING([--enable-progcomp], [enable programmable completion and the complete builtin]), opt_progcomp=$enableval)
240 AC_ARG_ENABLE(prompt-string-decoding, AC_HELP_STRING([--enable-prompt-string-decoding], [turn on escape character decoding in prompts]), opt_prompt_decoding=$enableval)
241 AC_ARG_ENABLE(readline, AC_HELP_STRING([--enable-readline], [turn on command line editing]), opt_readline=$enableval)
242 AC_ARG_ENABLE(restricted, AC_HELP_STRING([--enable-restricted], [enable a restricted shell]), opt_restricted=$enableval)
243 AC_ARG_ENABLE(select, AC_HELP_STRING([--enable-select], [include select command]), opt_select=$enableval)
244 AC_ARG_ENABLE(separate-helpfiles, AC_HELP_STRING([--enable-separate-helpfiles], [use external files for help builtin documentation]), opt_separate_help=$enableval)
245 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)
246 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)
247 AC_ARG_ENABLE(usg-echo-default, AC_HELP_STRING([--enable-usg-echo-default], [a synonym for --enable-xpg-echo-default]), opt_xpg_echo=$enableval)
248 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)
250 dnl options that alter how bash is compiled and linked
251 AC_ARG_ENABLE(mem-scramble, AC_HELP_STRING([--enable-mem-scramble], [scramble memory on calls to malloc and free]), opt_memscramble=$enableval)
252 AC_ARG_ENABLE(profiling, AC_HELP_STRING([--enable-profiling], [allow profiling with gprof]), opt_profiling=$enableval)
253 AC_ARG_ENABLE(static-link, AC_HELP_STRING([--enable-static-link], [link bash statically, for use as a root shell]), opt_static_link=$enableval)
255 dnl So-called `precious' variables
256 AC_ARG_VAR([CC_FOR_BUILD], [C compiler used when compiling binaries used only at build time])
257 AC_ARG_VAR([CFLAGS_FOR_BUILD], [Compliation options (CFLAGS) used when compiling binaries used only at build time])
258 AC_ARG_VAR([LDFLAGS_FOR_BUILD], [Linker options (LDFLAGS) used when compiling binaries used only at build time])
259 AC_ARG_VAR([CPPFLAGS_FOR_BUILD], [C preprocessor options (CPPFLAGS) used when compiling binaries used only at build time])
261 dnl opt_job_control is handled later, after BASH_JOB_CONTROL_MISSING runs
263 dnl opt_readline and opt_history are handled later, because AC_PROG_CC needs
264 dnl to be run before we can check the version of an already-installed readline
267 if test $opt_alias = yes; then
270 if test $opt_dirstack = yes; then
271 AC_DEFINE(PUSHD_AND_POPD)
273 if test $opt_restricted = yes; then
274 AC_DEFINE(RESTRICTED_SHELL)
276 if test $opt_process_subst = yes; then
277 AC_DEFINE(PROCESS_SUBSTITUTION)
279 if test $opt_prompt_decoding = yes; then
280 AC_DEFINE(PROMPT_STRING_DECODE)
282 if test $opt_select = yes; then
283 AC_DEFINE(SELECT_COMMAND)
285 if test $opt_help = yes; then
286 AC_DEFINE(HELP_BUILTIN)
288 if test $opt_array_variables = yes; then
289 AC_DEFINE(ARRAY_VARS)
291 if test $opt_dparen_arith = yes; then
292 AC_DEFINE(DPAREN_ARITHMETIC)
294 if test $opt_brace_expansion = yes; then
295 AC_DEFINE(BRACE_EXPANSION)
297 if test $opt_disabled_builtins = yes; then
298 AC_DEFINE(DISABLED_BUILTINS)
300 if test $opt_command_timing = yes; then
301 AC_DEFINE(COMMAND_TIMING)
303 if test $opt_xpg_echo = yes ; then
304 AC_DEFINE(DEFAULT_ECHO_TO_XPG)
306 if test $opt_strict_posix = yes; then
307 AC_DEFINE(STRICT_POSIX)
309 if test $opt_extended_glob = yes ; then
310 AC_DEFINE(EXTENDED_GLOB)
312 if test $opt_extglob_default = yes; then
313 AC_DEFINE(EXTGLOB_DEFAULT, 1)
315 AC_DEFINE(EXTGLOB_DEFAULT, 0)
317 if test $opt_cond_command = yes ; then
318 AC_DEFINE(COND_COMMAND)
320 if test $opt_cond_regexp = yes ; then
321 AC_DEFINE(COND_REGEXP)
323 if test $opt_coproc = yes; then
324 AC_DEFINE(COPROCESS_SUPPORT)
326 if test $opt_arith_for_command = yes; then
327 AC_DEFINE(ARITH_FOR_COMMAND)
329 if test $opt_net_redirs = yes; then
330 AC_DEFINE(NETWORK_REDIRECTIONS)
332 if test $opt_progcomp = yes; then
333 AC_DEFINE(PROGRAMMABLE_COMPLETION)
335 if test $opt_multibyte = no; then
336 AC_DEFINE(NO_MULTIBYTE_SUPPORT)
338 if test $opt_debugger = yes; then
341 if test $opt_casemod_attrs = yes; then
342 AC_DEFINE(CASEMOD_ATTRS)
344 if test $opt_casemod_expansions = yes; then
345 AC_DEFINE(CASEMOD_EXPANSIONS)
347 if test $opt_dircomplete_expand_default = yes; then
348 AC_DEFINE(DIRCOMPLETE_EXPAND_DEFAULT)
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
380 AC_SUBST(MALLOC_TARGET)
384 AC_SUBST(MALLOC_LIBRARY)
385 AC_SUBST(MALLOC_LDFLAGS)
391 AC_SUBST(HELPDIRDEFINE)
392 AC_SUBST(HELPINSTALL)
393 AC_SUBST(HELPFILES_TARGET)
394 AC_SUBST(HELPSTRINGS)
397 echo "Beginning configuration for bash-$BASHVERS-$RELSTATUS for ${host_cpu}-${host_vendor}-${host_os}"
400 dnl compilation checks
401 dnl AC_PROG_CC sets $cross_compiling to `yes' if cross-compiling for a
402 dnl different environment
405 dnl test for Unix variants
411 dnl BEGIN changes for cross-building (currently cygwin, minGW, and
415 SIGNAMES_H=lsignames.h
417 dnl load up the cross-building cache file -- add more cases and cache
418 dnl files as necessary
420 dnl Note that host and target machine are the same, and different than the
422 dnl Set SIGNAMES_H based on whether or not we're cross-compiling.
425 if test "x$cross_compiling" = "xyes"; then
428 cross_cache=${srcdir}/cross-build/cygwin32.cache
431 cross_cache=${srcdir}/cross-build/cygwin32.cache
434 cross_cache=${srcdir}/cross-build/x86-beos.cache
436 *) echo "configure: cross-compiling for $host is not supported" >&2
439 if test -n "${cross_cache}" && test -r "${cross_cache}"; then
440 echo "loading cross-build cache file ${cross_cache}"
444 SIGNAMES_O='signames.o'
445 CROSS_COMPILE='-DCROSS_COMPILING'
446 AC_SUBST(CROSS_COMPILE)
451 dnl END changes for cross-building
453 dnl We want these before the checks, so the checks can modify their values.
454 if test -z "$CFLAGS"; then
455 AUTO_CFLAGS="-g ${GCC+-O2}"
456 AUTO_LDFLAGS="-g ${GCC+-O2}"
458 AUTO_CFLAGS= AUTO_LDFLAGS=
462 CFLAGS=${CFLAGS-"$AUTO_CFLAGS"}
463 # LDFLAGS=${LDFLAGS="$AUTO_LDFLAGS"} # XXX
465 dnl handle options that alter how bash is compiled and linked
466 dnl these must come after the test for cc/gcc
467 if test "$opt_profiling" = "yes"; then
471 *) opt_static_link=yes ;;
479 if test "$opt_static_link" = yes; then
482 # if we're using gcc, add `-static' to LDFLAGS, except on Solaris >= 2
483 if test -n "$GCC" || test "$ac_cv_prog_gcc" = "yes"; then
487 *) LDFLAGS="$LDFLAGS -static" ;; # XXX experimental
492 # set the appropriate make variables for building the "build tools"
493 # modify defaults based on whether or not we are cross compiling, since the
494 # options for the target host may not be appropriate for the build host
495 if test "X$cross_compiling" = "Xno"; then
496 CC_FOR_BUILD=${CC_FOR_BUILD-'$(CC)'}
497 CPPFLAGS_FOR_BUILD=${CPPFLAGS_FOR_BUILD-"$CPPFLAGS"} # XXX - should it be '$(CPPFLAGS)'
498 LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-'$(LDFLAGS)'}
499 # CFLAGS set above to default value if not passed in environment
500 CFLAGS_FOR_BUILD=${CFLAGS-'$(CFLAGS)'}
501 LIBS_FOR_BUILD=${LIBS_FOR_BUILD-'$(LIBS)'}
503 CC_FOR_BUILD=${CC_FOR_BUILD-"gcc"}
504 CPPFLAGS_FOR_BUILD=${CPPFLAGS_FOR_BUILD-""}
505 LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-""}
506 CFLAGS_FOR_BUILD=${CFLAGS_FOR_BUILD="-g"}
507 LIBS_FOR_BUILD=${LIBS_FOR_BUILD-""}
515 AC_SUBST(CC_FOR_BUILD)
516 AC_SUBST(CFLAGS_FOR_BUILD)
517 AC_SUBST(CPPFLAGS_FOR_BUILD)
518 AC_SUBST(LDFLAGS_FOR_BUILD)
519 AC_SUBST(LIBS_FOR_BUILD)
521 AC_PROG_GCC_TRADITIONAL
523 dnl BEGIN READLINE and HISTORY LIBRARY SECTION
524 dnl prepare to allow bash to be linked against an already-installed readline
526 dnl first test that the readline version is new enough to link bash against
527 if test "$opt_readline" = yes && test "$opt_with_installed_readline" != "no"
529 # If the user specified --with-installed-readline=PREFIX and PREFIX
530 # is not `yes', set ac_cv_rl_prefix to PREFIX
531 test $opt_with_installed_readline != "yes" && ac_cv_rl_prefix=$opt_with_installed_readline
533 RL_LIB_READLINE_VERSION
535 case "$ac_cv_rl_version" in
537 *) opt_with_installed_readline=no
538 AC_MSG_WARN([installed readline library is too old to be linked with bash])
539 AC_MSG_WARN([using private bash version])
545 if test $opt_readline = yes; then
547 if test "$opt_with_installed_readline" != "no" ; then
548 case "$opt_with_installed_readline" in
550 *) case "$RL_INCLUDEDIR" in
552 *) RL_INCLUDE='-I${RL_INCLUDEDIR}' ;;
557 READLINE_LIB=-lreadline
558 # section for OS versions that don't allow unresolved symbols
559 # to be compiled into dynamic libraries.
561 cygwin*) TILDE_LIB= ;;
564 RL_LIBDIR='$(dot)/$(LIBSUBDIR)/readline'
565 READLINE_DEP='$(READLINE_LIBRARY)'
566 # section for OS versions that ship an older/broken version of
567 # readline as a standard dynamic library and don't allow a
568 # static version specified as -llibname to override the
571 darwin[[89]]*|darwin10*) READLINE_LIB='${READLINE_LIBRARY}' ;;
572 *) READLINE_LIB=-lreadline ;;
576 RL_LIBDIR='$(dot)/$(LIBSUBDIR)/readline'
577 READLINE_LIB= READLINE_DEP=
579 if test $opt_history = yes || test $opt_bang_history = yes; then
580 if test $opt_history = yes; then
583 if test $opt_bang_history = yes; then
584 AC_DEFINE(BANG_HISTORY)
586 if test "$opt_with_installed_readline" != "no"; then
587 HIST_LIBDIR=$RL_LIBDIR
589 HISTORY_LIB=-lhistory
590 case "$opt_with_installed_readline" in
592 *) case "$RL_INCLUDEDIR" in
594 *) RL_INCLUDE='-I${RL_INCLUDEDIR}' ;;
599 HIST_LIBDIR='$(dot)/$(LIBSUBDIR)/readline'
600 HISTORY_DEP='$(HISTORY_LIBRARY)'
601 # section for OS versions that ship an older version of
602 # readline as a standard dynamic library and don't allow a
603 # static version specified as -llibname to override the
606 darwin[[89]]*|darwin10*) HISTORY_LIB='${HISTORY_LIBRARY}' ;;
607 *) HISTORY_LIB=-lhistory ;;
611 HIST_LIBDIR='$(dot)/$(LIBSUBDIR)/readline'
612 HISTORY_LIB= HISTORY_DEP=
614 AC_SUBST(READLINE_LIB)
615 AC_SUBST(READLINE_DEP)
617 AC_SUBST(RL_INCLUDEDIR)
619 AC_SUBST(HISTORY_LIB)
620 AC_SUBST(HISTORY_DEP)
621 AC_SUBST(HIST_LIBDIR)
624 dnl END READLINE and HISTORY LIBRARY SECTION
626 dnl programs needed by the build and install process
628 AC_CHECK_PROG(AR, ar, , ar)
629 dnl Set default for ARFLAGS, since autoconf does not have a macro for it.
630 dnl This allows people to set it when running configure or make
631 test -n "$ARFLAGS" || ARFLAGS="cr"
637 opennt*|interix*) MAKE_SHELL="$INTERIX_ROOT/bin/sh" ;;
638 *) MAKE_SHELL=/bin/sh ;;
642 dnl this is similar to the expanded AC_PROG_RANLIB
643 if test x$SIZE = x; then
644 if test x$ac_tool_prefix = x; then
647 SIZE=${ac_tool_prefix}size
648 save_IFS=$IFS ; IFS=:
651 if test -x $dir/$SIZE ; then
656 if test $size_found -eq 0; then
664 m4_include([m4/stat-time.m4])
665 m4_include([m4/timespec.m4])
667 dnl Turn on any extensions available in the GNU C library.
668 AC_DEFINE(_GNU_SOURCE, 1)
670 dnl C compiler characteristics
681 dnl initialize GNU gettext
682 AM_GNU_GETTEXT([no-libtool], [need-ngettext], [lib/intl])
690 AC_CHECK_HEADERS(unistd.h stdlib.h stdarg.h varargs.h limits.h string.h \
691 memory.h locale.h termcap.h termio.h termios.h dlfcn.h \
692 stdbool.h stddef.h stdint.h netdb.h pwd.h grp.h strings.h \
693 regex.h syslog.h ulimit.h)
694 AC_CHECK_HEADERS(sys/pte.h sys/stream.h sys/select.h sys/file.h \
695 sys/resource.h sys/param.h sys/socket.h sys/stat.h \
696 sys/time.h sys/times.h sys/types.h sys/wait.h)
697 AC_CHECK_HEADERS(netinet/in.h arpa/inet.h)
699 dnl sys/ptem.h requires definitions from sys/stream.h on systems where it
701 AC_CHECK_HEADER(sys/ptem.h, , ,[[
702 #if HAVE_SYS_STREAM_H
703 # include <sys/stream.h>
707 dnl special checks for libc functions
710 AC_FUNC_SETVBUF_REVERSED
714 dnl if we're not using the bash malloc but require the C alloca, set things
715 dnl up to build a libmalloc.a containing only alloca.o
717 if test "$ac_cv_func_alloca_works" = "no" && test "$opt_bash_malloc" = "no"; then
721 MALLOC_LIB='-lmalloc'
722 MALLOC_LIBRARY='$(ALLOC_LIBDIR)/libmalloc.a'
723 MALLOC_LDFLAGS='-L$(ALLOC_LIBDIR)'
724 MALLOC_DEP='$(MALLOC_LIBRARY)'
727 dnl if vprintf is not in libc, see if it's defined in stdio.h
728 if test "$ac_cv_func_vprintf" = no; then
729 AC_MSG_CHECKING(for declaration of vprintf in stdio.h)
730 AC_EGREP_HEADER([[int[ ]*vprintf[^a-zA-Z0-9]]],stdio.h,ac_cv_func_vprintf=yes)
731 AC_MSG_RESULT($ac_cv_func_vprintf)
732 if test $ac_cv_func_vprintf = yes; then
733 AC_DEFINE(HAVE_VPRINTF)
737 if test "$ac_cv_func_vprintf" = no && test "$ac_cv_func__doprnt" = "yes"; then
744 dnl checks for certain version-specific system calls and libc functions
745 AC_CHECK_FUNC(__setostype, AC_DEFINE(HAVE_SETOSTYPE))
746 AC_CHECK_FUNC(wait3, AC_DEFINE(HAVE_WAIT3))
748 dnl checks for missing libc functions
749 AC_CHECK_FUNC(mkfifo,AC_DEFINE(HAVE_MKFIFO),AC_DEFINE(MKFIFO_MISSING))
751 dnl checks for system calls
752 AC_CHECK_FUNCS(dup2 eaccess fcntl getdtablesize getgroups gethostname \
753 getpagesize getpeername getrlimit getrusage gettimeofday \
754 kill killpg lstat readlink sbrk select setdtablesize \
755 setitimer tcgetpgrp uname ulimit waitpid)
756 AC_REPLACE_FUNCS(rename)
758 dnl checks for c library functions
759 AC_CHECK_FUNCS(bcopy bzero confstr faccessat fnmatch \
760 getaddrinfo gethostbyname getservbyname getservent inet_aton \
761 imaxdiv memmove pathconf putenv raise regcomp regexec \
762 setenv setlinebuf setlocale setvbuf siginterrupt strchr \
763 sysconf syslog tcgetattr times ttyname tzset unsetenv)
765 AC_CHECK_FUNCS(vasprintf asprintf)
766 AC_CHECK_FUNCS(isascii isblank isgraph isprint isspace isxdigit)
767 AC_CHECK_FUNCS(getpwent getpwnam getpwuid)
768 AC_REPLACE_FUNCS(getcwd memset)
769 AC_REPLACE_FUNCS(strcasecmp strcasestr strerror strftime strnlen strpbrk strstr)
770 AC_REPLACE_FUNCS(strtod strtol strtoul strtoll strtoull strtoimax strtoumax)
771 AC_REPLACE_FUNCS(dprintf)
772 AC_REPLACE_FUNCS(strchrnul)
774 AC_CHECK_DECLS([AUDIT_USER_TTY],,, [[#include <linux/audit.h>]])
776 AC_CHECK_DECLS([confstr])
777 AC_CHECK_DECLS([printf])
778 AC_CHECK_DECLS([sbrk])
779 AC_CHECK_DECLS([setregid])
780 AC_CHECK_DECLS([strcpy])
781 AC_CHECK_DECLS([strsignal])
783 dnl Extra test to detect the horribly broken HP/UX 11.00 strtold(3)
784 AC_CHECK_DECLS([strtold], [
785 AC_MSG_CHECKING([for broken strtold])
786 AC_CACHE_VAL(bash_cv_strtold_broken,
788 [#include <stdlib.h>],
789 [int main() { long double r; char *foo, bar; r = strtold(foo, &bar);}],
790 bash_cv_strtold_broken=no, bash_cv_strtold_broken=yes,
791 [AC_MSG_WARN(cannot check for broken strtold if cross-compiling, defaulting to no)])
794 AC_MSG_RESULT($bash_cv_strtold_broken)
795 if test "$bash_cv_strtold_broken" = "yes" ; then
796 AC_DEFINE(STRTOLD_BROKEN)
800 BASH_CHECK_DECL(strtoimax)
801 BASH_CHECK_DECL(strtol)
802 BASH_CHECK_DECL(strtoll)
803 BASH_CHECK_DECL(strtoul)
804 BASH_CHECK_DECL(strtoull)
805 BASH_CHECK_DECL(strtoumax)
810 dnl Checks for lib/intl and related code (uses some of the output from
814 AC_CHECK_HEADERS([argz.h errno.h fcntl.h malloc.h stdio_ext.h])
818 AC_CHECK_FUNCS([__argz_count __argz_next __argz_stringify dcgettext mempcpy \
819 munmap stpcpy strcspn strdup])
821 INTL_DEP= INTL_INC= LIBINTL_H=
822 if test "x$USE_INCLUDED_LIBINTL" = "xyes"; then
823 INTL_DEP='${INTL_LIBDIR}/libintl.a'
824 INTL_INC='-I${INTL_LIBSRC} -I${INTL_BUILDDIR}'
825 LIBINTL_H='${INTL_BUILDDIR}/libintl.h'
832 dnl End of checks needed by files in lib/intl
837 dnl checks for the dynamic loading library functions in libc and libdl
838 if test "$opt_static_link" != yes; then
839 AC_CHECK_LIB(dl, dlopen)
840 AC_CHECK_FUNCS(dlopen dlclose dlsym)
843 dnl this defines HAVE_DECL_SYS_SIGLIST
846 dnl network functions -- check for inet_aton again
847 if test "$ac_cv_func_inet_aton" != 'yes'; then
852 dnl this is reportedly no longer necessary for irix[56].?
854 irix4*) AC_CHECK_LIB(sun, getpwent) ;;
857 dnl check for getpeername in the socket library only if it's not in libc
858 if test "$ac_cv_func_getpeername" = no; then
859 BASH_CHECK_LIB_SOCKET
861 dnl check for gethostbyname in socket libraries if it's not in libc
862 if test "$ac_cv_func_gethostbyname" = no; then
863 BASH_FUNC_GETHOSTBYNAME
873 AC_CHECK_TYPE(ssize_t, int)
874 AC_CHECK_TYPE(time_t, long)
877 BASH_TYPE_UNSIGNED_LONG_LONG
880 BASH_TYPE_SIG_ATOMIC_T
882 AC_CHECK_SIZEOF(char, 1)
883 AC_CHECK_SIZEOF(short, 2)
884 AC_CHECK_SIZEOF(int, 4)
885 AC_CHECK_SIZEOF(long, 4)
886 AC_CHECK_SIZEOF(char *, 4)
887 AC_CHECK_SIZEOF(double, 8)
888 AC_CHECK_SIZEOF([long long], 8)
890 AC_CHECK_TYPE(u_int, [unsigned int])
891 AC_CHECK_TYPE(u_long, [unsigned long])
906 if test $ac_cv_sys_interpreter = yes; then
907 AC_DEFINE(HAVE_HASH_BANG_EXEC)
910 dnl Miscellaneous Bash tests
911 if test "$ac_cv_func_lstat" = "no"; then
915 dnl behavior of system calls and library functions
916 BASH_FUNC_CTYPE_NONASCII
917 BASH_FUNC_DUP2_CLOEXEC_CHECK
919 BASH_SYS_SIGNAL_VINTAGE
921 dnl checking for the presence of certain library symbols
924 BASH_UNDER_SYS_SIGLIST
926 dnl various system types
928 BASH_CHECK_TYPE(clock_t, [#include <sys/times.h>], long)
929 BASH_CHECK_TYPE(sigset_t, [#include <signal.h>], int)
930 BASH_CHECK_TYPE(quad_t, , long, HAVE_QUAD_T)
931 BASH_CHECK_TYPE(intmax_t, , $bash_cv_type_long_long)
932 BASH_CHECK_TYPE(uintmax_t, , $bash_cv_type_unsigned_long_long)
933 if test "$ac_cv_header_sys_socket_h" = "yes"; then
934 BASH_CHECK_TYPE(socklen_t, [#include <sys/socket.h>], int, HAVE_SOCKLEN_T)
938 AC_CHECK_SIZEOF(intmax_t, 8)
940 dnl presence and contents of structures used by system calls
941 BASH_STRUCT_TERMIOS_LDISC
942 BASH_STRUCT_TERMIO_LDISC
943 BASH_STRUCT_DIRENT_D_INO
944 BASH_STRUCT_DIRENT_D_FILENO
945 BASH_STRUCT_DIRENT_D_NAMLEN
948 AC_CHECK_MEMBERS([struct stat.st_blocks])
953 BASH_STRUCT_WEXITSTATUS_OFFSET
955 BASH_CHECK_TYPE_STRUCT_TIMESPEC
958 dnl presence and behavior of C library functions
960 BASH_FUNC_OPENDIR_CHECK
961 BASH_FUNC_ULIMIT_MAXFDS
964 if test "$ac_cv_func_getcwd" = "yes"; then
967 BASH_FUNC_POSIX_SETJMP
972 dnl If putenv or unsetenv is not present, set the right define so the
973 dnl prototype and declaration in lib/sh/getenv.c will be standard-conformant
975 if test "$ac_cv_func_putenv" = "yes"; then
978 AC_DEFINE(HAVE_STD_PUTENV)
980 if test "$ac_cv_func_unsetenv" = "yes"; then
981 BASH_FUNC_STD_UNSETENV
983 AC_DEFINE(HAVE_STD_UNSETENV)
986 BASH_FUNC_PRINTF_A_FORMAT
988 dnl presence and behavior of OS functions
989 BASH_SYS_REINSTALL_SIGHANDLERS
990 BASH_SYS_JOB_CONTROL_MISSING
993 dnl presence of certain CPP defines
998 BASH_CHECK_WCONTINUED
1002 BASH_CHECK_GETPW_FUNCS
1004 BASH_CHECK_SYS_SIGLIST
1008 hpux*) BASH_CHECK_KERNEL_RLIMIT ;;
1011 if test "$opt_readline" = yes; then
1014 aix*) prefer_curses=yes ;;
1016 BASH_CHECK_LIB_TERMCAP
1018 AC_SUBST(TERMCAP_LIB)
1019 AC_SUBST(TERMCAP_DEP)
1022 BASH_CHECK_DEV_STDIN
1023 BASH_SYS_DEFAULT_MAIL_DIR
1025 if test "$bash_cv_job_control_missing" = missing; then
1029 if test "$opt_job_control" = yes; then
1030 AC_DEFINE(JOB_CONTROL)
1038 dnl Defines that we want to propagate to the Makefiles in subdirectories,
1039 dnl like glob and readline
1043 dnl use this section to possibly define more cpp variables, specify local
1044 dnl libraries, and specify any additional local cc or ld flags
1046 dnl this should really go away someday
1048 case "${host_os}" in
1049 sysv4.2*) AC_DEFINE(SVR4_2)
1051 sysv4*) AC_DEFINE(SVR4) ;;
1052 sysv5*) AC_DEFINE(SVR5) ;;
1053 hpux9*) LOCAL_CFLAGS="-DHPUX9 -DHPUX" ;;
1054 hpux*) LOCAL_CFLAGS=-DHPUX ;;
1055 dgux*) LOCAL_CFLAGS=-D_DGUX_SOURCE; LOCAL_LIBS=-ldgc ;;
1056 isc*) LOCAL_CFLAGS=-Disc386 ;;
1057 rhapsody*) LOCAL_CFLAGS=-DRHAPSODY ;;
1058 darwin*) LOCAL_CFLAGS=-DMACOSX ;;
1059 sco3.2v5*) LOCAL_CFLAGS="-b elf -DWAITPID_BROKEN -DPATH_MAX=1024" ;;
1060 sco3.2v4*) LOCAL_CFLAGS="-DMUST_UNBLOCK_CHLD -DPATH_MAX=1024" ;;
1061 sco3.2*) LOCAL_CFLAGS=-DMUST_UNBLOCK_CHLD ;;
1062 sunos4*) LOCAL_CFLAGS=-DSunOS4 ;;
1063 solaris2.5*) LOCAL_CFLAGS="-DSunOS5 -DSOLARIS" ;;
1064 solaris2.8*) LOCAL_CFLAGS=-DSOLARIS ;;
1065 solaris2.9*) LOCAL_CFLAGS=-DSOLARIS ;;
1066 solaris2.10*) LOCAL_CFLAGS=-DSOLARIS ;;
1067 solaris2*) LOCAL_CFLAGS=-DSOLARIS ;;
1068 lynxos*) LOCAL_CFLAGS=-DRECYCLES_PIDS ;;
1069 linux*) LOCAL_LDFLAGS=-rdynamic # allow dynamic loading
1070 case "`uname -r`" in
1071 2.[[456789]]*|3*) AC_DEFINE(PGRP_PIPE) ;;
1073 *qnx6*) LOCAL_CFLAGS="-Dqnx -Dqnx6" LOCAL_LIBS="-lncurses" ;;
1074 *qnx*) LOCAL_CFLAGS="-Dqnx -F -3s" LOCAL_LDFLAGS="-3s" LOCAL_LIBS="-lunix -lncurses" ;;
1075 powerux*) LOCAL_LIBS="-lgen" ;;
1076 cygwin*) LOCAL_CFLAGS=-DRECYCLES_PIDS ;;
1077 opennt*|interix*) LOCAL_CFLAGS="-DNO_MAIN_ENV_ARG -DBROKEN_DIRENT_D_INO -D_POSIX_SOURCE -D_ALL_SOURCE -DRECYCLES_PIDS" ;;
1080 dnl Stanza for OS/compiler pair-specific flags
1081 case "${host_os}-${CC}" in
1082 aix4.2*-*gcc*) LOCAL_LDFLAGS="-Xlinker -bexpall -Xlinker -brtl" ;;
1083 aix4.2*) LOCAL_LDFLAGS="-bexpall -brtl" ;;
1084 bsdi4*-*gcc*) LOCAL_LDFLAGS="-rdynamic" ;; # allow dynamic loading, like Linux
1087 dnl FreeBSD-3.x can have either a.out or ELF
1088 case "${host_os}" in
1090 if test -x /usr/bin/objformat && test "`/usr/bin/objformat`" = "elf" ; then
1091 LOCAL_LDFLAGS=-rdynamic # allow dynamic loading
1093 freebsdelf*) LOCAL_LDFLAGS=-rdynamic ;; # allow dynamic loading
1094 dragonfly*) LOCAL_LDFLAGS=-rdynamic ;; # allow dynamic loading
1098 *cray*) LOCAL_CFLAGS="-DCRAY" ;; # shell var so config.h can use it
1101 case "$host_cpu-$host_os" in
1102 ibmrt-*bsd4*) LOCAL_CFLAGS="-ma -U__STDC__" ;;
1105 case "$host_cpu-$host_vendor-$host_os" in
1106 m88k-motorola-sysv3) LOCAL_CFLAGS=-DWAITPID_BROKEN ;;
1107 mips-pyramid-sysv4) LOCAL_CFLAGS=-Xa ;;
1111 # Shared object configuration section. These values are generated by
1112 # ${srcdir}/support/shobj-conf
1114 if test "$ac_cv_func_dlopen" = "yes" && test -f ${srcdir}/support/shobj-conf
1116 AC_MSG_CHECKING(shared object configuration for loadable builtins)
1117 eval `${CONFIG_SHELL-/bin/sh} ${srcdir}/support/shobj-conf -C "${CC}" -c "${host_cpu}" -o "${host_os}" -v "${host_vendor}"`
1119 AC_SUBST(SHOBJ_CFLAGS)
1121 AC_SUBST(SHOBJ_LDFLAGS)
1122 AC_SUBST(SHOBJ_XLDFLAGS)
1123 AC_SUBST(SHOBJ_LIBS)
1124 AC_SUBST(SHOBJ_STATUS)
1125 AC_MSG_RESULT($SHOBJ_STATUS)
1128 # try to create a directory tree if the source is elsewhere
1129 # this should be packaged into a script accessible via ${srcdir}/support
1132 *) for d in doc tests support lib examples; do # dirs
1133 test -d $d || mkdir $d
1135 for ld in readline glob tilde malloc sh termcap; do # libdirs
1136 test -d lib/$ld || mkdir lib/$ld
1138 test -d examples/loadables || mkdir examples/loadables # loadable builtins
1139 test -d examples/loadables/perl || mkdir examples/loadables/perl
1144 case "$BUILD_DIR" in
1145 *\ *) BUILD_DIR=`echo "$BUILD_DIR" | sed 's: :\\\\ :g'` ;;
1149 if test -z "$localedir"; then
1150 localedir='${datarootdir}/locale'
1152 if test -z "$datarootdir"; then
1153 datarootdir='${prefix}/share'
1156 AC_SUBST(PROFILE_FLAGS)
1161 # Some versions of autoconf don't substitute these automatically
1162 AC_SUBST(datarootdir)
1172 AC_SUBST(MALLOC_DEBUG)
1175 AC_SUBST(host_vendor)
1178 AC_SUBST(LOCAL_LIBS)
1179 AC_SUBST(LOCAL_CFLAGS)
1180 AC_SUBST(LOCAL_LDFLAGS)
1181 AC_SUBST(LOCAL_DEFS)
1183 #AC_SUBST(ALLOCA_SOURCE)
1184 #AC_SUBST(ALLOCA_OBJECT)
1186 AC_OUTPUT([Makefile builtins/Makefile lib/readline/Makefile lib/glob/Makefile \
1188 lib/malloc/Makefile lib/sh/Makefile lib/termcap/Makefile \
1189 lib/tilde/Makefile doc/Makefile support/Makefile po/Makefile.in \
1190 examples/loadables/Makefile examples/loadables/perl/Makefile],
1192 # Makefile uses this timestamp file to record whether config.h is up to date.
1193 echo timestamp > stamp-h