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