2000-06-06 Michael Snyder <msnyder@seadog.cygnus.com>
[binutils-gdb.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 | solaris2.8) 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_reg_r_fs,
120 [AC_TRY_COMPILE([#include <machine/reg.h>], [struct reg r; r.r_fs;],
121 gdb_cv_struct_reg_r_fs=yes, gdb_cv_struct_reg_r_fs=no)])
122 if test $gdb_cv_struct_reg_r_fs = yes; then
123 AC_DEFINE(HAVE_STRUCT_REG_R_FS)
124 fi
125 AC_CACHE_CHECK([for r_gs in struct reg], gdb_cv_struct_reg_r_gs,
126 [AC_TRY_COMPILE([#include <machine/reg.h>], [struct reg r; r.r_gs;],
127 gdb_cv_struct_reg_r_gs=yes, gdb_cv_struct_reg_r_gs=no)])
128 if test $gdb_cv_struct_reg_r_gs = yes; then
129 AC_DEFINE(HAVE_STRUCT_REG_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 dnl Figure out which term library to use.
613 if test x$gdb_host = xgo32; then
614 TERM_LIB=
615 else
616 if test x$gdb_cv_os_cygwin = xyes; then
617 TERM_LIB='`if test -r ../libtermcap/libtermcap.a; then echo ../libtermcap/libtermcap.a; else echo -ltermcap; fi`'
618 else
619 TERM_LIB=
620 AC_CHECK_LIB(ncurses, tgetent, TERM_LIB=-lncurses,
621 AC_CHECK_LIB(Hcurses, tgetent, TERM_LIB=-lHcurses,
622 AC_CHECK_LIB(termlib, tgetent, TERM_LIB=-ltermlib,
623 AC_CHECK_LIB(termcap, tgetent, TERM_LIB=-ltermcap,
624 AC_CHECK_LIB(curses, tgetent, TERM_LIB=-lcurses,
625 AC_CHECK_LIB(terminfo, tgetent, TERM_LIB=-lterminfo))))))
626
627 if test "x$TERM_LIB" = x
628 then
629 AC_MSG_ERROR(Could not find a term library, e.g. termcap or termlib!)
630 fi
631 fi
632 fi
633 AC_SUBST(TERM_LIB)
634
635 # libreadline needs libuser32.a in a cygwin environment
636 WIN32LIBS=
637 if test x$gdb_cv_os_cygwin = xyes; then
638 WIN32LIBS="-luser32"
639 case "${target}" in
640 *cygwin*) WIN32LIBS="$WIN32LIBS -limagehlp"
641 ;;
642 esac
643 fi
644 AC_SUBST(WIN32LIBS)
645
646 LIBGUI="../libgui/src/libgui.a"
647 GUI_CFLAGS_X="-I${srcdir}/../libgui/src"
648 AC_SUBST(LIBGUI)
649 AC_SUBST(GUI_CFLAGS_X)
650
651 AC_ARG_WITH(cpu,
652 [ --with-cpu=CPU Set the default CPU variant to debug],
653 [case "${target}" in
654 powerpc-* | powerpcle-* )
655 ## It would be nice to keep this table in sync with the one in
656 ## gcc/configure.
657 case "${with_cpu}" in
658 ppc-uisa | rs6000 | 403 | 403GC | 505 | 860 | 601 | 602 | 603 \
659 | 604 | 750 )
660 ## Those are all handled in variants in rs6000-tdep.c, so they're fine.
661 ;;
662 common | power | power2 | rios | rios1 | rios2 | rsc | rsc1 )
663 ## These are all RS6000 variants, as far as GDB is concerned.
664 with_cpu=rs6000
665 ;;
666 603e | ec603e )
667 with_cpu=603
668 ;;
669 604e )
670 with_cpu=604
671 ;;
672 * )
673 AC_MSG_WARN(GDB: unknown --with-cpu value: \`${with_cpu}'; using \`ppc-uisa'.)
674 with_cpu=ppc-uisa
675 ;;
676 esac
677 ;;
678 * )
679 AC_MSG_WARN(GDB may ignore the --with-cpu flag for ${target} targets)
680 ;;
681 esac
682 AC_DEFINE_UNQUOTED(TARGET_CPU_DEFAULT, "${with_cpu}")
683 ],)
684
685
686 AC_ARG_ENABLE(gdbtk,
687 [ --enable-gdbtk Enable GDBTK GUI front end],
688 [case "${enableval}" in
689 yes)
690 case "$host" in
691 *go32*)
692 AC_MSG_WARN([GDB does not support GDBtk on host ${host}. GDBtk will be disabled.])
693 enable_gdbtk=no ;;
694 *windows*)
695 AC_MSG_WARN([GDB does not support GDBtk on host ${host}. GDBtk will be disabled.])
696 enable_gdbtk=no ;;
697 *)
698 enable_gdbtk=yes ;;
699 esac ;;
700 no)
701 enable_gdbtk=no ;;
702 *)
703 AC_MSG_ERROR(bad value ${enableval} given for gdbtk option) ;;
704 esac],
705 [
706 # Default is on for everything but go32 and Cygwin
707 case "$host" in
708 *go32* | *windows*)
709 ;;
710 *)
711 if test -d "${srcdir}/gdbtk" ; then
712 enable_gdbtk=yes
713 fi
714 ;;
715 esac
716 ])
717
718 WIN32LDAPP=
719 AC_SUBST(WIN32LIBS)
720 AC_SUBST(WIN32LDAPP)
721
722 configdir="unix"
723
724 GDBTKLIBS=
725 if test "${enable_gdbtk}" = "yes"; then
726
727 CY_AC_PATH_TCLCONFIG
728 if test -z "${no_tcl}"; then
729 CY_AC_LOAD_TCLCONFIG
730 CY_AC_PATH_TKCONFIG
731
732 # If $no_tk is nonempty, then we can't do Tk, and there is no
733 # point to doing Tcl.
734 if test -z "${no_tk}"; then
735 CY_AC_LOAD_TKCONFIG
736 CY_AC_PATH_TCLH
737 CY_AC_PATH_TKH
738 CY_AC_PATH_ITCLH
739 CY_AC_PATH_ITKH
740 CY_AC_PATH_TIXH
741
742 # now look for Itcl library stuff
743
744 CY_AC_PATH_ITCLCONFIG
745 if test -z "${no_itcl}"; then
746 CY_AC_LOAD_ITCLCONFIG
747 case "${host}" in
748 *-*-cygwin*)
749 itcldir=../itcl/itcl/win/
750 ;;
751 *)
752 itcldir=../itcl/itcl/unix/
753 ;;
754 esac
755
756
757 ITCLLIB="${ITCL_BUILD_LIB_SPEC}"
758 ITCL_DEPS="${itcldir}${ITCL_LIB_FILE}"
759 fi
760
761
762 # now look for Itk library stuff
763 CY_AC_PATH_ITKCONFIG
764 if test -z "${no_itcl}"; then
765 CY_AC_LOAD_ITKCONFIG
766
767 case "${host}" in
768 *-*-cygwin*)
769 itkdir=../itcl/itk/win/
770 ;;
771 *)
772 itkdir=../itcl/itk/unix/
773 ;;
774 esac
775
776 ITKLIB="${ITK_BUILD_LIB_SPEC}"
777 ITK_DEPS="${itkdir}${ITK_LIB_FILE}"
778 fi
779
780 # now look for Tix library stuff
781 CY_AC_PATH_TIXCONFIG
782 if test -z "${no_tix}"; then
783 CY_AC_LOAD_TIXCONFIG
784 TIXLIB="${TIX_BUILD_LIB_SPEC}"
785 TIX_DEPS="${TIX_BUILD_LOCATION}/${TIX_LIB_FILE}"
786 fi
787
788 ENABLE_CFLAGS="$ENABLE_CFLAGS -DGDBTK"
789 # Tcl/Tk 8.1 require -fwritable strings. I don't
790 # know whether 8.2 will or not, but I bet it will.
791 # I don't have to worry about 7.x since we don't support it.
792 GDBTK_CFLAGS=""
793 if test "$GCC" = "yes"; then
794 if test "$TCL_VERSION" != "8.0" ; then
795 GDBTK_CFLAGS="-fwritable-strings"
796 fi
797 fi
798
799 # Include some libraries that Tcl and Tk want.
800 TCL_LIBS='$(LIBGUI) $(ITCL) $(ITK) $(TIX) $(TK) $(TCL) $(X11_LDFLAGS) $(X11_LIBS)'
801 CONFIG_DEPS='$(LIBGUI) $(ITCL_DEPS) $(ITK_DEPS) $(TIX_DEPS) $(TK_DEPS) $(TCL_DEPS)'
802 # Yes, the ordering seems wrong here. But it isn't.
803 # TK_LIBS is the list of libraries that need to be linked
804 # after Tcl/Tk. Note that this isn't put into LIBS. If it
805 # were in LIBS then any link tests after this point would
806 # try to include things like `$(LIBGUI)', which wouldn't work.
807 GDBTKLIBS="${TCL_LIBS} ${TK_LIBS}"
808 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"
809 CONFIG_OBS="${CONFIG_OBS} gdbtk.o gdbtk-cmds.o gdbtk-hooks.o gdbtk-varobj.o gdbtk-wrapper.o"
810 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"
811 CONFIG_ALL="${CONFIG_ALL} \$(SUBDIR_GDBTK_ALL)"
812 CONFIG_CLEAN="${CONFIG_ALL} \$(SUBDIR_GDBTK_CLEAN)"
813 CONFIG_INSTALL="${CONFIG_INSTALL} \$(SUBDIR_GDBTK_INSTALL)"
814 CONFIG_UNINSTALL="${CONFIG_UNINSTALL} \$(SUBDIR_GDBTK_UNINSTALL)"
815
816 if test x$gdb_cv_os_cygwin = xyes; then
817 WIN32LIBS="${WIN32LIBS} -lshell32 -lgdi32 -lcomdlg32 -ladvapi32"
818 WIN32LDAPP="-Wl,--subsystem,console"
819 CONFIG_OBS="${CONFIG_OBS} gdbres.o"
820 fi
821 fi
822 fi
823 fi
824
825 AC_SUBST(X_CFLAGS)
826 AC_SUBST(X_LDFLAGS)
827 AC_SUBST(X_LIBS)
828 AC_SUBST(ITCLLIB)
829 AC_SUBST(ITCL_DEPS)
830 AC_SUBST(ITKLIB)
831 AC_SUBST(ITK_DEPS)
832 AC_SUBST(TIXLIB)
833 AC_SUBST(TIX_DEPS)
834 AC_SUBST(GDBTKLIBS)
835 AC_SUBST(GDBTK_CFLAGS)
836
837 AC_PATH_X
838
839
840 # Unlike the sim directory, whether a simulator is linked is controlled by
841 # presence of a SIM= and a SIM_OBS= definition in the target '.mt' file.
842 # This code just checks for a few cases where we'd like to ignore those
843 # definitions, even when they're present in the '.mt' file. These cases
844 # are when --disable-sim is specified, or if the simulator directory is
845 # not part of the soruce tree.
846 #
847 AC_ARG_ENABLE(sim,
848 [ --enable-sim Link gdb with simulator],
849 [echo "enable_sim = $enable_sim";
850 echo "enableval = ${enableval}";
851 case "${enableval}" in
852 yes) ignore_sim=false ;;
853 no) ignore_sim=true ;;
854 *) ignore_sim=false ;;
855 esac],
856 [ignore_sim=false])
857
858 if test ! -d "${srcdir}/../sim"; then
859 ignore_sim=true
860 fi
861
862 if test "${ignore_sim}" = "true"; then
863 IGNORE_SIM="SIM="
864 IGNORE_SIM_OBS="SIM_OBS="
865 else
866 IGNORE_SIM=""
867 IGNORE_SIM_OBS=""
868 AC_DEFINE(WITH_SIM)
869 fi
870 AC_SUBST(IGNORE_SIM)
871 AC_SUBST(IGNORE_SIM_OBS)
872
873 AC_SUBST(ENABLE_CFLAGS)
874
875 AC_SUBST(CONFIG_OBS)
876 AC_SUBST(CONFIG_DEPS)
877 AC_SUBST(CONFIG_SRCS)
878 AC_SUBST(CONFIG_INITS)
879 AC_SUBST(CONFIG_ALL)
880 AC_SUBST(CONFIG_CLEAN)
881 AC_SUBST(CONFIG_INSTALL)
882 AC_SUBST(CONFIG_UNINSTALL)
883
884 # Begin stuff to support --enable-shared
885 AC_ARG_ENABLE(shared,
886 [ --enable-shared Use shared libraries],
887 [case "${enableval}" in
888 yes) shared=true ;;
889 no) shared=false ;;
890 *) shared=true ;;
891 esac])dnl
892
893 HLDFLAGS=
894 HLDENV=
895 # If we have shared libraries, try to set rpath reasonably.
896 if test "${shared}" = "true"; then
897 case "${host}" in
898 *-*-hpux*)
899 HLDFLAGS='-Wl,+s,+b,$(libdir)'
900 ;;
901 *-*-irix5* | *-*-irix6*)
902 HLDFLAGS='-Wl,-rpath,$(libdir)'
903 ;;
904 *-*-linux*aout*)
905 ;;
906 *-*-linux* | *-pc-linux-gnu*)
907 HLDFLAGS='-Wl,-rpath,$(libdir)'
908 ;;
909 *-*-solaris*)
910 HLDFLAGS='-R $(libdir)'
911 ;;
912 *-*-sysv4*)
913 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;'
914 ;;
915 esac
916 fi
917
918 # On SunOS, if the linker supports the -rpath option, use it to
919 # prevent ../bfd and ../opcodes from being included in the run time
920 # search path.
921 case "${host}" in
922 *-*-sunos*)
923 echo 'main () { }' > conftest.c
924 ${CC} -o conftest -Wl,-rpath= conftest.c >/dev/null 2>conftest.t
925 if grep 'unrecognized' conftest.t >/dev/null 2>&1; then
926 :
927 elif grep 'No such file' conftest.t >/dev/null 2>&1; then
928 :
929 elif grep 'do not mix' conftest.t >/dev/null 2>&1; then
930 :
931 elif grep 'some text already loaded' conftest.t >/dev/null 2>&1; then
932 :
933 elif test "${shared}" = "true"; then
934 HLDFLAGS='-Wl,-rpath=$(libdir)'
935 else
936 HLDFLAGS='-Wl,-rpath='
937 fi
938 rm -f conftest.t conftest.c conftest
939 ;;
940 esac
941 AC_SUBST(HLDFLAGS)
942 AC_SUBST(HLDENV)
943 # End stuff to support --enable-shared
944
945 # target_subdir is used by the testsuite to find the target libraries.
946 target_subdir=
947 if test "${host}" != "${target}"; then
948 target_subdir="${target_alias}/"
949 fi
950 AC_SUBST(target_subdir)
951
952 frags=
953 host_makefile_frag=${srcdir}/config/${gdb_host_cpu}/${gdb_host}.mh
954 if test ! -f ${host_makefile_frag}; then
955 AC_MSG_ERROR("*** Gdb does not support host ${host}")
956 fi
957 frags="$frags $host_makefile_frag"
958
959 target_makefile_frag=${srcdir}/config/${gdb_target_cpu}/${gdb_target}.mt
960 if test ! -f ${target_makefile_frag}; then
961 AC_MSG_ERROR("*** Gdb does not support target ${target}")
962 fi
963 frags="$frags $target_makefile_frag"
964
965 AC_SUBST_FILE(host_makefile_frag)
966 AC_SUBST_FILE(target_makefile_frag)
967 AC_SUBST(frags)
968
969 changequote(,)dnl
970 hostfile=`sed -n '
971 s/XM_FILE[ ]*=[ ]*\([^ ]*\)/\1/p
972 ' ${host_makefile_frag}`
973
974 targetfile=`sed -n '
975 s/TM_FILE[ ]*=[ ]*\([^ ]*\)/\1/p
976 ' ${target_makefile_frag}`
977
978 # these really aren't orthogonal true/false values of the same condition,
979 # but shells are slow enough that I like to reuse the test conditions
980 # whenever possible
981 if test "${target}" = "${host}"; then
982 nativefile=`sed -n '
983 s/NAT_FILE[ ]*=[ ]*\([^ ]*\)/\1/p
984 ' ${host_makefile_frag}`
985 # else
986 # GDBserver is only useful in a "native" enviroment
987 # configdirs=`echo $configdirs | sed 's/gdbserver//'`
988 fi
989 changequote([,])
990
991 SUBDIRS="doc testsuite nlm"
992 if test "${enable_multi_ice}" = "yes"; then
993 SUBDIRS="${SUBDIRS} multi-ice"
994 fi
995
996 AC_SUBST(SUBDIRS)
997
998 # If hostfile (XM_FILE) and/or targetfile (TM_FILE) and/or nativefile
999 # (NAT_FILE) is not set in config/*/*.m[ht] files, we don't make the
1000 # corresponding links. But we have to remove the xm.h files and tm.h
1001 # files anyway, e.g. when switching from "configure host" to
1002 # "configure none".
1003
1004 files=
1005 links=
1006 rm -f xm.h
1007 if test "${hostfile}" != ""; then
1008 files="${files} config/${gdb_host_cpu}/${hostfile}"
1009 links="${links} xm.h"
1010 fi
1011 rm -f tm.h
1012 if test "${targetfile}" != ""; then
1013 files="${files} config/${gdb_target_cpu}/${targetfile}"
1014 links="${links} tm.h"
1015 fi
1016 rm -f nm.h
1017 if test "${nativefile}" != ""; then
1018 files="${files} config/${gdb_host_cpu}/${nativefile}"
1019 links="${links} nm.h"
1020 else
1021 # A cross-only configuration.
1022 files="${files} config/nm-empty.h"
1023 links="${links} nm.h"
1024 fi
1025 AC_PROG_LN_S
1026
1027 AC_LINK_FILES($files, $links)
1028
1029 dnl Check for exe extension set on certain hosts (e.g. Win32)
1030 AC_EXEEXT
1031
1032 AC_CONFIG_SUBDIRS($configdirs)
1033 AC_OUTPUT(Makefile .gdbinit:gdbinit.in,
1034 [
1035 dnl Autoconf doesn't provide a mechanism for modifying definitions
1036 dnl provided by makefile fragments.
1037 dnl
1038 if test "${nativefile}" = ""; then
1039 sed -e '/^NATDEPFILES[[ ]]*=[[ ]]*/s//# NATDEPFILES=/' \
1040 < Makefile > Makefile.tem
1041 mv -f Makefile.tem Makefile
1042 fi
1043
1044 changequote(,)dnl
1045 sed -e '/^TM_FILE[ ]*=/s,^TM_FILE[ ]*=[ ]*,&config/'"${gdb_target_cpu}"'/,
1046 /^XM_FILE[ ]*=/s,^XM_FILE[ ]*=[ ]*,&config/'"${gdb_host_cpu}"'/,
1047 /^NAT_FILE[ ]*=/s,^NAT_FILE[ ]*=[ ]*,&config/'"${gdb_host_cpu}"'/,' <Makefile >Makefile.tmp
1048 mv -f Makefile.tmp Makefile
1049 changequote([,])dnl
1050
1051
1052 case x$CONFIG_HEADERS in
1053 xconfig.h:config.in)
1054 echo > stamp-h ;;
1055 esac
1056 ],
1057 [
1058 gdb_host_cpu=$gdb_host_cpu
1059 gdb_target_cpu=$gdb_target_cpu
1060 nativefile=$nativefile
1061 ])
1062
1063 exit 0