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