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