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