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