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