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