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