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