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