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