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