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