2 dnl Configure script for bash-4.3
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-2013 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.3, version 4.058])dnl
27 define(relstatus, beta)
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 *-openstep*) opt_bash_malloc=no ;; # i386/Sparc/HP machines running Openstep
83 *-macos*) opt_bash_malloc=no ;; # Apple MacOS X
84 *-rhapsody*) opt_bash_malloc=no ;; # Apple Rhapsody (MacOS X)
85 *-darwin*) opt_bash_malloc=no ;; # Apple Darwin (MacOS X)
86 *-dgux*) opt_bash_malloc=no ;; # DG/UX machines
87 *-qnx*) opt_bash_malloc=no ;; # QNX 4.2, QNX 6.x
88 *-machten4) opt_bash_malloc=no ;; # MachTen 4.x
89 *-bsdi2.1|*-bsdi3.?) opt_bash_malloc=no ; : ${CC:=shlicc2} ;; # for loadable builtins
90 *-beos*) opt_bash_malloc=no ;; # they say it's suitable
91 *-cygwin*) opt_bash_malloc=no ;; # Cygnus's CYGWIN environment
92 *-opennt*|*-interix*) opt_bash_malloc=no ;; # Interix, now owned by Microsoft
93 *-nsk*) opt_bash_malloc=no ;; # HP NonStop
96 # memory scrambling on free()
98 sco3.2v5*|sco3.2v4*) opt_memscramble=no ;;
99 *) opt_memscramble=yes ;;
103 dnl macros for the bash debugger
106 AC_ARG_VAR(DEBUGGER_START_FILE, [location of bash debugger initialization file])
108 dnl arguments to configure
110 AC_ARG_WITH(afs, AC_HELP_STRING([--with-afs], [if you are running AFS]), opt_afs=$withval)
111 AC_ARG_WITH(bash-malloc, AC_HELP_STRING([--with-bash-malloc], [use the Bash version of malloc]), opt_bash_malloc=$withval)
112 AC_ARG_WITH(curses, AC_HELP_STRING([--with-curses], [use the curses library instead of the termcap library]), opt_curses=$withval)
113 AC_ARG_WITH(gnu-malloc, AC_HELP_STRING([--with-gnu-malloc], [synonym for --with-bash-malloc]), opt_bash_malloc=$withval)
114 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 AC_ARG_WITH(purecov, AC_HELP_STRING([--with-purecov], [configure to postprocess with pure coverage]), opt_purecov=$withval)
116 AC_ARG_WITH(purify, AC_HELP_STRING([--with-purify], [configure to postprocess with purify]), opt_purify=$withval)
118 if test "$opt_bash_malloc" = yes; then
122 MALLOC_LIB='-lmalloc'
123 MALLOC_LIBRARY='$(ALLOC_LIBDIR)/libmalloc.a'
124 MALLOC_LDFLAGS='-L$(ALLOC_LIBDIR)'
125 MALLOC_DEP='$(MALLOC_LIBRARY)'
127 AC_DEFINE(USING_BASH_MALLOC)
135 if test "$opt_purify" = yes; then
137 AC_DEFINE(DISABLE_MALLOC_WRAPPERS)
142 if test "$opt_purecov" = yes; then
143 PURIFY="${PURIFY}purecov"
146 if test "$opt_afs" = yes; then
150 if test "$opt_curses" = yes; then
154 if test -z "${DEBUGGER_START_FILE}"; then
155 DEBUGGER_START_FILE='${datadir}/bashdb/bashdb-main.inc'
158 dnl optional shell features in config.h.in
159 opt_minimal_config=no
168 opt_process_subst=yes
169 opt_prompt_decoding=yes
172 opt_array_variables=yes
174 opt_extended_glob=yes
175 opt_brace_expansion=yes
176 opt_disabled_builtins=no
177 opt_command_timing=yes
183 opt_arith_for_command=yes
189 opt_single_longdoc_strings=yes
190 opt_casemod_attrs=yes
191 opt_casemod_expansions=yes
192 opt_extglob_default=no
193 opt_dircomplete_expand_default=no
195 dnl options that affect how bash is compiled and linked
199 dnl argument parsing for optional features
200 AC_ARG_ENABLE(minimal-config, AC_HELP_STRING([--enable-minimal-config], [a minimal sh-like configuration]), opt_minimal_config=$enableval)
202 dnl a minimal configuration turns everything off, but features can be
203 dnl added individually
204 if test $opt_minimal_config = yes; then
205 opt_job_control=no opt_alias=no opt_readline=no
206 opt_history=no opt_bang_history=no opt_dirstack=no
207 opt_restricted=no opt_process_subst=no opt_prompt_decoding=no
208 opt_select=no opt_help=no opt_array_variables=no opt_dparen_arith=no
209 opt_brace_expansion=no opt_disabled_builtins=no opt_command_timing=no
210 opt_extended_glob=no opt_cond_command=no opt_arith_for_command=no
211 opt_net_redirs=no opt_progcomp=no opt_separate_help=no
212 opt_multibyte=yes opt_cond_regexp=no opt_coproc=no
213 opt_casemod_attrs=no opt_casemod_expansions=no opt_extglob_default=no
216 AC_ARG_ENABLE(alias, AC_HELP_STRING([--enable-alias], [enable shell aliases]), opt_alias=$enableval)
217 AC_ARG_ENABLE(arith-for-command, AC_HELP_STRING([--enable-arith-for-command], [enable arithmetic for command]), opt_arith_for_command=$enableval)
218 AC_ARG_ENABLE(array-variables, AC_HELP_STRING([--enable-array-variables], [include shell array variables]), opt_array_variables=$enableval)
219 AC_ARG_ENABLE(bang-history, AC_HELP_STRING([--enable-bang-history], [turn on csh-style history substitution]), opt_bang_history=$enableval)
220 AC_ARG_ENABLE(brace-expansion, AC_HELP_STRING([--enable-brace-expansion], [include brace expansion]), opt_brace_expansion=$enableval)
221 AC_ARG_ENABLE(casemod-attributes, AC_HELP_STRING([--enable-casemod-attributes], [include case-modifying variable attributes]), opt_casemod_attrs=$enableval)
222 AC_ARG_ENABLE(casemod-expansions, AC_HELP_STRING([--enable-casemod-expansions], [include case-modifying word expansions]), opt_casemod_expansions=$enableval)
223 AC_ARG_ENABLE(command-timing, AC_HELP_STRING([--enable-command-timing], [enable the time reserved word and command timing]), opt_command_timing=$enableval)
224 AC_ARG_ENABLE(cond-command, AC_HELP_STRING([--enable-cond-command], [enable the conditional command]), opt_cond_command=$enableval)
225 AC_ARG_ENABLE(cond-regexp, AC_HELP_STRING([--enable-cond-regexp], [enable extended regular expression matching in conditional commands]), opt_cond_regexp=$enableval)
226 AC_ARG_ENABLE(coprocesses, AC_HELP_STRING([--enable-coprocesses], [enable coprocess support and the coproc reserved word]), opt_coproc=$enableval)
227 AC_ARG_ENABLE(debugger, AC_HELP_STRING([--enable-debugger], [enable support for bash debugger]), opt_debugger=$enableval)
228 AC_ARG_ENABLE(direxpand-default, AC_HELP_STRING([--enable-direxpand-default], [enable the direxpand shell option by default]), opt_dircomplete_expand_default=$enableval)
229 AC_ARG_ENABLE(directory-stack, AC_HELP_STRING([--enable-directory-stack], [enable builtins pushd/popd/dirs]), opt_dirstack=$enableval)
230 AC_ARG_ENABLE(disabled-builtins, AC_HELP_STRING([--enable-disabled-builtins], [allow disabled builtins to still be invoked]), opt_disabled_builtins=$enableval)
231 AC_ARG_ENABLE(dparen-arithmetic, AC_HELP_STRING([--enable-dparen-arithmetic], [include ((...)) command]), opt_dparen_arith=$enableval)
232 AC_ARG_ENABLE(extended-glob, AC_HELP_STRING([--enable-extended-glob], [include ksh-style extended pattern matching]), opt_extended_glob=$enableval)
233 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)
234 AC_ARG_ENABLE(help-builtin, AC_HELP_STRING([--enable-help-builtin], [include the help builtin]), opt_help=$enableval)
235 AC_ARG_ENABLE(history, AC_HELP_STRING([--enable-history], [turn on command history]), opt_history=$enableval)
236 AC_ARG_ENABLE(job-control, AC_HELP_STRING([--enable-job-control], [enable job control features]), opt_job_control=$enableval)
237 AC_ARG_ENABLE(multibyte, AC_HELP_STRING([--enable-multibyte], [enable multibyte characters if OS supports them]), opt_multibyte=$enableval)
238 AC_ARG_ENABLE(net-redirections, AC_HELP_STRING([--enable-net-redirections], [enable /dev/tcp/host/port redirection]), opt_net_redirs=$enableval)
239 AC_ARG_ENABLE(process-substitution, AC_HELP_STRING([--enable-process-substitution], [enable process substitution]), opt_process_subst=$enableval)
240 AC_ARG_ENABLE(progcomp, AC_HELP_STRING([--enable-progcomp], [enable programmable completion and the complete builtin]), opt_progcomp=$enableval)
241 AC_ARG_ENABLE(prompt-string-decoding, AC_HELP_STRING([--enable-prompt-string-decoding], [turn on escape character decoding in prompts]), opt_prompt_decoding=$enableval)
242 AC_ARG_ENABLE(readline, AC_HELP_STRING([--enable-readline], [turn on command line editing]), opt_readline=$enableval)
243 AC_ARG_ENABLE(restricted, AC_HELP_STRING([--enable-restricted], [enable a restricted shell]), opt_restricted=$enableval)
244 AC_ARG_ENABLE(select, AC_HELP_STRING([--enable-select], [include select command]), opt_select=$enableval)
245 AC_ARG_ENABLE(separate-helpfiles, AC_HELP_STRING([--enable-separate-helpfiles], [use external files for help builtin documentation]), opt_separate_help=$enableval)
246 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)
247 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)
248 AC_ARG_ENABLE(usg-echo-default, AC_HELP_STRING([--enable-usg-echo-default], [a synonym for --enable-xpg-echo-default]), opt_xpg_echo=$enableval)
249 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)
251 dnl options that alter how bash is compiled and linked
252 AC_ARG_ENABLE(mem-scramble, AC_HELP_STRING([--enable-mem-scramble], [scramble memory on calls to malloc and free]), opt_memscramble=$enableval)
253 AC_ARG_ENABLE(profiling, AC_HELP_STRING([--enable-profiling], [allow profiling with gprof]), opt_profiling=$enableval)
254 AC_ARG_ENABLE(static-link, AC_HELP_STRING([--enable-static-link], [link bash statically, for use as a root shell]), opt_static_link=$enableval)
256 dnl So-called `precious' variables
257 AC_ARG_VAR([CC_FOR_BUILD], [C compiler used when compiling binaries used only at build time])
258 AC_ARG_VAR([CFLAGS_FOR_BUILD], [Compliation options (CFLAGS) used when compiling binaries used only at build time])
259 AC_ARG_VAR([LDFLAGS_FOR_BUILD], [Linker options (LDFLAGS) used when compiling binaries used only at build time])
260 AC_ARG_VAR([CPPFLAGS_FOR_BUILD], [C preprocessor options (CPPFLAGS) used when compiling binaries used only at build time])
262 dnl opt_job_control is handled later, after BASH_JOB_CONTROL_MISSING runs
264 dnl opt_readline and opt_history are handled later, because AC_PROG_CC needs
265 dnl to be run before we can check the version of an already-installed readline
268 if test $opt_alias = yes; then
271 if test $opt_dirstack = yes; then
272 AC_DEFINE(PUSHD_AND_POPD)
274 if test $opt_restricted = yes; then
275 AC_DEFINE(RESTRICTED_SHELL)
277 if test $opt_process_subst = yes; then
278 AC_DEFINE(PROCESS_SUBSTITUTION)
280 if test $opt_prompt_decoding = yes; then
281 AC_DEFINE(PROMPT_STRING_DECODE)
283 if test $opt_select = yes; then
284 AC_DEFINE(SELECT_COMMAND)
286 if test $opt_help = yes; then
287 AC_DEFINE(HELP_BUILTIN)
289 if test $opt_array_variables = yes; then
290 AC_DEFINE(ARRAY_VARS)
292 if test $opt_dparen_arith = yes; then
293 AC_DEFINE(DPAREN_ARITHMETIC)
295 if test $opt_brace_expansion = yes; then
296 AC_DEFINE(BRACE_EXPANSION)
298 if test $opt_disabled_builtins = yes; then
299 AC_DEFINE(DISABLED_BUILTINS)
301 if test $opt_command_timing = yes; then
302 AC_DEFINE(COMMAND_TIMING)
304 if test $opt_xpg_echo = yes ; then
305 AC_DEFINE(DEFAULT_ECHO_TO_XPG)
307 if test $opt_strict_posix = yes; then
308 AC_DEFINE(STRICT_POSIX)
310 if test $opt_extended_glob = yes ; then
311 AC_DEFINE(EXTENDED_GLOB)
313 if test $opt_extglob_default = yes; then
314 AC_DEFINE(EXTGLOB_DEFAULT, 1)
316 AC_DEFINE(EXTGLOB_DEFAULT, 0)
318 if test $opt_cond_command = yes ; then
319 AC_DEFINE(COND_COMMAND)
321 if test $opt_cond_regexp = yes ; then
322 AC_DEFINE(COND_REGEXP)
324 if test $opt_coproc = yes; then
325 AC_DEFINE(COPROCESS_SUPPORT)
327 if test $opt_arith_for_command = yes; then
328 AC_DEFINE(ARITH_FOR_COMMAND)
330 if test $opt_net_redirs = yes; then
331 AC_DEFINE(NETWORK_REDIRECTIONS)
333 if test $opt_progcomp = yes; then
334 AC_DEFINE(PROGRAMMABLE_COMPLETION)
336 if test $opt_multibyte = no; then
337 AC_DEFINE(NO_MULTIBYTE_SUPPORT)
339 if test $opt_debugger = yes; then
342 if test $opt_casemod_attrs = yes; then
343 AC_DEFINE(CASEMOD_ATTRS)
345 if test $opt_casemod_expansions = yes; then
346 AC_DEFINE(CASEMOD_EXPANSIONS)
348 if test $opt_dircomplete_expand_default = yes; then
349 AC_DEFINE(DIRCOMPLETE_EXPAND_DEFAULT)
352 if test $opt_memscramble = yes; then
353 AC_DEFINE(MEMSCRAMBLE)
356 if test "$opt_minimal_config" = yes; then
357 TESTSCRIPT=run-minimal
362 HELPDIR= HELPDIRDEFINE= HELPINSTALL= HELPFILES_TARGET=
363 if test "$opt_separate_help" != no; then
364 if test "$opt_separate_help" = "yes" ; then
365 HELPDIR='${datadir}/bash'
367 HELPDIR=$opt_separate_help
369 HELPDIRDEFINE='-H ${HELPDIR}'
370 HELPINSTALL='install-help'
371 HELPFILES_TARGET='helpdoc'
374 if test "$opt_single_longdoc_strings" != "yes"; then
378 dnl now substitute in the values generated by arguments
381 AC_SUBST(MALLOC_TARGET)
385 AC_SUBST(MALLOC_LIBRARY)
386 AC_SUBST(MALLOC_LDFLAGS)
392 AC_SUBST(HELPDIRDEFINE)
393 AC_SUBST(HELPINSTALL)
394 AC_SUBST(HELPFILES_TARGET)
395 AC_SUBST(HELPSTRINGS)
398 echo "Beginning configuration for bash-$BASHVERS-$RELSTATUS for ${host_cpu}-${host_vendor}-${host_os}"
401 dnl compilation checks
402 dnl AC_PROG_CC sets $cross_compiling to `yes' if cross-compiling for a
403 dnl different environment
406 dnl test for Unix variants
412 dnl BEGIN changes for cross-building (currently cygwin, minGW, and
416 SIGNAMES_H=lsignames.h
418 dnl load up the cross-building cache file -- add more cases and cache
419 dnl files as necessary
421 dnl Note that host and target machine are the same, and different than the
423 dnl Set SIGNAMES_H based on whether or not we're cross-compiling.
426 if test "x$cross_compiling" = "xyes"; then
429 cross_cache=${srcdir}/cross-build/cygwin32.cache
432 cross_cache=${srcdir}/cross-build/cygwin32.cache
435 cross_cache=${srcdir}/cross-build/x86-beos.cache
437 *) echo "configure: cross-compiling for $host is not supported" >&2
440 if test -n "${cross_cache}" && test -r "${cross_cache}"; then
441 echo "loading cross-build cache file ${cross_cache}"
445 SIGNAMES_O='signames.o'
446 CROSS_COMPILE='-DCROSS_COMPILING'
447 AC_SUBST(CROSS_COMPILE)
452 dnl END changes for cross-building
454 dnl We want these before the checks, so the checks can modify their values.
455 if test -z "$CFLAGS"; then
456 AUTO_CFLAGS="-g ${GCC+-O2}"
457 AUTO_LDFLAGS="-g ${GCC+-O2}"
459 AUTO_CFLAGS= AUTO_LDFLAGS=
463 CFLAGS=${CFLAGS-"$AUTO_CFLAGS"}
464 # LDFLAGS=${LDFLAGS="$AUTO_LDFLAGS"} # XXX
466 dnl handle options that alter how bash is compiled and linked
467 dnl these must come after the test for cc/gcc
468 if test "$opt_profiling" = "yes"; then
472 *) opt_static_link=yes ;;
480 if test "$opt_static_link" = yes; then
483 # if we're using gcc, add `-static' to LDFLAGS, except on Solaris >= 2
484 if test -n "$GCC" || test "$ac_cv_prog_gcc" = "yes"; then
488 *) LDFLAGS="$LDFLAGS -static" ;; # XXX experimental
493 # set the appropriate make variables for building the "build tools"
494 # modify defaults based on whether or not we are cross compiling, since the
495 # options for the target host may not be appropriate for the build host
496 if test "X$cross_compiling" = "Xno"; then
497 CC_FOR_BUILD=${CC_FOR_BUILD-'$(CC)'}
498 CPPFLAGS_FOR_BUILD=${CPPFLAGS_FOR_BUILD-"$CPPFLAGS"} # XXX - should it be '$(CPPFLAGS)'
499 LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-'$(LDFLAGS)'}
500 # CFLAGS set above to default value if not passed in environment
501 CFLAGS_FOR_BUILD=${CFLAGS-'$(CFLAGS)'}
502 LIBS_FOR_BUILD=${LIBS_FOR_BUILD-'$(LIBS)'}
504 CC_FOR_BUILD=${CC_FOR_BUILD-"gcc"}
505 CPPFLAGS_FOR_BUILD=${CPPFLAGS_FOR_BUILD-""}
506 LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-""}
507 CFLAGS_FOR_BUILD=${CFLAGS_FOR_BUILD="-g"}
508 LIBS_FOR_BUILD=${LIBS_FOR_BUILD-""}
516 AC_SUBST(CC_FOR_BUILD)
517 AC_SUBST(CFLAGS_FOR_BUILD)
518 AC_SUBST(CPPFLAGS_FOR_BUILD)
519 AC_SUBST(LDFLAGS_FOR_BUILD)
520 AC_SUBST(LIBS_FOR_BUILD)
522 AC_PROG_GCC_TRADITIONAL
524 dnl BEGIN READLINE and HISTORY LIBRARY SECTION
525 dnl prepare to allow bash to be linked against an already-installed readline
527 dnl first test that the readline version is new enough to link bash against
528 if test "$opt_readline" = yes && test "$opt_with_installed_readline" != "no"
530 # If the user specified --with-installed-readline=PREFIX and PREFIX
531 # is not `yes', set ac_cv_rl_prefix to PREFIX
532 test $opt_with_installed_readline != "yes" && ac_cv_rl_prefix=$opt_with_installed_readline
534 RL_LIB_READLINE_VERSION
536 case "$ac_cv_rl_version" in
538 *) opt_with_installed_readline=no
539 AC_MSG_WARN([installed readline library is too old to be linked with bash])
540 AC_MSG_WARN([using private bash version])
546 if test $opt_readline = yes; then
548 if test "$opt_with_installed_readline" != "no" ; then
549 case "$opt_with_installed_readline" in
551 *) case "$RL_INCLUDEDIR" in
553 *) RL_INCLUDE='-I${RL_INCLUDEDIR}' ;;
558 READLINE_LIB=-lreadline
559 # section for OS versions that don't allow unresolved symbols
560 # to be compiled into dynamic libraries.
562 cygwin*) TILDE_LIB= ;;
565 RL_LIBDIR='$(dot)/$(LIBSUBDIR)/readline'
566 READLINE_DEP='$(READLINE_LIBRARY)'
567 # section for OS versions that ship an older/broken version of
568 # readline as a standard dynamic library and don't allow a
569 # static version specified as -llibname to override the
572 darwin[[89]]*|darwin10*) READLINE_LIB='${READLINE_LIBRARY}' ;;
573 *) READLINE_LIB=-lreadline ;;
577 RL_LIBDIR='$(dot)/$(LIBSUBDIR)/readline'
578 READLINE_LIB= READLINE_DEP=
580 if test $opt_history = yes || test $opt_bang_history = yes; then
581 if test $opt_history = yes; then
584 if test $opt_bang_history = yes; then
585 AC_DEFINE(BANG_HISTORY)
587 if test "$opt_with_installed_readline" != "no"; then
588 HIST_LIBDIR=$RL_LIBDIR
590 HISTORY_LIB=-lhistory
591 case "$opt_with_installed_readline" in
593 *) case "$RL_INCLUDEDIR" in
595 *) RL_INCLUDE='-I${RL_INCLUDEDIR}' ;;
600 HIST_LIBDIR='$(dot)/$(LIBSUBDIR)/readline'
601 HISTORY_DEP='$(HISTORY_LIBRARY)'
602 # section for OS versions that ship an older version of
603 # readline as a standard dynamic library and don't allow a
604 # static version specified as -llibname to override the
607 darwin[[89]]*|darwin10*) HISTORY_LIB='${HISTORY_LIBRARY}' ;;
608 *) HISTORY_LIB=-lhistory ;;
612 HIST_LIBDIR='$(dot)/$(LIBSUBDIR)/readline'
613 HISTORY_LIB= HISTORY_DEP=
615 AC_SUBST(READLINE_LIB)
616 AC_SUBST(READLINE_DEP)
618 AC_SUBST(RL_INCLUDEDIR)
620 AC_SUBST(HISTORY_LIB)
621 AC_SUBST(HISTORY_DEP)
622 AC_SUBST(HIST_LIBDIR)
625 dnl END READLINE and HISTORY LIBRARY SECTION
627 dnl programs needed by the build and install process
629 AC_CHECK_TOOL(AR, ar)
630 dnl Set default for ARFLAGS, since autoconf does not have a macro for it.
631 dnl This allows people to set it when running configure or make
632 test -n "$ARFLAGS" || ARFLAGS="cr"
637 case "$ac_cv_prog_YACC" in
639 *) AC_MSG_WARN([bison not available; needed to process parse.y]) ;;
643 opennt*|interix*) MAKE_SHELL="$INTERIX_ROOT/bin/sh" ;;
644 *) MAKE_SHELL=/bin/sh ;;
648 dnl this is similar to the expanded AC_PROG_RANLIB
649 if test x$SIZE = x; then
650 if test x$ac_tool_prefix = x; then
653 SIZE=${ac_tool_prefix}size
654 save_IFS=$IFS ; IFS=:
657 if test -x $dir/$SIZE ; then
662 if test $size_found -eq 0; then
670 m4_include([m4/stat-time.m4])
671 m4_include([m4/timespec.m4])
673 dnl Turn on any extensions available in the GNU C library.
674 AC_DEFINE(_GNU_SOURCE, 1)
676 dnl C compiler characteristics
687 dnl initialize GNU gettext
688 AM_GNU_GETTEXT([no-libtool], [need-ngettext], [lib/intl])
696 AC_CHECK_HEADERS(unistd.h stdlib.h stdarg.h varargs.h limits.h string.h \
697 memory.h locale.h termcap.h termio.h termios.h dlfcn.h \
698 stdbool.h stddef.h stdint.h netdb.h pwd.h grp.h strings.h \
699 regex.h syslog.h ulimit.h)
700 AC_CHECK_HEADERS(sys/pte.h sys/stream.h sys/select.h sys/file.h \
701 sys/resource.h sys/param.h sys/socket.h sys/stat.h \
702 sys/time.h sys/times.h sys/types.h sys/wait.h)
703 AC_CHECK_HEADERS(netinet/in.h arpa/inet.h)
705 dnl sys/ptem.h requires definitions from sys/stream.h on systems where it
707 AC_CHECK_HEADER(sys/ptem.h, , ,[[
708 #if HAVE_SYS_STREAM_H
709 # include <sys/stream.h>
713 dnl special checks for libc functions
716 AC_FUNC_SETVBUF_REVERSED
720 dnl if we're not using the bash malloc but require the C alloca, set things
721 dnl up to build a libmalloc.a containing only alloca.o
723 if test "$ac_cv_func_alloca_works" = "no" && test "$opt_bash_malloc" = "no"; then
727 MALLOC_LIB='-lmalloc'
728 MALLOC_LIBRARY='$(ALLOC_LIBDIR)/libmalloc.a'
729 MALLOC_LDFLAGS='-L$(ALLOC_LIBDIR)'
730 MALLOC_DEP='$(MALLOC_LIBRARY)'
733 dnl if vprintf is not in libc, see if it's defined in stdio.h
734 if test "$ac_cv_func_vprintf" = no; then
735 AC_MSG_CHECKING(for declaration of vprintf in stdio.h)
736 AC_EGREP_HEADER([[int[ ]*vprintf[^a-zA-Z0-9]]],stdio.h,ac_cv_func_vprintf=yes)
737 AC_MSG_RESULT($ac_cv_func_vprintf)
738 if test $ac_cv_func_vprintf = yes; then
739 AC_DEFINE(HAVE_VPRINTF)
743 if test "$ac_cv_func_vprintf" = no && test "$ac_cv_func__doprnt" = "yes"; then
750 dnl checks for certain version-specific system calls and libc functions
751 AC_CHECK_FUNC(__setostype, AC_DEFINE(HAVE_SETOSTYPE))
752 AC_CHECK_FUNC(wait3, AC_DEFINE(HAVE_WAIT3))
754 dnl checks for missing libc functions
755 AC_CHECK_FUNC(mkfifo,AC_DEFINE(HAVE_MKFIFO),AC_DEFINE(MKFIFO_MISSING))
757 dnl checks for system calls
758 AC_CHECK_FUNCS(dup2 eaccess fcntl getdtablesize getgroups gethostname \
759 getpagesize getpeername getrlimit getrusage gettimeofday \
760 kill killpg lstat readlink sbrk select setdtablesize \
761 setitimer tcgetpgrp uname ulimit waitpid)
762 AC_REPLACE_FUNCS(rename)
764 dnl checks for c library functions
765 AC_CHECK_FUNCS(bcopy bzero confstr faccessat fnmatch \
766 getaddrinfo gethostbyname getservbyname getservent inet_aton \
767 imaxdiv memmove pathconf putenv raise regcomp regexec \
768 setenv setlinebuf setlocale setvbuf siginterrupt strchr \
769 sysconf syslog tcgetattr times ttyname tzset unsetenv)
771 AC_CHECK_FUNCS(vasprintf asprintf)
772 AC_CHECK_FUNCS(isascii isblank isgraph isprint isspace isxdigit)
773 AC_CHECK_FUNCS(getpwent getpwnam getpwuid)
774 AC_REPLACE_FUNCS(getcwd memset)
775 AC_REPLACE_FUNCS(strcasecmp strcasestr strerror strftime strnlen strpbrk strstr)
776 AC_REPLACE_FUNCS(strtod strtol strtoul strtoll strtoull strtoimax strtoumax)
777 AC_REPLACE_FUNCS(dprintf)
778 AC_REPLACE_FUNCS(strchrnul)
780 AC_CHECK_DECLS([AUDIT_USER_TTY],,, [[#include <linux/audit.h>]])
782 AC_CHECK_DECLS([confstr])
783 AC_CHECK_DECLS([printf])
784 AC_CHECK_DECLS([sbrk])
785 AC_CHECK_DECLS([setregid])
786 AC_CHECK_DECLS([strcpy])
787 AC_CHECK_DECLS([strsignal])
789 dnl Extra test to detect the horribly broken HP/UX 11.00 strtold(3)
790 AC_CHECK_DECLS([strtold], [
791 AC_MSG_CHECKING([for broken strtold])
792 AC_CACHE_VAL(bash_cv_strtold_broken,
794 [#include <stdlib.h>],
795 [int main() { long double r; char *foo, bar; r = strtold(foo, &bar);}],
796 bash_cv_strtold_broken=no, bash_cv_strtold_broken=yes,
797 [AC_MSG_WARN(cannot check for broken strtold if cross-compiling, defaulting to no)])
800 AC_MSG_RESULT($bash_cv_strtold_broken)
801 if test "$bash_cv_strtold_broken" = "yes" ; then
802 AC_DEFINE(STRTOLD_BROKEN)
806 BASH_CHECK_DECL(strtoimax)
807 BASH_CHECK_DECL(strtol)
808 BASH_CHECK_DECL(strtoll)
809 BASH_CHECK_DECL(strtoul)
810 BASH_CHECK_DECL(strtoull)
811 BASH_CHECK_DECL(strtoumax)
816 dnl Checks for lib/intl and related code (uses some of the output from
820 AC_CHECK_HEADERS([argz.h errno.h fcntl.h malloc.h stdio_ext.h])
824 AC_CHECK_FUNCS([__argz_count __argz_next __argz_stringify dcgettext mempcpy \
825 munmap stpcpy strcspn strdup])
827 INTL_DEP= INTL_INC= LIBINTL_H=
828 if test "x$USE_INCLUDED_LIBINTL" = "xyes"; then
829 INTL_DEP='${INTL_LIBDIR}/libintl.a'
830 INTL_INC='-I${INTL_LIBSRC} -I${INTL_BUILDDIR}'
831 LIBINTL_H='${INTL_BUILDDIR}/libintl.h'
838 dnl End of checks needed by files in lib/intl
843 dnl checks for the dynamic loading library functions in libc and libdl
844 if test "$opt_static_link" != yes; then
845 AC_CHECK_LIB(dl, dlopen)
846 AC_CHECK_FUNCS(dlopen dlclose dlsym)
849 dnl this defines HAVE_DECL_SYS_SIGLIST
852 dnl network functions -- check for inet_aton again
853 if test "$ac_cv_func_inet_aton" != 'yes'; then
858 dnl this is reportedly no longer necessary for irix[56].?
860 irix4*) AC_CHECK_LIB(sun, getpwent) ;;
863 dnl check for getpeername in the socket library only if it's not in libc
864 if test "$ac_cv_func_getpeername" = no; then
865 BASH_CHECK_LIB_SOCKET
867 dnl check for gethostbyname in socket libraries if it's not in libc
868 if test "$ac_cv_func_gethostbyname" = no; then
869 BASH_FUNC_GETHOSTBYNAME
879 AC_CHECK_TYPE(ssize_t, int)
880 AC_CHECK_TYPE(time_t, long)
883 BASH_TYPE_UNSIGNED_LONG_LONG
886 BASH_TYPE_SIG_ATOMIC_T
888 AC_CHECK_SIZEOF(char, 1)
889 AC_CHECK_SIZEOF(short, 2)
890 AC_CHECK_SIZEOF(int, 4)
891 AC_CHECK_SIZEOF(long, 4)
892 AC_CHECK_SIZEOF(char *, 4)
893 AC_CHECK_SIZEOF(double, 8)
894 AC_CHECK_SIZEOF([long long], 8)
896 AC_CHECK_TYPE(u_int, [unsigned int])
897 AC_CHECK_TYPE(u_long, [unsigned long])
912 if test $ac_cv_sys_interpreter = yes; then
913 AC_DEFINE(HAVE_HASH_BANG_EXEC)
916 dnl Miscellaneous Bash tests
917 if test "$ac_cv_func_lstat" = "no"; then
921 dnl behavior of system calls and library functions
922 BASH_FUNC_CTYPE_NONASCII
923 BASH_FUNC_DUP2_CLOEXEC_CHECK
925 BASH_SYS_SIGNAL_VINTAGE
927 dnl checking for the presence of certain library symbols
930 BASH_UNDER_SYS_SIGLIST
932 dnl various system types
934 BASH_CHECK_TYPE(clock_t, [#include <sys/times.h>], long)
935 BASH_CHECK_TYPE(sigset_t, [#include <signal.h>], int)
936 BASH_CHECK_TYPE(sig_atomic_t, [#include <signal.h>], int)
937 BASH_CHECK_TYPE(quad_t, , long, HAVE_QUAD_T)
938 BASH_CHECK_TYPE(intmax_t, , $bash_cv_type_long_long)
939 BASH_CHECK_TYPE(uintmax_t, , $bash_cv_type_unsigned_long_long)
940 if test "$ac_cv_header_sys_socket_h" = "yes"; then
941 BASH_CHECK_TYPE(socklen_t, [#include <sys/socket.h>], [unsigned int], HAVE_SOCKLEN_T)
945 AC_CHECK_SIZEOF(intmax_t, 8)
947 dnl presence and contents of structures used by system calls
948 BASH_STRUCT_TERMIOS_LDISC
949 BASH_STRUCT_TERMIO_LDISC
950 BASH_STRUCT_DIRENT_D_INO
951 BASH_STRUCT_DIRENT_D_FILENO
952 BASH_STRUCT_DIRENT_D_NAMLEN
955 AC_CHECK_MEMBERS([struct stat.st_blocks])
960 BASH_STRUCT_WEXITSTATUS_OFFSET
962 BASH_CHECK_TYPE_STRUCT_TIMESPEC
965 dnl presence and behavior of C library functions
967 BASH_FUNC_OPENDIR_CHECK
968 BASH_FUNC_ULIMIT_MAXFDS
971 if test "$ac_cv_func_getcwd" = "yes"; then
974 BASH_FUNC_POSIX_SETJMP
979 dnl If putenv or unsetenv is not present, set the right define so the
980 dnl prototype and declaration in lib/sh/getenv.c will be standard-conformant
982 if test "$ac_cv_func_putenv" = "yes"; then
985 AC_DEFINE(HAVE_STD_PUTENV)
987 if test "$ac_cv_func_unsetenv" = "yes"; then
988 BASH_FUNC_STD_UNSETENV
990 AC_DEFINE(HAVE_STD_UNSETENV)
993 BASH_FUNC_PRINTF_A_FORMAT
995 dnl presence and behavior of OS functions
996 BASH_SYS_REINSTALL_SIGHANDLERS
997 BASH_SYS_JOB_CONTROL_MISSING
1000 dnl presence of certain CPP defines
1001 AC_HEADER_TIOCGWINSZ
1005 BASH_CHECK_WCONTINUED
1009 BASH_CHECK_GETPW_FUNCS
1011 BASH_CHECK_SYS_SIGLIST
1015 hpux*) BASH_CHECK_KERNEL_RLIMIT ;;
1018 if test "$opt_readline" = yes; then
1021 aix*) prefer_curses=yes ;;
1023 BASH_CHECK_LIB_TERMCAP
1025 AC_SUBST(TERMCAP_LIB)
1026 AC_SUBST(TERMCAP_DEP)
1029 BASH_CHECK_DEV_STDIN
1030 BASH_SYS_DEFAULT_MAIL_DIR
1032 if test "$bash_cv_job_control_missing" = missing; then
1036 if test "$opt_job_control" = yes; then
1037 AC_DEFINE(JOB_CONTROL)
1045 dnl Defines that we want to propagate to the Makefiles in subdirectories,
1046 dnl like glob and readline
1050 dnl use this section to possibly define more cpp variables, specify local
1051 dnl libraries, and specify any additional local cc or ld flags
1053 dnl this should really go away someday
1055 case "${host_os}" in
1056 sysv4.2*) AC_DEFINE(SVR4_2)
1058 sysv4*) AC_DEFINE(SVR4) ;;
1059 sysv5*) AC_DEFINE(SVR5) ;;
1060 hpux9*) LOCAL_CFLAGS="-DHPUX9 -DHPUX" ;;
1061 hpux*) LOCAL_CFLAGS=-DHPUX ;;
1062 dgux*) LOCAL_CFLAGS=-D_DGUX_SOURCE; LOCAL_LIBS=-ldgc ;;
1063 isc*) LOCAL_CFLAGS=-Disc386 ;;
1064 rhapsody*) LOCAL_CFLAGS=-DRHAPSODY ;;
1065 darwin*) LOCAL_CFLAGS=-DMACOSX ;;
1066 sco3.2v5*) LOCAL_CFLAGS="-b elf -DWAITPID_BROKEN -DPATH_MAX=1024" ;;
1067 sco3.2v4*) LOCAL_CFLAGS="-DMUST_UNBLOCK_CHLD -DPATH_MAX=1024" ;;
1068 sco3.2*) LOCAL_CFLAGS=-DMUST_UNBLOCK_CHLD ;;
1069 sunos4*) LOCAL_CFLAGS=-DSunOS4 ;;
1070 solaris2.5*) LOCAL_CFLAGS="-DSunOS5 -DSOLARIS" ;;
1071 solaris2.8*) LOCAL_CFLAGS=-DSOLARIS ;;
1072 solaris2.9*) LOCAL_CFLAGS=-DSOLARIS ;;
1073 solaris2.10*) LOCAL_CFLAGS=-DSOLARIS ;;
1074 solaris2*) LOCAL_CFLAGS=-DSOLARIS ;;
1075 lynxos*) LOCAL_CFLAGS=-DRECYCLES_PIDS ;;
1076 linux*) LOCAL_LDFLAGS=-rdynamic # allow dynamic loading
1077 case "`uname -r`" in
1078 2.[[456789]]*|3*) AC_DEFINE(PGRP_PIPE) ;;
1080 *qnx6*) LOCAL_CFLAGS="-Dqnx -Dqnx6" LOCAL_LIBS="-lncurses" ;;
1081 *qnx*) LOCAL_CFLAGS="-Dqnx -F -3s" LOCAL_LDFLAGS="-3s" LOCAL_LIBS="-lunix -lncurses" ;;
1082 powerux*) LOCAL_LIBS="-lgen" ;;
1083 cygwin*) LOCAL_CFLAGS=-DRECYCLES_PIDS ;;
1084 opennt*|interix*) LOCAL_CFLAGS="-DNO_MAIN_ENV_ARG -DBROKEN_DIRENT_D_INO -D_POSIX_SOURCE -D_ALL_SOURCE -DRECYCLES_PIDS" ;;
1085 *openstep*) LOCAL_CFLAGS="-D__APPLE_CC__" ;;
1088 dnl Stanza for OS/compiler pair-specific flags
1089 case "${host_os}-${CC}" in
1090 aix4.2*-*gcc*) LOCAL_LDFLAGS="-Xlinker -bexpall -Xlinker -brtl" ;;
1091 aix4.2*) LOCAL_LDFLAGS="-bexpall -brtl" ;;
1092 bsdi4*-*gcc*) LOCAL_LDFLAGS="-rdynamic" ;; # allow dynamic loading, like Linux
1095 dnl FreeBSD-3.x can have either a.out or ELF
1096 case "${host_os}" in
1098 if test -x /usr/bin/objformat && test "`/usr/bin/objformat`" = "elf" ; then
1099 LOCAL_LDFLAGS=-rdynamic # allow dynamic loading
1101 freebsdelf*) LOCAL_LDFLAGS=-rdynamic ;; # allow dynamic loading
1102 dragonfly*) LOCAL_LDFLAGS=-rdynamic ;; # allow dynamic loading
1106 *cray*) LOCAL_CFLAGS="-DCRAY" ;; # shell var so config.h can use it
1109 case "$host_cpu-$host_os" in
1110 ibmrt-*bsd4*) LOCAL_CFLAGS="-ma -U__STDC__" ;;
1113 case "$host_cpu-$host_vendor-$host_os" in
1114 m88k-motorola-sysv3) LOCAL_CFLAGS=-DWAITPID_BROKEN ;;
1115 mips-pyramid-sysv4) LOCAL_CFLAGS=-Xa ;;
1119 # Shared object configuration section. These values are generated by
1120 # ${srcdir}/support/shobj-conf
1122 if test "$ac_cv_func_dlopen" = "yes" && test -f ${srcdir}/support/shobj-conf
1124 AC_MSG_CHECKING(shared object configuration for loadable builtins)
1125 eval `${CONFIG_SHELL-/bin/sh} ${srcdir}/support/shobj-conf -C "${CC}" -c "${host_cpu}" -o "${host_os}" -v "${host_vendor}"`
1127 AC_SUBST(SHOBJ_CFLAGS)
1129 AC_SUBST(SHOBJ_LDFLAGS)
1130 AC_SUBST(SHOBJ_XLDFLAGS)
1131 AC_SUBST(SHOBJ_LIBS)
1132 AC_SUBST(SHOBJ_STATUS)
1133 AC_MSG_RESULT($SHOBJ_STATUS)
1136 # try to create a directory tree if the source is elsewhere
1137 # this should be packaged into a script accessible via ${srcdir}/support
1140 *) for d in doc tests support lib examples; do # dirs
1141 test -d $d || mkdir $d
1143 for ld in readline glob tilde malloc sh termcap; do # libdirs
1144 test -d lib/$ld || mkdir lib/$ld
1146 test -d examples/loadables || mkdir examples/loadables # loadable builtins
1147 test -d examples/loadables/perl || mkdir examples/loadables/perl
1152 case "$BUILD_DIR" in
1153 *\ *) BUILD_DIR=`echo "$BUILD_DIR" | sed 's: :\\\\ :g'` ;;
1157 if test -z "$localedir"; then
1158 localedir='${datarootdir}/locale'
1160 if test -z "$datarootdir"; then
1161 datarootdir='${prefix}/share'
1164 AC_SUBST(PROFILE_FLAGS)
1169 # Some versions of autoconf don't substitute these automatically
1170 AC_SUBST(datarootdir)
1180 AC_SUBST(MALLOC_DEBUG)
1183 AC_SUBST(host_vendor)
1186 AC_SUBST(LOCAL_LIBS)
1187 AC_SUBST(LOCAL_CFLAGS)
1188 AC_SUBST(LOCAL_LDFLAGS)
1189 AC_SUBST(LOCAL_DEFS)
1191 #AC_SUBST(ALLOCA_SOURCE)
1192 #AC_SUBST(ALLOCA_OBJECT)
1194 AC_OUTPUT([Makefile builtins/Makefile lib/readline/Makefile lib/glob/Makefile \
1196 lib/malloc/Makefile lib/sh/Makefile lib/termcap/Makefile \
1197 lib/tilde/Makefile doc/Makefile support/Makefile po/Makefile.in \
1198 examples/loadables/Makefile examples/loadables/perl/Makefile],
1200 # Makefile uses this timestamp file to record whether config.h is up to date.
1201 echo timestamp > stamp-h