*** empty log message ***
[deliverable/binutils-gdb.git] / gdb / configure.in
CommitLineData
c906108c 1dnl Autoconf configure script for GDB, the GNU debugger.
0f0cffd2 2dnl Copyright 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
b6ba6518 3dnl Free Software Foundation, Inc.
c906108c
SS
4dnl
5dnl This file is part of GDB.
6dnl
7dnl This program is free software; you can redistribute it and/or modify
8dnl it under the terms of the GNU General Public License as published by
9dnl the Free Software Foundation; either version 2 of the License, or
10dnl (at your option) any later version.
11dnl
12dnl This program is distributed in the hope that it will be useful,
13dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
14dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15dnl GNU General Public License for more details.
16dnl
17dnl You should have received a copy of the GNU General Public License
18dnl along with this program; if not, write to the Free Software
19dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
20
21dnl Process this file with autoconf to produce a configure script.
22
23AC_PREREQ(2.13)dnl
24AC_INIT(main.c)
25AC_CONFIG_HEADER(config.h:config.in)
413ccac7 26AM_MAINTAINER_MODE
c906108c
SS
27
28AC_PROG_CC
14abd0fb 29AC_GNU_SOURCE
c906108c
SS
30AC_AIX
31AC_ISC_POSIX
32AM_PROG_CC_STDC
33
34AC_CONFIG_AUX_DIR(`cd $srcdir;pwd`/..)
35AC_CANONICAL_SYSTEM
36
8bb2c122
MK
37# FIXME: kettenis/20030102: The AC_PROG_RANLIB from Autoconf 2.13
38# doesn't support cross-compilation, but the one from Autoconf 2.5x
39# does. Override RANLIB here (i.e. before running AC_PROG_RANLIB) to
40# deal with the lossage. Note that CY_GNU_GETTEXT currently calls
f6e85fc8 41# AC_PROG_RANLIB. This can be removed when we switch to Autoconf
8bb2c122
MK
42# 2.5x.
43AC_CHECK_TOOL(RANLIB, ranlib, :)
44
0fbb3da7 45dnl Set up for gettext. PACKAGE is used when we call bindtextdomain.
c906108c
SS
46ALL_LINGUAS=
47CY_GNU_GETTEXT
0fbb3da7
TT
48AC_DEFINE(PACKAGE, "gdb", [Name of this package. ])
49
5b5d99cf
JB
50debugdir=${libdir}/debug
51
52AC_ARG_WITH(separate-debug-dir,
53[ --with-separate-debug-dir=path Look for global separate debug info in this path [LIBDIR/debug]],
54[debugdir="${withval}"])
55
56AC_DEFINE_DIR(DEBUGDIR, debugdir,
57 [Global directory for separate debug files. ])
58#AC_DEFINE_UNQUOTED(DEBUGDIR, "$debugdir"),
c906108c
SS
59
60dnl List of object files added by configure.
61
62CONFIG_OBS=
66b965bb 63CONFIG_LIB_OBS=
c906108c
SS
64CONFIG_DEPS=
65CONFIG_SRCS=
fb40c209
AC
66CONFIG_INITS=
67ENABLE_CFLAGS=
b3a90332
AC
68CONFIG_ALL=
69CONFIG_CLEAN=
e56ac5c3
AC
70CONFIG_INSTALL=
71CONFIG_UNINSTALL=
c906108c 72
8dcde887
MK
73AC_CONFIG_SUBDIRS(doc testsuite)
74configdirs=
96baa820 75
27e9bf90 76. $srcdir/configure.host
c906108c 77
27e9bf90 78. $srcdir/configure.tgt
c906108c 79
27e9bf90
MK
80# Fetch the default architecture and default target vector from BFD.
81targ=$target; . $srcdir/../bfd/config.bfd
5c8cc331 82
27e9bf90
MK
83# We only want the first architecture, so strip off the others if
84# there is more than one.
85targ_archs=`echo $targ_archs | sed 's/ .*//'`
5c8cc331 86
27e9bf90
MK
87if test "x$targ_archs" != x; then
88 AC_DEFINE_UNQUOTED(DEFAULT_BFD_ARCH, $targ_archs,
89 [Define to BFD's default architecture. ])
1ba607ad 90fi
27e9bf90
MK
91if test "x$targ_defvec" != x; then
92 AC_DEFINE_UNQUOTED(DEFAULT_BFD_VEC, $targ_defvec,
93 [Define to BFD's default target vector. ])
1ba607ad
AC
94fi
95
8bb2c122
MK
96AC_ARG_PROGRAM
97
627af7ea
MK
98# The CLI cannot be disabled yet, but may be in the future.
99
100# Enable CLI.
101AC_ARG_ENABLE(gdbcli,
102[ --disable-gdbcli disable command-line interface (CLI)],
103 [case $enableval in
104 yes)
105 ;;
106 no)
107 AC_MSG_ERROR([the command-line interface cannot be disabled yet]) ;;
108 *)
109 AC_MSG_ERROR([bad value $enableval for --enable-gdbcli]) ;;
110 esac],
111 [enable_gdbcli=yes])
112if test x"$enable_gdbcli" = xyes; then
113 if test -d $srcdir/cli; then
114 CONFIG_OBS="$CONFIG_OBS \$(SUBDIR_CLI_OBS)"
115 CONFIG_DEPS="$CONFIG_DEPS \$(SUBDIR_CLI_DEPS)"
116 CONFIG_SRCS="$CONFIG_SRCS \$(SUBDIR_CLI_SRCS)"
117 CONFIG_INITS="$CONFIG_INITS \$(SUBDIR_CLI_INITS)"
118 ENABLE_CFLAGS="$ENABLE_CFLAGS \$(SUBDIR_CLI_CFLAGS)"
119 CONFIG_ALL="$CONFIG_ALL \$(SUBDIR_CLI_ALL)"
120 CONFIG_CLEAN="$CONFIG_CLEAN \$(SUBDIR_CLI_CLEAN)"
121 CONFIG_INSTALL="$CONFIG_INSTALL \$(SUBDIR_CLI_INSTALL)"
122 CONFIG_UNINSTALL="$CONFIG_UNINSTALL \$(SUBDIR_CLI_UNINSTALL)"
123 fi
124fi
125
126# Enable MI.
127AC_ARG_ENABLE(gdbmi,
128[ --disable-gdbmi disable machine-interface (MI)],
129 [case $enableval in
130 yes | no)
131 ;;
132 *)
133 AC_MSG_ERROR([bad value $enableval for --enable-gdbmi]) ;;
134 esac],
135 [enable_gdbmi=yes])
136if test x"$enable_gdbmi" = xyes; then
137 if test -d $srcdir/mi; then
138 CONFIG_OBS="$CONFIG_OBS \$(SUBDIR_MI_OBS)"
139 CONFIG_DEPS="$CONFIG_DEPS \$(SUBDIR_MI_DEPS)"
140 CONFIG_SRCS="$CONFIG_SRCS \$(SUBDIR_MI_SRCS)"
141 CONFIG_INITS="$CONFIG_INITS \$(SUBDIR_MI_INITS)"
142 ENABLE_CFLAGS="$ENABLE_CFLAGS \$(SUBDIR_MI_CFLAGS)"
143 CONFIG_ALL="$CONFIG_ALL \$(SUBDIR_MI_ALL)"
144 CONFIG_CLEAN="$CONFIG_CLEAN \$(SUBDIR_MI_CLEAN)"
145 CONFIG_INSTALL="$CONFIG_INSTALL \$(SUBDIR_MI_INSTALL)"
146 CONFIG_UNINSTALL="$CONFIG_UNINSTALL \$(SUBDIR_MI_UNINSTALL)"
147 fi
148fi
149
287c1a40
MK
150# Enable TUI.
151AC_ARG_ENABLE(tui,
152[ --enable-tui enable full-screen terminal user interface (TUI)],
153 [case $enableval in
154 yes | no)
155 ;;
156 *)
157 AC_MSG_ERROR([bad value $enableval for --enable-tui]) ;;
158 esac])
159if test x"$enable_tui" = xyes; then
160 if test -d $srcdir/tui; then
161 CONFIG_OBS="$CONFIG_OBS \$(SUBDIR_TUI_OBS)"
162 CONFIG_DEPS="$CONFIG_DEPS \$(SUBDIR_TUI_DEPS)"
163 CONFIG_SRCS="$CONFIG_SRCS \$(SUBDIR_TUI_SRCS)"
164 CONFIG_INITS="$CONFIG_INITS \$(SUBDIR_TUI_INITS)"
165 ENABLE_CFLAGS="$ENABLE_CFLAGS \$(SUBDIR_TUI_CFLAGS)"
166 CONFIG_ALL="$CONFIG_ALL \$(SUBDIR_TUI_ALL)"
167 CONFIG_CLEAN="$CONFIG_CLEAN \$(SUBDIR_TUI_CLEAN)"
168 CONFIG_INSTALL="$CONFIG_INSTALL \$(SUBDIR_TUI_INSTALL)"
169 CONFIG_UNINSTALL="$CONFIG_UNINSTALL \$(SUBDIR_TUI_UNINSTALL)"
170 need_curses=yes
171 fi
172fi
173
8ee53726
MK
174# Enable gdbtk.
175AC_ARG_ENABLE(gdbtk,
d28f9cdf 176[ --enable-gdbtk enable gdbtk graphical user interface (GUI)],
8ee53726
MK
177 [case $enableval in
178 yes | no)
179 ;;
180 *)
181 AC_MSG_ERROR([bad value $enableval for --enable-gdbtk]) ;;
182 esac],
183 [if test -d $srcdir/gdbtk; then
184 enable_gdbtk=yes
185 else
186 enable_gdbtk=no
187 fi])
188# We unconditionally disable gdbtk tests on selected platforms.
189case $host_os in
190 go32* | windows*)
191 AC_MSG_WARN([gdbtk isn't supported on $host; disabling])
192 enable_gdbtk=no ;;
193esac
194
0e5d83e3
JJ
195# Libunwind support.
196AC_ARG_WITH(libunwind,
197[ --with-libunwind Use libunwind frame unwinding support],
198[case "${withval}" in
199 yes) enable_libunwind=yes ;;
200 no) enable_libunwind=no ;;
201 *) AC_MSG_ERROR(bad value ${withval} for GDB with-libunwind option) ;;
202esac],[
203 AC_CHECK_HEADERS(libunwind.h)
204 AC_CHECK_HEADERS(libunwind-ia64.h)
205 if test x"$ac_cv_header_libunwind_h" = xyes -a x"$ac_cv_header_libunwind_ia64_h" = xyes; then
206 enable_libunwind=yes;
207 fi
208])
209
210if test x"$enable_libunwind" = xyes; then
211 AC_CHECK_HEADERS(libunwind.h)
212 AC_CHECK_HEADERS(libunwind-ia64.h)
213 AC_DEFINE(HAVE_LIBUNWIND, 1)
214 CONFIG_OBS="$CONFIG_OBS libunwind-frame.o"
215 CONFIG_DEPS="$CONFIG_DEPS libunwind-frame.o"
216 CONFIG_SRCS="$CONFIG_SRCS libunwind-frame.c"
217fi
218
d28f9cdf
DJ
219# Profiling support.
220AC_ARG_ENABLE(profiling,
221[ --enable-profiling enable profiling of GDB],
222 [case $enableval in
223 yes | no)
224 ;;
225 *)
226 AC_MSG_ERROR([bad value $enableval for --enable-profile]) ;;
227 esac],
228 [enable_profiling=no])
229
d9feb4e7 230AC_CHECK_FUNCS(monstartup _mcleanup)
b0b1c2c0
MK
231AC_CACHE_CHECK([for _etext], ac_cv_var__etext,
232[AC_TRY_LINK(
233[#include <stdlib.h>
234extern char _etext;
235],
236[free (&_etext);], ac_cv_var__etext=yes, ac_cv_var__etext=no)])
237if test $ac_cv_var__etext = yes; then
238 AC_DEFINE(HAVE__ETEXT, 1,
239 [Define to 1 if your system has the _etext variable. ])
240fi
d28f9cdf 241if test "$enable_profiling" = yes ; then
d9feb4e7
DJ
242 if test $ac_cv_func_monstartup = no || test $ac_cv_func__mcleanup = no; then
243 AC_MSG_ERROR(--enable-profiling requires monstartup and _mcleanup)
244 fi
d28f9cdf
DJ
245 PROFILE_CFLAGS=-pg
246 OLD_CFLAGS="$CFLAGS"
247 CFLAGS="$CFLAGS $PROFILE_CFLAGS"
248
d9feb4e7
DJ
249 AC_CACHE_CHECK([whether $CC supports -pg], ac_cv_cc_supports_pg,
250 [AC_TRY_COMPILE([], [int x;], ac_cv_cc_supports_pg=yes,
251 ac_cv_cc_supports_pg=no)])
d28f9cdf 252
d9feb4e7
DJ
253 if test $ac_cv_cc_supports_pg = no; then
254 AC_MSG_ERROR(--enable-profiling requires a compiler which supports -pg)
255 fi
d28f9cdf
DJ
256
257 CFLAGS="$OLD_CFLAGS"
258fi
259
8bb2c122
MK
260# --------------------- #
261# Checks for programs. #
262# --------------------- #
263
7a292a7a 264AC_PROG_AWK
c906108c 265AC_PROG_INSTALL
8bb2c122
MK
266AC_PROG_LN_S
267AC_PROG_RANLIB
268AC_PROG_YACC
269
c906108c 270AC_CHECK_TOOL(AR, ar)
95ca63c4
CF
271AC_CHECK_TOOL(DLLTOOL, dlltool)
272AC_CHECK_TOOL(WINDRES, windres)
c906108c 273
8bb2c122 274# Needed for GNU/Hurd.
75c6e08a
MK
275AC_CHECK_TOOL(MIG, mig)
276
9a156167
MK
277# ---------------------- #
278# Checks for libraries. #
279# ---------------------- #
280
281# We might need to link with -lm; most simulators need it.
282AC_CHECK_LIB(m, main)
283
284# We need to link with -lw to get `wctype' on Solaris before Solaris
285# 2.6. Solaris 2.6 and beyond have this function in libc, and have a
286# libw that some versions of the GNU linker cannot hanle (GNU ld 2.9.1
287# is known to have this problem). Therefore we avoid libw if we can.
288AC_CHECK_FUNC(wctype, [],
289 [AC_CHECK_LIB(w, wctype)])
290
c890192f
MK
291# Some systems (e.g. Solaris) have `gethostbyname' in libnsl.
292AC_SEARCH_LIBS(gethostbyname, nsl)
293
9a156167
MK
294# Some systems (e.g. Solaris) have `socketpair' in libsocket.
295AC_SEARCH_LIBS(socketpair, socket)
296
287c1a40
MK
297# Since GDB uses Readline, we need termcap functionality, so we need
298# to find a library that provides that. When GDB is configured with
299# --enable-tui, we need full curses functionality.
300#
301# FIXME: kettenis/20030102: We seem to prefer HP curses (Hcurses) over
302# Xcurses on HP-UX; see the `-D__HP_CURSES' in the relevant host
303# Makefile fragments. That's why we need to have `Hcurses' before
304# `curses'. I don't see why we should use HP curses if a more
305# standard curses is available, except that according to HP's
306# documentation one needs to compile `-D_XOPEN_SOURCE_EXTENDED' on
307# HP-UX 10.10 and 10.20.
308
309if test "$need_curses" = yes; then
310 AC_SEARCH_LIBS(initscr, [ncurses Hcurses curses], [],
311 [AC_MSG_ERROR([no curses library found])])
312fi
313
314case $host_os in
315 cygwin*)
316 if test -d $srcdir/libtermcap; then
317 LIBS="../libtermcap/libtermcap.a $LIBS"
318 ac_cv_search_tgetent="../libtermcap/libtermcap.a"
319 fi ;;
228a417c 320 go32* | *djgpp*)
287c1a40
MK
321 ac_cv_search_tgetent="none required"
322 ;;
323 aix*)
324 # Readline prefers curses over termcap on AIX.
325 # ??? Why?
326 AC_SEARCH_LIBS(tgetent, [tinfo ncurses curses termcap])
327 ;;
328esac
329
330# Note: We used to check for libtermlib and libterminfo too, but
331# Readline doesn't, so I think we're safe with leaving them out.
332AC_SEARCH_LIBS(tgetent, [termcap tinfo ncurses Hcurses curses])
333
334if test "$ac_cv_search_tgetent" = no; then
335 AC_MSG_ERROR([no termcap library found])
336fi
337
5ee754fc
MK
338# ------------------------- #
339# Checks for header files. #
340# ------------------------- #
c906108c 341
9608ab8b 342AC_HEADER_DIRENT
5ee754fc 343AC_HEADER_STAT
c906108c 344AC_HEADER_STDC
5ee754fc 345AC_CHECK_HEADERS(link.h)
78434e59 346AC_CHECK_HEADERS(machine/reg.h)
5ee754fc
MK
347AC_CHECK_HEADERS(nlist.h)
348AC_CHECK_HEADERS(poll.h sys/poll.h)
349AC_CHECK_HEADERS(proc_service.h thread_db.h)
350AC_CHECK_HEADERS(stddef.h)
351AC_CHECK_HEADERS(stdlib.h)
352AC_CHECK_HEADERS(stdint.h)
353AC_CHECK_HEADERS(string.h memory.h strings.h)
354AC_CHECK_HEADERS(sys/fault.h)
355AC_CHECK_HEADERS(sys/file.h)
356AC_CHECK_HEADERS(sys/filio.h)
357AC_CHECK_HEADERS(sys/ioctl.h)
358AC_CHECK_HEADERS(sys/param.h)
359AC_CHECK_HEADERS(sys/proc.h)
360AC_CHECK_HEADERS(sys/procfs.h)
361AC_CHECK_HEADERS(sys/ptrace.h ptrace.h)
362AC_CHECK_HEADERS(sys/reg.h sys/debugreg.h)
363AC_CHECK_HEADERS(sys/select.h)
364AC_CHECK_HEADERS(sys/syscall.h)
365AC_CHECK_HEADERS(sys/user.h)
366AC_CHECK_HEADERS(sys/wait.h wait.h)
367AC_CHECK_HEADERS(termios.h termio.h sgtty.h)
368AC_CHECK_HEADERS(unistd.h)
369
370# On Solaris 2.[78], we need to define _MSE_INT_H to avoid a clash
371# between <widec.h> and <wchar.h> that would cause AC_CHECK_HEADERS to
372# think that we don't have <curses.h> if we're using GCC.
373case $host_os in
374 solaris2.[[78]])
375 if test "$GCC" = yes; then
376 AC_DEFINE(_MSE_INT_H, 1,
377 [[Define to 1 to avoid a clash between <widec.h> and <wchar.h> on
378 Solaris 2.[78] when using GCC. ]])
379 fi ;;
380esac
381AC_CHECK_HEADERS(curses.h ncurses.h term.h)
382
383# FIXME: kettenis/20030102: In most cases we include these
384# unconditionally, so what's the point in checking these?
385AC_CHECK_HEADERS(ctype.h time.h)
386
40a7debc
EZ
387dnl Check for struct stat with an st_blocks member
388AC_MSG_CHECKING(for member st_blocks in struct stat)
389AC_CACHE_VAL(gdb_cv_have_struct_stat_with_st_blocks_member,
390 [AC_TRY_COMPILE([#include <sys/types.h>
391#include <sys/stat.h>],
392 [struct stat st; (void) st.st_blocks;],
393 gdb_cv_have_struct_stat_with_st_blocks_member=yes,
394 gdb_cv_have_struct_stat_with_st_blocks_member=no)])
395AC_MSG_RESULT($gdb_cv_have_struct_stat_with_st_blocks_member)
396if test $gdb_cv_have_struct_stat_with_st_blocks_member = yes; then
397 AC_DEFINE(HAVE_STRUCT_STAT_ST_BLOCKS)
398fi
b9362cc7
AC
399# ------------------------- #
400# Checks for declarations. #
401# ------------------------- #
402
403gcc_AC_CHECK_DECLS(getopt)
404
5ee754fc
MK
405# ------------------ #
406# Checks for types. #
407# ------------------ #
c906108c 408
5ee754fc
MK
409AC_TYPE_SIGNAL
410
411# ------------------------------------- #
412# Checks for compiler characteristics. #
413# ------------------------------------- #
c906108c
SS
414
415AC_C_CONST
bce58c09 416AC_C_INLINE
c906108c 417
5ee754fc
MK
418# ------------------------------ #
419# Checks for library functions. #
420# ------------------------------ #
421
c906108c 422AC_FUNC_ALLOCA
97bf5e38 423AC_FUNC_MMAP
46711df8 424AC_FUNC_VFORK
97bf5e38
MK
425AC_CHECK_FUNCS(canonicalize_file_name realpath)
426AC_CHECK_FUNCS(poll)
14abd0fb 427AC_CHECK_FUNCS(pread64)
97bf5e38
MK
428AC_CHECK_FUNCS(sbrk)
429AC_CHECK_FUNCS(setpgid setpgrp)
e1ea1d75 430AC_CHECK_FUNCS(sigaction sigprocmask sigsetmask)
97bf5e38 431AC_CHECK_FUNCS(socketpair)
b757528f 432AC_CHECK_FUNCS(syscall)
97bf5e38 433
72473524
DJ
434dnl AC_FUNC_SETPGRP does not work when cross compiling
435dnl Instead, assume we will have a prototype for setpgrp if cross compiling.
436if test "$cross_compiling" = no; then
437 AC_FUNC_SETPGRP
438else
439 AC_CACHE_CHECK([whether setpgrp takes no argument], ac_cv_func_setpgrp_void,
440 [AC_TRY_COMPILE([
441#include <unistd.h>
442], [
443 if (setpgrp(1,1) == -1)
444 exit (0);
445 else
446 exit (1);
447], ac_cv_func_setpgrp_void=no, ac_cv_func_setpgrp_void=yes)])
448if test $ac_cv_func_setpgrp_void = yes; then
449 AC_DEFINE(SETPGRP_VOID, 1)
450fi
451fi
c906108c 452
2b2d558c
MK
453# Check if sigsetjmp is available. Using AC_CHECK_FUNCS won't do
454# since sigsetjmp might only be defined as a macro.
455AC_CACHE_CHECK([for sigsetjmp], gdb_cv_func_sigsetjmp,
456[AC_TRY_COMPILE([
457#include <setjmp.h>
458], [sigjmp_buf env; while (! sigsetjmp (env, 1)) siglongjmp (env, 1);],
459gdb_cv_func_sigsetjmp=yes, gdb_cv_func_sigsetjmp=no)])
460if test $gdb_cv_func_sigsetjmp = yes; then
461 AC_DEFINE(HAVE_SIGSETJMP, 1, [Define if sigsetjmp is available. ])
462fi
463
06825bd1
MK
464# Assume we'll default to using the included libiberty regex.
465gdb_use_included_regex=yes
466
467# However, if the system regex is GNU regex, then default to *not*
468# using the included regex.
469AC_CACHE_CHECK(
470 [for GNU regex],
471 [gdb_cv_have_gnu_regex],
472 [AC_TRY_COMPILE(
473 [#include <gnu-versions.h>],
474 [#define REGEX_INTERFACE_VERSION 1
475#if _GNU_REGEX_INTERFACE_VERSION != REGEX_INTERFACE_VERSION
476# error "Version mismatch"
477#endif],
478 gdb_cv_have_gnu_regex=yes,
479 gdb_cv_have_gnu_regex=no)])
480if test $gdb_cv_have_gnu_regex = yes; then
481 gdb_use_included_regex=no
482fi
483
484AC_ARG_WITH(included-regex,
485 [ --without-included-regex don't use included regex; this is the default
486 on systems with version 2 of the GNU C library
487 (use with caution on other system)],
488 gdb_with_regex=$withval,
489 gdb_with_regex=$gdb_use_included_regex)
490if test "$gdb_with_regex" = yes; then
491 AC_DEFINE(USE_INCLUDED_REGEX, 1,
492 [Define to 1 if the regex included in libiberty should be used.])
493fi
494
78434e59
MK
495# See if <machine/reg.h> degines `struct reg'.
496AC_CACHE_CHECK([for struct reg in machine/reg.h], gdb_cv_struct_reg,
497[AC_TRY_COMPILE([#include <sys/types.h>
498#include <machine/reg.h>], [struct reg r;],
499gdb_cv_struct_reg=yes, gdb_cv_struct_reg=no)])
500if test $gdb_cv_struct_reg = yes; then
501 AC_DEFINE(HAVE_STRUCT_REG, 1,
502 [Define to 1 if your system has struct reg in <machine/reg.h>.])
503fi
504
0afdd437 505# See if <machine/reg.h> supports the %fs and %gs i386 segment registers.
7dfa765c 506# Older i386 BSD's don't have the r_fs and r_gs members of `struct reg'.
422ea4b8 507AC_CACHE_CHECK([for r_fs in struct reg], gdb_cv_struct_reg_r_fs,
7dfa765c 508[AC_TRY_COMPILE([#include <machine/reg.h>], [struct reg r; r.r_fs;],
422ea4b8
MK
509gdb_cv_struct_reg_r_fs=yes, gdb_cv_struct_reg_r_fs=no)])
510if test $gdb_cv_struct_reg_r_fs = yes; then
511 AC_DEFINE(HAVE_STRUCT_REG_R_FS)
7dfa765c 512fi
422ea4b8 513AC_CACHE_CHECK([for r_gs in struct reg], gdb_cv_struct_reg_r_gs,
7dfa765c 514[AC_TRY_COMPILE([#include <machine/reg.h>], [struct reg r; r.r_gs;],
422ea4b8
MK
515gdb_cv_struct_reg_r_gs=yes, gdb_cv_struct_reg_r_gs=no)])
516if test $gdb_cv_struct_reg_r_gs = yes; then
517 AC_DEFINE(HAVE_STRUCT_REG_R_GS)
7dfa765c
MK
518fi
519
0afdd437 520# See if <sys/ptrace.h> provides the PTRACE_GETREGS request.
f60300e7
MK
521AC_MSG_CHECKING(for PTRACE_GETREGS)
522AC_CACHE_VAL(gdb_cv_have_ptrace_getregs,
523[AC_TRY_COMPILE([#include <sys/ptrace.h>],
524 [PTRACE_GETREGS;],
525 [gdb_cv_have_ptrace_getregs=yes],
526 [gdb_cv_have_ptrace_getregs=no])])
527AC_MSG_RESULT($gdb_cv_have_ptrace_getregs)
528if test $gdb_cv_have_ptrace_getregs = yes; then
529 AC_DEFINE(HAVE_PTRACE_GETREGS)
530fi
531
0afdd437 532# See if <sys/ptrace.h> provides the PTRACE_GETFPXREGS request.
6ce2ac0b
MK
533AC_MSG_CHECKING(for PTRACE_GETFPXREGS)
534AC_CACHE_VAL(gdb_cv_have_ptrace_getfpxregs,
5c44784c 535[AC_TRY_COMPILE([#include <sys/ptrace.h>],
6ce2ac0b
MK
536 [PTRACE_GETFPXREGS;],
537 [gdb_cv_have_ptrace_getfpxregs=yes],
538 [gdb_cv_have_ptrace_getfpxregs=no])])
539AC_MSG_RESULT($gdb_cv_have_ptrace_getfpxregs)
540if test $gdb_cv_have_ptrace_getfpxregs = yes; then
541 AC_DEFINE(HAVE_PTRACE_GETFPXREGS)
5c44784c
JM
542fi
543
0afdd437
MK
544# See if <sys/ptrace.h> provides the PT_GETDBREGS request.
545AC_MSG_CHECKING(for PT_GETDBREGS)
546AC_CACHE_VAL(gdb_cv_have_pt_getdbregs,
547[AC_TRY_COMPILE([#include <sys/types.h>
548#include <sys/ptrace.h>],
549 [PT_GETDBREGS;],
550 [gdb_cv_have_pt_getdbregs=yes],
551 [gdb_cv_have_pt_getdbregs=no])])
552AC_MSG_RESULT($gdb_cv_have_pt_getdbregs)
553if test $gdb_cv_have_pt_getdbregs = yes; then
554 AC_DEFINE(HAVE_PT_GETDBREGS)
555fi
556
7e89e357
JT
557# See if <sys/ptrace.h> provides the PT_GETXMMREGS request.
558AC_MSG_CHECKING(for PT_GETXMMREGS)
559AC_CACHE_VAL(gdb_cv_have_pt_getxmmregs,
560[AC_TRY_COMPILE([#include <sys/types.h>
561#include <sys/ptrace.h>],
562 [PT_GETXMMREGS;],
563 [gdb_cv_have_pt_getxmmregs=yes],
564 [gdb_cv_have_pt_getxmmregs=no])])
565AC_MSG_RESULT($gdb_cv_have_pt_getxmmregs)
566if test $gdb_cv_have_pt_getxmmregs = yes; then
567 AC_DEFINE(HAVE_PT_GETXMMREGS)
568fi
569
27ca5dad
MC
570# See if stdint.h provides the uintptr_t type.
571# Autoconf 2.5X has an improved AC_CHECK_TYPE which will simplify this.
572AC_CACHE_CHECK([for uintptr_t in stdint.h], gdb_cv_have_uintptr_t,
573 [AC_TRY_COMPILE(
574 [#include <stdint.h>],
575 [uintptr_t foo = 0;],
576 gdb_cv_have_uintptr_t=yes,
577 gdb_cv_have_uintptr_t=no)])
27ca5dad
MC
578if test $gdb_cv_have_uintptr_t = yes; then
579 AC_DEFINE(HAVE_UINTPTR_T, 1, [Define if <stdint.h> provides the uintptr_t type.])
580fi
0afdd437 581
c906108c
SS
582BFD_NEED_DECLARATION(malloc)
583BFD_NEED_DECLARATION(realloc)
584BFD_NEED_DECLARATION(free)
585BFD_NEED_DECLARATION(strerror)
586BFD_NEED_DECLARATION(strdup)
b83266a0 587BFD_NEED_DECLARATION(strstr)
a4db0f07 588BFD_NEED_DECLARATION(canonicalize_file_name)
c906108c
SS
589
590# The following save_state_t checkery is only necessary for HPUX
591# versions earlier than 10.20. When those fade from memory, this
592# could be expunged. --jsm 1999-03-22
593
594AC_MSG_CHECKING(for HPUX save_state structure)
595AC_EGREP_HEADER(save_state_t, machine/save_state.h,
596 gdb_cv_hpux_savestate=yes, gdb_cv_hpux_savestate=no)
597AC_EGREP_HEADER(ss_wide, machine/save_state.h, gdb_cv_hpux_sswide=yes,
598 gdb_cv_hpux_sswide=no)
599if test $gdb_cv_hpux_savestate = yes
600then
601 AC_DEFINE(HAVE_STRUCT_SAVE_STATE_T, 1)
602fi
603if test $gdb_cv_hpux_sswide = yes
604then
605 AC_DEFINE(HAVE_STRUCT_MEMBER_SS_WIDE, 1)
606fi
607AC_MSG_RESULT($gdb_cv_hpux_sswide)
608
609
610# If we are configured native on GNU/Linux, work around problems with
611# sys/procfs.h
c3f6f71d 612# Also detect which type of /proc is in use, such as for Unixware or Solaris.
c906108c
SS
613
614if test "${target}" = "${host}"; then
615 case "${host}" in
616 i[[3456]]86-*-linux*)
617 AC_DEFINE(START_INFERIOR_TRAPS_EXPECTED,2)
618 AC_DEFINE(sys_quotactl)
619 ;;
596c9d4b
KB
620 ia64-*-aix*)
621 AC_DEFINE(NEW_PROC_API)
622 ;;
1045b512 623 *-*-unixware* | *-*-sysv4.2* | *-*-sysv5* | *-*-interix* )
c3f6f71d
JM
624 AC_DEFINE(NEW_PROC_API)
625 ;;
e7c61be3 626 *-*-solaris2.[[6789]])
c3f6f71d
JM
627 AC_DEFINE(NEW_PROC_API)
628 ;;
c906108c 629 esac
c906108c
SS
630fi
631
632if test "$ac_cv_header_sys_procfs_h" = yes; then
633 BFD_HAVE_SYS_PROCFS_TYPE(pstatus_t)
634 BFD_HAVE_SYS_PROCFS_TYPE(prrun_t)
635 BFD_HAVE_SYS_PROCFS_TYPE(gregset_t)
636 BFD_HAVE_SYS_PROCFS_TYPE(fpregset_t)
83d37ec8
MK
637 BFD_HAVE_SYS_PROCFS_TYPE(prgregset_t)
638 BFD_HAVE_SYS_PROCFS_TYPE(prfpregset_t)
23e04971
MS
639 BFD_HAVE_SYS_PROCFS_TYPE(prgregset32_t)
640 BFD_HAVE_SYS_PROCFS_TYPE(prfpregset32_t)
83d37ec8
MK
641 BFD_HAVE_SYS_PROCFS_TYPE(lwpid_t)
642 BFD_HAVE_SYS_PROCFS_TYPE(psaddr_t)
596c9d4b
KB
643 BFD_HAVE_SYS_PROCFS_TYPE(prsysent_t)
644 BFD_HAVE_SYS_PROCFS_TYPE(pr_sigset_t)
645 BFD_HAVE_SYS_PROCFS_TYPE(pr_sigaction64_t)
646 BFD_HAVE_SYS_PROCFS_TYPE(pr_siginfo64_t)
c906108c 647
23e04971 648
d84dd0c5
MK
649 dnl Check for broken prfpregset_t type
650
651 dnl For Linux/i386, glibc 2.1.3 was released with a bogus
652 dnl prfpregset_t type (it's a typedef for the pointer to a struct
653 dnl instead of the struct itself). We detect this here, and work
a3007b6f 654 dnl around it in gdb_proc_service.h.
d84dd0c5
MK
655
656 if test $bfd_cv_have_sys_procfs_type_prfpregset_t = yes; then
657 AC_MSG_CHECKING(whether prfpregset_t type is broken)
658 AC_CACHE_VAL(gdb_cv_prfpregset_t_broken,
659 [AC_TRY_RUN([#include <sys/procfs.h>
660 int main ()
661 {
662 if (sizeof (prfpregset_t) == sizeof (void *))
663 return 1;
664 return 0;
665 }],
666 gdb_cv_prfpregset_t_broken=no,
667 gdb_cv_prfpregset_t_broken=yes,
668 gdb_cv_prfpregset_t_broken=yes)])
669 AC_MSG_RESULT($gdb_cv_prfpregset_t_broken)
670 if test $gdb_cv_prfpregset_t_broken = yes; then
671 AC_DEFINE(PRFPREGSET_T_BROKEN)
672 fi
673 fi
674
c906108c
SS
675 dnl Check for PIOCSET ioctl entry
676
677 AC_MSG_CHECKING(for PIOCSET ioctl entry in sys/procfs.h)
678 AC_CACHE_VAL(gdb_cv_have_procfs_piocset,
679 [AC_TRY_COMPILE([#include <unistd.h>
680#include <sys/types.h>
681#include <sys/procfs.h>
682], [
683 int dummy;;
684 dummy = ioctl(0, PIOCSET, &dummy);
685 ],
686 gdb_cv_have_procfs_piocset=yes, gdb_cv_have_procfs_piocset=no)])
687 AC_MSG_RESULT($gdb_cv_have_procfs_piocset)
688 if test $gdb_cv_have_procfs_piocset = yes; then
689 AC_DEFINE(HAVE_PROCFS_PIOCSET)
690 fi
691fi
692
d45fe813
KB
693dnl For native ports (host == target), check to see what kind of
694dnl legacy link.h support is needed. (See solib-legacy.c.)
695if test ${host} = ${target} ; then
696 dnl Check for struct link_map with l_ members which are indicative
697 dnl of SVR4-like shared libraries
698
699 AC_MSG_CHECKING(for member l_addr in struct link_map)
700 AC_CACHE_VAL(gdb_cv_have_struct_link_map_with_l_members,
701 [AC_TRY_COMPILE([#include <link.h>],
702 [struct link_map lm; (void) lm.l_addr;],
703 gdb_cv_have_struct_link_map_with_l_members=yes,
704 gdb_cv_have_struct_link_map_with_l_members=no)])
705 AC_MSG_RESULT($gdb_cv_have_struct_link_map_with_l_members)
706 if test $gdb_cv_have_struct_link_map_with_l_members = yes; then
707 AC_DEFINE(HAVE_STRUCT_LINK_MAP_WITH_L_MEMBERS)
708 fi
709
710 dnl Check for struct link_map with lm_ members which are indicative
711 dnl of SunOS-like shared libraries
712
713 AC_MSG_CHECKING(for member lm_addr in struct link_map)
714 AC_CACHE_VAL(gdb_cv_have_struct_link_map_with_lm_members,
715 [AC_TRY_COMPILE([#include <sys/types.h>
716#include <link.h>],
717 [struct link_map lm; (void) lm.lm_addr;],
718 gdb_cv_have_struct_link_map_with_lm_members=yes,
719 gdb_cv_have_struct_link_map_with_lm_members=no)])
720 AC_MSG_RESULT($gdb_cv_have_struct_link_map_with_lm_members)
721 if test $gdb_cv_have_struct_link_map_with_lm_members = yes; then
722 AC_DEFINE(HAVE_STRUCT_LINK_MAP_WITH_LM_MEMBERS)
723 fi
724
725 dnl Check for struct so_map with som_ members which are found on
726 dnl some *BSD systems.
727
728 AC_MSG_CHECKING(for member som_addr in struct so_map)
729 AC_CACHE_VAL(gdb_cv_have_struct_so_map_with_som_members,
730 [AC_TRY_COMPILE([#include <sys/types.h>
39812ceb
C
731#ifdef HAVE_NLIST_H
732#include <nlist.h>
733#endif
d45fe813
KB
734#include <link.h>],
735 [struct so_map lm; (void) lm.som_addr;],
736 gdb_cv_have_struct_so_map_with_som_members=yes,
737 gdb_cv_have_struct_so_map_with_som_members=no)])
738 AC_MSG_RESULT($gdb_cv_have_struct_so_map_with_som_members)
739 if test $gdb_cv_have_struct_so_map_with_som_members = yes; then
740 AC_DEFINE(HAVE_STRUCT_SO_MAP_WITH_SOM_MEMBERS)
741 fi
742
743 dnl Check for struct link_map32 type, which allows a 64-bit Solaris
744 dnl debugger to debug a 32-bit Solaris app with 32-bit shared libraries.
745
746 AC_MSG_CHECKING(for struct link_map32 in sys/link.h)
747 AC_CACHE_VAL(gdb_cv_have_struct_link_map32,
748 [AC_TRY_COMPILE([#define _SYSCALL32
749#include <sys/link.h>], [struct link_map32 l;],
750 gdb_cv_have_struct_link_map32=yes,
751 gdb_cv_have_struct_link_map32=no)])
752 AC_MSG_RESULT($gdb_cv_have_struct_link_map32)
753 if test $gdb_cv_have_struct_link_map32 = yes; then
754 AC_DEFINE(HAVE_STRUCT_LINK_MAP32)
943c9c25 755 AC_DEFINE(_SYSCALL32)
d45fe813
KB
756 fi
757fi
758
c906108c
SS
759dnl See if compiler supports "long long" type.
760
761AC_MSG_CHECKING(for long long support in compiler)
762AC_CACHE_VAL(gdb_cv_c_long_long,
763[AC_TRY_COMPILE(, [
764 extern long long foo;
765 switch (foo & 2) { case 0: return 1; }
766],
767gdb_cv_c_long_long=yes, gdb_cv_c_long_long=no)])
768AC_MSG_RESULT($gdb_cv_c_long_long)
769if test $gdb_cv_c_long_long = yes; then
770 AC_DEFINE(CC_HAS_LONG_LONG)
771fi
772
773dnl See if the compiler and runtime support printing long long
774
775AC_MSG_CHECKING(for long long support in printf)
776AC_CACHE_VAL(gdb_cv_printf_has_long_long,
777[AC_TRY_RUN([
778int main () {
779 char buf[32];
780 long long l = 0;
781 l = (l << 16) + 0x0123;
782 l = (l << 16) + 0x4567;
783 l = (l << 16) + 0x89ab;
784 l = (l << 16) + 0xcdef;
785 sprintf (buf, "0x%016llx", l);
786 return (strcmp ("0x0123456789abcdef", buf));
787}],
788gdb_cv_printf_has_long_long=yes,
789gdb_cv_printf_has_long_long=no,
790gdb_cv_printf_has_long_long=no)])
791if test $gdb_cv_printf_has_long_long = yes; then
792 AC_DEFINE(PRINTF_HAS_LONG_LONG)
793fi
794AC_MSG_RESULT($gdb_cv_printf_has_long_long)
795
796dnl See if compiler supports "long double" type. Can't use AC_C_LONG_DOUBLE
797dnl because autoconf complains about cross-compilation issues. However, this
798dnl code uses the same variables as the macro for compatibility.
799
800AC_MSG_CHECKING(for long double support in compiler)
801AC_CACHE_VAL(ac_cv_c_long_double,
802[AC_TRY_COMPILE(, [long double foo;],
803ac_cv_c_long_double=yes, ac_cv_c_long_double=no)])
804AC_MSG_RESULT($ac_cv_c_long_double)
805if test $ac_cv_c_long_double = yes; then
806 AC_DEFINE(HAVE_LONG_DOUBLE)
807fi
808
809dnl See if the compiler and runtime support printing long doubles
810
811AC_MSG_CHECKING(for long double support in printf)
812AC_CACHE_VAL(gdb_cv_printf_has_long_double,
813[AC_TRY_RUN([
814int main () {
815 char buf[16];
816 long double f = 3.141592653;
817 sprintf (buf, "%Lg", f);
818 return (strncmp ("3.14159", buf, 7));
819}],
820gdb_cv_printf_has_long_double=yes,
821gdb_cv_printf_has_long_double=no,
822gdb_cv_printf_has_long_double=no)])
823if test $gdb_cv_printf_has_long_double = yes; then
824 AC_DEFINE(PRINTF_HAS_LONG_DOUBLE)
825fi
826AC_MSG_RESULT($gdb_cv_printf_has_long_double)
827
828dnl See if the compiler and runtime support scanning long doubles
829
830AC_MSG_CHECKING(for long double support in scanf)
831AC_CACHE_VAL(gdb_cv_scanf_has_long_double,
832[AC_TRY_RUN([
833int main () {
834 char *buf = "3.141592653";
835 long double f = 0;
836 sscanf (buf, "%Lg", &f);
837 return !(f > 3.14159 && f < 3.14160);
838}],
839gdb_cv_scanf_has_long_double=yes,
840gdb_cv_scanf_has_long_double=no,
841gdb_cv_scanf_has_long_double=no)])
842if test $gdb_cv_scanf_has_long_double = yes; then
843 AC_DEFINE(SCANF_HAS_LONG_DOUBLE)
844fi
845AC_MSG_RESULT($gdb_cv_scanf_has_long_double)
846
438013df
AO
847case ${host_os} in
848aix*)
849 AC_CACHE_CHECK([for -bbigtoc option], [gdb_cv_bigtoc], [
850 SAVE_LDFLAGS=$LDFLAGS
851
852 case $GCC in
853 yes) gdb_cv_bigtoc=-Wl,-bbigtoc ;;
854 *) gdb_cv_bigtoc=-bbigtoc ;;
855 esac
856
857 LDFLAGS=$LDFLAGS\ $gdb_cv_bigtoc
858 AC_TRY_LINK([], [int i;], [], [gdb_cv_bigtoc=])
859 ])
860 CONFIG_LDFLAGS="${CONFIG_LDFLAGS} ${gdb_cv_bigtoc}"
861 ;;
862esac
863
c906108c 864
d92419e5
JB
865dnl For certain native configurations, we need to check whether thread
866dnl support can be built in or not.
867dnl
868dnl Note that we only want this if we are both native (host == target),
869dnl and not doing a canadian cross build (build == host).
c906108c
SS
870
871if test ${build} = ${host} -a ${host} = ${target} ; then
872 case ${host_os} in
873 hpux*)
874 AC_MSG_CHECKING(for HPUX/OSF thread support)
875 if test -f /usr/include/dce/cma_config.h ; then
876 if test "$GCC" = "yes" ; then
877 AC_MSG_RESULT(yes)
878 AC_DEFINE(HAVE_HPUX_THREAD_SUPPORT)
66b965bb 879 CONFIG_LIB_OBS="${CONFIG_LIB_OBS} hpux-thread.o"
c906108c
SS
880 CONFIG_SRCS="${CONFIG_SRCS} hpux-thread.c"
881 else
882 AC_MSG_RESULT(no (suppressed because you are not using GCC))
883 fi
884 else
885 AC_MSG_RESULT(no)
886 fi
887 ;;
888 solaris*)
d92419e5
JB
889 # See if thread_db library is around for Solaris thread debugging.
890 # Note that we must explicitly test for version 1 of the library
891 # because version 0 (present on Solaris 2.4 or earlier) doesn't have
892 # the same API.
c906108c
SS
893 AC_MSG_CHECKING(for Solaris thread debugging library)
894 if test -f /usr/lib/libthread_db.so.1 ; then
895 AC_MSG_RESULT(yes)
896 AC_DEFINE(HAVE_THREAD_DB_LIB)
66b965bb 897 CONFIG_LIB_OBS="${CONFIG_LIB_OBS} sol-thread.o"
c906108c
SS
898 CONFIG_SRCS="${CONFIG_SRCS} sol-thread.c"
899 AC_CHECK_LIB(dl, dlopen)
900 if test "$GCC" = "yes" ; then
901 # The GNU linker requires the -export-dynamic option to make
902 # all symbols visible in the dynamic symbol table.
903 hold_ldflags=$LDFLAGS
904 AC_MSG_CHECKING(for the ld -export-dynamic flag)
905 LDFLAGS="${LDFLAGS} -Wl,-export-dynamic"
906 AC_TRY_LINK(, [int i;], found=yes, found=no)
907 LDFLAGS=$hold_ldflags
908 AC_MSG_RESULT($found)
909 if test $found = yes; then
910 CONFIG_LDFLAGS="${CONFIG_LDFLAGS} -Wl,-export-dynamic"
911 fi
912 fi
913 # Sun randomly tweaked the prototypes in <proc_service.h>
914 # at one point.
915 AC_MSG_CHECKING(if <proc_service.h> is old)
916 AC_CACHE_VAL(gdb_cv_proc_service_is_old,[
917 AC_TRY_COMPILE([
918 #include <proc_service.h>
919 ps_err_e ps_pdwrite
920 (struct ps_prochandle*, psaddr_t, const void*, size_t);
921 ],, gdb_cv_proc_service_is_old=no,
922 gdb_cv_proc_service_is_old=yes)
923 ])
924 AC_MSG_RESULT($gdb_cv_proc_service_is_old)
925 if test $gdb_cv_proc_service_is_old = yes; then
926 AC_DEFINE(PROC_SERVICE_IS_OLD)
927 fi
928 else
929 AC_MSG_RESULT(no)
930 fi
931 ;;
d92419e5
JB
932 aix*)
933 AC_MSG_CHECKING(for AiX thread debugging library)
934 AC_CACHE_VAL(gdb_cv_have_aix_thread_debug,
935 [AC_TRY_COMPILE([#include <sys/pthdebug.h>],
936 [#ifndef PTHDB_VERSION_3
937 #error
938 #endif],
939 gdb_cv_have_aix_thread_debug=yes,
940 gdb_cv_have_aix_thread_debug=no)])
941 AC_MSG_RESULT($gdb_cv_have_aix_thread_debug)
942 if test $gdb_cv_have_aix_thread_debug = yes; then
943 CONFIG_SRCS="${CONFIG_SRCS} aix-thread.c"
944 CONFIG_LIB_OBS="${CONFIG_LIB_OBS} aix-thread.o"
945 CONFIG_LDFLAGS="${CONFIG_LDFLAGS} -lpthdebug"
946 fi
947 ;;
c906108c
SS
948 esac
949 AC_SUBST(CONFIG_LDFLAGS)
950fi
951
3f47be5c
EZ
952dnl See if we have a thread_db header file that has TD_NOTALLOC.
953if test "x$ac_cv_header_thread_db_h" = "xyes"; then
954 AC_CACHE_CHECK([whether <thread_db.h> has TD_NOTALLOC],
955 gdb_cv_thread_db_h_has_td_notalloc,
956 AC_TRY_COMPILE(
957 [#include <thread_db.h>],
958 [int i = TD_NOTALLOC;],
959 gdb_cv_thread_db_h_has_td_notalloc=yes,
960 gdb_cv_thread_db_h_has_td_notalloc=no
961 )
962 )
963fi
964if test "x$gdb_cv_thread_db_h_has_td_notalloc" = "xyes"; then
965 AC_DEFINE(THREAD_DB_HAS_TD_NOTALLOC, 1,
966 [Define if <thread_db.h> has the TD_NOTALLOC error code.])
967fi
968
b757528f
JJ
969dnl See if we have a sys/syscall header file that has __NR_tkill.
970if test "x$ac_cv_header_sys_syscall_h" = "xyes"; then
971 AC_CACHE_CHECK([whether <sys/syscall.h> has __NR_tkill],
972 gdb_cv_sys_syscall_h_has_tkill,
973 AC_TRY_COMPILE(
974 [#include <sys/syscall.h>],
975 [int i = __NR_tkill;],
976 gdb_cv_sys_syscall_h_has_tkill=yes,
977 gdb_cv_sys_syscall_h_has_tkill=no
978 )
979 )
980fi
981dnl See if we can issue tkill syscall.
982if test "x$gdb_cv_sys_syscall_h_has_tkill" = "xyes" && test "x$ac_cv_func_syscall" = "xyes"; then
983 AC_DEFINE(HAVE_TKILL_SYSCALL, 1,
984 [Define if we can use the tkill syscall.])
985fi
986
c906108c 987dnl Handle optional features that can be enabled.
fb40c209 988
030292b7
DJ
989AC_ARG_WITH(sysroot,
990[ --with-sysroot[=DIR] Search for usr/lib et al within DIR.],
991[
992 case ${with_sysroot} in
715d1656 993 yes) TARGET_SYSTEM_ROOT='${exec_prefix}/${target_alias}/sys-root' ;;
030292b7
DJ
994 *) TARGET_SYSTEM_ROOT=$with_sysroot ;;
995 esac
996
997 TARGET_SYSTEM_ROOT_DEFINE='-DTARGET_SYSTEM_ROOT=\"$(TARGET_SYSTEM_ROOT)\"'
998
999 if test "x$exec_prefix" = xNONE; then
1000 if test "x$prefix" = xNONE; then
1001 test_prefix=/usr/local
1002 else
1003 test_prefix=$prefix
1004 fi
1005 else
1006 test_prefix=$exec_prefix
1007 fi
1008 case ${TARGET_SYSTEM_ROOT} in
715d1656
AO
1009 "${test_prefix}"|"${test_prefix}/"*|\
1010 '${exec_prefix}'|'${exec_prefix}/'*)
030292b7
DJ
1011 t="$TARGET_SYSTEM_ROOT_DEFINE -DTARGET_SYSTEM_ROOT_RELOCATABLE"
1012 TARGET_SYSTEM_ROOT_DEFINE="$t"
1013 ;;
1014 esac
1015], [
1016 TARGET_SYSTEM_ROOT=
1017 TARGET_SYSTEM_ROOT_DEFINE='-DTARGET_SYSTEM_ROOT=\"\"'
1018])
1019AC_SUBST(TARGET_SYSTEM_ROOT)
1020AC_SUBST(TARGET_SYSTEM_ROOT_DEFINE)
1021
3b851bce
AC
1022# NOTE: Don't add -Wall or -Wunused, they both include
1023# -Wunused-parameter which reports bogus warnings.
1024# NOTE: If you add to this list, remember to update
1025# gdb/doc/gdbint.texinfo.
1decb323 1026build_warnings="-Wimplicit -Wreturn-type -Wcomment -Wtrigraphs \
0f0cffd2
AC
1027-Wformat -Wparentheses -Wpointer-arith -Wuninitialized -Wformat-nonliteral \
1028-Wunused-label"
d8038014 1029# Up for debate: -Wswitch -Wcomment -trigraphs -Wtrigraphs
0f0cffd2 1030# -Wunused-function -Wunused-variable -Wunused-value
93d56215 1031# -Wchar-subscripts -Wtraditional -Wshadow -Wcast-qual
d8038014
AC
1032# -Wcast-align -Wwrite-strings -Wconversion -Wstrict-prototypes
1033# -Wmissing-prototypes -Wmissing-declarations -Wredundant-decls
1034# -Woverloaded-virtual -Winline -Werror"
c906108c
SS
1035AC_ARG_ENABLE(build-warnings,
1036[ --enable-build-warnings Enable build-time compiler warnings if gcc is used],
1decb323 1037[case "${enableval}" in
c906108c
SS
1038 yes) ;;
1039 no) build_warnings="-w";;
1040 ,*) t=`echo "${enableval}" | sed -e "s/,/ /g"`
1041 build_warnings="${build_warnings} ${t}";;
1042 *,) t=`echo "${enableval}" | sed -e "s/,/ /g"`
1043 build_warnings="${t} ${build_warnings}";;
1044 *) build_warnings=`echo "${enableval}" | sed -e "s/,/ /g"`;;
d4f3574e
SS
1045esac
1046if test x"$silent" != x"yes" && test x"$build_warnings" != x""; then
746a987d 1047 echo "Setting compiler warning flags = $build_warnings" 6>&1
1decb323 1048fi])dnl
3b851bce
AC
1049AC_ARG_ENABLE(gdb-build-warnings,
1050[ --enable-gdb-build-warnings Enable GDB specific build-time compiler warnings if gcc is used],
1051[case "${enableval}" in
1052 yes) ;;
1053 no) build_warnings="-w";;
1054 ,*) t=`echo "${enableval}" | sed -e "s/,/ /g"`
1055 build_warnings="${build_warnings} ${t}";;
1056 *,) t=`echo "${enableval}" | sed -e "s/,/ /g"`
1057 build_warnings="${t} ${build_warnings}";;
1058 *) build_warnings=`echo "${enableval}" | sed -e "s/,/ /g"`;;
1059esac
1060if test x"$silent" != x"yes" && test x"$build_warnings" != x""; then
1061 echo "Setting GDB specific compiler warning flags = $build_warnings" 6>&1
1062fi])dnl
104c1213
JM
1063WARN_CFLAGS=""
1064WERROR_CFLAGS=""
c906108c
SS
1065if test "x${build_warnings}" != x -a "x$GCC" = xyes
1066then
746a987d
AC
1067 AC_MSG_CHECKING(compiler warning flags)
1068 # Separate out the -Werror flag as some files just cannot be
1069 # compiled with it enabled.
1070 for w in ${build_warnings}; do
1071 case $w in
1072 -Werr*) WERROR_CFLAGS=-Werror ;;
1073 *) # Check that GCC accepts it
4536bbc6
AC
1074 saved_CFLAGS="$CFLAGS"
1075 CFLAGS="$CFLAGS $w"
1076 AC_TRY_COMPILE([],[],WARN_CFLAGS="${WARN_CFLAGS} $w",)
1077 CFLAGS="$saved_CFLAGS"
746a987d
AC
1078 esac
1079 done
1080 AC_MSG_RESULT(${WARN_CFLAGS}${WERROR_CFLAGS})
1decb323 1081fi
c906108c 1082AC_SUBST(WARN_CFLAGS)
104c1213 1083AC_SUBST(WERROR_CFLAGS)
c906108c 1084
7a292a7a
SS
1085# In the Cygwin environment, we need some additional flags.
1086AC_CACHE_CHECK([for cygwin], gdb_cv_os_cygwin,
1087[AC_EGREP_CPP(lose, [
1088#if defined (__CYGWIN__) || defined (__CYGWIN32__)
1089lose
1090#endif],[gdb_cv_os_cygwin=yes],[gdb_cv_os_cygwin=no])])
1091
aff38e61
AC
1092
1093dnl Figure out which of the many generic ser-*.c files the _host_ supports.
1094SER_HARDWIRE="ser-unix.o ser-pipe.o ser-tcp.o"
1095case ${host} in
95cbc983
AC
1096 *go32* ) SER_HARDWIRE=ser-go32.o ;;
1097 *djgpp* ) SER_HARDWIRE=ser-go32.o ;;
aff38e61
AC
1098esac
1099AC_SUBST(SER_HARDWIRE)
1100
cd0fc7c3
SS
1101# libreadline needs libuser32.a in a cygwin environment
1102WIN32LIBS=
1103if test x$gdb_cv_os_cygwin = xyes; then
c5394b80
JM
1104 WIN32LIBS="-luser32"
1105 case "${target}" in
1106 *cygwin*) WIN32LIBS="$WIN32LIBS -limagehlp"
1107 ;;
1108 esac
cd0fc7c3
SS
1109fi
1110AC_SUBST(WIN32LIBS)
7a292a7a 1111
3fc11d3e
JM
1112LIBGUI="../libgui/src/libgui.a"
1113GUI_CFLAGS_X="-I${srcdir}/../libgui/src"
1114AC_SUBST(LIBGUI)
1115AC_SUBST(GUI_CFLAGS_X)
7a292a7a 1116
3fc11d3e
JM
1117WIN32LDAPP=
1118AC_SUBST(WIN32LIBS)
1119AC_SUBST(WIN32LDAPP)
1120
1121configdir="unix"
1122
1123GDBTKLIBS=
1124if test "${enable_gdbtk}" = "yes"; then
1125
d1c3b63a
KS
1126 # Gdbtk must have an absolute path to srcdir in order to run
1127 # properly when not installed.
1128 here=`pwd`
1129 cd ${srcdir}
1130 GDBTK_SRC_DIR=`pwd`
1131 cd $here
1132
3fc11d3e
JM
1133 CY_AC_PATH_TCLCONFIG
1134 if test -z "${no_tcl}"; then
1135 CY_AC_LOAD_TCLCONFIG
1136 CY_AC_PATH_TKCONFIG
1137
dd2504ab
JM
1138 # now look for Tcl library stuff
1139
1140 case "${host}" in
1141 *-*-cygwin*)
1142 tcldir=../tcl/win/
1143 ;;
1144 *)
1145 tcldir=../tcl/unix/
1146 ;;
1147 esac
1148
1149 TCL_DEPS="${tcldir}${TCL_LIB_FILE}"
1150
3fc11d3e
JM
1151 # If $no_tk is nonempty, then we can't do Tk, and there is no
1152 # point to doing Tcl.
1153 if test -z "${no_tk}"; then
1154 CY_AC_LOAD_TKCONFIG
1155 CY_AC_PATH_TCLH
1156 CY_AC_PATH_TKH
1157 CY_AC_PATH_ITCLH
1158 CY_AC_PATH_ITKH
3fc11d3e 1159
dd2504ab
JM
1160
1161 # now look for Tk library stuff
1162
1163 case "${host}" in
1164 *-*-cygwin*)
1165 tkdir=../tk/win/
1166 ;;
1167 *)
1168 tkdir=../tk/unix/
1169 ;;
1170 esac
1171
1172 TK_DEPS="${tkdir}${TK_LIB_FILE}"
1173
3fc11d3e
JM
1174 # now look for Itcl library stuff
1175
1176 CY_AC_PATH_ITCLCONFIG
1177 if test -z "${no_itcl}"; then
b381d62d 1178 CY_AC_LOAD_ITCLCONFIG
3fc11d3e
JM
1179
1180 ITCLLIB="${ITCL_BUILD_LIB_SPEC}"
b381d62d 1181 ITCL_DEPS="${ITCL_LIB_FULL_PATH}"
3fc11d3e
JM
1182 fi
1183
1184
1185 # now look for Itk library stuff
1186 CY_AC_PATH_ITKCONFIG
1187 if test -z "${no_itcl}"; then
1188 CY_AC_LOAD_ITKCONFIG
1189
3fc11d3e 1190 ITKLIB="${ITK_BUILD_LIB_SPEC}"
b381d62d 1191 ITK_DEPS="${ITK_LIB_FULL_PATH}"
3fc11d3e
JM
1192 fi
1193
4226a5a5 1194 ENABLE_CFLAGS="${ENABLE_CFLAGS} \$(SUBDIR_GDBTK_CFLAGS)"
3fc11d3e
JM
1195 # Tcl/Tk 8.1 require -fwritable strings. I don't
1196 # know whether 8.2 will or not, but I bet it will.
1197 # I don't have to worry about 7.x since we don't support it.
1198 GDBTK_CFLAGS=""
1199 if test "$GCC" = "yes"; then
1200 if test "$TCL_VERSION" != "8.0" ; then
1201 GDBTK_CFLAGS="-fwritable-strings"
1202 fi
1203 fi
1204
1205 # Include some libraries that Tcl and Tk want.
b2a1bd4f 1206 TCL_LIBS='$(LIBGUI) $(ITCL) $(ITK) $(TK) $(TCL) $(X11_LDFLAGS) $(X11_LIBS)'
3fc11d3e
JM
1207 # Yes, the ordering seems wrong here. But it isn't.
1208 # TK_LIBS is the list of libraries that need to be linked
1209 # after Tcl/Tk. Note that this isn't put into LIBS. If it
1210 # were in LIBS then any link tests after this point would
1211 # try to include things like `$(LIBGUI)', which wouldn't work.
1212 GDBTKLIBS="${TCL_LIBS} ${TK_LIBS}"
4226a5a5
FN
1213
1214 CONFIG_OBS="${CONFIG_OBS} \$(SUBDIR_GDBTK_OBS)"
1215 CONFIG_DEPS="${CONFIG_DEPS} \$(SUBDIR_GDBTK_DEPS)"
1216 CONFIG_SRCS="${CONFIG_SRCS} \$(SUBDIR_GDBTK_SRCS)"
1217 CONFIG_INITS="${CONFIG_INITS} \$(SUBDIR_GDBTK_INITS)"
b3a90332 1218 CONFIG_ALL="${CONFIG_ALL} \$(SUBDIR_GDBTK_ALL)"
ce844ae2 1219 CONFIG_CLEAN="${CONFIG_CLEAN} \$(SUBDIR_GDBTK_CLEAN)"
e56ac5c3
AC
1220 CONFIG_INSTALL="${CONFIG_INSTALL} \$(SUBDIR_GDBTK_INSTALL)"
1221 CONFIG_UNINSTALL="${CONFIG_UNINSTALL} \$(SUBDIR_GDBTK_UNINSTALL)"
3fc11d3e
JM
1222
1223 if test x$gdb_cv_os_cygwin = xyes; then
1224 WIN32LIBS="${WIN32LIBS} -lshell32 -lgdi32 -lcomdlg32 -ladvapi32"
1225 WIN32LDAPP="-Wl,--subsystem,console"
1226 CONFIG_OBS="${CONFIG_OBS} gdbres.o"
1227 fi
1228 fi
1229 fi
ffc6a242 1230
ffc6a242 1231 configdirs="${configdirs} gdbtk"
3fc11d3e
JM
1232fi
1233
3fc11d3e
JM
1234AC_SUBST(X_CFLAGS)
1235AC_SUBST(X_LDFLAGS)
1236AC_SUBST(X_LIBS)
dd2504ab
JM
1237AC_SUBST(TCL_DEPS)
1238AC_SUBST(TK_DEPS)
3fc11d3e
JM
1239AC_SUBST(ITCLLIB)
1240AC_SUBST(ITCL_DEPS)
1241AC_SUBST(ITKLIB)
1242AC_SUBST(ITK_DEPS)
3fc11d3e
JM
1243AC_SUBST(GDBTKLIBS)
1244AC_SUBST(GDBTK_CFLAGS)
d1c3b63a 1245AC_SUBST(GDBTK_SRC_DIR)
8b93c638 1246
c906108c
SS
1247AC_PATH_X
1248
7a292a7a
SS
1249
1250# Unlike the sim directory, whether a simulator is linked is controlled by
1251# presence of a SIM= and a SIM_OBS= definition in the target '.mt' file.
1252# This code just checks for a few cases where we'd like to ignore those
1253# definitions, even when they're present in the '.mt' file. These cases
1254# are when --disable-sim is specified, or if the simulator directory is
6c5cfe5b 1255# not part of the source tree.
7a292a7a
SS
1256#
1257AC_ARG_ENABLE(sim,
1258[ --enable-sim Link gdb with simulator],
1259[echo "enable_sim = $enable_sim";
1260 echo "enableval = ${enableval}";
1261 case "${enableval}" in
1262 yes) ignore_sim=false ;;
1263 no) ignore_sim=true ;;
1264 *) ignore_sim=false ;;
1265 esac],
1266[ignore_sim=false])
1267
1268if test ! -d "${srcdir}/../sim"; then
1269 ignore_sim=true
1270fi
1271
1272if test "${ignore_sim}" = "true"; then
1273 IGNORE_SIM="SIM="
1274 IGNORE_SIM_OBS="SIM_OBS="
1275else
1276 IGNORE_SIM=""
1277 IGNORE_SIM_OBS=""
1278 AC_DEFINE(WITH_SIM)
1279fi
1280AC_SUBST(IGNORE_SIM)
1281AC_SUBST(IGNORE_SIM_OBS)
1282
c906108c 1283AC_SUBST(ENABLE_CFLAGS)
d28f9cdf 1284AC_SUBST(PROFILE_CFLAGS)
c906108c
SS
1285
1286AC_SUBST(CONFIG_OBS)
66b965bb 1287AC_SUBST(CONFIG_LIB_OBS)
c906108c
SS
1288AC_SUBST(CONFIG_DEPS)
1289AC_SUBST(CONFIG_SRCS)
dfcd3bfb 1290AC_SUBST(CONFIG_INITS)
b3a90332
AC
1291AC_SUBST(CONFIG_ALL)
1292AC_SUBST(CONFIG_CLEAN)
e56ac5c3
AC
1293AC_SUBST(CONFIG_INSTALL)
1294AC_SUBST(CONFIG_UNINSTALL)
c906108c 1295
c906108c
SS
1296# target_subdir is used by the testsuite to find the target libraries.
1297target_subdir=
1298if test "${host}" != "${target}"; then
1299 target_subdir="${target_alias}/"
1300fi
1301AC_SUBST(target_subdir)
1302
1303frags=
1304host_makefile_frag=${srcdir}/config/${gdb_host_cpu}/${gdb_host}.mh
1305if test ! -f ${host_makefile_frag}; then
7fd60527
AC
1306 # When building a native debuger the .mh file containing things
1307 # like NATDEPFILES is needed. Cross debuggers don't need .mh
1308 # since it no longer contains anything useful.
1309 if test "${target}" = "${host}"; then
1310 AC_MSG_ERROR("*** Gdb does not support native target ${host}")
1311 else
1312 host_makefile_frag=/dev/null
1313 fi
c906108c
SS
1314fi
1315frags="$frags $host_makefile_frag"
1316
1317target_makefile_frag=${srcdir}/config/${gdb_target_cpu}/${gdb_target}.mt
1318if test ! -f ${target_makefile_frag}; then
1319AC_MSG_ERROR("*** Gdb does not support target ${target}")
1320fi
1321frags="$frags $target_makefile_frag"
1322
1323AC_SUBST_FILE(host_makefile_frag)
1324AC_SUBST_FILE(target_makefile_frag)
1325AC_SUBST(frags)
1326
1327changequote(,)dnl
1328hostfile=`sed -n '
1329s/XM_FILE[ ]*=[ ]*\([^ ]*\)/\1/p
1330' ${host_makefile_frag}`
1331
1332targetfile=`sed -n '
1333s/TM_FILE[ ]*=[ ]*\([^ ]*\)/\1/p
1334' ${target_makefile_frag}`
1335
c906108c 1336if test "${target}" = "${host}"; then
a85f51e7
DJ
1337# We pick this up from the host configuration file (.mh) because we
1338# do not have a native configuration Makefile fragment.
c906108c
SS
1339nativefile=`sed -n '
1340s/NAT_FILE[ ]*=[ ]*\([^ ]*\)/\1/p
1341' ${host_makefile_frag}`
c906108c
SS
1342fi
1343changequote([,])
1344
b00a8037
DJ
1345if test x"${gdb_osabi}" != x ; then
1346 AC_DEFINE_UNQUOTED(GDB_OSABI_DEFAULT, $gdb_osabi,
1347 [Define to the default OS ABI for this configuration.])
1348fi
1349
8dcde887
MK
1350# Enable multi-ice-gdb-server.
1351AC_ARG_ENABLE(multi-ice,
1352[ --enable-multi-ice build the multi-ice-gdb-server],
1353 [case $enableval in
1354 yes | no)
1355 ;;
1356 *) AC_MSG_ERROR([bad value $enableval for --enable-multi-ice]) ;;
1357 esac])
1358if test "x$enable_multi_ice" = xyes; then
1359 configdirs="$configdirs multi-ice"
96baa820
JM
1360fi
1361
8dcde887
MK
1362# We only build gdbserver automatically if host and target are the same.
1363if test "x$target" = "x$host"; then
1364 AC_MSG_CHECKING(whether gdbserver is supported on this host)
1365 if test "x$build_gdbserver" = xyes; then
1366 configdirs="$configdirs gdbserver"
1367 AC_MSG_RESULT(yes)
1368 else
1369 AC_MSG_RESULT(no)
1370 fi
a85f51e7
DJ
1371fi
1372
8dcde887 1373AC_CONFIG_SUBDIRS($configdirs)
96baa820 1374
c906108c 1375# If hostfile (XM_FILE) and/or targetfile (TM_FILE) and/or nativefile
5a2402b8
AC
1376# (NAT_FILE) is not set in config/*/*.m[ht] files, we link to an empty
1377# version.
c906108c
SS
1378
1379files=
1380links=
5a2402b8 1381
c906108c 1382rm -f xm.h
5a2402b8 1383xm_h=""
c906108c 1384if test "${hostfile}" != ""; then
5a2402b8
AC
1385 xm_h=xm.h
1386 GDB_XM_FILE="config/${gdb_host_cpu}/${hostfile}"
1387 files="${files} ${GDB_XM_FILE}"
1388 links="${links} xm.h"
1389 AC_DEFINE_UNQUOTED(GDB_XM_FILE, ${GDB_XM_FILE})
c906108c 1390fi
5a2402b8
AC
1391AC_SUBST(xm_h)
1392
c906108c 1393rm -f tm.h
5a2402b8 1394tm_h=""
c906108c 1395if test "${targetfile}" != ""; then
5a2402b8
AC
1396 tm_h=tm.h
1397 GDB_TM_FILE="config/${gdb_target_cpu}/${targetfile}"
1398 files="${files} ${GDB_TM_FILE}"
1399 links="${links} tm.h"
1400 AC_DEFINE_UNQUOTED(GDB_TM_FILE, ${GDB_TM_FILE})
c906108c 1401fi
5a2402b8
AC
1402AC_SUBST(tm_h)
1403
c906108c 1404rm -f nm.h
5a2402b8 1405nm_h=""
c906108c 1406if test "${nativefile}" != ""; then
5a2402b8
AC
1407 nm_h=nm.h
1408 GDB_NM_FILE="config/${gdb_host_cpu}/${nativefile}"
1409 files="${files} ${GDB_NM_FILE}"
1410 links="${links} nm.h"
1411 AC_DEFINE_UNQUOTED(GDB_NM_FILE, ${GDB_NM_FILE})
c906108c 1412fi
5a2402b8
AC
1413AC_SUBST(nm_h)
1414
c906108c
SS
1415AC_LINK_FILES($files, $links)
1416
1417dnl Check for exe extension set on certain hosts (e.g. Win32)
1418AC_EXEEXT
1419
234b45d4
KB
1420dnl Detect the character set used by this host.
1421
1422dnl At the moment, we just assume it's ISO-8859-1 (which is a
1423dnl superset of ASCII containing the characters needed for French,
1424dnl German, Spanish, Italian, and possibly others), but if were
1425dnl *were* to support any host character sets other than ISO-8859-1,
1426dnl here's where we'd detect it.
1427AC_DEFINE(GDB_DEFAULT_HOST_CHARSET, "ISO-8859-1",
1428 [Define to be a string naming the default host character set.])
1429
1430AM_ICONV
1431
ed952ac5 1432AC_OUTPUT(Makefile .gdbinit:gdbinit.in,
c906108c
SS
1433[
1434dnl Autoconf doesn't provide a mechanism for modifying definitions
1435dnl provided by makefile fragments.
1436dnl
7ee6d7eb 1437if test "${nativefile}" = ""; then
c4620205 1438 < Makefile \
e27da16d
JT
1439 sed -e '/^NATDEPFILES[[ ]]*=.*\\$/,/[[^\\]]$/s/^/# /' \
1440 -e '/^NATDEPFILES[[ ]]*=/s/^/# /' \
c4620205
JB
1441 | sed -e '/^\(NATDEPFILES[[ ]]*[[+]]=[[ ]]*\)/s//# \1/' \
1442 > Makefile.tem
c906108c
SS
1443mv -f Makefile.tem Makefile
1444fi
1445
1446changequote(,)dnl
1447sed -e '/^TM_FILE[ ]*=/s,^TM_FILE[ ]*=[ ]*,&config/'"${gdb_target_cpu}"'/,
1448/^XM_FILE[ ]*=/s,^XM_FILE[ ]*=[ ]*,&config/'"${gdb_host_cpu}"'/,
1449/^NAT_FILE[ ]*=/s,^NAT_FILE[ ]*=[ ]*,&config/'"${gdb_host_cpu}"'/,' <Makefile >Makefile.tmp
1450mv -f Makefile.tmp Makefile
1451changequote([,])dnl
1452
2acceee2 1453
c906108c
SS
1454case x$CONFIG_HEADERS in
1455xconfig.h:config.in)
1456echo > stamp-h ;;
1457esac
1458],
1459[
1460gdb_host_cpu=$gdb_host_cpu
1461gdb_target_cpu=$gdb_target_cpu
1462nativefile=$nativefile
1463])
1464
1465exit 0
This page took 0.38199 seconds and 4 git commands to generate.