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