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