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