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.063])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*|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
94 *-haiku*) opt_bash_malloc=no ;; # Haiku OS
97 # memory scrambling on free()
99 sco3.2v5*|sco3.2v4*) opt_memscramble=no ;;
100 *) opt_memscramble=yes ;;
104 dnl macros for the bash debugger
107 AC_ARG_VAR(DEBUGGER_START_FILE, [location of bash debugger initialization file])
109 dnl arguments to configure
111 AC_ARG_WITH(afs, AC_HELP_STRING([--with-afs], [if you are running AFS]), opt_afs=$withval)
112 AC_ARG_WITH(bash-malloc, AC_HELP_STRING([--with-bash-malloc], [use the Bash version of malloc]), opt_bash_malloc=$withval)
113 AC_ARG_WITH(curses, AC_HELP_STRING([--with-curses], [use the curses library instead of the termcap library]), opt_curses=$withval)
114 AC_ARG_WITH(gnu-malloc, AC_HELP_STRING([--with-gnu-malloc], [synonym for --with-bash-malloc]), opt_bash_malloc=$withval)
115 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)
116 AC_ARG_WITH(purecov, AC_HELP_STRING([--with-purecov], [configure to postprocess with pure coverage]), opt_purecov=$withval)
117 AC_ARG_WITH(purify, AC_HELP_STRING([--with-purify], [configure to postprocess with purify]), opt_purify=$withval)
119 if test "$opt_bash_malloc" = yes; then
123 MALLOC_LIB='-lmalloc'
124 MALLOC_LIBRARY='$(ALLOC_LIBDIR)/libmalloc.a'
125 MALLOC_LDFLAGS='-L$(ALLOC_LIBDIR)'
126 MALLOC_DEP='$(MALLOC_LIBRARY)'
128 AC_DEFINE(USING_BASH_MALLOC)
136 if test "$opt_purify" = yes; then
138 AC_DEFINE(DISABLE_MALLOC_WRAPPERS)
143 if test "$opt_purecov" = yes; then
144 PURIFY="${PURIFY}purecov"
147 if test "$opt_afs" = yes; then
151 if test "$opt_curses" = yes; then
155 if test -z "${DEBUGGER_START_FILE}"; then
156 DEBUGGER_START_FILE='${datadir}/bashdb/bashdb-main.inc'
159 dnl optional shell features in config.h.in
160 opt_minimal_config=no
169 opt_process_subst=yes
170 opt_prompt_decoding=yes
173 opt_array_variables=yes
175 opt_extended_glob=yes
176 opt_brace_expansion=yes
177 opt_disabled_builtins=no
178 opt_command_timing=yes
184 opt_arith_for_command=yes
190 opt_single_longdoc_strings=yes
191 opt_casemod_attrs=yes
192 opt_casemod_expansions=yes
193 opt_extglob_default=no
194 opt_dircomplete_expand_default=no
195 opt_globascii_default=no
197 dnl options that affect how bash is compiled and linked
201 dnl argument parsing for optional features
202 AC_ARG_ENABLE(minimal-config, AC_HELP_STRING([--enable-minimal-config], [a minimal sh-like configuration]), opt_minimal_config=$enableval)
204 dnl a minimal configuration turns everything off, but features can be
205 dnl added individually
206 if test $opt_minimal_config = yes; then
207 opt_job_control=no opt_alias=no opt_readline=no
208 opt_history=no opt_bang_history=no opt_dirstack=no
209 opt_restricted=no opt_process_subst=no opt_prompt_decoding=no
210 opt_select=no opt_help=no opt_array_variables=no opt_dparen_arith=no
211 opt_brace_expansion=no opt_disabled_builtins=no opt_command_timing=no
212 opt_extended_glob=no opt_cond_command=no opt_arith_for_command=no
213 opt_net_redirs=no opt_progcomp=no opt_separate_help=no
214 opt_multibyte=yes opt_cond_regexp=no opt_coproc=no
215 opt_casemod_attrs=no opt_casemod_expansions=no opt_extglob_default=no
216 opt_globascii_default=no
219 AC_ARG_ENABLE(alias, AC_HELP_STRING([--enable-alias], [enable shell aliases]), opt_alias=$enableval)
220 AC_ARG_ENABLE(arith-for-command, AC_HELP_STRING([--enable-arith-for-command], [enable arithmetic for command]), opt_arith_for_command=$enableval)
221 AC_ARG_ENABLE(array-variables, AC_HELP_STRING([--enable-array-variables], [include shell array variables]), opt_array_variables=$enableval)
222 AC_ARG_ENABLE(bang-history, AC_HELP_STRING([--enable-bang-history], [turn on csh-style history substitution]), opt_bang_history=$enableval)
223 AC_ARG_ENABLE(brace-expansion, AC_HELP_STRING([--enable-brace-expansion], [include brace expansion]), opt_brace_expansion=$enableval)
224 AC_ARG_ENABLE(casemod-attributes, AC_HELP_STRING([--enable-casemod-attributes], [include case-modifying variable attributes]), opt_casemod_attrs=$enableval)
225 AC_ARG_ENABLE(casemod-expansions, AC_HELP_STRING([--enable-casemod-expansions], [include case-modifying word expansions]), opt_casemod_expansions=$enableval)
226 AC_ARG_ENABLE(command-timing, AC_HELP_STRING([--enable-command-timing], [enable the time reserved word and command timing]), opt_command_timing=$enableval)
227 AC_ARG_ENABLE(cond-command, AC_HELP_STRING([--enable-cond-command], [enable the conditional command]), opt_cond_command=$enableval)
228 AC_ARG_ENABLE(cond-regexp, AC_HELP_STRING([--enable-cond-regexp], [enable extended regular expression matching in conditional commands]), opt_cond_regexp=$enableval)
229 AC_ARG_ENABLE(coprocesses, AC_HELP_STRING([--enable-coprocesses], [enable coprocess support and the coproc reserved word]), opt_coproc=$enableval)
230 AC_ARG_ENABLE(debugger, AC_HELP_STRING([--enable-debugger], [enable support for bash debugger]), opt_debugger=$enableval)
231 AC_ARG_ENABLE(direxpand-default, AC_HELP_STRING([--enable-direxpand-default], [enable the direxpand shell option by default]), opt_dircomplete_expand_default=$enableval)
232 AC_ARG_ENABLE(directory-stack, AC_HELP_STRING([--enable-directory-stack], [enable builtins pushd/popd/dirs]), opt_dirstack=$enableval)
233 AC_ARG_ENABLE(disabled-builtins, AC_HELP_STRING([--enable-disabled-builtins], [allow disabled builtins to still be invoked]), opt_disabled_builtins=$enableval)
234 AC_ARG_ENABLE(dparen-arithmetic, AC_HELP_STRING([--enable-dparen-arithmetic], [include ((...)) command]), opt_dparen_arith=$enableval)
235 AC_ARG_ENABLE(extended-glob, AC_HELP_STRING([--enable-extended-glob], [include ksh-style extended pattern matching]), opt_extended_glob=$enableval)
236 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)
237 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)
238 AC_ARG_ENABLE(help-builtin, AC_HELP_STRING([--enable-help-builtin], [include the help builtin]), opt_help=$enableval)
239 AC_ARG_ENABLE(history, AC_HELP_STRING([--enable-history], [turn on command history]), opt_history=$enableval)
240 AC_ARG_ENABLE(job-control, AC_HELP_STRING([--enable-job-control], [enable job control features]), opt_job_control=$enableval)
241 AC_ARG_ENABLE(multibyte, AC_HELP_STRING([--enable-multibyte], [enable multibyte characters if OS supports them]), opt_multibyte=$enableval)
242 AC_ARG_ENABLE(net-redirections, AC_HELP_STRING([--enable-net-redirections], [enable /dev/tcp/host/port redirection]), opt_net_redirs=$enableval)
243 AC_ARG_ENABLE(process-substitution, AC_HELP_STRING([--enable-process-substitution], [enable process substitution]), opt_process_subst=$enableval)
244 AC_ARG_ENABLE(progcomp, AC_HELP_STRING([--enable-progcomp], [enable programmable completion and the complete builtin]), opt_progcomp=$enableval)
245 AC_ARG_ENABLE(prompt-string-decoding, AC_HELP_STRING([--enable-prompt-string-decoding], [turn on escape character decoding in prompts]), opt_prompt_decoding=$enableval)
246 AC_ARG_ENABLE(readline, AC_HELP_STRING([--enable-readline], [turn on command line editing]), opt_readline=$enableval)
247 AC_ARG_ENABLE(restricted, AC_HELP_STRING([--enable-restricted], [enable a restricted shell]), opt_restricted=$enableval)
248 AC_ARG_ENABLE(select, AC_HELP_STRING([--enable-select], [include select command]), opt_select=$enableval)
249 AC_ARG_ENABLE(separate-helpfiles, AC_HELP_STRING([--enable-separate-helpfiles], [use external files for help builtin documentation]), opt_separate_help=$enableval)
250 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)
251 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)
252 AC_ARG_ENABLE(usg-echo-default, AC_HELP_STRING([--enable-usg-echo-default], [a synonym for --enable-xpg-echo-default]), opt_xpg_echo=$enableval)
253 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)
255 dnl options that alter how bash is compiled and linked
256 AC_ARG_ENABLE(mem-scramble, AC_HELP_STRING([--enable-mem-scramble], [scramble memory on calls to malloc and free]), opt_memscramble=$enableval)
257 AC_ARG_ENABLE(profiling, AC_HELP_STRING([--enable-profiling], [allow profiling with gprof]), opt_profiling=$enableval)
258 AC_ARG_ENABLE(static-link, AC_HELP_STRING([--enable-static-link], [link bash statically, for use as a root shell]), opt_static_link=$enableval)
260 dnl So-called `precious' variables
261 AC_ARG_VAR([CC_FOR_BUILD], [C compiler used when compiling binaries used only at build time])
262 AC_ARG_VAR([CFLAGS_FOR_BUILD], [Compliation options (CFLAGS) used when compiling binaries used only at build time])
263 AC_ARG_VAR([LDFLAGS_FOR_BUILD], [Linker options (LDFLAGS) used when compiling binaries used only at build time])
264 AC_ARG_VAR([CPPFLAGS_FOR_BUILD], [C preprocessor options (CPPFLAGS) used when compiling binaries used only at build time])
266 dnl opt_job_control is handled later, after BASH_JOB_CONTROL_MISSING runs
268 dnl opt_readline and opt_history are handled later, because AC_PROG_CC needs
269 dnl to be run before we can check the version of an already-installed readline
272 if test $opt_alias = yes; then
275 if test $opt_dirstack = yes; then
276 AC_DEFINE(PUSHD_AND_POPD)
278 if test $opt_restricted = yes; then
279 AC_DEFINE(RESTRICTED_SHELL)
281 if test $opt_process_subst = yes; then
282 AC_DEFINE(PROCESS_SUBSTITUTION)
284 if test $opt_prompt_decoding = yes; then
285 AC_DEFINE(PROMPT_STRING_DECODE)
287 if test $opt_select = yes; then
288 AC_DEFINE(SELECT_COMMAND)
290 if test $opt_help = yes; then
291 AC_DEFINE(HELP_BUILTIN)
293 if test $opt_array_variables = yes; then
294 AC_DEFINE(ARRAY_VARS)
296 if test $opt_dparen_arith = yes; then
297 AC_DEFINE(DPAREN_ARITHMETIC)
299 if test $opt_brace_expansion = yes; then
300 AC_DEFINE(BRACE_EXPANSION)
302 if test $opt_disabled_builtins = yes; then
303 AC_DEFINE(DISABLED_BUILTINS)
305 if test $opt_command_timing = yes; then
306 AC_DEFINE(COMMAND_TIMING)
308 if test $opt_xpg_echo = yes ; then
309 AC_DEFINE(DEFAULT_ECHO_TO_XPG)
311 if test $opt_strict_posix = yes; then
312 AC_DEFINE(STRICT_POSIX)
314 if test $opt_extended_glob = yes ; then
315 AC_DEFINE(EXTENDED_GLOB)
317 if test $opt_extglob_default = yes; then
318 AC_DEFINE(EXTGLOB_DEFAULT, 1)
320 AC_DEFINE(EXTGLOB_DEFAULT, 0)
322 if test $opt_cond_command = yes ; then
323 AC_DEFINE(COND_COMMAND)
325 if test $opt_cond_regexp = yes ; then
326 AC_DEFINE(COND_REGEXP)
328 if test $opt_coproc = yes; then
329 AC_DEFINE(COPROCESS_SUPPORT)
331 if test $opt_arith_for_command = yes; then
332 AC_DEFINE(ARITH_FOR_COMMAND)
334 if test $opt_net_redirs = yes; then
335 AC_DEFINE(NETWORK_REDIRECTIONS)
337 if test $opt_progcomp = yes; then
338 AC_DEFINE(PROGRAMMABLE_COMPLETION)
340 if test $opt_multibyte = no; then
341 AC_DEFINE(NO_MULTIBYTE_SUPPORT)
343 if test $opt_debugger = yes; then
346 if test $opt_casemod_attrs = yes; then
347 AC_DEFINE(CASEMOD_ATTRS)
349 if test $opt_casemod_expansions = yes; then
350 AC_DEFINE(CASEMOD_EXPANSIONS)
352 if test $opt_dircomplete_expand_default = yes; then
353 AC_DEFINE(DIRCOMPLETE_EXPAND_DEFAULT)
355 if test $opt_globascii_default = yes; then
356 AC_DEFINE(GLOBASCII_DEFAULT, 1)
358 AC_DEFINE(GLOBASCII_DEFAULT, 0)
361 if test $opt_memscramble = yes; then
362 AC_DEFINE(MEMSCRAMBLE)
365 if test "$opt_minimal_config" = yes; then
366 TESTSCRIPT=run-minimal
371 HELPDIR= HELPDIRDEFINE= HELPINSTALL= HELPFILES_TARGET=
372 if test "$opt_separate_help" != no; then
373 if test "$opt_separate_help" = "yes" ; then
374 HELPDIR='${datadir}/bash'
376 HELPDIR=$opt_separate_help
378 HELPDIRDEFINE='-H ${HELPDIR}'
379 HELPINSTALL='install-help'
380 HELPFILES_TARGET='helpdoc'
383 if test "$opt_single_longdoc_strings" != "yes"; then
387 dnl now substitute in the values generated by arguments
390 AC_SUBST(MALLOC_TARGET)
394 AC_SUBST(MALLOC_LIBRARY)
395 AC_SUBST(MALLOC_LDFLAGS)
401 AC_SUBST(HELPDIRDEFINE)
402 AC_SUBST(HELPINSTALL)
403 AC_SUBST(HELPFILES_TARGET)
404 AC_SUBST(HELPSTRINGS)
407 echo "Beginning configuration for bash-$BASHVERS-$RELSTATUS for ${host_cpu}-${host_vendor}-${host_os}"
410 dnl compilation checks
411 dnl AC_PROG_CC sets $cross_compiling to `yes' if cross-compiling for a
412 dnl different environment
415 dnl test for Unix variants
421 dnl BEGIN changes for cross-building (currently cygwin, minGW, and
425 SIGNAMES_H=lsignames.h
427 dnl load up the cross-building cache file -- add more cases and cache
428 dnl files as necessary
430 dnl Note that host and target machine are the same, and different than the
432 dnl Set SIGNAMES_H based on whether or not we're cross-compiling.
435 if test "x$cross_compiling" = "xyes"; then
438 cross_cache=${srcdir}/cross-build/cygwin32.cache
441 cross_cache=${srcdir}/cross-build/cygwin32.cache
444 cross_cache=${srcdir}/cross-build/x86-beos.cache
446 *) echo "configure: cross-compiling for $host is not supported" >&2
449 if test -n "${cross_cache}" && test -r "${cross_cache}"; then
450 echo "loading cross-build cache file ${cross_cache}"
454 SIGNAMES_O='signames.o'
455 CROSS_COMPILE='-DCROSS_COMPILING'
456 AC_SUBST(CROSS_COMPILE)
461 dnl END changes for cross-building
463 dnl We want these before the checks, so the checks can modify their values.
464 if test -z "$CFLAGS"; then
465 AUTO_CFLAGS="-g ${GCC+-O2}"
466 AUTO_LDFLAGS="-g ${GCC+-O2}"
468 AUTO_CFLAGS= AUTO_LDFLAGS=
472 CFLAGS=${CFLAGS-"$AUTO_CFLAGS"}
473 # LDFLAGS=${LDFLAGS="$AUTO_LDFLAGS"} # XXX
475 dnl handle options that alter how bash is compiled and linked
476 dnl these must come after the test for cc/gcc
477 if test "$opt_profiling" = "yes"; then
481 *) opt_static_link=yes ;;
489 if test "$opt_static_link" = yes; then
492 # if we're using gcc, add `-static' to LDFLAGS, except on Solaris >= 2
493 if test -n "$GCC" || test "$ac_cv_prog_gcc" = "yes"; then
497 *) LDFLAGS="$LDFLAGS -static" ;; # XXX experimental
502 # set the appropriate make variables for building the "build tools"
503 # modify defaults based on whether or not we are cross compiling, since the
504 # options for the target host may not be appropriate for the build host
505 if test "X$cross_compiling" = "Xno"; then
506 CC_FOR_BUILD=${CC_FOR_BUILD-'$(CC)'}
507 CPPFLAGS_FOR_BUILD=${CPPFLAGS_FOR_BUILD-"$CPPFLAGS"} # XXX - should it be '$(CPPFLAGS)'
508 LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-'$(LDFLAGS)'}
509 # CFLAGS set above to default value if not passed in environment
510 CFLAGS_FOR_BUILD=${CFLAGS-'$(CFLAGS)'}
511 LIBS_FOR_BUILD=${LIBS_FOR_BUILD-'$(LIBS)'}
513 CC_FOR_BUILD=${CC_FOR_BUILD-"gcc"}
514 CPPFLAGS_FOR_BUILD=${CPPFLAGS_FOR_BUILD-""}
515 LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-""}
516 CFLAGS_FOR_BUILD=${CFLAGS_FOR_BUILD="-g"}
517 LIBS_FOR_BUILD=${LIBS_FOR_BUILD-""}
525 AC_SUBST(CC_FOR_BUILD)
526 AC_SUBST(CFLAGS_FOR_BUILD)
527 AC_SUBST(CPPFLAGS_FOR_BUILD)
528 AC_SUBST(LDFLAGS_FOR_BUILD)
529 AC_SUBST(LIBS_FOR_BUILD)
531 AC_PROG_GCC_TRADITIONAL
533 dnl BEGIN READLINE and HISTORY LIBRARY SECTION
534 dnl prepare to allow bash to be linked against an already-installed readline
536 dnl first test that the readline version is new enough to link bash against
537 if test "$opt_readline" = yes && test "$opt_with_installed_readline" != "no"
539 # If the user specified --with-installed-readline=PREFIX and PREFIX
540 # is not `yes', set ac_cv_rl_prefix to PREFIX
541 test $opt_with_installed_readline != "yes" && ac_cv_rl_prefix=$opt_with_installed_readline
543 RL_LIB_READLINE_VERSION
545 case "$ac_cv_rl_version" in
547 *) opt_with_installed_readline=no
548 AC_MSG_WARN([installed readline library is too old to be linked with bash])
549 AC_MSG_WARN([using private bash version])
555 if test $opt_readline = yes; then
557 if test "$opt_with_installed_readline" != "no" ; then
558 case "$opt_with_installed_readline" in
560 *) case "$RL_INCLUDEDIR" in
562 *) RL_INCLUDE='-I${RL_INCLUDEDIR}' ;;
567 READLINE_LIB=-lreadline
568 # section for OS versions that don't allow unresolved symbols
569 # to be compiled into dynamic libraries.
571 cygwin*) TILDE_LIB= ;;
574 RL_LIBDIR='$(dot)/$(LIBSUBDIR)/readline'
575 READLINE_DEP='$(READLINE_LIBRARY)'
576 # section for OS versions that ship an older/broken version of
577 # readline as a standard dynamic library and don't allow a
578 # static version specified as -llibname to override the
581 darwin[[89]]*|darwin10*) READLINE_LIB='${READLINE_LIBRARY}' ;;
582 *) READLINE_LIB=-lreadline ;;
586 RL_LIBDIR='$(dot)/$(LIBSUBDIR)/readline'
587 READLINE_LIB= READLINE_DEP=
589 if test $opt_history = yes || test $opt_bang_history = yes; then
590 if test $opt_history = yes; then
593 if test $opt_bang_history = yes; then
594 AC_DEFINE(BANG_HISTORY)
596 if test "$opt_with_installed_readline" != "no"; then
597 HIST_LIBDIR=$RL_LIBDIR
599 HISTORY_LIB=-lhistory
600 case "$opt_with_installed_readline" in
602 *) case "$RL_INCLUDEDIR" in
604 *) RL_INCLUDE='-I${RL_INCLUDEDIR}' ;;
609 HIST_LIBDIR='$(dot)/$(LIBSUBDIR)/readline'
610 HISTORY_DEP='$(HISTORY_LIBRARY)'
611 # section for OS versions that ship an older version of
612 # readline as a standard dynamic library and don't allow a
613 # static version specified as -llibname to override the
616 darwin[[89]]*|darwin10*) HISTORY_LIB='${HISTORY_LIBRARY}' ;;
617 *) HISTORY_LIB=-lhistory ;;
621 HIST_LIBDIR='$(dot)/$(LIBSUBDIR)/readline'
622 HISTORY_LIB= HISTORY_DEP=
624 AC_SUBST(READLINE_LIB)
625 AC_SUBST(READLINE_DEP)
627 AC_SUBST(RL_INCLUDEDIR)
629 AC_SUBST(HISTORY_LIB)
630 AC_SUBST(HISTORY_DEP)
631 AC_SUBST(HIST_LIBDIR)
634 dnl END READLINE and HISTORY LIBRARY SECTION
636 dnl programs needed by the build and install process
638 AC_CHECK_TOOL(AR, ar)
639 dnl Set default for ARFLAGS, since autoconf does not have a macro for it.
640 dnl This allows people to set it when running configure or make
641 test -n "$ARFLAGS" || ARFLAGS="cr"
646 case "$ac_cv_prog_YACC" in
648 *) AC_MSG_WARN([bison not available; needed to process parse.y]) ;;
652 opennt*|interix*) MAKE_SHELL="$INTERIX_ROOT/bin/sh" ;;
653 *) MAKE_SHELL=/bin/sh ;;
657 dnl this is similar to the expanded AC_PROG_RANLIB
658 if test x$SIZE = x; then
659 if test x$ac_tool_prefix = x; then
662 SIZE=${ac_tool_prefix}size
663 save_IFS=$IFS ; IFS=:
666 if test -x $dir/$SIZE ; then
671 if test $size_found -eq 0; then
679 m4_include([m4/stat-time.m4])
680 m4_include([m4/timespec.m4])
682 dnl Turn on any extensions available in the GNU C library.
683 AC_DEFINE(_GNU_SOURCE, 1)
685 dnl C compiler characteristics
696 dnl initialize GNU gettext
697 AM_GNU_GETTEXT([no-libtool], [need-ngettext], [lib/intl])
705 AC_CHECK_HEADERS(unistd.h stdlib.h stdarg.h varargs.h limits.h string.h \
706 memory.h locale.h termcap.h termio.h termios.h dlfcn.h \
707 stdbool.h stddef.h stdint.h netdb.h pwd.h grp.h strings.h \
708 regex.h syslog.h ulimit.h)
709 AC_CHECK_HEADERS(sys/pte.h sys/stream.h sys/select.h sys/file.h \
710 sys/resource.h sys/param.h sys/socket.h sys/stat.h \
711 sys/time.h sys/times.h sys/types.h sys/wait.h)
712 AC_CHECK_HEADERS(netinet/in.h arpa/inet.h)
714 dnl sys/ptem.h requires definitions from sys/stream.h on systems where it
716 AC_CHECK_HEADER(sys/ptem.h, , ,[[
717 #if HAVE_SYS_STREAM_H
718 # include <sys/stream.h>
722 dnl special checks for libc functions
725 AC_FUNC_SETVBUF_REVERSED
729 dnl if we're not using the bash malloc but require the C alloca, set things
730 dnl up to build a libmalloc.a containing only alloca.o
732 if test "$ac_cv_func_alloca_works" = "no" && test "$opt_bash_malloc" = "no"; then
736 MALLOC_LIB='-lmalloc'
737 MALLOC_LIBRARY='$(ALLOC_LIBDIR)/libmalloc.a'
738 MALLOC_LDFLAGS='-L$(ALLOC_LIBDIR)'
739 MALLOC_DEP='$(MALLOC_LIBRARY)'
742 dnl if vprintf is not in libc, see if it's defined in stdio.h
743 if test "$ac_cv_func_vprintf" = no; then
744 AC_MSG_CHECKING(for declaration of vprintf in stdio.h)
745 AC_EGREP_HEADER([[int[ ]*vprintf[^a-zA-Z0-9]]],stdio.h,ac_cv_func_vprintf=yes)
746 AC_MSG_RESULT($ac_cv_func_vprintf)
747 if test $ac_cv_func_vprintf = yes; then
748 AC_DEFINE(HAVE_VPRINTF)
752 if test "$ac_cv_func_vprintf" = no && test "$ac_cv_func__doprnt" = "yes"; then
759 dnl checks for certain version-specific system calls and libc functions
760 AC_CHECK_FUNC(__setostype, AC_DEFINE(HAVE_SETOSTYPE))
761 AC_CHECK_FUNC(wait3, AC_DEFINE(HAVE_WAIT3))
763 dnl checks for missing libc functions
764 AC_CHECK_FUNC(mkfifo,AC_DEFINE(HAVE_MKFIFO),AC_DEFINE(MKFIFO_MISSING))
766 dnl checks for system calls
767 AC_CHECK_FUNCS(dup2 eaccess fcntl getdtablesize getgroups gethostname \
768 getpagesize getpeername getrlimit getrusage gettimeofday \
769 kill killpg lstat readlink sbrk select setdtablesize \
770 setitimer tcgetpgrp uname ulimit waitpid)
771 AC_REPLACE_FUNCS(rename)
773 dnl checks for c library functions
774 AC_CHECK_FUNCS(bcopy bzero confstr faccessat fnmatch \
775 getaddrinfo gethostbyname getservbyname getservent inet_aton \
776 imaxdiv memmove pathconf putenv raise regcomp regexec \
777 setenv setlinebuf setlocale setvbuf siginterrupt strchr \
778 sysconf syslog tcgetattr times ttyname tzset unsetenv)
780 AC_CHECK_FUNCS(vasprintf asprintf)
781 AC_CHECK_FUNCS(isascii isblank isgraph isprint isspace isxdigit)
782 AC_CHECK_FUNCS(getpwent getpwnam getpwuid)
783 AC_REPLACE_FUNCS(getcwd memset)
784 AC_REPLACE_FUNCS(strcasecmp strcasestr strerror strftime strnlen strpbrk strstr)
785 AC_REPLACE_FUNCS(strtod strtol strtoul strtoll strtoull strtoimax strtoumax)
786 AC_REPLACE_FUNCS(dprintf)
787 AC_REPLACE_FUNCS(strchrnul)
788 AC_REPLACE_FUNCS(strdup)
790 AC_CHECK_DECLS([AUDIT_USER_TTY],,, [[#include <linux/audit.h>]])
792 AC_CHECK_DECLS([confstr])
793 AC_CHECK_DECLS([printf])
794 AC_CHECK_DECLS([sbrk])
795 AC_CHECK_DECLS([setregid])
796 AC_CHECK_DECLS([strcpy])
797 AC_CHECK_DECLS([strsignal])
799 dnl Extra test to detect the horribly broken HP/UX 11.00 strtold(3)
800 AC_CHECK_DECLS([strtold], [
801 AC_MSG_CHECKING([for broken strtold])
802 AC_CACHE_VAL(bash_cv_strtold_broken,
804 [#include <stdlib.h>],
805 [int main() { long double r; char *foo, bar; r = strtold(foo, &bar);}],
806 bash_cv_strtold_broken=no, bash_cv_strtold_broken=yes,
807 [AC_MSG_WARN(cannot check for broken strtold if cross-compiling, defaulting to no)])
810 AC_MSG_RESULT($bash_cv_strtold_broken)
811 if test "$bash_cv_strtold_broken" = "yes" ; then
812 AC_DEFINE(STRTOLD_BROKEN)
816 BASH_CHECK_DECL(strtoimax)
817 BASH_CHECK_DECL(strtol)
818 BASH_CHECK_DECL(strtoll)
819 BASH_CHECK_DECL(strtoul)
820 BASH_CHECK_DECL(strtoull)
821 BASH_CHECK_DECL(strtoumax)
826 dnl Checks for lib/intl and related code (uses some of the output from
830 AC_CHECK_HEADERS([argz.h errno.h fcntl.h malloc.h stdio_ext.h])
834 AC_CHECK_FUNCS([__argz_count __argz_next __argz_stringify dcgettext mempcpy \
835 munmap stpcpy strcspn])
837 INTL_DEP= INTL_INC= LIBINTL_H=
838 if test "x$USE_INCLUDED_LIBINTL" = "xyes"; then
839 INTL_DEP='${INTL_LIBDIR}/libintl.a'
840 INTL_INC='-I${INTL_LIBSRC} -I${INTL_BUILDDIR}'
841 LIBINTL_H='${INTL_BUILDDIR}/libintl.h'
848 dnl End of checks needed by files in lib/intl
853 dnl checks for the dynamic loading library functions in libc and libdl
854 if test "$opt_static_link" != yes; then
855 AC_CHECK_LIB(dl, dlopen)
856 AC_CHECK_FUNCS(dlopen dlclose dlsym)
859 dnl this defines HAVE_DECL_SYS_SIGLIST
862 dnl network functions -- check for inet_aton again
863 if test "$ac_cv_func_inet_aton" != 'yes'; then
868 dnl this is reportedly no longer necessary for irix[56].?
870 irix4*) AC_CHECK_LIB(sun, getpwent) ;;
873 dnl check for getpeername in the socket library only if it's not in libc
874 if test "$ac_cv_func_getpeername" = no; then
875 BASH_CHECK_LIB_SOCKET
877 dnl check for gethostbyname in socket libraries if it's not in libc
878 if test "$ac_cv_func_gethostbyname" = no; then
879 BASH_FUNC_GETHOSTBYNAME
889 AC_CHECK_TYPE(ssize_t, int)
890 AC_CHECK_TYPE(time_t, long)
893 BASH_TYPE_UNSIGNED_LONG_LONG
896 BASH_TYPE_SIG_ATOMIC_T
898 AC_CHECK_SIZEOF(char, 1)
899 AC_CHECK_SIZEOF(short, 2)
900 AC_CHECK_SIZEOF(int, 4)
901 AC_CHECK_SIZEOF(long, 4)
902 AC_CHECK_SIZEOF(char *, 4)
903 AC_CHECK_SIZEOF(double, 8)
904 AC_CHECK_SIZEOF([long long], 8)
906 AC_CHECK_TYPE(u_int, [unsigned int])
907 AC_CHECK_TYPE(u_long, [unsigned long])
922 if test $ac_cv_sys_interpreter = yes; then
923 AC_DEFINE(HAVE_HASH_BANG_EXEC)
926 dnl Miscellaneous Bash tests
927 if test "$ac_cv_func_lstat" = "no"; then
931 dnl behavior of system calls and library functions
932 BASH_FUNC_CTYPE_NONASCII
933 BASH_FUNC_DUP2_CLOEXEC_CHECK
935 BASH_SYS_SIGNAL_VINTAGE
937 dnl checking for the presence of certain library symbols
940 BASH_UNDER_SYS_SIGLIST
942 dnl various system types
944 BASH_CHECK_TYPE(clock_t, [#include <sys/times.h>], long)
945 BASH_CHECK_TYPE(sigset_t, [#include <signal.h>], int)
946 BASH_CHECK_TYPE(sig_atomic_t, [#include <signal.h>], int)
947 BASH_CHECK_TYPE(quad_t, , long, HAVE_QUAD_T)
948 BASH_CHECK_TYPE(intmax_t, , $bash_cv_type_long_long)
949 BASH_CHECK_TYPE(uintmax_t, , $bash_cv_type_unsigned_long_long)
950 if test "$ac_cv_header_sys_socket_h" = "yes"; then
951 BASH_CHECK_TYPE(socklen_t, [#include <sys/socket.h>], [unsigned int], HAVE_SOCKLEN_T)
955 AC_CHECK_SIZEOF(intmax_t, 8)
957 dnl presence and contents of structures used by system calls
958 BASH_STRUCT_TERMIOS_LDISC
959 BASH_STRUCT_TERMIO_LDISC
960 BASH_STRUCT_DIRENT_D_INO
961 BASH_STRUCT_DIRENT_D_FILENO
962 BASH_STRUCT_DIRENT_D_NAMLEN
965 AC_CHECK_MEMBERS([struct stat.st_blocks])
970 BASH_STRUCT_WEXITSTATUS_OFFSET
972 BASH_CHECK_TYPE_STRUCT_TIMESPEC
975 dnl presence and behavior of C library functions
977 BASH_FUNC_OPENDIR_CHECK
978 BASH_FUNC_ULIMIT_MAXFDS
981 if test "$ac_cv_func_getcwd" = "yes"; then
984 BASH_FUNC_POSIX_SETJMP
989 dnl If putenv or unsetenv is not present, set the right define so the
990 dnl prototype and declaration in lib/sh/getenv.c will be standard-conformant
992 if test "$ac_cv_func_putenv" = "yes"; then
995 AC_DEFINE(HAVE_STD_PUTENV)
997 if test "$ac_cv_func_unsetenv" = "yes"; then
998 BASH_FUNC_STD_UNSETENV
1000 AC_DEFINE(HAVE_STD_UNSETENV)
1003 BASH_FUNC_PRINTF_A_FORMAT
1005 dnl presence and behavior of OS functions
1006 BASH_SYS_REINSTALL_SIGHANDLERS
1007 BASH_SYS_JOB_CONTROL_MISSING
1008 BASH_SYS_NAMED_PIPES
1010 dnl presence of certain CPP defines
1011 AC_HEADER_TIOCGWINSZ
1015 BASH_CHECK_WCONTINUED
1019 BASH_CHECK_GETPW_FUNCS
1021 BASH_CHECK_SYS_SIGLIST
1025 hpux*) BASH_CHECK_KERNEL_RLIMIT ;;
1028 if test "$opt_readline" = yes; then
1031 aix*) prefer_curses=yes ;;
1033 BASH_CHECK_LIB_TERMCAP
1035 AC_SUBST(TERMCAP_LIB)
1036 AC_SUBST(TERMCAP_DEP)
1039 BASH_CHECK_DEV_STDIN
1040 BASH_SYS_DEFAULT_MAIL_DIR
1042 if test "$bash_cv_job_control_missing" = missing; then
1046 if test "$opt_job_control" = yes; then
1047 AC_DEFINE(JOB_CONTROL)
1055 dnl Defines that we want to propagate to the Makefiles in subdirectories,
1056 dnl like glob and readline
1060 dnl use this section to possibly define more cpp variables, specify local
1061 dnl libraries, and specify any additional local cc or ld flags
1063 dnl this should really go away someday
1065 case "${host_os}" in
1066 sysv4.2*) AC_DEFINE(SVR4_2)
1068 sysv4*) AC_DEFINE(SVR4) ;;
1069 sysv5*) AC_DEFINE(SVR5) ;;
1070 hpux9*) LOCAL_CFLAGS="-DHPUX9 -DHPUX" ;;
1071 hpux*) LOCAL_CFLAGS=-DHPUX ;;
1072 dgux*) LOCAL_CFLAGS=-D_DGUX_SOURCE; LOCAL_LIBS=-ldgc ;;
1073 isc*) LOCAL_CFLAGS=-Disc386 ;;
1074 rhapsody*) LOCAL_CFLAGS=-DRHAPSODY ;;
1075 darwin*) LOCAL_CFLAGS=-DMACOSX ;;
1076 sco3.2v5*) LOCAL_CFLAGS="-b elf -DWAITPID_BROKEN -DPATH_MAX=1024" ;;
1077 sco3.2v4*) LOCAL_CFLAGS="-DMUST_UNBLOCK_CHLD -DPATH_MAX=1024" ;;
1078 sco3.2*) LOCAL_CFLAGS=-DMUST_UNBLOCK_CHLD ;;
1079 sunos4*) LOCAL_CFLAGS=-DSunOS4 ;;
1080 solaris2.5*) LOCAL_CFLAGS="-DSunOS5 -DSOLARIS" ;;
1081 solaris2.8*) LOCAL_CFLAGS=-DSOLARIS ;;
1082 solaris2.9*) LOCAL_CFLAGS=-DSOLARIS ;;
1083 solaris2.10*) LOCAL_CFLAGS=-DSOLARIS ;;
1084 solaris2*) LOCAL_CFLAGS=-DSOLARIS ;;
1085 lynxos*) LOCAL_CFLAGS=-DRECYCLES_PIDS ;;
1086 linux*) LOCAL_LDFLAGS=-rdynamic # allow dynamic loading
1087 case "`uname -r`" in
1088 2.[[456789]]*|3*) AC_DEFINE(PGRP_PIPE) ;;
1090 *qnx6*) LOCAL_CFLAGS="-Dqnx -Dqnx6" LOCAL_LIBS="-lncurses" ;;
1091 *qnx*) LOCAL_CFLAGS="-Dqnx -F -3s" LOCAL_LDFLAGS="-3s" LOCAL_LIBS="-lunix -lncurses" ;;
1092 powerux*) LOCAL_LIBS="-lgen" ;;
1093 cygwin*) LOCAL_CFLAGS=-DRECYCLES_PIDS ;;
1094 opennt*|interix*) LOCAL_CFLAGS="-DNO_MAIN_ENV_ARG -DBROKEN_DIRENT_D_INO -D_POSIX_SOURCE -D_ALL_SOURCE -DRECYCLES_PIDS" ;;
1095 *openstep*) LOCAL_CFLAGS="-D__APPLE_CC__" ;;
1098 dnl Stanza for OS/compiler pair-specific flags
1099 case "${host_os}-${CC}" in
1100 aix4.2*-*gcc*) LOCAL_LDFLAGS="-Xlinker -bexpall -Xlinker -brtl" ;;
1101 aix4.2*) LOCAL_LDFLAGS="-bexpall -brtl" ;;
1102 bsdi4*-*gcc*) LOCAL_LDFLAGS="-rdynamic" ;; # allow dynamic loading, like Linux
1105 dnl FreeBSD-3.x can have either a.out or ELF
1106 case "${host_os}" in
1108 if test -x /usr/bin/objformat && test "`/usr/bin/objformat`" = "elf" ; then
1109 LOCAL_LDFLAGS=-rdynamic # allow dynamic loading
1111 freebsdelf*) LOCAL_LDFLAGS=-rdynamic ;; # allow dynamic loading
1112 dragonfly*) LOCAL_LDFLAGS=-rdynamic ;; # allow dynamic loading
1116 *cray*) LOCAL_CFLAGS="-DCRAY" ;; # shell var so config.h can use it
1119 case "$host_cpu-$host_os" in
1120 ibmrt-*bsd4*) LOCAL_CFLAGS="-ma -U__STDC__" ;;
1123 case "$host_cpu-$host_vendor-$host_os" in
1124 m88k-motorola-sysv3) LOCAL_CFLAGS=-DWAITPID_BROKEN ;;
1125 mips-pyramid-sysv4) LOCAL_CFLAGS=-Xa ;;
1129 # Shared object configuration section. These values are generated by
1130 # ${srcdir}/support/shobj-conf
1132 if test "$ac_cv_func_dlopen" = "yes" && test -f ${srcdir}/support/shobj-conf
1134 AC_MSG_CHECKING(shared object configuration for loadable builtins)
1135 eval `${CONFIG_SHELL-/bin/sh} ${srcdir}/support/shobj-conf -C "${CC}" -c "${host_cpu}" -o "${host_os}" -v "${host_vendor}"`
1137 AC_SUBST(SHOBJ_CFLAGS)
1139 AC_SUBST(SHOBJ_LDFLAGS)
1140 AC_SUBST(SHOBJ_XLDFLAGS)
1141 AC_SUBST(SHOBJ_LIBS)
1142 AC_SUBST(SHOBJ_STATUS)
1143 AC_MSG_RESULT($SHOBJ_STATUS)
1146 # try to create a directory tree if the source is elsewhere
1147 # this should be packaged into a script accessible via ${srcdir}/support
1150 *) for d in doc tests support lib examples; do # dirs
1151 test -d $d || mkdir $d
1153 for ld in readline glob tilde malloc sh termcap; do # libdirs
1154 test -d lib/$ld || mkdir lib/$ld
1156 test -d examples/loadables || mkdir examples/loadables # loadable builtins
1157 test -d examples/loadables/perl || mkdir examples/loadables/perl
1162 case "$BUILD_DIR" in
1163 *\ *) BUILD_DIR=`echo "$BUILD_DIR" | sed 's: :\\\\ :g'` ;;
1167 if test -z "$localedir"; then
1168 localedir='${datarootdir}/locale'
1170 if test -z "$datarootdir"; then
1171 datarootdir='${prefix}/share'
1174 AC_SUBST(PROFILE_FLAGS)
1179 # Some versions of autoconf don't substitute these automatically
1180 AC_SUBST(datarootdir)
1190 AC_SUBST(MALLOC_DEBUG)
1193 AC_SUBST(host_vendor)
1196 AC_SUBST(LOCAL_LIBS)
1197 AC_SUBST(LOCAL_CFLAGS)
1198 AC_SUBST(LOCAL_LDFLAGS)
1199 AC_SUBST(LOCAL_DEFS)
1201 #AC_SUBST(ALLOCA_SOURCE)
1202 #AC_SUBST(ALLOCA_OBJECT)
1204 AC_OUTPUT([Makefile builtins/Makefile lib/readline/Makefile lib/glob/Makefile \
1206 lib/malloc/Makefile lib/sh/Makefile lib/termcap/Makefile \
1207 lib/tilde/Makefile doc/Makefile support/Makefile po/Makefile.in \
1208 examples/loadables/Makefile examples/loadables/perl/Makefile],
1210 # Makefile uses this timestamp file to record whether config.h is up to date.
1211 echo timestamp > stamp-h