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