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