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