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