]> git.ipfire.org Git - thirdparty/bash.git/blame - configure.ac
Bash-5.2 patch 26: fix typo when specifying readline's custom color prefix
[thirdparty/bash.git] / configure.ac
CommitLineData
ac50fbac 1dnl
74091dd4 2dnl Configure script for bash-5.2
ac50fbac
CR
3dnl
4dnl report bugs to chet@po.cwru.edu
5dnl
6dnl Process this file with autoconf to produce a configure script.
7
74091dd4 8# Copyright (C) 1987-2022 Free Software Foundation, Inc.
ac50fbac
CR
9
10#
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.
15#
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.
20#
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/>.
23
74091dd4 24AC_REVISION([for Bash 5.2, version 5.046])dnl
ac50fbac 25
74091dd4 26define(bashvers, 5.2)
ac50fbac
CR
27define(relstatus, release)
28
29AC_INIT([bash], bashvers-relstatus, [bug-bash@gnu.org])
30
31dnl make sure we are using a recent autoconf version
74091dd4 32AC_PREREQ(2.69)
ac50fbac
CR
33
34AC_CONFIG_SRCDIR(shell.h)
35dnl where to find install.sh, config.sub, and config.guess
36AC_CONFIG_AUX_DIR(./support)
37AC_CONFIG_HEADERS(config.h)
38
39dnl checks for version info
40BASHVERS=bashvers
41RELSTATUS=relstatus
42
43dnl defaults for debug settings
44case "$RELSTATUS" in
a0c0a00f 45alp*|bet*|dev*|rc*|releng*|maint*) DEBUG='-DDEBUG' MALLOC_DEBUG='-DMALLOC_DEBUG' ;;
ac50fbac
CR
46*) DEBUG= MALLOC_DEBUG= ;;
47esac
48
49dnl canonicalize the host and os so we can do some tricky things before
50dnl parsing options
51AC_CANONICAL_HOST
52AC_CANONICAL_BUILD
53
54dnl configure defaults
55opt_bash_malloc=yes
ac50fbac
CR
56opt_afs=no
57opt_curses=no
58opt_with_installed_readline=no
59
60#htmldir=
61
62dnl some systems should be configured without the bash malloc by default
63dnl and some need a special compiler or loader
64dnl look in the NOTES file for more
65case "${host_cpu}-${host_os}" in
d233b485 66# mostly obsolete platforms
ac50fbac
CR
67alpha*-*) opt_bash_malloc=no ;; # alpha running osf/1 or linux
68*[[Cc]]ray*-*) opt_bash_malloc=no ;; # Crays
69*-osf1*) opt_bash_malloc=no ;; # other osf/1 machines
d233b485 70*-dgux*) opt_bash_malloc=no ;; # DG/UX machines
ac50fbac 71sparc-svr4*) opt_bash_malloc=no ;; # sparc SVR4, SVR4.2
ac50fbac 72m68k-sysv) opt_bash_malloc=no ;; # fixes file descriptor leak in closedir
d233b485
CR
73*-bsdi2.1|*-bsdi3.?) opt_bash_malloc=no ; : ${CC:=shlicc2} ;; # for loadable builtins
74*-opennt*|*-interix*) opt_bash_malloc=no ;; # Interix, now owned by Microsoft
75*-beos*) opt_bash_malloc=no ;; # they say it's suitable
76# These need additional investigation
ac50fbac 77sparc-linux*) opt_bash_malloc=no ;; # sparc running linux; requires ELF
ac50fbac 78*-aix*) opt_bash_malloc=no ;; # AIX machines
d233b485 79*-cygwin*) opt_bash_malloc=no ;; # Cygnus's CYGWIN environment
8868edaf
CR
80# These lack a working sbrk(2)
81aarch64-freebsd*) opt_bash_malloc=no ;;
82riscv*-freebsd*) opt_bash_malloc=no ;;
d233b485 83# Mach-derived systems have a ton of extra malloc functions and lack sbrk(2)
ac50fbac
CR
84*-nextstep*) opt_bash_malloc=no ;; # NeXT machines running NeXTstep
85*-openstep*) opt_bash_malloc=no ;; # i386/Sparc/HP machines running Openstep
86*-macos*) opt_bash_malloc=no ;; # Apple MacOS X
87*-rhapsody*) opt_bash_malloc=no ;; # Apple Rhapsody (MacOS X)
88*-darwin*) opt_bash_malloc=no ;; # Apple Darwin (MacOS X)
ac50fbac 89*-machten4) opt_bash_malloc=no ;; # MachTen 4.x
d233b485
CR
90# Niche or non-mainstream-shell-user systems
91*-qnx*) opt_bash_malloc=no ;; # QNX 4.2, QNX [67].x
ac50fbac
CR
92*-nsk*) opt_bash_malloc=no ;; # HP NonStop
93*-haiku*) opt_bash_malloc=no ;; # Haiku OS
8868edaf 94*-genode*) opt_bash_malloc=no ;; # Genode has no sbrk
ac50fbac
CR
95esac
96
97# memory scrambling on free()
98case "${host_os}" in
99sco3.2v5*|sco3.2v4*) opt_memscramble=no ;;
100*) opt_memscramble=yes ;;
101esac
102
103dnl
104dnl macros for the bash debugger
105dnl
106dnl AM_PATH_LISPDIR
107AC_ARG_VAR(DEBUGGER_START_FILE, [location of bash debugger initialization file])
108
109dnl arguments to configure
110dnl packages
74091dd4
CR
111AC_ARG_WITH(afs, AS_HELP_STRING([--with-afs], [if you are running AFS]), opt_afs=$withval)
112AC_ARG_WITH(bash-malloc, AS_HELP_STRING([--with-bash-malloc], [use the Bash version of malloc]), opt_bash_malloc=$withval)
113AC_ARG_WITH(curses, AS_HELP_STRING([--with-curses], [use the curses library instead of the termcap library]), opt_curses=$withval)
114AC_ARG_WITH(gnu-malloc, AS_HELP_STRING([--with-gnu-malloc], [synonym for --with-bash-malloc]), opt_bash_malloc=$withval)
115AC_ARG_WITH(installed-readline, AS_HELP_STRING([--with-installed-readline], [use a version of the readline library that is already installed]), opt_with_installed_readline=$withval)
ac50fbac
CR
116
117if test "$opt_bash_malloc" = yes; then
118 MALLOC_TARGET=malloc
119 MALLOC_SRC=malloc.c
120
121 MALLOC_LIB='-lmalloc'
122 MALLOC_LIBRARY='$(ALLOC_LIBDIR)/libmalloc.a'
123 MALLOC_LDFLAGS='-L$(ALLOC_LIBDIR)'
124 MALLOC_DEP='$(MALLOC_LIBRARY)'
125
126 AC_DEFINE(USING_BASH_MALLOC)
127else
128 MALLOC_LIB=
129 MALLOC_LIBRARY=
130 MALLOC_LDFLAGS=
131 MALLOC_DEP=
132fi
133
ac50fbac
CR
134if test "$opt_afs" = yes; then
135 AC_DEFINE(AFS)
136fi
137
138if test "$opt_curses" = yes; then
139 prefer_curses=yes
140fi
141
142if test -z "${DEBUGGER_START_FILE}"; then
143 DEBUGGER_START_FILE='${datadir}/bashdb/bashdb-main.inc'
144fi
145
146dnl optional shell features in config.h.in
147opt_minimal_config=no
148
149opt_job_control=yes
150opt_alias=yes
151opt_readline=yes
152opt_history=yes
153opt_bang_history=yes
154opt_dirstack=yes
155opt_restricted=yes
156opt_process_subst=yes
157opt_prompt_decoding=yes
158opt_select=yes
159opt_help=yes
160opt_array_variables=yes
161opt_dparen_arith=yes
162opt_extended_glob=yes
163opt_brace_expansion=yes
164opt_disabled_builtins=no
165opt_command_timing=yes
166opt_xpg_echo=no
167opt_strict_posix=no
168opt_cond_command=yes
169opt_cond_regexp=yes
170opt_coproc=yes
171opt_arith_for_command=yes
172opt_net_redirs=yes
173opt_progcomp=yes
174opt_separate_help=no
175opt_multibyte=yes
176opt_debugger=yes
177opt_single_longdoc_strings=yes
178opt_casemod_attrs=yes
179opt_casemod_expansions=yes
180opt_extglob_default=no
181opt_dircomplete_expand_default=no
d233b485 182opt_globascii_default=yes
a0c0a00f 183opt_function_import=yes
d233b485 184opt_dev_fd_stat_broken=no
74091dd4
CR
185opt_alt_array_impl=no
186opt_translatable_strings=yes
187
188dnl modified by alternate array implementation option
189ARRAY_O=array.o
ac50fbac
CR
190
191dnl options that affect how bash is compiled and linked
192opt_static_link=no
193opt_profiling=no
194
195dnl argument parsing for optional features
74091dd4 196AC_ARG_ENABLE(minimal-config, AS_HELP_STRING([--enable-minimal-config], [a minimal sh-like configuration]), opt_minimal_config=$enableval)
ac50fbac
CR
197
198dnl a minimal configuration turns everything off, but features can be
199dnl added individually
200if test $opt_minimal_config = yes; then
201 opt_job_control=no opt_alias=no opt_readline=no
202 opt_history=no opt_bang_history=no opt_dirstack=no
203 opt_restricted=no opt_process_subst=no opt_prompt_decoding=no
204 opt_select=no opt_help=no opt_array_variables=no opt_dparen_arith=no
205 opt_brace_expansion=no opt_disabled_builtins=no opt_command_timing=no
206 opt_extended_glob=no opt_cond_command=no opt_arith_for_command=no
207 opt_net_redirs=no opt_progcomp=no opt_separate_help=no
208 opt_multibyte=yes opt_cond_regexp=no opt_coproc=no
209 opt_casemod_attrs=no opt_casemod_expansions=no opt_extglob_default=no
74091dd4 210 opt_translatable_strings=no
d233b485 211 opt_globascii_default=yes
ac50fbac
CR
212fi
213
74091dd4
CR
214AC_ARG_ENABLE(alias, AS_HELP_STRING([--enable-alias], [enable shell aliases]), opt_alias=$enableval)
215AC_ARG_ENABLE(alt-array-implementation, AS_HELP_STRING([--enable-alt-array-implementation], [enable an alternate array implementation that optimizes speed at the cost of space]), opt_alt_array_impl=$enableval)
216AC_ARG_ENABLE(arith-for-command, AS_HELP_STRING([--enable-arith-for-command], [enable arithmetic for command]), opt_arith_for_command=$enableval)
217AC_ARG_ENABLE(array-variables, AS_HELP_STRING([--enable-array-variables], [include shell array variables]), opt_array_variables=$enableval)
218AC_ARG_ENABLE(bang-history, AS_HELP_STRING([--enable-bang-history], [turn on csh-style history substitution]), opt_bang_history=$enableval)
219AC_ARG_ENABLE(brace-expansion, AS_HELP_STRING([--enable-brace-expansion], [include brace expansion]), opt_brace_expansion=$enableval)
220AC_ARG_ENABLE(casemod-attributes, AS_HELP_STRING([--enable-casemod-attributes], [include case-modifying variable attributes]), opt_casemod_attrs=$enableval)
221AC_ARG_ENABLE(casemod-expansions, AS_HELP_STRING([--enable-casemod-expansions], [include case-modifying word expansions]), opt_casemod_expansions=$enableval)
222AC_ARG_ENABLE(command-timing, AS_HELP_STRING([--enable-command-timing], [enable the time reserved word and command timing]), opt_command_timing=$enableval)
223AC_ARG_ENABLE(cond-command, AS_HELP_STRING([--enable-cond-command], [enable the conditional command]), opt_cond_command=$enableval)
224AC_ARG_ENABLE(cond-regexp, AS_HELP_STRING([--enable-cond-regexp], [enable extended regular expression matching in conditional commands]), opt_cond_regexp=$enableval)
225AC_ARG_ENABLE(coprocesses, AS_HELP_STRING([--enable-coprocesses], [enable coprocess support and the coproc reserved word]), opt_coproc=$enableval)
226AC_ARG_ENABLE(debugger, AS_HELP_STRING([--enable-debugger], [enable support for bash debugger]), opt_debugger=$enableval)
227AC_ARG_ENABLE(dev-fd-stat-broken, AS_HELP_STRING([--enable-dev-fd-stat-broken], [enable this option if stat on /dev/fd/N and fstat on file descriptor N don't return the same results]), opt_dev_fd_stat_broken=$enableval)
228AC_ARG_ENABLE(direxpand-default, AS_HELP_STRING([--enable-direxpand-default], [enable the direxpand shell option by default]), opt_dircomplete_expand_default=$enableval)
229AC_ARG_ENABLE(directory-stack, AS_HELP_STRING([--enable-directory-stack], [enable builtins pushd/popd/dirs]), opt_dirstack=$enableval)
230AC_ARG_ENABLE(disabled-builtins, AS_HELP_STRING([--enable-disabled-builtins], [allow disabled builtins to still be invoked]), opt_disabled_builtins=$enableval)
231AC_ARG_ENABLE(dparen-arithmetic, AS_HELP_STRING([--enable-dparen-arithmetic], [include ((...)) command]), opt_dparen_arith=$enableval)
232AC_ARG_ENABLE(extended-glob, AS_HELP_STRING([--enable-extended-glob], [include ksh-style extended pattern matching]), opt_extended_glob=$enableval)
233AC_ARG_ENABLE(extended-glob-default, AS_HELP_STRING([--enable-extended-glob-default], [force extended pattern matching to be enabled by default]), opt_extglob_default=$enableval)
234AC_ARG_ENABLE(function-import, AS_HELP_STRING([--enable-function-import], [allow bash to import exported function definitions by default]), opt_function_import=$enableval)
235AC_ARG_ENABLE(glob-asciiranges-default, AS_HELP_STRING([--enable-glob-asciiranges-default], [force bracket range expressions in pattern matching to use the C locale by default]), opt_globascii_default=$enableval)
236AC_ARG_ENABLE(help-builtin, AS_HELP_STRING([--enable-help-builtin], [include the help builtin]), opt_help=$enableval)
237AC_ARG_ENABLE(history, AS_HELP_STRING([--enable-history], [turn on command history]), opt_history=$enableval)
238AC_ARG_ENABLE(job-control, AS_HELP_STRING([--enable-job-control], [enable job control features]), opt_job_control=$enableval)
239AC_ARG_ENABLE(multibyte, AS_HELP_STRING([--enable-multibyte], [enable multibyte characters if OS supports them]), opt_multibyte=$enableval)
240AC_ARG_ENABLE(net-redirections, AS_HELP_STRING([--enable-net-redirections], [enable /dev/tcp/host/port redirection]), opt_net_redirs=$enableval)
241AC_ARG_ENABLE(process-substitution, AS_HELP_STRING([--enable-process-substitution], [enable process substitution]), opt_process_subst=$enableval)
242AC_ARG_ENABLE(progcomp, AS_HELP_STRING([--enable-progcomp], [enable programmable completion and the complete builtin]), opt_progcomp=$enableval)
243AC_ARG_ENABLE(prompt-string-decoding, AS_HELP_STRING([--enable-prompt-string-decoding], [turn on escape character decoding in prompts]), opt_prompt_decoding=$enableval)
244AC_ARG_ENABLE(readline, AS_HELP_STRING([--enable-readline], [turn on command line editing]), opt_readline=$enableval)
245AC_ARG_ENABLE(restricted, AS_HELP_STRING([--enable-restricted], [enable a restricted shell]), opt_restricted=$enableval)
246AC_ARG_ENABLE(select, AS_HELP_STRING([--enable-select], [include select command]), opt_select=$enableval)
247AC_ARG_ENABLE(separate-helpfiles, AS_HELP_STRING([--enable-separate-helpfiles], [use external files for help builtin documentation]), opt_separate_help=$enableval)
248AC_ARG_ENABLE(single-help-strings, AS_HELP_STRING([--enable-single-help-strings], [store help documentation as a single string to ease translation]), opt_single_longdoc_strings=$enableval)
249AC_ARG_ENABLE(strict-posix-default, AS_HELP_STRING([--enable-strict-posix-default], [configure bash to be posix-conformant by default]), opt_strict_posix=$enableval)
250AC_ARG_ENABLE(translatable-strings, AS_HELP_STRING([--enable-translatable-strings], [include support for $"..." translatable strings]), opt_translatable_strings=$enableval)
251AC_ARG_ENABLE(usg-echo-default, AS_HELP_STRING([--enable-usg-echo-default], [a synonym for --enable-xpg-echo-default]), opt_xpg_echo=$enableval)
252AC_ARG_ENABLE(xpg-echo-default, AS_HELP_STRING([--enable-xpg-echo-default], [make the echo builtin expand escape sequences by default]), opt_xpg_echo=$enableval)
ac50fbac
CR
253
254dnl options that alter how bash is compiled and linked
74091dd4
CR
255AC_ARG_ENABLE(mem-scramble, AS_HELP_STRING([--enable-mem-scramble], [scramble memory on calls to malloc and free]), opt_memscramble=$enableval)
256AC_ARG_ENABLE(profiling, AS_HELP_STRING([--enable-profiling], [allow profiling with gprof]), opt_profiling=$enableval)
257AC_ARG_ENABLE(static-link, AS_HELP_STRING([--enable-static-link], [link bash statically, for use as a root shell]), opt_static_link=$enableval)
ac50fbac
CR
258
259dnl So-called `precious' variables
260AC_ARG_VAR([CC_FOR_BUILD], [C compiler used when compiling binaries used only at build time])
d233b485 261AC_ARG_VAR([CFLAGS_FOR_BUILD], [Compilation options (CFLAGS) used when compiling binaries used only at build time])
ac50fbac
CR
262AC_ARG_VAR([LDFLAGS_FOR_BUILD], [Linker options (LDFLAGS) used when compiling binaries used only at build time])
263AC_ARG_VAR([CPPFLAGS_FOR_BUILD], [C preprocessor options (CPPFLAGS) used when compiling binaries used only at build time])
264
265dnl opt_job_control is handled later, after BASH_JOB_CONTROL_MISSING runs
266
267dnl opt_readline and opt_history are handled later, because AC_PROG_CC needs
268dnl to be run before we can check the version of an already-installed readline
269dnl library
270
271if test $opt_alias = yes; then
272AC_DEFINE(ALIAS)
273fi
274if test $opt_dirstack = yes; then
275AC_DEFINE(PUSHD_AND_POPD)
276fi
277if test $opt_restricted = yes; then
278AC_DEFINE(RESTRICTED_SHELL)
279fi
280if test $opt_process_subst = yes; then
281AC_DEFINE(PROCESS_SUBSTITUTION)
282fi
283if test $opt_prompt_decoding = yes; then
284AC_DEFINE(PROMPT_STRING_DECODE)
285fi
286if test $opt_select = yes; then
287AC_DEFINE(SELECT_COMMAND)
288fi
289if test $opt_help = yes; then
290AC_DEFINE(HELP_BUILTIN)
291fi
292if test $opt_array_variables = yes; then
293AC_DEFINE(ARRAY_VARS)
294fi
295if test $opt_dparen_arith = yes; then
296AC_DEFINE(DPAREN_ARITHMETIC)
297fi
298if test $opt_brace_expansion = yes; then
299AC_DEFINE(BRACE_EXPANSION)
300fi
301if test $opt_disabled_builtins = yes; then
302AC_DEFINE(DISABLED_BUILTINS)
303fi
304if test $opt_command_timing = yes; then
305AC_DEFINE(COMMAND_TIMING)
306fi
307if test $opt_xpg_echo = yes ; then
308AC_DEFINE(DEFAULT_ECHO_TO_XPG)
309fi
310if test $opt_strict_posix = yes; then
311AC_DEFINE(STRICT_POSIX)
312fi
313if test $opt_extended_glob = yes ; then
314AC_DEFINE(EXTENDED_GLOB)
315fi
316if test $opt_extglob_default = yes; then
317AC_DEFINE(EXTGLOB_DEFAULT, 1)
318else
319AC_DEFINE(EXTGLOB_DEFAULT, 0)
320fi
321if test $opt_cond_command = yes ; then
322AC_DEFINE(COND_COMMAND)
323fi
324if test $opt_cond_regexp = yes ; then
325AC_DEFINE(COND_REGEXP)
326fi
327if test $opt_coproc = yes; then
328AC_DEFINE(COPROCESS_SUPPORT)
329fi
330if test $opt_arith_for_command = yes; then
331AC_DEFINE(ARITH_FOR_COMMAND)
332fi
333if test $opt_net_redirs = yes; then
334AC_DEFINE(NETWORK_REDIRECTIONS)
335fi
336if test $opt_progcomp = yes; then
337AC_DEFINE(PROGRAMMABLE_COMPLETION)
338fi
339if test $opt_multibyte = no; then
340AC_DEFINE(NO_MULTIBYTE_SUPPORT)
341fi
342if test $opt_debugger = yes; then
343AC_DEFINE(DEBUGGER)
344fi
345if test $opt_casemod_attrs = yes; then
346AC_DEFINE(CASEMOD_ATTRS)
347fi
348if test $opt_casemod_expansions = yes; then
349AC_DEFINE(CASEMOD_EXPANSIONS)
350fi
351if test $opt_dircomplete_expand_default = yes; then
352AC_DEFINE(DIRCOMPLETE_EXPAND_DEFAULT)
353fi
354if test $opt_globascii_default = yes; then
355AC_DEFINE(GLOBASCII_DEFAULT, 1)
356else
357AC_DEFINE(GLOBASCII_DEFAULT, 0)
358fi
a0c0a00f
CR
359if test $opt_function_import = yes; then
360AC_DEFINE(FUNCTION_IMPORT)
361fi
d233b485
CR
362if test $opt_dev_fd_stat_broken = yes; then
363AC_DEFINE(DEV_FD_STAT_BROKEN)
364fi
74091dd4
CR
365if test $opt_alt_array_impl = yes; then
366AC_DEFINE(ALT_ARRAY_IMPLEMENTATION)
367ARRAY_O=array2.o
368fi
369if test $opt_translatable_strings = yes; then
370AC_DEFINE(TRANSLATABLE_STRINGS)
371fi
ac50fbac
CR
372
373if test $opt_memscramble = yes; then
374AC_DEFINE(MEMSCRAMBLE)
375fi
376
377if test "$opt_minimal_config" = yes; then
378 TESTSCRIPT=run-minimal
379else
380 TESTSCRIPT=run-all
381fi
382
383HELPDIR= HELPDIRDEFINE= HELPINSTALL= HELPFILES_TARGET=
384if test "$opt_separate_help" != no; then
385 if test "$opt_separate_help" = "yes" ; then
74091dd4 386 HELPDIR='${datadir}/bash/helpfiles'
ac50fbac
CR
387 else
388 HELPDIR=$opt_separate_help
389 fi
390 HELPDIRDEFINE='-H ${HELPDIR}'
391 HELPINSTALL='install-help'
392 HELPFILES_TARGET='helpdoc'
393fi
394HELPSTRINGS=
395if test "$opt_single_longdoc_strings" != "yes"; then
396 HELPSTRINGS='-S'
397fi
398
399dnl now substitute in the values generated by arguments
400AC_SUBST(TESTSCRIPT)
ac50fbac
CR
401AC_SUBST(MALLOC_TARGET)
402AC_SUBST(MALLOC_SRC)
403
404AC_SUBST(MALLOC_LIB)
405AC_SUBST(MALLOC_LIBRARY)
406AC_SUBST(MALLOC_LDFLAGS)
407AC_SUBST(MALLOC_DEP)
408
74091dd4
CR
409AC_SUBST(ARRAY_O)
410
ac50fbac
CR
411AC_SUBST(htmldir)
412
413AC_SUBST(HELPDIR)
414AC_SUBST(HELPDIRDEFINE)
415AC_SUBST(HELPINSTALL)
416AC_SUBST(HELPFILES_TARGET)
417AC_SUBST(HELPSTRINGS)
418
a0c0a00f
CR
419dnl We want these before the checks, so the checks can modify their values.
420if test -z "$CFLAGS"; then
8868edaf 421 want_auto_cflags=1
a0c0a00f
CR
422fi
423
ac50fbac
CR
424echo ""
425echo "Beginning configuration for bash-$BASHVERS-$RELSTATUS for ${host_cpu}-${host_vendor}-${host_os}"
426echo ""
427
428dnl compilation checks
429dnl AC_PROG_CC sets $cross_compiling to `yes' if cross-compiling for a
430dnl different environment
431AC_PROG_CC
432
8868edaf 433if test -n "$want_auto_cflags"; then
74091dd4
CR
434 AUTO_CFLAGS="-g ${GCC:+-O2}"
435 AUTO_LDFLAGS="-g ${GCC:+-O2}"
436# STYLE_CFLAGS="${GCC:+-Wno-parentheses} ${GCC:+-Wno-format-security} ${GCC:+-Wno-tautological-constant-out-of-range-compare}"
437 STYLE_CFLAGS="${GCC:+-Wno-parentheses} ${GCC:+-Wno-format-security}"
8868edaf
CR
438else
439 AUTO_CFLAGS= AUTO_LDFLAGS= STYLE_CFLAGS=
440fi
441
ac50fbac 442dnl test for Unix variants
74091dd4 443AC_USE_SYSTEM_EXTENSIONS
ac50fbac
CR
444AC_SYS_LARGEFILE
445
446dnl BEGIN changes for cross-building (currently cygwin, minGW, and
447dnl (obsolete) BeOS)
448
449SIGNAMES_O=
450SIGNAMES_H=lsignames.h
451
452dnl load up the cross-building cache file -- add more cases and cache
453dnl files as necessary
454
455dnl Note that host and target machine are the same, and different than the
456dnl build machine.
457dnl Set SIGNAMES_H based on whether or not we're cross-compiling.
458
459CROSS_COMPILE=
460if test "x$cross_compiling" = "xyes"; then
461 case "${host}" in
462 *-cygwin*)
463 cross_cache=${srcdir}/cross-build/cygwin32.cache
464 ;;
465 *-mingw*)
466 cross_cache=${srcdir}/cross-build/cygwin32.cache
467 ;;
468 i[[3456]]86-*-beos*)
469 cross_cache=${srcdir}/cross-build/x86-beos.cache
470 ;;
d233b485
CR
471 *-qnx*)
472 cross_cache=${srcdir}/cross-build/qnx.cache
473 ;;
ac50fbac
CR
474 *) echo "configure: cross-compiling for $host is not supported" >&2
475 ;;
476 esac
477 if test -n "${cross_cache}" && test -r "${cross_cache}"; then
478 echo "loading cross-build cache file ${cross_cache}"
479 . ${cross_cache}
480 fi
481 unset cross_cache
482 SIGNAMES_O='signames.o'
483 CROSS_COMPILE='-DCROSS_COMPILING'
484 AC_SUBST(CROSS_COMPILE)
485fi
486AC_SUBST(SIGNAMES_H)
487AC_SUBST(SIGNAMES_O)
488
489dnl END changes for cross-building
490
ac50fbac
CR
491dnl default values
492CFLAGS=${CFLAGS-"$AUTO_CFLAGS"}
493# LDFLAGS=${LDFLAGS="$AUTO_LDFLAGS"} # XXX
494
495dnl handle options that alter how bash is compiled and linked
496dnl these must come after the test for cc/gcc
497if test "$opt_profiling" = "yes"; then
498 PROFILE_FLAGS=-pg
499 case "$host_os" in
74091dd4 500 solaris2*|linux*|darwin*) ;;
ac50fbac
CR
501 *) opt_static_link=yes ;;
502 esac
503 DEBUG= MALLOC_DEBUG=
504fi
505
506prefer_shared=yes
507prefer_static=no
508
509if test "$opt_static_link" = yes; then
510 prefer_static=yes
511 prefer_shared=no
512 # if we're using gcc, add `-static' to LDFLAGS, except on Solaris >= 2
74091dd4 513 if test "$GCC" = "yes"; then
ac50fbac
CR
514 STATIC_LD="-static"
515 case "$host_os" in
d233b485 516 solaris2*|linux*) ;;
ac50fbac
CR
517 *) LDFLAGS="$LDFLAGS -static" ;; # XXX experimental
518 esac
519 fi
520fi
521
522# set the appropriate make variables for building the "build tools"
523# modify defaults based on whether or not we are cross compiling, since the
524# options for the target host may not be appropriate for the build host
525if test "X$cross_compiling" = "Xno"; then
526 CC_FOR_BUILD=${CC_FOR_BUILD-'$(CC)'}
527 CPPFLAGS_FOR_BUILD=${CPPFLAGS_FOR_BUILD-"$CPPFLAGS"} # XXX - should it be '$(CPPFLAGS)'
d233b485
CR
528 if test X"$opt_profiling" = Xyes; then
529 LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-'$(BASE_LDFLAGS)'}
530 else
531 LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-'$(LDFLAGS)'}
532 fi
ac50fbac 533 # CFLAGS set above to default value if not passed in environment
8868edaf 534 if test -n "$want_auto_cflags" ; then
74091dd4
CR
535 CFLAGS_FOR_BUILD="${CFLAGS}"
536 BASE_CFLAGS_FOR_BUILD="${CFLAGS}"
8868edaf 537 else
74091dd4 538 # passed in environment
8868edaf 539 CFLAGS_FOR_BUILD=${CFLAGS-'$(CFLAGS)'}
74091dd4 540 BASE_CFLAGS_FOR_BUILD=${CFLAGS-'$(CFLAGS)'}
8868edaf 541 fi
ac50fbac
CR
542 LIBS_FOR_BUILD=${LIBS_FOR_BUILD-'$(LIBS)'}
543else
544 CC_FOR_BUILD=${CC_FOR_BUILD-"gcc"}
545 CPPFLAGS_FOR_BUILD=${CPPFLAGS_FOR_BUILD-""}
546 LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-""}
547 CFLAGS_FOR_BUILD=${CFLAGS_FOR_BUILD="-g"}
74091dd4 548 BASE_CFLAGS_FOR_BUILD=${BASE_CFLAGS_FOR_BUILD="-g"}
ac50fbac
CR
549 LIBS_FOR_BUILD=${LIBS_FOR_BUILD-""}
550fi
551
552AC_SUBST(CFLAGS)
553AC_SUBST(CPPFLAGS)
554AC_SUBST(LDFLAGS)
555AC_SUBST(STATIC_LD)
556
557AC_SUBST(CC_FOR_BUILD)
558AC_SUBST(CFLAGS_FOR_BUILD)
74091dd4
CR
559AC_SUBST(BASE_CFLAGS_FOR_BUILD)
560AC_SUBST(STYLE_CFLAGS)
ac50fbac
CR
561AC_SUBST(CPPFLAGS_FOR_BUILD)
562AC_SUBST(LDFLAGS_FOR_BUILD)
563AC_SUBST(LIBS_FOR_BUILD)
564
565AC_PROG_GCC_TRADITIONAL
566
567dnl BEGIN READLINE and HISTORY LIBRARY SECTION
568dnl prepare to allow bash to be linked against an already-installed readline
569
570dnl first test that the readline version is new enough to link bash against
571if test "$opt_readline" = yes && test "$opt_with_installed_readline" != "no"
572then
573 # If the user specified --with-installed-readline=PREFIX and PREFIX
574 # is not `yes', set ac_cv_rl_prefix to PREFIX
575 test $opt_with_installed_readline != "yes" && ac_cv_rl_prefix=$opt_with_installed_readline
576
577 RL_LIB_READLINE_VERSION
578
579 case "$ac_cv_rl_version" in
d233b485 580 8*|9*) ;;
ac50fbac
CR
581 *) opt_with_installed_readline=no
582 AC_MSG_WARN([installed readline library is too old to be linked with bash])
583 AC_MSG_WARN([using private bash version])
584 ;;
585 esac
586fi
587
588TILDE_LIB=-ltilde
589if test $opt_readline = yes; then
590 AC_DEFINE(READLINE)
591 if test "$opt_with_installed_readline" != "no" ; then
592 case "$opt_with_installed_readline" in
593 yes) RL_INCLUDE= ;;
594 *) case "$RL_INCLUDEDIR" in
595 /usr/include) ;;
596 *) RL_INCLUDE='-I${RL_INCLUDEDIR}' ;;
597 esac
598 ;;
599 esac
600 READLINE_DEP=
601 READLINE_LIB=-lreadline
602 # section for OS versions that don't allow unresolved symbols
603 # to be compiled into dynamic libraries.
604 case "$host_os" in
605 cygwin*) TILDE_LIB= ;;
606 esac
607 else
608 RL_LIBDIR='$(dot)/$(LIBSUBDIR)/readline'
609 READLINE_DEP='$(READLINE_LIBRARY)'
610 # section for OS versions that ship an older/broken version of
611 # readline as a standard dynamic library and don't allow a
612 # static version specified as -llibname to override the
613 # dynamic version
614 case "${host_os}" in
615 darwin[[89]]*|darwin10*) READLINE_LIB='${READLINE_LIBRARY}' ;;
616 *) READLINE_LIB=-lreadline ;;
617 esac
618 fi
619else
620 RL_LIBDIR='$(dot)/$(LIBSUBDIR)/readline'
621 READLINE_LIB= READLINE_DEP=
622fi
623if test $opt_history = yes || test $opt_bang_history = yes; then
624 if test $opt_history = yes; then
625 AC_DEFINE(HISTORY)
626 fi
627 if test $opt_bang_history = yes; then
628 AC_DEFINE(BANG_HISTORY)
629 fi
630 if test "$opt_with_installed_readline" != "no"; then
631 HIST_LIBDIR=$RL_LIBDIR
632 HISTORY_DEP=
633 HISTORY_LIB=-lhistory
634 case "$opt_with_installed_readline" in
635 yes) RL_INCLUDE= ;;
636 *) case "$RL_INCLUDEDIR" in
637 /usr/include) ;;
638 *) RL_INCLUDE='-I${RL_INCLUDEDIR}' ;;
639 esac
640 ;;
641 esac
642 else
643 HIST_LIBDIR='$(dot)/$(LIBSUBDIR)/readline'
644 HISTORY_DEP='$(HISTORY_LIBRARY)'
645 # section for OS versions that ship an older version of
646 # readline as a standard dynamic library and don't allow a
647 # static version specified as -llibname to override the
648 # dynamic version
649 case "${host_os}" in
650 darwin[[89]]*|darwin10*) HISTORY_LIB='${HISTORY_LIBRARY}' ;;
651 *) HISTORY_LIB=-lhistory ;;
652 esac
653 fi
654else
655 HIST_LIBDIR='$(dot)/$(LIBSUBDIR)/readline'
656 HISTORY_LIB= HISTORY_DEP=
657fi
658AC_SUBST(READLINE_LIB)
659AC_SUBST(READLINE_DEP)
660AC_SUBST(RL_LIBDIR)
661AC_SUBST(RL_INCLUDEDIR)
662AC_SUBST(RL_INCLUDE)
663AC_SUBST(HISTORY_LIB)
664AC_SUBST(HISTORY_DEP)
665AC_SUBST(HIST_LIBDIR)
666AC_SUBST(TILDE_LIB)
667
668dnl END READLINE and HISTORY LIBRARY SECTION
669
670dnl programs needed by the build and install process
671AC_PROG_INSTALL
672AC_CHECK_TOOL(AR, ar)
673dnl Set default for ARFLAGS, since autoconf does not have a macro for it.
674dnl This allows people to set it when running configure or make
675test -n "$ARFLAGS" || ARFLAGS="cr"
676AC_PROG_RANLIB
677AC_PROG_YACC
678AC_PROG_MAKE_SET
679
680case "$ac_cv_prog_YACC" in
681*bison*) ;;
682*) AC_MSG_WARN([bison not available; needed to process parse.y]) ;;
683esac
684
685case "$host_os" in
686opennt*|interix*) MAKE_SHELL="$INTERIX_ROOT/bin/sh" ;;
687*) MAKE_SHELL=/bin/sh ;;
688esac
689AC_SUBST(MAKE_SHELL)
690
691dnl this is similar to the expanded AC_PROG_RANLIB
692if test x$SIZE = x; then
693 if test x$ac_tool_prefix = x; then
694 SIZE=size
695 else
696 SIZE=${ac_tool_prefix}size
697 save_IFS=$IFS ; IFS=:
698 size_found=0
699 for dir in $PATH; do
700 if test -x $dir/$SIZE ; then
701 size_found=1
702 break
703 fi
704 done
705 if test $size_found -eq 0; then
706 SIZE=:
707 fi
708 IFS=$save_IFS
709 fi
710fi
711AC_SUBST(SIZE)
712
713m4_include([m4/stat-time.m4])
714m4_include([m4/timespec.m4])
715
74091dd4
CR
716m4_include([m4/strtoimax.m4])
717
8868edaf
CR
718dnl include files for gettext
719
720m4_include([m4/codeset.m4])
721m4_include([m4/extern-inline.m4])
722m4_include([m4/fcntl-o.m4])
723m4_include([m4/gettext.m4])
724m4_include([m4/glibc2.m4])
725m4_include([m4/glibc21.m4])
726m4_include([m4/host-cpu-c-abi.m4])
727m4_include([m4/iconv.m4])
728m4_include([m4/intdiv0.m4])
729m4_include([m4/intl.m4])
730m4_include([m4/intlmacosx.m4])
731m4_include([m4/intl-thread-locale.m4])
732m4_include([m4/intmax.m4])
733m4_include([m4/inttypes-pri.m4])
734m4_include([m4/inttypes.m4])
735m4_include([m4/inttypes_h.m4])
736m4_include([m4/lcmessage.m4])
737m4_include([m4/lib-ld.m4])
738m4_include([m4/lib-link.m4])
739m4_include([m4/lib-prefix.m4])
740m4_include([m4/lock.m4])
741m4_include([m4/nls.m4])
742m4_include([m4/po.m4])
743m4_include([m4/printf-posix.m4])
744m4_include([m4/progtest.m4])
745m4_include([m4/pthread_rwlock_rdlock.m4])
746m4_include([m4/size_max.m4])
747m4_include([m4/stdint_h.m4])
748m4_include([m4/threadlib.m4])
749m4_include([m4/uintmax_t.m4])
750m4_include([m4/ulonglong.m4])
751m4_include([m4/visibility.m4])
752m4_include([m4/wchar_t.m4])
753m4_include([m4/wint_t.m4])
754m4_include([m4/xsize.m4])
755
ac50fbac
CR
756dnl C compiler characteristics
757AC_C_CONST
758AC_C_INLINE
759AC_C_BIGENDIAN
760AC_C_STRINGIZE
74091dd4 761AC_TYPE_LONG_DOUBLE
ac50fbac
CR
762AC_C_PROTOTYPES
763AC_C_CHAR_UNSIGNED
764AC_C_VOLATILE
765AC_C_RESTRICT
766
767dnl initialize GNU gettext
74091dd4 768BASH_GNU_GETTEXT([no-libtool], [need-ngettext], [lib/intl])
ac50fbac
CR
769
770dnl header files
771AC_HEADER_DIRENT
8868edaf 772AC_HEADER_MAJOR
ac50fbac
CR
773
774BASH_HEADER_INTTYPES
775
776AC_CHECK_HEADERS(unistd.h stdlib.h stdarg.h varargs.h limits.h string.h \
777 memory.h locale.h termcap.h termio.h termios.h dlfcn.h \
778 stdbool.h stddef.h stdint.h netdb.h pwd.h grp.h strings.h \
779 regex.h syslog.h ulimit.h)
a0c0a00f 780AC_CHECK_HEADERS(sys/pte.h sys/stream.h sys/select.h sys/file.h sys/ioctl.h \
8868edaf 781 sys/mman.h sys/param.h sys/random.h sys/socket.h sys/stat.h \
ac50fbac
CR
782 sys/time.h sys/times.h sys/types.h sys/wait.h)
783AC_CHECK_HEADERS(netinet/in.h arpa/inet.h)
784
785dnl sys/ptem.h requires definitions from sys/stream.h on systems where it
786dnl exists
787AC_CHECK_HEADER(sys/ptem.h, , ,[[
788#if HAVE_SYS_STREAM_H
789# include <sys/stream.h>
790#endif
791]])
792
a0c0a00f
CR
793dnl SunOS 4 needs to include <sys/time.h> before <sys/resource.h> to compile
794dnl autoconf complains about presence but inability to compile
795AC_CHECK_HEADER(sys/resource.h, AC_DEFINE(HAVE_SYS_RESOURCE_H), [], [[
796#if HAVE_SYS_TIME_H
797# include <sys/time.h>
798#endif
799]])
800
ac50fbac
CR
801dnl special checks for libc functions
802AC_FUNC_ALLOCA
a0c0a00f 803AC_FUNC_CHOWN
ac50fbac 804AC_FUNC_GETPGRP
ac50fbac
CR
805AC_FUNC_VPRINTF
806AC_FUNC_STRCOLL
807
808dnl if we're not using the bash malloc but require the C alloca, set things
809dnl up to build a libmalloc.a containing only alloca.o
810
811if test "$ac_cv_func_alloca_works" = "no" && test "$opt_bash_malloc" = "no"; then
812 MALLOC_TARGET=alloca
813 MALLOC_SRC=alloca.c
814
815 MALLOC_LIB='-lmalloc'
816 MALLOC_LIBRARY='$(ALLOC_LIBDIR)/libmalloc.a'
817 MALLOC_LDFLAGS='-L$(ALLOC_LIBDIR)'
818 MALLOC_DEP='$(MALLOC_LIBRARY)'
819fi
820
821dnl if vprintf is not in libc, see if it's defined in stdio.h
822if test "$ac_cv_func_vprintf" = no; then
823 AC_MSG_CHECKING(for declaration of vprintf in stdio.h)
824 AC_EGREP_HEADER([[int[ ]*vprintf[^a-zA-Z0-9]]],stdio.h,ac_cv_func_vprintf=yes)
825 AC_MSG_RESULT($ac_cv_func_vprintf)
826 if test $ac_cv_func_vprintf = yes; then
827 AC_DEFINE(HAVE_VPRINTF)
828 fi
829fi
830
831if test "$ac_cv_func_vprintf" = no && test "$ac_cv_func__doprnt" = "yes"; then
832 AC_LIBOBJ(vprint)
833fi
834
ac50fbac
CR
835dnl checks for certain version-specific system calls and libc functions
836AC_CHECK_FUNC(__setostype, AC_DEFINE(HAVE_SETOSTYPE))
837AC_CHECK_FUNC(wait3, AC_DEFINE(HAVE_WAIT3))
838
839dnl checks for missing libc functions
74091dd4 840AC_CHECK_FUNC(mkfifo, AC_DEFINE(HAVE_MKFIFO), AC_DEFINE(MKFIFO_MISSING))
ac50fbac
CR
841
842dnl checks for system calls
8868edaf
CR
843AC_CHECK_FUNCS(dup2 eaccess fcntl getdtablesize getentropy getgroups \
844 gethostname getpagesize getpeername getrandom getrlimit \
845 getrusage gettimeofday kill killpg lstat pselect readlink \
846 select setdtablesize setitimer tcgetpgrp uname ulimit waitpid)
ac50fbac
CR
847AC_REPLACE_FUNCS(rename)
848
849dnl checks for c library functions
850AC_CHECK_FUNCS(bcopy bzero confstr faccessat fnmatch \
851 getaddrinfo gethostbyname getservbyname getservent inet_aton \
a0c0a00f 852 imaxdiv memmove pathconf putenv raise random regcomp regexec \
ac50fbac
CR
853 setenv setlinebuf setlocale setvbuf siginterrupt strchr \
854 sysconf syslog tcgetattr times ttyname tzset unsetenv)
855
856AC_CHECK_FUNCS(vasprintf asprintf)
857AC_CHECK_FUNCS(isascii isblank isgraph isprint isspace isxdigit)
858AC_CHECK_FUNCS(getpwent getpwnam getpwuid)
8868edaf
CR
859AC_CHECK_FUNCS(mkstemp mkdtemp)
860AC_CHECK_FUNCS(arc4random)
861
ac50fbac
CR
862AC_REPLACE_FUNCS(getcwd memset)
863AC_REPLACE_FUNCS(strcasecmp strcasestr strerror strftime strnlen strpbrk strstr)
74091dd4 864AC_REPLACE_FUNCS(strtod strtol strtoul strtoll strtoull strtoumax)
ac50fbac
CR
865AC_REPLACE_FUNCS(dprintf)
866AC_REPLACE_FUNCS(strchrnul)
867AC_REPLACE_FUNCS(strdup)
868
a0c0a00f 869AC_CHECK_HEADERS(libaudit.h)
ac50fbac
CR
870AC_CHECK_DECLS([AUDIT_USER_TTY],,, [[#include <linux/audit.h>]])
871
872AC_CHECK_DECLS([confstr])
873AC_CHECK_DECLS([printf])
874AC_CHECK_DECLS([sbrk])
875AC_CHECK_DECLS([setregid])
876AC_CHECK_DECLS([strcpy])
877AC_CHECK_DECLS([strsignal])
878
8868edaf
CR
879AC_CHECK_FUNCS(setresuid setresgid)
880
ac50fbac
CR
881dnl Extra test to detect the horribly broken HP/UX 11.00 strtold(3)
882AC_CHECK_DECLS([strtold], [
883 AC_MSG_CHECKING([for broken strtold])
884 AC_CACHE_VAL(bash_cv_strtold_broken,
74091dd4
CR
885 [AC_COMPILE_IFELSE(
886 [AC_LANG_PROGRAM(
887 [[#include <stdlib.h>]],
888 [[long double r; char *foo, bar; r = strtold(foo, &bar);]]
889 )],
890 [bash_cv_strtold_broken=no],[bash_cv_strtold_broken=yes])
891 ]
ac50fbac
CR
892 )
893 AC_MSG_RESULT($bash_cv_strtold_broken)
894 if test "$bash_cv_strtold_broken" = "yes" ; then
895 AC_DEFINE(STRTOLD_BROKEN)
896 fi
897])
898
74091dd4
CR
899AC_CHECK_DECLS(strtol)
900AC_CHECK_DECLS(strtoll)
901AC_CHECK_DECLS(strtoul)
902AC_CHECK_DECLS(strtoull)
903AC_CHECK_DECLS(strtoumax)
ac50fbac
CR
904
905AC_FUNC_MKTIME
906
907dnl
908dnl Checks for lib/intl and related code (uses some of the output from
74091dd4 909dnl BASH_GNU_GETTEXT)
ac50fbac
CR
910dnl
911
912AC_CHECK_HEADERS([argz.h errno.h fcntl.h malloc.h stdio_ext.h])
913
914dnl AC_FUNC_MALLOC
915AC_FUNC_MMAP
916AC_CHECK_FUNCS([__argz_count __argz_next __argz_stringify dcgettext mempcpy \
d233b485 917 munmap mremap stpcpy strcspn])
ac50fbac
CR
918
919INTL_DEP= INTL_INC= LIBINTL_H=
920if test "x$USE_INCLUDED_LIBINTL" = "xyes"; then
921 INTL_DEP='${INTL_LIBDIR}/libintl.a'
922 INTL_INC='-I${INTL_LIBSRC} -I${INTL_BUILDDIR}'
923 LIBINTL_H='${INTL_BUILDDIR}/libintl.h'
924fi
925AC_SUBST(INTL_DEP)
926AC_SUBST(INTL_INC)
927AC_SUBST(LIBINTL_H)
928
929dnl
930dnl End of checks needed by files in lib/intl
931dnl
932
933BASH_CHECK_MULTIBYTE
934
935dnl checks for the dynamic loading library functions in libc and libdl
936if test "$opt_static_link" != yes; then
937AC_CHECK_LIB(dl, dlopen)
938AC_CHECK_FUNCS(dlopen dlclose dlsym)
939fi
940
ac50fbac
CR
941dnl network functions -- check for inet_aton again
942if test "$ac_cv_func_inet_aton" != 'yes'; then
943BASH_FUNC_INET_ATON
944fi
945
946dnl libraries
947dnl this is reportedly no longer necessary for irix[56].?
948case "$host_os" in
949irix4*) AC_CHECK_LIB(sun, getpwent) ;;
950esac
951
952dnl check for getpeername in the socket library only if it's not in libc
953if test "$ac_cv_func_getpeername" = no; then
954 BASH_CHECK_LIB_SOCKET
955fi
956dnl check for gethostbyname in socket libraries if it's not in libc
957if test "$ac_cv_func_gethostbyname" = no; then
958 BASH_FUNC_GETHOSTBYNAME
959fi
960
961dnl system types
962AC_TYPE_GETGROUPS
963AC_TYPE_OFF_T
964AC_TYPE_MODE_T
965AC_TYPE_UID_T
966AC_TYPE_PID_T
967AC_TYPE_SIZE_T
a0c0a00f
CR
968AC_TYPE_UINTPTR_T
969
ac50fbac
CR
970AC_CHECK_TYPE(ssize_t, int)
971AC_CHECK_TYPE(time_t, long)
972
74091dd4
CR
973AC_TYPE_LONG_LONG_INT
974AC_TYPE_UNSIGNED_LONG_LONG_INT
ac50fbac 975
ac50fbac
CR
976BASH_TYPE_SIG_ATOMIC_T
977
978AC_CHECK_SIZEOF(char, 1)
979AC_CHECK_SIZEOF(short, 2)
980AC_CHECK_SIZEOF(int, 4)
981AC_CHECK_SIZEOF(long, 4)
982AC_CHECK_SIZEOF(char *, 4)
74091dd4 983AC_CHECK_SIZEOF(size_t, 4)
ac50fbac
CR
984AC_CHECK_SIZEOF(double, 8)
985AC_CHECK_SIZEOF([long long], 8)
986
987AC_CHECK_TYPE(u_int, [unsigned int])
988AC_CHECK_TYPE(u_long, [unsigned long])
989
990BASH_TYPE_BITS16_T
991BASH_TYPE_U_BITS16_T
992BASH_TYPE_BITS32_T
993BASH_TYPE_U_BITS32_T
994BASH_TYPE_BITS64_T
995
996BASH_TYPE_PTRDIFF_T
997
998dnl structures
999AC_HEADER_STAT
1000
1001dnl system services
1002AC_SYS_INTERPRETER
1003if test $ac_cv_sys_interpreter = yes; then
1004AC_DEFINE(HAVE_HASH_BANG_EXEC)
1005fi
1006
1007dnl Miscellaneous Bash tests
1008if test "$ac_cv_func_lstat" = "no"; then
1009BASH_FUNC_LSTAT
1010fi
1011
1012dnl behavior of system calls and library functions
ac50fbac
CR
1013BASH_FUNC_DUP2_CLOEXEC_CHECK
1014BASH_SYS_PGRP_SYNC
1015BASH_SYS_SIGNAL_VINTAGE
1016
1017dnl checking for the presence of certain library symbols
1018BASH_SYS_ERRLIST
1019BASH_SYS_SIGLIST
1020BASH_UNDER_SYS_SIGLIST
1021
1022dnl various system types
ac50fbac
CR
1023BASH_CHECK_TYPE(clock_t, [#include <sys/times.h>], long)
1024BASH_CHECK_TYPE(sigset_t, [#include <signal.h>], int)
ac50fbac
CR
1025if test "$ac_cv_header_sys_socket_h" = "yes"; then
1026BASH_CHECK_TYPE(socklen_t, [#include <sys/socket.h>], [unsigned int], HAVE_SOCKLEN_T)
1027fi
74091dd4
CR
1028
1029AC_CHECK_TYPE(quad_t, AC_DEFINE([HAVE_QUAD_T], [1]), [], )
ac50fbac
CR
1030BASH_TYPE_RLIMIT
1031
74091dd4
CR
1032AC_TYPE_INTMAX_T
1033AC_TYPE_UINTMAX_T
1034
ac50fbac
CR
1035AC_CHECK_SIZEOF(intmax_t, 8)
1036
1037dnl presence and contents of structures used by system calls
1038BASH_STRUCT_TERMIOS_LDISC
1039BASH_STRUCT_TERMIO_LDISC
1040BASH_STRUCT_DIRENT_D_INO
1041BASH_STRUCT_DIRENT_D_FILENO
1042BASH_STRUCT_DIRENT_D_NAMLEN
1043BASH_STRUCT_WINSIZE
1044BASH_STRUCT_TIMEVAL
1045AC_CHECK_MEMBERS([struct stat.st_blocks])
1046AC_STRUCT_TM
1047AC_STRUCT_TIMEZONE
1048BASH_STRUCT_TIMEZONE
1049
1050BASH_STRUCT_WEXITSTATUS_OFFSET
1051
1052BASH_CHECK_TYPE_STRUCT_TIMESPEC
1053BASH_STAT_TIME
1054
d233b485
CR
1055dnl checks for system calls
1056BASH_FUNC_SBRK
1057
ac50fbac
CR
1058dnl presence and behavior of C library functions
1059BASH_FUNC_STRSIGNAL
1060BASH_FUNC_OPENDIR_CHECK
1061BASH_FUNC_ULIMIT_MAXFDS
1062BASH_FUNC_FPURGE
1063BASH_FUNC_GETENV
1064if test "$ac_cv_func_getcwd" = "yes"; then
1065BASH_FUNC_GETCWD
1066fi
1067BASH_FUNC_POSIX_SETJMP
1068BASH_FUNC_STRCOLL
1069BASH_FUNC_SNPRINTF
1070BASH_FUNC_VSNPRINTF
1071
74091dd4
CR
1072BASH_FUNC_STRTOIMAX
1073
ac50fbac
CR
1074dnl If putenv or unsetenv is not present, set the right define so the
1075dnl prototype and declaration in lib/sh/getenv.c will be standard-conformant
1076
1077if test "$ac_cv_func_putenv" = "yes"; then
1078BASH_FUNC_STD_PUTENV
1079else
1080AC_DEFINE(HAVE_STD_PUTENV)
1081fi
1082if test "$ac_cv_func_unsetenv" = "yes"; then
1083BASH_FUNC_STD_UNSETENV
1084else
1085AC_DEFINE(HAVE_STD_UNSETENV)
1086fi
1087
1088BASH_FUNC_PRINTF_A_FORMAT
1089
d233b485
CR
1090BASH_FUNC_FNMATCH_EQUIV_FALLBACK
1091
ac50fbac
CR
1092dnl presence and behavior of OS functions
1093BASH_SYS_REINSTALL_SIGHANDLERS
1094BASH_SYS_JOB_CONTROL_MISSING
1095BASH_SYS_NAMED_PIPES
1096
1097dnl presence of certain CPP defines
1098AC_HEADER_TIOCGWINSZ
1099BASH_HAVE_TIOCSTAT
1100BASH_HAVE_FIONREAD
1101
1102BASH_CHECK_WCONTINUED
1103
1104dnl miscellaneous
1105BASH_CHECK_SPEED_T
1106BASH_CHECK_GETPW_FUNCS
1107BASH_CHECK_RTSIGS
1108BASH_CHECK_SYS_SIGLIST
1109
1110dnl special checks
1111case "$host_os" in
1112hpux*) BASH_CHECK_KERNEL_RLIMIT ;;
1113esac
1114
1115if test "$opt_readline" = yes; then
1116dnl yuck
1117case "$host_os" in
1118aix*) prefer_curses=yes ;;
1119esac
1120BASH_CHECK_LIB_TERMCAP
1121fi
1122AC_SUBST(TERMCAP_LIB)
1123AC_SUBST(TERMCAP_DEP)
1124
1125BASH_CHECK_DEV_FD
1126BASH_CHECK_DEV_STDIN
1127BASH_SYS_DEFAULT_MAIL_DIR
1128
1129if test "$bash_cv_job_control_missing" = missing; then
1130 opt_job_control=no
1131fi
1132
1133if test "$opt_job_control" = yes; then
1134AC_DEFINE(JOB_CONTROL)
1135JOBS_O=jobs.o
1136else
1137JOBS_O=nojobs.o
1138fi
1139
1140AC_SUBST(JOBS_O)
1141
1142dnl Defines that we want to propagate to the Makefiles in subdirectories,
1143dnl like glob and readline
1144
1145LOCAL_DEFS=-DSHELL
1146
1147dnl use this section to possibly define more cpp variables, specify local
1148dnl libraries, and specify any additional local cc or ld flags
1149dnl
8868edaf 1150dnl most of these are really old; this should really go away someday
ac50fbac
CR
1151
1152case "${host_os}" in
1153sysv4.2*) AC_DEFINE(SVR4_2)
1154 AC_DEFINE(SVR4) ;;
1155sysv4*) AC_DEFINE(SVR4) ;;
1156sysv5*) AC_DEFINE(SVR5) ;;
8868edaf
CR
1157hpux9*) LOCAL_CFLAGS="-DHPUX9 -DHPUX -DTGETENT_BROKEN -DTGETFLAG_BROKEN" ;;
1158hpux*) LOCAL_CFLAGS="-DHPUX -DTGETENT_BROKEN -DTGETFLAG_BROKEN" ;;
ac50fbac
CR
1159dgux*) LOCAL_CFLAGS=-D_DGUX_SOURCE; LOCAL_LIBS=-ldgc ;;
1160isc*) LOCAL_CFLAGS=-Disc386 ;;
1161rhapsody*) LOCAL_CFLAGS=-DRHAPSODY ;;
1162darwin*) LOCAL_CFLAGS=-DMACOSX ;;
1163sco3.2v5*) LOCAL_CFLAGS="-b elf -DWAITPID_BROKEN -DPATH_MAX=1024" ;;
1164sco3.2v4*) LOCAL_CFLAGS="-DMUST_UNBLOCK_CHLD -DPATH_MAX=1024" ;;
1165sco3.2*) LOCAL_CFLAGS=-DMUST_UNBLOCK_CHLD ;;
1166sunos4*) LOCAL_CFLAGS=-DSunOS4 ;;
1167solaris2.5*) LOCAL_CFLAGS="-DSunOS5 -DSOLARIS" ;;
1168solaris2.8*) LOCAL_CFLAGS=-DSOLARIS ;;
1169solaris2.9*) LOCAL_CFLAGS=-DSOLARIS ;;
1170solaris2.10*) LOCAL_CFLAGS=-DSOLARIS ;;
1171solaris2*) LOCAL_CFLAGS=-DSOLARIS ;;
1172lynxos*) LOCAL_CFLAGS=-DRECYCLES_PIDS ;;
1173linux*) LOCAL_LDFLAGS=-rdynamic # allow dynamic loading
1174 case "`uname -r`" in
d233b485
CR
1175 1.*|2.[[0123]]*) : ;;
1176 *) AC_DEFINE(PGRP_PIPE) ;;
ac50fbac 1177 esac ;;
d233b485 1178netbsd*|openbsd*) LOCAL_CFLAGS="-DDEV_FD_STAT_BROKEN" ;;
74091dd4 1179freebsd*|midnightbsd*) LOCAL_CFLAGS='-DHEREDOC_PIPESIZE=4096' ;;
d233b485 1180*qnx[[67]]*) LOCAL_LIBS="-lncurses" ;;
ac50fbac
CR
1181*qnx*) LOCAL_CFLAGS="-Dqnx -F -3s" LOCAL_LDFLAGS="-3s" LOCAL_LIBS="-lunix -lncurses" ;;
1182powerux*) LOCAL_LIBS="-lgen" ;;
1183cygwin*) LOCAL_CFLAGS=-DRECYCLES_PIDS ;;
1184opennt*|interix*) LOCAL_CFLAGS="-DNO_MAIN_ENV_ARG -DBROKEN_DIRENT_D_INO -D_POSIX_SOURCE -D_ALL_SOURCE -DRECYCLES_PIDS" ;;
1185*openstep*) LOCAL_CFLAGS="-D__APPLE_CC__" ;;
1186esac
1187
1188dnl Stanza for OS/compiler pair-specific flags
1189case "${host_os}-${CC}" in
1190aix4.2*-*gcc*) LOCAL_LDFLAGS="-Xlinker -bexpall -Xlinker -brtl" ;;
1191aix4.2*) LOCAL_LDFLAGS="-bexpall -brtl" ;;
1192bsdi4*-*gcc*) LOCAL_LDFLAGS="-rdynamic" ;; # allow dynamic loading, like Linux
a0c0a00f
CR
1193bsdi5*-*gcc*) LOCAL_LDFLAGS="-rdynamic" ;; # allow dynamic loading, like Linux
1194hpux11*-gcc*) LOCAL_LDFLAGS="-Wl,-E" ;; # allow dynamic loading
ac50fbac
CR
1195esac
1196
1197dnl FreeBSD-3.x can have either a.out or ELF
1198case "${host_os}" in
1199freebsd[[3-9]]*)
1200 if test -x /usr/bin/objformat && test "`/usr/bin/objformat`" = "elf" ; then
1201 LOCAL_LDFLAGS=-rdynamic # allow dynamic loading
1202 fi ;;
1203freebsdelf*) LOCAL_LDFLAGS=-rdynamic ;; # allow dynamic loading
1204dragonfly*) LOCAL_LDFLAGS=-rdynamic ;; # allow dynamic loading
74091dd4 1205midnightbsd*) LOCAL_LDFLAGS=-rdynamic ;; # allow dynamic loading
ac50fbac
CR
1206esac
1207
1208case "$host_cpu" in
1209*cray*) LOCAL_CFLAGS="-DCRAY" ;; # shell var so config.h can use it
1210esac
1211
1212case "$host_cpu-$host_os" in
1213ibmrt-*bsd4*) LOCAL_CFLAGS="-ma -U__STDC__" ;;
1214esac
1215
1216case "$host_cpu-$host_vendor-$host_os" in
1217m88k-motorola-sysv3) LOCAL_CFLAGS=-DWAITPID_BROKEN ;;
1218mips-pyramid-sysv4) LOCAL_CFLAGS=-Xa ;;
1219esac
1220
d233b485 1221# turn off paren warnings in gcc
74091dd4 1222#CFLAGS="$CFLAGS ${STYLE_CFLAGS}"
d233b485 1223
ac50fbac
CR
1224#
1225# Shared object configuration section. These values are generated by
1226# ${srcdir}/support/shobj-conf
1227#
1228if test "$ac_cv_func_dlopen" = "yes" && test -f ${srcdir}/support/shobj-conf
1229then
1230 AC_MSG_CHECKING(shared object configuration for loadable builtins)
1231 eval `${CONFIG_SHELL-/bin/sh} ${srcdir}/support/shobj-conf -C "${CC}" -c "${host_cpu}" -o "${host_os}" -v "${host_vendor}"`
1232 AC_SUBST(SHOBJ_CC)
1233 AC_SUBST(SHOBJ_CFLAGS)
1234 AC_SUBST(SHOBJ_LD)
1235 AC_SUBST(SHOBJ_LDFLAGS)
1236 AC_SUBST(SHOBJ_XLDFLAGS)
1237 AC_SUBST(SHOBJ_LIBS)
1238 AC_SUBST(SHOBJ_STATUS)
1239 AC_MSG_RESULT($SHOBJ_STATUS)
d233b485
CR
1240else
1241 SHOBJ_STATUS=unsupported
1242 AC_SUBST(SHOBJ_STATUS)
ac50fbac
CR
1243fi
1244
1245# try to create a directory tree if the source is elsewhere
1246# this should be packaged into a script accessible via ${srcdir}/support
1247case "$srcdir" in
1248.) ;;
1249*) for d in doc tests support lib examples; do # dirs
1250 test -d $d || mkdir $d
1251 done
1252 for ld in readline glob tilde malloc sh termcap; do # libdirs
1253 test -d lib/$ld || mkdir lib/$ld
1254 done
1255 test -d examples/loadables || mkdir examples/loadables # loadable builtins
1256 test -d examples/loadables/perl || mkdir examples/loadables/perl
1257 ;;
1258esac
1259
1260BUILD_DIR=`pwd`
1261case "$BUILD_DIR" in
1262*\ *) BUILD_DIR=`echo "$BUILD_DIR" | sed 's: :\\\\ :g'` ;;
1263*) ;;
1264esac
1265
1266if test -z "$localedir"; then
1267 localedir='${datarootdir}/locale'
1268fi
1269if test -z "$datarootdir"; then
1270 datarootdir='${prefix}/share'
1271fi
1272
1273AC_SUBST(PROFILE_FLAGS)
1274
1275AC_SUBST(incdir)
1276AC_SUBST(BUILD_DIR)
1277
1278# Some versions of autoconf don't substitute these automatically
1279AC_SUBST(datarootdir)
1280AC_SUBST(localedir)
1281
a0c0a00f
CR
1282# directory where we install dynamically loadable builtins
1283if test -z "$loadablesdir"; then
1284 loadablesdir='${libdir}/bash'
1285fi
1286AC_SUBST(loadablesdir)
1287if test -z "$headersdir"; then
1288 headersdir='$(includedir)/$(PACKAGE_NAME)'
1289fi
1290AC_SUBST(headersdir)
1291
ac50fbac
CR
1292AC_SUBST(YACC)
1293AC_SUBST(AR)
1294AC_SUBST(ARFLAGS)
1295
1296AC_SUBST(BASHVERS)
1297AC_SUBST(RELSTATUS)
1298AC_SUBST(DEBUG)
1299AC_SUBST(MALLOC_DEBUG)
1300
1301AC_SUBST(host_cpu)
1302AC_SUBST(host_vendor)
1303AC_SUBST(host_os)
1304
1305AC_SUBST(LOCAL_LIBS)
1306AC_SUBST(LOCAL_CFLAGS)
1307AC_SUBST(LOCAL_LDFLAGS)
1308AC_SUBST(LOCAL_DEFS)
1309
1310#AC_SUBST(ALLOCA_SOURCE)
1311#AC_SUBST(ALLOCA_OBJECT)
1312
74091dd4
CR
1313AC_CONFIG_FILES([Makefile builtins/Makefile lib/readline/Makefile \
1314 lib/glob/Makefile lib/intl/Makefile \
1315 lib/malloc/Makefile lib/sh/Makefile lib/termcap/Makefile \
1316 lib/tilde/Makefile doc/Makefile support/Makefile \
1317 po/Makefile.in examples/loadables/Makefile \
1318 examples/loadables/Makefile.inc \
1319 examples/loadables/Makefile.sample \
1320 examples/loadables/perl/Makefile \
1321 support/bash.pc support/bashbug.sh])
1322
1323dnl Makefile uses this timestamp file to record whether config.h is up to date.
1324AC_CONFIG_COMMANDS([stamp-h], [echo timestamp > stamp-h])
1325
1326AC_OUTPUT