[guile] Run finalizers from GDB thread
[external/binutils.git] / gdb / configure.ac
1 dnl Autoconf configure script for GDB, the GNU debugger.
2 dnl Copyright (C) 1995-2015 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 3 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, see <http://www.gnu.org/licenses/>.
18
19 dnl Process this file with autoconf to produce a configure script.
20
21 AC_PREREQ(2.59)dnl
22 AC_INIT(main.c)
23 AC_CONFIG_HEADER(config.h:config.in)
24 AM_MAINTAINER_MODE
25
26 # Set the 'development' global.
27 . $srcdir/../bfd/development.sh
28
29 AC_PROG_CC
30 AC_PROG_CXX
31
32 AC_USE_SYSTEM_EXTENSIONS
33 ACX_LARGEFILE
34 AM_PROG_CC_STDC
35 AM_PROG_INSTALL_STRIP
36
37 AC_CONFIG_AUX_DIR(..)
38 AC_CANONICAL_SYSTEM
39 AC_ARG_PROGRAM
40
41 # See if we are building with C++, and substitute COMPILER.
42 GDB_AC_BUILD_WITH_CXX
43
44 # Dependency checking.
45 ZW_CREATE_DEPDIR
46 ZW_PROG_COMPILER_DEPENDENCIES([CC])
47
48 # Check for the 'make' the user wants to use.
49 AC_CHECK_PROGS(MAKE, make)
50 MAKE_IS_GNU=
51 case "`$MAKE --version 2>&1 | sed 1q`" in
52   *GNU*)
53     MAKE_IS_GNU=yes
54     ;;
55 esac
56 AM_CONDITIONAL(GMAKE, test "$MAKE_IS_GNU" = yes)
57 AC_PROG_MAKE_SET
58
59 gnulib_extra_configure_args=
60 # If large-file support is disabled, make sure gnulib does the same.
61 if test "$enable_largefile" = no; then
62 gnulib_extra_configure_args="$gnulib_extra_configure_args --disable-largefile"
63 fi
64
65 # Configure gnulib.  We need to build gnulib under some other
66 # directory not "gnulib", to avoid the problem of both GDB and
67 # GDBserver wanting to build it in the same directory, when building
68 # in the source dir.
69 ACX_CONFIGURE_DIR(["gnulib"], ["build-gnulib"],
70                   ["$gnulib_extra_configure_args"])
71
72 dnl List of object files and targets accumulated by configure.
73
74 CONFIG_OBS=
75 CONFIG_DEPS=
76 CONFIG_SRCS=
77 ENABLE_CFLAGS=
78
79 CONFIG_ALL=
80 CONFIG_CLEAN=
81 CONFIG_INSTALL=
82 CONFIG_UNINSTALL=
83
84 dnl Set up for gettext.
85 ZW_GNU_GETTEXT_SISTER_DIR
86
87 localedir='${datadir}/locale'
88 AC_SUBST(localedir)
89
90 if test x"$USE_NLS" = xyes; then
91    CONFIG_ALL="$CONFIG_ALL all-po"
92    CONFIG_CLEAN="$CONFIG_CLEAN clean-po"
93    CONFIG_INSTALL="$CONFIG_INSTALL install-po"
94    CONFIG_UNINSTALL="$CONFIG_UNINSTALL uninstall-po"
95 fi
96
97 GNULIB=build-gnulib/import
98
99 # For Makefile dependencies.
100 GNULIB_STDINT_H=
101 if test x"$STDINT_H" != x; then
102   GNULIB_STDINT_H=$GNULIB/$STDINT_H
103 fi
104 AC_SUBST(GNULIB_STDINT_H)
105
106 PACKAGE=gdb
107 AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of this package. ])
108 AC_SUBST(PACKAGE)
109
110 # We never need to detect it in this sub-configure.
111 # But preserve it for config.status --recheck.
112 AC_ARG_VAR(MAKEINFO,
113   [Parent configure detects if it is of sufficient version.])
114 AC_ARG_VAR(MAKEINFOFLAGS,
115   [Parameters for MAKEINFO.])
116
117 MAKEINFO_EXTRA_FLAGS=""
118 AC_CACHE_CHECK([whether $MAKEINFO supports @click], gdb_cv_have_makeinfo_click,
119   [echo '@clicksequence{a @click{} b}' >conftest.texinfo
120   if eval "$MAKEINFO conftest.texinfo >&5 2>&5"; then
121     gdb_cv_have_makeinfo_click=yes
122   else
123     gdb_cv_have_makeinfo_click=no
124   fi])
125 if test x"$gdb_cv_have_makeinfo_click" = xyes; then
126   MAKEINFO_EXTRA_FLAGS="$MAKEINFO_EXTRA_FLAGS -DHAVE_MAKEINFO_CLICK"
127 fi
128 AC_SUBST(MAKEINFO_EXTRA_FLAGS)
129
130 GDB_AC_WITH_DIR(DEBUGDIR, separate-debug-dir,
131     [look for global separate debug info in this path @<:@LIBDIR/debug@:>@],
132     [${libdir}/debug])
133
134 # We can't pass paths as command line arguments.
135 # Mingw32 tries to be clever and will convert the paths for us.
136 # For example -DBINDIR="/usr/local/bin" passed on the command line may get
137 # converted to -DBINDIR="E:/msys/mingw32/msys/1.0/local/bin".
138 # This breaks GDB's relocatable path conversions since paths passed in
139 # config.h would not get so translated, the path prefixes no longer match.
140 AC_DEFINE_DIR(BINDIR, bindir, [Directory of programs.])
141
142 # GDB's datadir relocation
143
144 GDB_AC_WITH_DIR(GDB_DATADIR, gdb-datadir,
145     [look for global separate data files in this path @<:@DATADIR/gdb@:>@],
146     [${datadir}/gdb])
147
148 AC_ARG_WITH(relocated-sources,
149 AS_HELP_STRING([--with-relocated-sources=PATH], [automatically relocate this path for source files]),
150 [reloc_srcdir="${withval}"
151  AC_DEFINE_DIR(RELOC_SRCDIR, reloc_srcdir,
152               [Relocated directory for source files. ])
153 ])
154
155 AC_MSG_CHECKING([for default auto-load directory])
156 AC_ARG_WITH(auto-load-dir,
157 AS_HELP_STRING([--with-auto-load-dir=PATH],
158   [directories from which to load auto-loaded scripts @<:@$debugdir:$datadir/auto-load@:>@]),,
159   [with_auto_load_dir='$debugdir:$datadir/auto-load'])
160 escape_dir=`echo $with_auto_load_dir | sed 's/[[$]]\(datadir\|debugdir\)\>/\\\\\\\\\\\\&/g'`
161 AC_DEFINE_DIR(AUTO_LOAD_DIR, escape_dir,
162               [Directories from which to load auto-loaded scripts.])
163 AC_MSG_RESULT([$with_auto_load_dir])
164
165 AC_MSG_CHECKING([for default auto-load safe-path])
166 AC_ARG_WITH(auto-load-safe-path,
167 AS_HELP_STRING([--with-auto-load-safe-path=PATH],
168   [directories safe to hold auto-loaded files @<:@--with-auto-load-dir@:>@])
169 AS_HELP_STRING([--without-auto-load-safe-path],
170                [do not restrict auto-loaded files locations]),
171     [if test "$with_auto_load_safe_path" = "no"; then
172      with_auto_load_safe_path="/"
173      fi],
174 [with_auto_load_safe_path="$with_auto_load_dir"])
175 escape_dir=`echo $with_auto_load_safe_path | sed 's/[[$]]\(datadir\|debugdir\)\>/\\\\\\\\\\\\&/g'`
176 AC_DEFINE_DIR(AUTO_LOAD_SAFE_PATH, escape_dir,
177               [Directories safe to hold auto-loaded files.])
178 AC_MSG_RESULT([$with_auto_load_safe_path])
179
180 AC_CONFIG_SUBDIRS(testsuite)
181
182 # Check whether to support alternative target configurations
183 AC_ARG_ENABLE(targets,
184 AS_HELP_STRING([--enable-targets=TARGETS], [alternative target configurations]),
185 [case "${enableval}" in
186   yes | "") AC_ERROR(enable-targets option must specify target names or 'all')
187             ;;
188   no)       enable_targets= ;;
189   *)        enable_targets=$enableval ;;
190 esac])
191
192 # Check whether to enable 64-bit support on 32-bit hosts
193 AC_ARG_ENABLE(64-bit-bfd,
194 AS_HELP_STRING([--enable-64-bit-bfd], [64-bit support (on hosts with narrower word sizes)]),
195 [case "${enableval}" in
196   yes)  want64=true  ;;
197   no)   want64=false ;;
198   *)    AC_MSG_ERROR(bad value ${enableval} for 64-bit-bfd option) ;;
199 esac],[want64=false])dnl
200
201 # Provide defaults for some variables set by the per-host and per-target
202 # configuration.
203 gdb_host_obs=posix-hdep.o
204
205 if test "${target}" = "${host}"; then
206   gdb_native=yes
207 else
208   gdb_native=no
209 fi
210
211 . $srcdir/configure.host
212
213 # Add in the common host objects.
214 . $srcdir/common/common.host
215 gdb_host_obs="$gdb_host_obs $common_host_obs"
216
217 # Accumulate some settings from configure.tgt over all enabled targets
218
219 TARGET_OBS=
220 all_targets=
221 HAVE_NATIVE_GCORE_TARGET=
222
223 for targ_alias in `echo $target_alias $enable_targets | sed 's/,/ /g'`
224 do
225   if test "$targ_alias" = "all"; then
226     all_targets=true
227   else
228     # Canonicalize the secondary target names.
229     result=`$ac_config_sub $targ_alias 2>/dev/null`
230     if test -n "$result"; then
231         targ=$result
232     else
233         targ=$targ_alias
234     fi
235
236     . ${srcdir}/configure.tgt
237
238     AS_IF([test -z "${gdb_target_obs}"],
239       [AC_MSG_ERROR([configuration ${targ} is unsupported.])])
240
241     # Target-specific object files
242     for i in ${gdb_target_obs}; do
243         case " $TARGET_OBS " in
244         *" ${i} "*) ;;
245         *)
246           TARGET_OBS="$TARGET_OBS ${i}"
247           ;;
248         esac
249     done
250
251     # Check whether this target needs 64-bit CORE_ADDR
252     if test x${want64} = xfalse; then
253       . ${srcdir}/../bfd/config.bfd
254     fi
255
256     # Check whether this target is native and supports gcore.
257     if test $gdb_native = yes -a "$targ_alias" = "$target_alias" \
258        && $gdb_have_gcore; then
259       HAVE_NATIVE_GCORE_TARGET=1
260     fi
261   fi
262 done
263
264 if test x${all_targets} = xtrue; then
265
266   # We want all 64-bit targets if we either:
267   #  - run on a 64-bit host  or
268   #  - already require 64-bit support for some other target  or
269   #  - the --enable-64-bit-bfd option was supplied
270   # Otherwise we only support all 32-bit targets.
271   #
272   # NOTE: This test must be in sync with the corresponding
273   #       tests in BFD!
274
275   if test x${want64} = xfalse; then
276     AC_CHECK_SIZEOF(long)
277     if test "x${ac_cv_sizeof_long}" = "x8"; then
278       want64=true
279     fi
280   fi
281   if test x${want64} = xtrue; then
282     TARGET_OBS='$(ALL_TARGET_OBS) $(ALL_64_TARGET_OBS)'
283   else
284     TARGET_OBS='$(ALL_TARGET_OBS)'
285   fi
286 fi
287
288 AC_SUBST(TARGET_OBS)
289 AC_SUBST(HAVE_NATIVE_GCORE_TARGET)
290
291 # For other settings, only the main target counts.
292 gdb_sim=
293 gdb_osabi=
294 build_gdbserver=
295 targ=$target; . ${srcdir}/configure.tgt
296
297 # Fetch the default architecture and default target vector from BFD.
298 targ=$target; . $srcdir/../bfd/config.bfd
299
300 # We only want the first architecture, so strip off the others if
301 # there is more than one.
302 targ_archs=`echo $targ_archs | sed 's/ .*//'`
303
304 if test "x$targ_archs" != x; then
305   AC_DEFINE_UNQUOTED(DEFAULT_BFD_ARCH, $targ_archs,
306     [Define to BFD's default architecture. ])
307 fi
308 if test "x$targ_defvec" != x; then
309   AC_DEFINE_UNQUOTED(DEFAULT_BFD_VEC, $targ_defvec,
310     [Define to BFD's default target vector. ])
311 fi
312
313 # The CLI cannot be disabled yet, but may be in the future.
314
315 # Enable CLI.
316 AC_ARG_ENABLE(gdbcli,
317 AS_HELP_STRING([--disable-gdbcli], [disable command-line interface (CLI)]),
318   [case $enableval in
319     yes)
320       ;;
321     no)
322       AC_MSG_ERROR([the command-line interface cannot be disabled yet]) ;;
323     *)
324       AC_MSG_ERROR([bad value $enableval for --enable-gdbcli]) ;;
325   esac],
326   [enable_gdbcli=yes])
327 if test x"$enable_gdbcli" = xyes; then
328   if test -d $srcdir/cli; then
329     CONFIG_OBS="$CONFIG_OBS \$(SUBDIR_CLI_OBS)"
330     CONFIG_DEPS="$CONFIG_DEPS \$(SUBDIR_CLI_DEPS)"
331     CONFIG_SRCS="$CONFIG_SRCS \$(SUBDIR_CLI_SRCS)"
332     ENABLE_CFLAGS="$ENABLE_CFLAGS \$(SUBDIR_CLI_CFLAGS)"
333   fi
334 fi
335
336 # Enable MI.
337 AC_ARG_ENABLE(gdbmi,
338 AS_HELP_STRING([--disable-gdbmi], [disable machine-interface (MI)]),
339   [case $enableval in
340     yes | no)
341       ;;
342     *)
343       AC_MSG_ERROR([bad value $enableval for --enable-gdbmi]) ;;
344   esac],
345   [enable_gdbmi=yes])
346 if test x"$enable_gdbmi" = xyes; then
347   if test -d $srcdir/mi; then
348     CONFIG_OBS="$CONFIG_OBS \$(SUBDIR_MI_OBS)"
349     CONFIG_DEPS="$CONFIG_DEPS \$(SUBDIR_MI_DEPS)"
350     CONFIG_SRCS="$CONFIG_SRCS \$(SUBDIR_MI_SRCS)"
351     ENABLE_CFLAGS="$ENABLE_CFLAGS \$(SUBDIR_MI_CFLAGS)"
352   fi
353 fi
354
355 # Enable TUI.
356 AC_ARG_ENABLE(tui,
357 AS_HELP_STRING([--enable-tui], [enable full-screen terminal user interface (TUI)]),
358   [case $enableval in
359     yes | no | auto)
360       ;;
361     *)
362       AC_MSG_ERROR([bad value $enableval for --enable-tui]) ;;
363   esac],enable_tui=auto)
364
365 # Enable gdbtk.
366 AC_ARG_ENABLE(gdbtk,
367 AS_HELP_STRING([--enable-gdbtk], [enable gdbtk graphical user interface (GUI)]),
368   [case $enableval in
369     yes | no)
370       ;;
371     *)
372       AC_MSG_ERROR([bad value $enableval for --enable-gdbtk]) ;;
373   esac],
374   [if test -d $srcdir/gdbtk; then
375     enable_gdbtk=yes
376   else
377     enable_gdbtk=no
378   fi])
379 # We unconditionally disable gdbtk tests on selected platforms.
380 case $host_os in
381   go32* | windows*)
382     AC_MSG_WARN([gdbtk isn't supported on $host; disabling])
383     enable_gdbtk=no ;;
384 esac
385
386 # Libunwind support for ia64.
387
388 AC_ARG_WITH(libunwind-ia64,
389 AS_HELP_STRING([--with-libunwind-ia64],
390                [use libunwind frame unwinding for ia64 targets]),,
391             [with_libunwind_ia64=auto])
392
393 # Backward compatibility option.
394 if test "${with_libunwind+set}" = set; then
395   if test x"$with_libunwind_ia64" != xauto; then
396     AC_MSG_ERROR(
397       [option --with-libunwind is deprecated, use --with-libunwind-ia64])
398   fi
399   AC_MSG_WARN([option --with-libunwind is deprecated, use --with-libunwind-ia64])
400   with_libunwind_ia64="$with_libunwind"
401 fi
402
403 case "$with_libunwind_ia64" in
404   yes | no)
405     ;;
406   auto)
407     AC_CHECK_HEADERS(libunwind-ia64.h)
408     with_libunwind_ia64=$ac_cv_header_libunwind_ia64_h
409     ;;
410   *)
411     AC_MSG_ERROR(
412       [bad value $with_libunwind_ia64 for GDB --with-libunwind-ia64 option])
413     ;;
414 esac
415
416 if test x"$with_libunwind_ia64" = xyes; then
417   AC_CHECK_HEADERS(libunwind-ia64.h)
418   if test x"$ac_cv_header_libunwind_ia64_h" != xyes; then
419     AC_MSG_ERROR([GDB option --with-libunwind-ia64 requires libunwind-ia64.h])
420   fi
421   CONFIG_OBS="$CONFIG_OBS ia64-libunwind-tdep.o"
422   CONFIG_DEPS="$CONFIG_DEPS ia64-libunwind-tdep.o"
423   CONFIG_SRCS="$CONFIG_SRCS ia64-libunwind-tdep.c"
424 fi
425
426 opt_curses=no
427 AC_ARG_WITH(curses, AS_HELP_STRING([--with-curses], [use the curses library instead of the termcap library]), opt_curses=$withval)
428
429 prefer_curses=no
430 if test "$opt_curses" = "yes"; then
431   prefer_curses=yes
432 fi
433
434 # Profiling support.
435 AC_ARG_ENABLE(profiling,
436 AS_HELP_STRING([--enable-profiling], [enable profiling of GDB]),
437   [case $enableval in
438     yes | no)
439       ;;
440     *)
441       AC_MSG_ERROR([bad value $enableval for --enable-profile]) ;;
442   esac],
443  [enable_profiling=no])
444
445 AC_CHECK_FUNCS(monstartup _mcleanup)
446 AC_CACHE_CHECK([for _etext], ac_cv_var__etext,
447 [AC_TRY_LINK(
448 [#include <stdlib.h>
449 extern char _etext;
450 ],
451 [free (&_etext);], ac_cv_var__etext=yes, ac_cv_var__etext=no)])
452 if test $ac_cv_var__etext = yes; then
453   AC_DEFINE(HAVE__ETEXT, 1,
454             [Define to 1 if your system has the _etext variable. ])
455 fi
456 AC_CACHE_CHECK([for etext], ac_cv_var_etext,
457 [AC_TRY_LINK(
458 [#include <stdlib.h>
459 extern char etext;
460 ],
461 [free (&etext);], ac_cv_var_etext=yes, ac_cv_var_etext=no)])
462 if test $ac_cv_var_etext = yes; then
463   AC_DEFINE(HAVE_ETEXT, 1,
464             [Define to 1 if your system has the etext variable. ])
465 fi
466 if test "$enable_profiling" = yes ; then
467   if test $ac_cv_func_monstartup = no || test $ac_cv_func__mcleanup = no; then
468     AC_MSG_ERROR(--enable-profiling requires monstartup and _mcleanup)
469   fi
470   PROFILE_CFLAGS=-pg
471   OLD_CFLAGS="$CFLAGS"
472   CFLAGS="$CFLAGS $PROFILE_CFLAGS"
473
474   AC_CACHE_CHECK([whether $CC supports -pg], ac_cv_cc_supports_pg,
475     [AC_TRY_COMPILE([], [int x;], ac_cv_cc_supports_pg=yes,
476      ac_cv_cc_supports_pg=no)])
477
478   if test $ac_cv_cc_supports_pg = no; then
479     AC_MSG_ERROR(--enable-profiling requires a compiler which supports -pg)
480   fi
481
482   CFLAGS="$OLD_CFLAGS"
483 fi
484
485 ACX_PKGVERSION([GDB])
486 ACX_BUGURL([http://www.gnu.org/software/gdb/bugs/])
487 AC_DEFINE_UNQUOTED([PKGVERSION], ["$PKGVERSION"], [Additional package description])
488 AC_DEFINE_UNQUOTED([REPORT_BUGS_TO], ["$REPORT_BUGS_TO"], [Bug reporting address])
489
490 # --------------------- #
491 # Checks for programs.  #
492 # --------------------- #
493
494 AC_PROG_AWK
495 AC_PROG_INSTALL
496 AC_PROG_LN_S
497 AC_PROG_RANLIB
498 AC_PROG_YACC
499
500 AC_CHECK_TOOL(AR, ar)
501 AC_CHECK_TOOL(DLLTOOL, dlltool)
502 AC_CHECK_TOOL(WINDRES, windres)
503
504 case $host_os in
505   gnu*)
506     # Needed for GNU Hurd hosts.
507     AC_CHECK_TOOL(MIG, mig)
508     if test x"$MIG" = x; then
509       AC_MSG_ERROR([MIG not found but required for $host hosts])
510     fi
511     ;;
512 esac
513
514 # ---------------------- #
515 # Checks for libraries.  #
516 # ---------------------- #
517
518 # We might need to link with -lm; most simulators need it.
519 AC_CHECK_LIB(m, main)
520
521 # We need to link with -lw to get `wctype' on Solaris before Solaris
522 # 2.6.  Solaris 2.6 and beyond have this function in libc, and have a
523 # libw that some versions of the GNU linker cannot hanle (GNU ld 2.9.1
524 # is known to have this problem).  Therefore we avoid libw if we can.
525 AC_CHECK_FUNC(wctype, [],
526   [AC_CHECK_LIB(w, wctype)])
527
528 # Some systems (e.g. Solaris) have `gethostbyname' in libnsl.
529 AC_SEARCH_LIBS(gethostbyname, nsl)
530
531 # Some systems (e.g. Solaris) have `socketpair' in libsocket.
532 AC_SEARCH_LIBS(socketpair, socket)
533
534 # Link in zlib if we can.  This allows us to read compressed debug sections.
535 AM_ZLIB
536
537 # On HP/UX we may need libxpdl for dlgetmodinfo (used by solib-pa64.c).
538 AC_SEARCH_LIBS(dlgetmodinfo, [dl xpdl])
539
540 AM_ICONV
541
542 # GDB may fork/exec the iconv program to get the list of supported character
543 # sets.  Allow the user to specify where to find it.
544 # There are several factors affecting the choice of option name:
545 # - There is already --with-libiconv-prefix but we can't use it, it specifies
546 #   the build-time location of libiconv files.
547 # - The program we need to find is iconv, which comes with glibc.  The user
548 #   doesn't necessarily have libiconv installed.  Therefore naming this
549 #   --with-libiconv-foo feels wrong.
550 # - We want the path to be relocatable, but GDB_AC_DEFINE_RELOCATABLE is
551 #   defined to work on directories not files (though it really doesn't know
552 #   the difference).
553 # - Calling this --with-iconv-prefix is perceived to cause too much confusion
554 #   with --with-libiconv-prefix.
555 # Putting these together is why the option name is --with-iconv-bin.
556
557 AC_ARG_WITH(iconv-bin,
558 AS_HELP_STRING([--with-iconv-bin=PATH], [specify where to find the iconv program]),
559 [iconv_bin="${withval}"
560  AC_DEFINE_UNQUOTED([ICONV_BIN], ["${iconv_bin}"],
561                     [Path of directory of iconv program.])
562  GDB_AC_DEFINE_RELOCATABLE(ICONV_BIN, iconv, ${iconv_bin})
563 ])
564
565 # For the TUI, we need enhanced curses functionality.
566 if test x"$enable_tui" != xno; then
567   prefer_curses=yes
568 fi
569
570 curses_found=no
571 if test x"$prefer_curses" = xyes; then
572   # FIXME: kettenis/20040905: We prefer ncurses over the vendor-supplied
573   # curses library because the latter might not provide all the
574   # functionality we need.  However, this leads to problems on systems
575   # where the linker searches /usr/local/lib, but the compiler doesn't
576   # search /usr/local/include, if ncurses is installed in /usr/local.  A
577   # default installation of ncurses on alpha*-dec-osf* will lead to such
578   # a situation.
579   AC_SEARCH_LIBS(waddstr, [ncurses cursesX curses])
580
581   if test "$ac_cv_search_waddstr" != no; then
582     curses_found=yes
583   fi
584 fi
585
586 # Check whether we should enable the TUI, but only do so if we really
587 # can.
588 if test x"$enable_tui" != xno; then
589   if test -d $srcdir/tui; then
590     if test "$curses_found" != no; then
591       CONFIG_OBS="$CONFIG_OBS \$(SUBDIR_TUI_OBS)"
592       CONFIG_DEPS="$CONFIG_DEPS \$(SUBDIR_TUI_DEPS)"
593       CONFIG_SRCS="$CONFIG_SRCS \$(SUBDIR_TUI_SRCS)"
594       ENABLE_CFLAGS="$ENABLE_CFLAGS \$(SUBDIR_TUI_CFLAGS)"
595     else
596       if test x"$enable_tui" = xyes; then
597         AC_MSG_ERROR([no enhanced curses library found; disable TUI])
598       else
599         AC_MSG_WARN([no enhanced curses library found; disabling TUI])
600       fi
601     fi
602   fi
603 fi
604
605 # Since GDB uses Readline, we need termcap functionality.  In many
606 # cases this will be provided by the curses library, but some systems
607 # have a seperate termcap library, or no curses library at all.
608
609 case $host_os in
610   cygwin*)
611     if test -d $srcdir/libtermcap; then
612       LIBS="../libtermcap/libtermcap.a $LIBS"
613       ac_cv_search_tgetent="../libtermcap/libtermcap.a"
614     fi ;;
615   go32* | *djgpp*)
616     ac_cv_search_tgetent="none required"
617     ;;
618   *mingw32*)
619     if test x"$curses_found" != xyes; then
620       ac_cv_search_tgetent="none required"
621       CONFIG_OBS="$CONFIG_OBS stub-termcap.o"
622     fi ;;
623 esac
624
625 # These are the libraries checked by Readline.
626 AC_SEARCH_LIBS(tgetent, [termcap tinfo curses ncurses])
627
628 if test "$ac_cv_search_tgetent" = no; then
629   AC_MSG_ERROR([no termcap library found])
630 fi
631
632 AC_ARG_WITH([system-readline],
633   [AS_HELP_STRING([--with-system-readline],
634                   [use installed readline library])])
635
636 if test "$with_system_readline" = yes; then
637   READLINE=-lreadline
638   READLINE_DEPS=
639   READLINE_CFLAGS=
640   READLINE_TEXI_INCFLAG=
641 else
642   READLINE='$(READLINE_DIR)/libreadline.a'
643   READLINE_DEPS='$(READLINE)'
644   READLINE_CFLAGS='-I$(READLINE_SRC)/..'
645   READLINE_TEXI_INCFLAG='-I $(READLINE_DIR)'
646 fi
647 AC_SUBST(READLINE)
648 AC_SUBST(READLINE_DEPS)
649 AC_SUBST(READLINE_CFLAGS)
650 AC_SUBST(READLINE_TEXI_INCFLAG)
651
652 # Generate jit-reader.h
653
654 # This is typedeffed to GDB_CORE_ADDR in jit-reader.h
655 TARGET_PTR=
656
657 AC_CHECK_SIZEOF(unsigned long long)
658 AC_CHECK_SIZEOF(unsigned long)
659 AC_CHECK_SIZEOF(unsigned __int128)
660
661 if test "x${ac_cv_sizeof_unsigned_long}" = "x8"; then
662   TARGET_PTR="unsigned long"
663 elif test "x${ac_cv_sizeof_unsigned_long_long}" = "x8"; then
664   TARGET_PTR="unsigned long long"
665 elif test "x${ac_cv_sizeof_unsigned___int128}" = "x16"; then
666   TARGET_PTR="unsigned __int128"
667 else
668   TARGET_PTR="unsigned long"
669 fi
670
671 AC_SUBST(TARGET_PTR)
672 AC_CONFIG_FILES([jit-reader.h:jit-reader.in])
673
674 AC_SEARCH_LIBS(dlopen, dl)
675
676 GDB_AC_WITH_DIR([JIT_READER_DIR], [jit-reader-dir],
677                 [directory to load the JIT readers from],
678                 [${libdir}/gdb])
679
680 AC_ARG_WITH(expat,
681   AS_HELP_STRING([--with-expat], [include expat support (auto/yes/no)]),
682   [], [with_expat=auto])
683 AC_MSG_CHECKING([whether to use expat])
684 AC_MSG_RESULT([$with_expat])
685
686 if test "${with_expat}" = no; then
687   AC_MSG_WARN([expat support disabled; some features may be unavailable.])
688   HAVE_LIBEXPAT=no
689 else
690   AC_LIB_HAVE_LINKFLAGS([expat], [], [#include "expat.h"],
691                         [XML_Parser p = XML_ParserCreate (0);])
692   if test "$HAVE_LIBEXPAT" != yes; then
693     if test "$with_expat" = yes; then
694       AC_MSG_ERROR([expat is missing or unusable])
695     else
696       AC_MSG_WARN([expat is missing or unusable; some features may be unavailable.])
697     fi
698   else
699     save_LIBS=$LIBS
700     LIBS="$LIBS $LIBEXPAT"
701     AC_CHECK_FUNCS(XML_StopParser)
702     LIBS=$save_LIBS
703   fi
704 fi
705
706 # --------------------- #
707 # Check for libpython.  #
708 # --------------------- #
709
710 dnl Utility to simplify finding libpython.
711 dnl $1 = pythonX.Y
712 dnl $2 = the shell variable to assign the result to
713 dnl      If libpython is found we store $version here.
714 dnl $3 = additional flags to add to CPPFLAGS
715 dnl $4 = additional flags to add to LIBS
716
717 AC_DEFUN([AC_TRY_LIBPYTHON],
718 [
719   version=$1
720   define([have_libpython_var],$2)
721   new_CPPFLAGS=$3
722   new_LIBS=$4
723   AC_MSG_CHECKING([for ${version}])
724   save_CPPFLAGS=$CPPFLAGS
725   save_LIBS=$LIBS
726   CPPFLAGS="$CPPFLAGS $new_CPPFLAGS"
727   LIBS="$LIBS $new_LIBS"
728   found_usable_python=no
729   AC_LINK_IFELSE(AC_LANG_PROGRAM([[#include "Python.h"]],
730                                  [[Py_Initialize ();]]),
731                  [have_libpython_var=${version}
732                   found_usable_python=yes
733                   PYTHON_CPPFLAGS=$new_CPPFLAGS
734                   PYTHON_LIBS=$new_LIBS])
735   CPPFLAGS=$save_CPPFLAGS
736   LIBS=$save_LIBS
737   AC_MSG_RESULT([${found_usable_python}])
738 ])
739
740 dnl There are several different values for --with-python:
741 dnl
742 dnl no -   Don't include python support.
743 dnl yes -  Include python support, error if it's missing.
744 dnl        If we find python in $PATH, use it to fetch configure options,
745 dnl        otherwise assume the compiler can find it with no help from us.
746 dnl        Python 2.7, 2.6, 2.5, and then 2.4 are tried in turn.
747 dnl auto - Same as "yes", but if python is missing from the system,
748 dnl        fall back to "no".
749 dnl /path/to/python/exec-prefix -
750 dnl        Use the python located in this directory.
751 dnl        If /path/to/python/exec-prefix/bin/python exists, use it to find
752 dnl        the compilation parameters.  Otherwise use
753 dnl        -I/path/to/python/exec-prefix/include,
754 dnl        -L/path/to/python/exec-prefix/lib.
755 dnl        Python 2.7, 2.6, 2.5, and then 2.4 are tried in turn.
756 dnl        NOTE: This case is historical.  It is what was done for 7.0/7.1
757 dnl        but is deprecated.
758 dnl /path/to/python/executable -
759 dnl        Run python-config.py with this version of python to fetch the
760 dnl        compilation parameters.
761 dnl        NOTE: This needn't be the real python executable.
762 dnl        In a cross-compilation scenario (build != host), this could be
763 dnl        a shell script that provides what python-config.py provides for
764 dnl        --ldflags, --includes, --exec-prefix.
765 dnl python-executable -
766 dnl        Find python-executable in $PATH, and then handle the same as
767 dnl        /path/to/python/executable.
768 dnl
769 dnl If a python program is specified, it is used to run python-config.py and
770 dnl is passed --ldflags, --includes, --exec-prefix.
771
772 AC_ARG_WITH(python,
773   AS_HELP_STRING([--with-python@<:@=PYTHON@:>@], [include python support (auto/yes/no/<python-program>)]),
774   [], [with_python=auto])
775 AC_MSG_CHECKING([whether to use python])
776 AC_MSG_RESULT([$with_python])
777
778 if test "${with_python}" = no; then
779   AC_MSG_WARN([python support disabled; some features may be unavailable.])
780   have_libpython=no
781 else
782   case "${with_python}" in
783   [[\\/]]* | ?:[[\\/]]*)
784     if test -d ${with_python}; then
785       # Assume the python binary is ${with_python}/bin/python.
786       python_prog="${with_python}/bin/python"
787       python_prefix=
788       # If python does not exit ${with_python}/bin, then try in
789       # ${with_python}.  On Windows/MinGW, this is where the Python
790       # executable is.
791       if test ! -x "${python_prog}"; then
792         python_prog="${with_python}/python"
793         python_prefix=
794       fi
795       if test ! -x "${python_prog}"; then
796         # Fall back to gdb 7.0/7.1 behaviour.
797         python_prog=missing
798         python_prefix=${with_python}
799       fi
800     elif test -x "${with_python}"; then
801       # While we can't run python compiled for $host (unless host == build),
802       # the user could write a script that provides the needed information,
803       # so we support that.
804       python_prog=${with_python}
805       python_prefix=
806     else
807       AC_ERROR(invalid value for --with-python)
808     fi
809     ;;
810   */*)
811     # Disallow --with-python=foo/bar.
812     AC_ERROR(invalid value for --with-python)
813     ;;
814   *)
815     # The user has either specified auto, yes, or the name of the python
816     # program assumed to be in $PATH.
817     python_prefix=
818     case "${with_python}" in
819     yes | auto)
820       if test ${build} = ${host}; then
821         AC_PATH_PROG(python_prog_path, python, missing)
822         if test "${python_prog_path}" = missing; then
823           python_prog=missing
824         else
825           python_prog=${python_prog_path}
826         fi
827       else
828         # Not much we can do except assume the cross-compiler will find the
829         # right files.
830         python_prog=missing
831       fi
832       ;;
833     *)
834       # While we can't run python compiled for $host (unless host == build),
835       # the user could write a script that provides the needed information,
836       # so we support that.
837       python_prog="${with_python}"
838       AC_PATH_PROG(python_prog_path, ${python_prog}, missing)
839       if test "${python_prog_path}" = missing; then
840         AC_ERROR(unable to find python program ${python_prog})
841       fi
842       ;;
843     esac
844   esac
845
846   if test "${python_prog}" != missing; then
847     # We have a python program to use, but it may be too old.
848     # Don't flag an error for --with-python=auto (the default).
849     have_python_config=yes
850     python_includes=`${python_prog} ${srcdir}/python/python-config.py --includes`
851     if test $? != 0; then
852       have_python_config=failed
853       if test "${with_python}" != auto; then
854         AC_ERROR(failure running python-config --includes)
855       fi
856     fi
857     python_libs=`${python_prog} ${srcdir}/python/python-config.py --ldflags`
858     if test $? != 0; then
859       have_python_config=failed
860       if test "${with_python}" != auto; then
861         AC_ERROR(failure running python-config --ldflags)
862       fi
863     fi
864     python_prefix=`${python_prog} ${srcdir}/python/python-config.py --exec-prefix`
865     if test $? != 0; then
866       have_python_config=failed
867       if test "${with_python}" != auto; then
868         AC_ERROR(failure running python-config --exec-prefix)
869       fi
870     fi
871   else
872     # We do not have a python executable we can use to determine where
873     # to find the Python headers and libs.  We cannot guess the include
874     # path from the python_prefix either, because that include path
875     # depends on the Python version.  So, there is nothing much we can
876     # do except assume that the compiler will be able to find those files.
877     python_includes=
878     python_libs=
879     have_python_config=no
880   fi
881
882   # If we have python-config, only try the configuration it provides.
883   # Otherwise fallback on the old way of trying different versions of
884   # python in turn.
885
886   have_libpython=no
887   if test "${have_python_config}" = yes; then
888     # Determine the Python version by extracting "-lpython<version>"
889     # part of the python_libs. <version> is usually X.Y with X and Y
890     # being decimal numbers, but can also be XY (seen on Windows).
891     #
892     # The extraction is performed using sed with a regular expression.
893     # Initially, the regexp used was using the '?' quantifier to make
894     # the dot in the version number optional.  Unfortunately, this
895     # does not work with non-GNU versions of sed because, because of
896     # what looks like a limitation (the '?' quantifier does not work
897     # with back-references).  We work around this limitation by using
898     # the '*' quantifier instead.  It means that, in theory, we might
899     # match unexpected version strings such as "-lpython2..7", but
900     # this seems unlikely in practice.  And even if that happens,
901     # an error will be triggered later on, when checking that version
902     # number.
903     python_version=`echo " ${python_libs} " \
904                          | sed -e 's,^.* -l\(python[[0-9]]*[[.]]*[[0-9]]*\).*$,\1,'`
905     case "${python_version}" in
906     python*)
907       AC_TRY_LIBPYTHON(${python_version}, have_libpython,
908                        ${python_includes}, ${python_libs})
909       ;;
910     *)
911       AC_MSG_ERROR([unable to determine python version from ${python_libs}])
912       ;;
913     esac
914   elif test "${have_python_config}" != failed; then
915     if test "${have_libpython}" = no; then
916       AC_TRY_LIBPYTHON(python2.7, have_libpython,
917                        ${python_includes}, "${python_libs} -lpython2.7")
918     fi
919     if test "${have_libpython}" = no; then
920       AC_TRY_LIBPYTHON(python2.6, have_libpython,
921                        ${python_includes}, "${python_libs} -lpython2.6")
922     fi
923     if test ${have_libpython} = no; then
924       AC_TRY_LIBPYTHON(python2.5, have_libpython,
925                        ${python_includes}, "${python_libs} -lpython2.5")
926     fi
927     if test ${have_libpython} = no; then
928       AC_TRY_LIBPYTHON(python2.4, have_libpython,
929                        ${python_includes}, "${python_libs} -lpython2.4")
930     fi
931   fi
932   if test "${have_libpython}" = python2.7 -o "${have_libpython}" = python27; then
933     AC_DEFINE(HAVE_LIBPYTHON2_7, 1, [Define if Python 2.7 is being used.])
934   elif test "${have_libpython}" = python2.6 -o "${have_libpython}" = python26; then
935     AC_DEFINE(HAVE_LIBPYTHON2_6, 1, [Define if Python 2.6 is being used.])
936   elif test "${have_libpython}" = python2.5 -o "${have_libpython}" = python25; then
937     AC_DEFINE(HAVE_LIBPYTHON2_5, 1, [Define if Python 2.5 is being used.])
938   elif test "${have_libpython}" = python2.4 -o "${have_libpython}" = python24; then
939     AC_DEFINE(HAVE_LIBPYTHON2_4, 1, [Define if Python 2.4 is being used.])
940   fi
941
942   if test "${have_libpython}" = no; then
943     case "${with_python}" in
944     yes)
945       AC_MSG_ERROR([python is missing or unusable])
946       ;;
947     auto)
948       AC_MSG_WARN([python is missing or unusable; some features may be unavailable.])
949       ;;
950     *)
951       AC_MSG_ERROR([no usable python found at ${with_python}])
952       ;;
953     esac
954   else
955     if test -n "${python_prefix}"; then
956       AC_DEFINE_UNQUOTED(WITH_PYTHON_PATH, "${python_prefix}",
957                          [Define if --with-python provides a path, either directly or via python-config.py --exec-prefix.])
958       GDB_AC_DEFINE_RELOCATABLE(PYTHON_PATH, python, ${python_prefix})
959     fi
960   fi
961 fi
962
963 if test "${have_libpython}" != no; then
964   AC_DEFINE(HAVE_PYTHON, 1, [Define if Python interpreter is being linked in.])
965   CONFIG_OBS="$CONFIG_OBS \$(SUBDIR_PYTHON_OBS)"
966   CONFIG_DEPS="$CONFIG_DEPS \$(SUBDIR_PYTHON_DEPS)"
967   CONFIG_SRCS="$CONFIG_SRCS \$(SUBDIR_PYTHON_SRCS)"
968   CONFIG_INSTALL="$CONFIG_INSTALL install-python"
969   ENABLE_CFLAGS="$ENABLE_CFLAGS \$(SUBDIR_PYTHON_CFLAGS)"
970
971   # Flags needed to compile Python code (taken from python-config --cflags).
972   # We cannot call python-config directly because it will output whatever was
973   # used when compiling the Python interpreter itself, including flags which
974   # would make the python-related objects be compiled differently from the
975   # rest of GDB (e.g., -O2 and -fPIC).
976   if test "${GCC}" = yes; then
977     tentative_python_cflags="-fno-strict-aliasing -DNDEBUG -fwrapv"
978   fi
979
980   if test "x${tentative_python_cflags}" != x; then
981     AC_MSG_CHECKING(compiler flags for python code)
982     for flag in ${tentative_python_cflags}; do
983       # Check that the compiler accepts it
984       saved_CFLAGS="$CFLAGS"
985       CFLAGS="$CFLAGS $flag"
986       AC_TRY_COMPILE([],[],PYTHON_CFLAGS="${PYTHON_CFLAGS} $flag",)
987       CFLAGS="$saved_CFLAGS"
988     done
989     AC_MSG_RESULT(${PYTHON_CFLAGS})
990   fi
991
992   # On x64 Windows, Python's include headers, and pyconfig.h in
993   # particular, rely on MS_WIN64 macro to detect that it's a 64bit
994   # version of Windows.  Unfortunately, MS_WIN64 is only defined if
995   # _MSC_VER, a Microsoft-specific macro, is defined.  So, when
996   # building on x64 Windows with GCC, we define MS_WIN64 ourselves.
997   # The issue was reported to the Python community, but still isn't
998   # solved as of 2012-10-02 (http://bugs.python.org/issue4709).
999
1000   case "$gdb_host" in
1001     mingw64)
1002            if test "${GCC}" = yes; then
1003              CPPFLAGS="$CPPFLAGS -DMS_WIN64"
1004            fi
1005            ;;
1006   esac
1007
1008   # Note that "python -m threading" cannot be used to check for
1009   # threading support due to a bug in Python 2.7.3
1010   # (http://bugs.python.org/issue15567).
1011   AC_MSG_CHECKING(whether python supports threads)
1012   saved_CPPFLAGS="${CPPFLAGS}"
1013   CPPFLAGS="${PYTHON_CPPFLAGS}"
1014   # Note that the test is reversed so that python_has_threads=yes on
1015   # unexpected failures.
1016   AC_PREPROC_IFELSE(AC_LANG_SOURCE([[
1017 #include <Python.h>
1018 #ifdef WITH_THREAD
1019 # error
1020 #endif
1021   ]]), [python_has_threads=no], [python_has_threads=yes])
1022   AC_MSG_RESULT(${python_has_threads})
1023   CPPFLAGS="${saved_CPPFLAGS}"
1024 else
1025   # Even if Python support is not compiled in, we need to have this file
1026   # included so that the "python" command, et.al., still exists.
1027   CONFIG_OBS="$CONFIG_OBS python.o"
1028   CONFIG_SRCS="$CONFIG_SRCS python/python.c"
1029 fi
1030 AC_SUBST(PYTHON_CFLAGS)
1031 AC_SUBST(PYTHON_CPPFLAGS)
1032 AC_SUBST(PYTHON_LIBS)
1033 AM_CONDITIONAL(HAVE_PYTHON, test "${have_libpython}" != no)
1034
1035 # -------------------- #
1036 # Check for libguile.  #
1037 # -------------------- #
1038
1039 dnl Utility to simplify finding libguile.
1040 dnl $1 = pkg-config-program
1041 dnl $2 = space-separate list of guile versions to try
1042 dnl $3 = yes|no, indicating whether to flag errors or ignore them
1043 dnl $4 = the shell variable to assign the result to
1044 dnl      If libguile is found we store "yes" here.
1045
1046 AC_DEFUN([AC_TRY_LIBGUILE],
1047 [
1048   pkg_config=$1
1049   guile_version_list=$2
1050   flag_errors=$3
1051   define([have_libguile_var],$4)
1052   found_usable_guile=checking
1053   AC_MSG_CHECKING([for usable guile from ${pkg_config}])
1054   for guile_version in ${guile_version_list}; do
1055     ${pkg_config} --exists ${guile_version} 2>/dev/null
1056     if test $? != 0; then
1057       continue
1058     fi
1059     dnl pkg-config says the package exists, so if we get an error now,
1060     dnl that's bad.
1061     new_CPPFLAGS=`${pkg_config} --cflags ${guile_version}`
1062     if test $? != 0; then
1063       AC_MSG_ERROR([failure running pkg-config --cflags ${guile_version}])
1064     fi
1065     new_LIBS=`${pkg_config} --libs ${guile_version}`
1066     if test $? != 0; then
1067       AC_MSG_ERROR([failure running pkg-config --libs ${guile_version}])
1068     fi
1069     dnl If we get this far, great.
1070     found_usable_guile=${guile_version}
1071     break
1072   done
1073   if test "${found_usable_guile}" = "checking"; then
1074     if test "${flag_errors}" = "yes"; then
1075       AC_MSG_ERROR([unable to find usable guile version from "${guile_version_list}"])
1076     else
1077       found_usable_guile=no
1078     fi
1079   fi
1080   dnl One final sanity check.
1081   dnl The user could have said --with-guile=python-2.7.
1082   if test "${found_usable_guile}" != no; then
1083     save_CPPFLAGS=$CPPFLAGS
1084     save_LIBS=$LIBS
1085     CPPFLAGS="$CPPFLAGS $new_CPPFLAGS"
1086     LIBS="$LIBS $new_LIBS"
1087     AC_LINK_IFELSE(AC_LANG_PROGRAM([[#include "libguile.h"]],
1088                                    [[scm_init_guile ();]]),
1089                    [have_libguile_var=yes
1090                     GUILE_CPPFLAGS=$new_CPPFLAGS
1091                     GUILE_LIBS=$new_LIBS],
1092                    [found_usable_guile=no])
1093     dnl scm_set_automatic_finalization_enabled added in Guile 2.2.
1094     AC_CHECK_FUNC(scm_set_automatic_finalization_enabled,
1095       AC_DEFINE(HAVE_GUILE_MANUAL_FINALIZATION, 1,
1096                 [Define if Guile supports manual finalization.])
1097     )
1098     CPPFLAGS=$save_CPPFLAGS
1099     LIBS=$save_LIBS
1100     if test "${found_usable_guile}" = no; then
1101       if test "${flag_errors}" = yes; then
1102         AC_MSG_FAILURE([linking guile version ${guile_version} test program failed])
1103       fi
1104     fi
1105   fi
1106   AC_MSG_RESULT([${found_usable_guile}])
1107 ])
1108
1109 dnl There are several different values for --with-guile:
1110 dnl
1111 dnl no -   Don't include guile support.
1112 dnl yes -  Include guile support, error if it's missing.
1113 dnl        The pkg-config program must be in $PATH.
1114 dnl auto - Same as "yes", but if guile is missing from the system,
1115 dnl        fall back to "no".
1116 dnl guile-version [guile-version-choice-2 ...] -
1117 dnl        A space-separated list of guile package versions to try.
1118 dnl        These are passed to pkg-config as-is.
1119 dnl        E.g., guile-2.0 or guile-2.2-uninstalled
1120 dnl        This requires making sure PKG_CONFIG_PATH is set appropriately.
1121 dnl /path/to/pkg-config -
1122 dnl        Use this pkg-config program.
1123 dnl        NOTE: This needn't be the "real" pkg-config program.
1124 dnl        It could be a shell script.  It is invoked as:
1125 dnl        pkg-config --exists $version
1126 dnl        pkg-config --cflags $version
1127 dnl        pkg-config --libs $version
1128 dnl        pkg-config --variable guild $version
1129 dnl        The script will be called with $version having each value in
1130 dnl        $try_guile_versions until --exists indicates success.
1131
1132 AC_ARG_WITH(guile,
1133   AS_HELP_STRING([--with-guile@<:@=GUILE@:>@], [include guile support (auto/yes/no/<guile-version>/<pkg-config-program>)]),
1134   [], [with_guile=auto])
1135 AC_MSG_CHECKING([whether to use guile])
1136 AC_MSG_RESULT([$with_guile])
1137
1138 dnl We check guile with pkg-config.
1139 AC_PATH_PROG(pkg_config_prog_path, pkg-config, missing)
1140
1141 try_guile_versions="guile-2.2 guile-2.0"
1142 have_libguile=no
1143 case "${with_guile}" in
1144 no)
1145   AC_MSG_WARN([guile support disabled; some features will be unavailable.])
1146   ;;
1147 auto)
1148   if test "${pkg_config_prog_path}" = "missing"; then
1149     AC_MSG_WARN([pkg-config not found, guile support disabled])
1150   else
1151     AC_TRY_LIBGUILE(${pkg_config_prog_path}, ${try_guile_versions}, no, have_libguile)
1152   fi
1153   ;;
1154 yes)
1155   if test "${pkg_config_prog_path}" = "missing"; then
1156     AC_MSG_ERROR([pkg-config not found])
1157   fi
1158   AC_TRY_LIBGUILE(${pkg_config_prog_path}, ${try_guile_versions}, yes, have_libguile)
1159   ;;
1160 [[\\/]]* | ?:[[\\/]]*)
1161   if test -x "${with_guile}"; then
1162     AC_TRY_LIBGUILE(${with_guile}, ${try_guile_versions}, yes, have_libguile)
1163   else
1164     AC_MSG_ERROR([Guile config program not executable: ${with_guile}])
1165   fi
1166   ;;
1167 "" | */*)
1168   # Disallow --with=guile="" and --with-guile=foo/bar.
1169   AC_MSG_ERROR([invalid value for --with-guile])
1170   ;;
1171 *)
1172   # A space separate list of guile versions to try, in order.
1173   if test "${pkg_config_prog_path}" = "missing"; then
1174     AC_MSG_ERROR([pkg-config not found])
1175   fi
1176   AC_TRY_LIBGUILE(${pkg_config_prog_path}, ${with_guile}, yes, have_libguile)
1177   ;;
1178 esac
1179
1180 if test "${have_libguile}" != no; then
1181   dnl Get the name of the 'guild' program.
1182   case "${with_guile}" in
1183   [[\\/]]* | ?:[[\\/]]*)
1184     GDB_GUILE_PROGRAM_NAMES(["${with_guile}"], ["${guile_version}"])
1185     ;;
1186   *)
1187     GDB_GUILE_PROGRAM_NAMES(["${pkg_config_prog_path}"], ["${guile_version}"])
1188     ;;
1189   esac
1190
1191   dnl Make sure guild can handle this host.
1192   GDB_TRY_GUILD([$srcdir/guile/lib/gdb/support.scm])
1193   dnl If not, disable guile support.
1194   if test "$ac_cv_guild_ok" = no; then
1195     have_libguile=no
1196     AC_MSG_WARN(disabling guile support, $GUILD fails compiling for $host)
1197   fi
1198 fi
1199
1200 if test "${have_libguile}" != no; then
1201   AC_DEFINE(HAVE_GUILE, 1, [Define if Guile interpreter is being linked in.])
1202   CONFIG_OBS="$CONFIG_OBS \$(SUBDIR_GUILE_OBS)"
1203   CONFIG_DEPS="$CONFIG_DEPS \$(SUBDIR_GUILE_DEPS)"
1204   CONFIG_SRCS="$CONFIG_SRCS \$(SUBDIR_GUILE_SRCS)"
1205   CONFIG_INSTALL="$CONFIG_INSTALL install-guile"
1206   ENABLE_CFLAGS="$ENABLE_CFLAGS \$(SUBDIR_GUILE_CFLAGS)"
1207
1208   dnl The 'scm_new_smob' function appeared in Guile 2.0.6.
1209   save_LIBS="$LIBS"
1210   save_CPPFLAGS="$CPPFLAGS"
1211   LIBS="$GUILE_LIBS"
1212   CPPFLAGS="$GUILE_CPPFLAGS"
1213   AC_CHECK_FUNCS([scm_new_smob])
1214   LIBS="$save_LIBS"
1215   CPPFLAGS="$save_CPPFLAGS"
1216 else
1217   # Even if Guile support is not compiled in, we need to have these files
1218   # included.
1219   CONFIG_OBS="$CONFIG_OBS guile.o"
1220   CONFIG_SRCS="$CONFIG_SRCS guile/guile.c"
1221 fi
1222 AC_SUBST(GUILE_CPPFLAGS)
1223 AC_SUBST(GUILE_LIBS)
1224 AM_CONDITIONAL(HAVE_GUILE, test "${have_libguile}" != no)
1225
1226 # --------------------- #
1227 # Check for libmcheck.  #
1228 # --------------------- #
1229
1230 # Enable -lmcheck by default (it provides cheap-enough memory mangling),
1231 # but turn it off if Python is enabled with threads, since -lmcheck is
1232 # not thread safe (http://sourceware.org/bugzilla/show_bug.cgi?id=9939),
1233 # and for releases.
1234 if test \( "${have_libpython}" = "no" -o "${python_has_threads}" = "no" \) \
1235    && $development; then
1236   libmcheck_default=yes
1237 else
1238   libmcheck_default=no
1239 fi
1240 GDB_AC_LIBMCHECK(${libmcheck_default})
1241
1242 if test "$ENABLE_LIBMCHECK" = "yes" \
1243         -a "${have_libpython}" != "no" \
1244         -a "${python_has_threads}" = "yes" ; then
1245   AC_MSG_WARN(--enable-libmcheck may lead to spurious crashes if threads are used in python)
1246 fi
1247
1248 # ------------------------- #
1249 # Checks for header files.  #
1250 # ------------------------- #
1251
1252 AC_HEADER_STDC
1253 # elf_hp.h is for HP/UX 64-bit shared library support.
1254 AC_CHECK_HEADERS([nlist.h machine/reg.h poll.h sys/poll.h proc_service.h \
1255                   thread_db.h \
1256                   sys/fault.h \
1257                   sys/file.h sys/filio.h sys/ioctl.h sys/param.h \
1258                   sys/resource.h sys/procfs.h sys/ptrace.h ptrace.h \
1259                   sys/reg.h sys/debugreg.h sys/select.h sys/syscall.h \
1260                   termios.h termio.h \
1261                   sgtty.h elf_hp.h \
1262                   dlfcn.h])
1263 AC_CHECK_HEADERS(sys/proc.h, [], [],
1264 [#if HAVE_SYS_PARAM_H
1265 # include <sys/param.h>
1266 #endif
1267 ])
1268 AC_CHECK_HEADERS(sys/user.h, [], [],
1269 [#if HAVE_SYS_PARAM_H
1270 # include <sys/param.h>
1271 #endif
1272 ])
1273
1274 # On Solaris 2.[789], we need to define _MSE_INT_H to avoid a clash
1275 # between <widec.h> and <wchar.h> that would cause AC_CHECK_HEADERS to
1276 # think that we don't have <curses.h> if we're using GCC.
1277 case $host_os in
1278   solaris2.[[789]])
1279     if test "$GCC" = yes; then
1280       AC_DEFINE(_MSE_INT_H, 1,
1281         [Define to 1 to avoid a clash between <widec.h> and <wchar.h> on
1282    Solaris 2.[789] when using GCC. ])
1283     fi ;;
1284 esac
1285 AC_CHECK_HEADERS(curses.h cursesX.h ncurses.h ncurses/ncurses.h ncurses/term.h)
1286 AC_CHECK_HEADERS(term.h, [], [],
1287 [#if HAVE_CURSES_H
1288 # include <curses.h>
1289 #endif
1290 ])
1291
1292 # ------------------------- #
1293 # Checks for declarations.  #
1294 # ------------------------- #
1295
1296 libiberty_INIT
1297
1298 AC_CHECK_DECLS([free, malloc, realloc, snprintf])
1299 AM_LC_MESSAGES
1300
1301 # ----------------------- #
1302 # Checks for structures.  #
1303 # ----------------------- #
1304
1305 AC_CHECK_MEMBERS([struct stat.st_blocks, struct stat.st_blksize])
1306
1307 # ------------------ #
1308 # Checks for types.  #
1309 # ------------------ #
1310
1311 AC_TYPE_SIGNAL
1312 AC_CHECK_TYPES(socklen_t, [], [],
1313 [#include <sys/types.h>
1314 #include <sys/socket.h>
1315 ])
1316
1317 # ------------------------------------- #
1318 # Checks for compiler characteristics.  #
1319 # ------------------------------------- #
1320
1321 AC_C_CONST
1322 AC_C_INLINE
1323 AC_C_BIGENDIAN
1324
1325 # ------------------------------ #
1326 # Checks for library functions.  #
1327 # ------------------------------ #
1328
1329 AC_FUNC_MMAP
1330 AC_FUNC_VFORK
1331 AC_CHECK_FUNCS([getauxval getrusage getuid getgid \
1332                 pipe poll pread pread64 pwrite resize_term \
1333                 sbrk setpgid setpgrp setsid \
1334                 sigaction sigprocmask sigsetmask socketpair \
1335                 ttrace wborder wresize setlocale iconvlist libiconvlist btowc \
1336                 setrlimit getrlimit posix_madvise waitpid \
1337                 ptrace64 sigaltstack mkdtemp])
1338 AM_LANGINFO_CODESET
1339 GDB_AC_COMMON
1340
1341 # Check the return and argument types of ptrace.  No canned test for
1342 # this, so roll our own.
1343 gdb_ptrace_headers='
1344 #include <sys/types.h>
1345 #if HAVE_SYS_PTRACE_H
1346 # include <sys/ptrace.h>
1347 #endif
1348 #if HAVE_UNISTD_H
1349 # include <unistd.h>
1350 #endif
1351 '
1352 # There is no point in checking if we don't have a prototype.
1353 AC_CHECK_DECLS(ptrace, [], [
1354   : ${gdb_cv_func_ptrace_ret='int'}
1355   : ${gdb_cv_func_ptrace_args='int,int,long,long'}
1356 ], $gdb_ptrace_headers)
1357 # Check return type.  Varargs (used on GNU/Linux) conflict with the
1358 # empty argument list, so check for that explicitly.
1359 AC_CACHE_CHECK([return type of ptrace], gdb_cv_func_ptrace_ret,
1360   AC_TRY_COMPILE($gdb_ptrace_headers,
1361     [extern long ptrace (enum __ptrace_request, ...);],
1362     gdb_cv_func_ptrace_ret='long',
1363     AC_TRY_COMPILE($gdb_ptrace_headers,
1364       [extern int ptrace ();],
1365       gdb_cv_func_ptrace_ret='int',
1366       gdb_cv_func_ptrace_ret='long')))
1367 AC_DEFINE_UNQUOTED(PTRACE_TYPE_RET, $gdb_cv_func_ptrace_ret,
1368   [Define as the return type of ptrace.])
1369 # Check argument types.
1370 AC_CACHE_CHECK([types of arguments for ptrace], gdb_cv_func_ptrace_args, [
1371   AC_TRY_COMPILE($gdb_ptrace_headers,
1372     [extern long ptrace (enum __ptrace_request, ...);],
1373     [gdb_cv_func_ptrace_args='int,int,long,long'],[
1374 for gdb_arg1 in 'int' 'long'; do
1375  for gdb_arg2 in 'pid_t' 'int' 'long'; do
1376   for gdb_arg3 in 'int *' 'caddr_t' 'int' 'long' 'void *'; do
1377    for gdb_arg4 in 'int' 'long' 'void *'; do
1378      AC_TRY_COMPILE($gdb_ptrace_headers, [
1379 extern $gdb_cv_func_ptrace_ret
1380   ptrace ($gdb_arg1, $gdb_arg2, $gdb_arg3, $gdb_arg4);
1381 ], [gdb_cv_func_ptrace_args="$gdb_arg1,$gdb_arg2,$gdb_arg3,$gdb_arg4";
1382     break 4;])
1383     for gdb_arg5 in 'int *' 'int' 'long'; do
1384      AC_TRY_COMPILE($gdb_ptrace_headers, [
1385 extern $gdb_cv_func_ptrace_ret
1386   ptrace ($gdb_arg1, $gdb_arg2, $gdb_arg3, $gdb_arg4, $gdb_arg5);
1387 ], [
1388 gdb_cv_func_ptrace_args="$gdb_arg1,$gdb_arg2,$gdb_arg3,$gdb_arg4,$gdb_arg5";
1389     break 5;])
1390     done
1391    done
1392   done
1393  done
1394 done
1395 # Provide a safe default value.
1396 : ${gdb_cv_func_ptrace_args='int,int,long,long'}
1397 ])])
1398 ac_save_IFS=$IFS; IFS=','
1399 set dummy `echo "$gdb_cv_func_ptrace_args" | sed 's/\*/\*/g'`
1400 IFS=$ac_save_IFS
1401 shift
1402 AC_DEFINE_UNQUOTED(PTRACE_TYPE_ARG3, $[3],
1403   [Define to the type of arg 3 for ptrace.])
1404 AC_DEFINE_UNQUOTED(PTRACE_TYPE_ARG4, $[4],
1405   [Define to the type of arg 4 for ptrace.])
1406 if test -n "$[5]"; then
1407   AC_DEFINE_UNQUOTED(PTRACE_TYPE_ARG5, $[5],
1408     [Define to the type of arg 5 for ptrace.])
1409 fi
1410
1411 dnl AC_FUNC_SETPGRP does not work when cross compiling
1412 dnl Instead, assume we will have a prototype for setpgrp if cross compiling.
1413 if test "$cross_compiling" = no; then
1414   AC_FUNC_SETPGRP
1415 else
1416   AC_CACHE_CHECK([whether setpgrp takes no argument], ac_cv_func_setpgrp_void,
1417     [AC_TRY_COMPILE([
1418 #include <unistd.h>
1419 ], [
1420   if (setpgrp(1,1) == -1)
1421     exit (0);
1422   else
1423     exit (1);
1424 ], ac_cv_func_setpgrp_void=no, ac_cv_func_setpgrp_void=yes)])
1425 if test $ac_cv_func_setpgrp_void = yes; then
1426   AC_DEFINE(SETPGRP_VOID, 1)
1427 fi
1428 fi
1429
1430 # Assume we'll default to using the included libiberty regex.
1431 gdb_use_included_regex=yes
1432
1433 # However, if the system regex is GNU regex, then default to *not*
1434 # using the included regex.
1435 AC_CACHE_CHECK(
1436   [for GNU regex],
1437   [gdb_cv_have_gnu_regex],
1438   [AC_TRY_COMPILE(
1439     [#include <gnu-versions.h>],
1440     [#define REGEX_INTERFACE_VERSION 1
1441 #if _GNU_REGEX_INTERFACE_VERSION != REGEX_INTERFACE_VERSION
1442 # error "Version mismatch"
1443 #endif],
1444     gdb_cv_have_gnu_regex=yes,
1445     gdb_cv_have_gnu_regex=no)])
1446 if test $gdb_cv_have_gnu_regex = yes; then
1447   gdb_use_included_regex=no
1448 fi
1449
1450 AC_ARG_WITH(included-regex,
1451   AS_HELP_STRING([--without-included-regex], [don't use included regex; this is the default on systems with version 2 of the GNU C library (use with caution on other system)]),
1452   gdb_with_regex=$withval,
1453   gdb_with_regex=$gdb_use_included_regex)
1454 if test "$gdb_with_regex" = yes; then
1455   AC_DEFINE(USE_INCLUDED_REGEX, 1,
1456     [Define to 1 if the regex included in libiberty should be used.])
1457 fi
1458
1459 # Check if <sys/proc.h> defines `struct thread' with a td_pcb member.
1460 AC_CHECK_MEMBERS([struct thread.td_pcb], [], [],
1461 [#include <sys/param.h>
1462 #include <sys/proc.h>
1463 ])
1464
1465 # See if <sys/lwp.h> defines `struct lwp`.
1466 AC_CACHE_CHECK([for struct lwp], gdb_cv_struct_lwp,
1467 [AC_TRY_COMPILE([#include <sys/param.h>
1468 #include <sys/lwp.h>], [struct lwp l;],
1469 gdb_cv_struct_lwp=yes, gdb_cv_struct_lwp=no)])
1470 if test $gdb_cv_struct_lwp = yes; then
1471   AC_DEFINE(HAVE_STRUCT_LWP, 1,
1472             [Define to 1 if your system has struct lwp.])
1473 fi
1474
1475 # See if <machine/reg.h> degines `struct reg'.
1476 AC_CACHE_CHECK([for struct reg in machine/reg.h], gdb_cv_struct_reg,
1477 [AC_TRY_COMPILE([#include <sys/types.h>
1478 #include <machine/reg.h>], [struct reg r;],
1479 gdb_cv_struct_reg=yes, gdb_cv_struct_reg=no)])
1480 if test $gdb_cv_struct_reg = yes; then
1481   AC_DEFINE(HAVE_STRUCT_REG, 1,
1482             [Define to 1 if your system has struct reg in <machine/reg.h>.])
1483 fi
1484
1485 # See if <machine/reg.h> supports the %fs and %gs i386 segment registers.
1486 # Older i386 BSD's don't have the r_fs and r_gs members of `struct reg'.
1487 AC_CHECK_MEMBERS([struct reg.r_fs, struct reg.r_gs], [], [],
1488                  [#include <machine/reg.h>])
1489
1490 # See if <sys/user.h> supports the %fs_base and %gs_bas amd64 segment registers.
1491 # Older amd64 Linux's don't have the fs_base and gs_base members of
1492 # `struct user_regs_struct'.
1493 AC_CHECK_MEMBERS([struct user_regs_struct.fs_base, struct user_regs_struct.gs_base],
1494                  [], [], [#include <sys/user.h>])
1495
1496 # See if <sys/ptrace.h> provides the PTRACE_GETREGS request.
1497 AC_MSG_CHECKING(for PTRACE_GETREGS)
1498 AC_CACHE_VAL(gdb_cv_have_ptrace_getregs,
1499 [AC_TRY_COMPILE([#include <sys/ptrace.h>],
1500                 [PTRACE_GETREGS;],
1501                 [gdb_cv_have_ptrace_getregs=yes],
1502                 [gdb_cv_have_ptrace_getregs=no])])
1503 AC_MSG_RESULT($gdb_cv_have_ptrace_getregs)
1504 if test $gdb_cv_have_ptrace_getregs = yes; then
1505   AC_DEFINE(HAVE_PTRACE_GETREGS, 1,
1506   [Define if sys/ptrace.h defines the PTRACE_GETREGS request.])
1507 fi
1508
1509 # See if <sys/ptrace.h> provides the PTRACE_GETFPXREGS request.
1510 AC_MSG_CHECKING(for PTRACE_GETFPXREGS)
1511 AC_CACHE_VAL(gdb_cv_have_ptrace_getfpxregs,
1512 [AC_TRY_COMPILE([#include <sys/ptrace.h>],
1513                 [PTRACE_GETFPXREGS;],
1514                 [gdb_cv_have_ptrace_getfpxregs=yes],
1515                 [gdb_cv_have_ptrace_getfpxregs=no])])
1516 AC_MSG_RESULT($gdb_cv_have_ptrace_getfpxregs)
1517 if test $gdb_cv_have_ptrace_getfpxregs = yes; then
1518   AC_DEFINE(HAVE_PTRACE_GETFPXREGS, 1,
1519   [Define if sys/ptrace.h defines the PTRACE_GETFPXREGS request.])
1520 fi
1521
1522 # See if <sys/ptrace.h> provides the PT_GETDBREGS request.
1523 AC_MSG_CHECKING(for PT_GETDBREGS)
1524 AC_CACHE_VAL(gdb_cv_have_pt_getdbregs,
1525 [AC_TRY_COMPILE([#include <sys/types.h>
1526 #include <sys/ptrace.h>],
1527                 [PT_GETDBREGS;],
1528                 [gdb_cv_have_pt_getdbregs=yes],
1529                 [gdb_cv_have_pt_getdbregs=no])])
1530 AC_MSG_RESULT($gdb_cv_have_pt_getdbregs)
1531 if test $gdb_cv_have_pt_getdbregs = yes; then
1532   AC_DEFINE(HAVE_PT_GETDBREGS, 1,
1533   [Define if sys/ptrace.h defines the PT_GETDBREGS request.])
1534 fi
1535
1536 # See if <sys/ptrace.h> provides the PT_GETXMMREGS request.
1537 AC_MSG_CHECKING(for PT_GETXMMREGS)
1538 AC_CACHE_VAL(gdb_cv_have_pt_getxmmregs,
1539 [AC_TRY_COMPILE([#include <sys/types.h>
1540 #include <sys/ptrace.h>],
1541                 [PT_GETXMMREGS;],
1542                 [gdb_cv_have_pt_getxmmregs=yes],
1543                 [gdb_cv_have_pt_getxmmregs=no])])
1544 AC_MSG_RESULT($gdb_cv_have_pt_getxmmregs)
1545 if test $gdb_cv_have_pt_getxmmregs = yes; then
1546   AC_DEFINE(HAVE_PT_GETXMMREGS, 1,
1547   [Define if sys/ptrace.h defines the PT_GETXMMREGS request.])
1548 fi
1549
1550 # Detect which type of /proc is in use, such as for Solaris.
1551
1552 if test "${target}" = "${host}"; then
1553   case "${host}" in
1554   *-*-sysv4.2* | *-*-sysv5* )
1555       AC_DEFINE(NEW_PROC_API, 1,
1556       [Define if you want to use new multi-fd /proc interface.])
1557       ;;
1558   *-*-solaris2.[[6789]] | *-*-solaris2.1[[0-9]]*)
1559       AC_DEFINE(NEW_PROC_API, 1,
1560       [Define if you want to use new multi-fd /proc interface.])
1561       ;;
1562   mips-sgi-irix5*)
1563       # Work around <sys/proc.h> needing _KMEMUSER problem on IRIX 5.
1564       AC_DEFINE([_KMEMUSER], 1,
1565       [Define to 1 so <sys/proc.h> gets a definition of anon_hdl.  Works
1566        around a <sys/proc.h> problem on IRIX 5.])
1567       ;;
1568   esac
1569 fi
1570
1571 if test "$ac_cv_header_sys_procfs_h" = yes; then
1572   BFD_HAVE_SYS_PROCFS_TYPE(gregset_t)
1573   BFD_HAVE_SYS_PROCFS_TYPE(fpregset_t)
1574   BFD_HAVE_SYS_PROCFS_TYPE(prgregset_t)
1575   BFD_HAVE_SYS_PROCFS_TYPE(prfpregset_t)
1576   BFD_HAVE_SYS_PROCFS_TYPE(prgregset32_t)
1577   BFD_HAVE_SYS_PROCFS_TYPE(lwpid_t)
1578   BFD_HAVE_SYS_PROCFS_TYPE(psaddr_t)
1579   BFD_HAVE_SYS_PROCFS_TYPE(prsysent_t)
1580   BFD_HAVE_SYS_PROCFS_TYPE(pr_sigset_t)
1581   BFD_HAVE_SYS_PROCFS_TYPE(pr_sigaction64_t)
1582   BFD_HAVE_SYS_PROCFS_TYPE(pr_siginfo64_t)
1583
1584
1585   dnl Check for broken prfpregset_t type
1586
1587   dnl For Linux/i386, glibc 2.1.3 was released with a bogus
1588   dnl prfpregset_t type (it's a typedef for the pointer to a struct
1589   dnl instead of the struct itself).  We detect this here, and work
1590   dnl around it in gdb_proc_service.h.
1591
1592   if test $bfd_cv_have_sys_procfs_type_prfpregset_t = yes; then
1593     AC_MSG_CHECKING(whether prfpregset_t type is broken)
1594     AC_CACHE_VAL(gdb_cv_prfpregset_t_broken,
1595       [AC_TRY_RUN([#include <sys/procfs.h>
1596        int main ()
1597        {
1598          if (sizeof (prfpregset_t) == sizeof (void *))
1599            return 1;
1600          return 0;
1601        }],
1602        gdb_cv_prfpregset_t_broken=no,
1603        gdb_cv_prfpregset_t_broken=yes,
1604        gdb_cv_prfpregset_t_broken=yes)])
1605     AC_MSG_RESULT($gdb_cv_prfpregset_t_broken)
1606     if test $gdb_cv_prfpregset_t_broken = yes; then
1607       AC_DEFINE(PRFPREGSET_T_BROKEN, 1,
1608       [Define if the prfpregset_t type is broken.])
1609     fi
1610   fi
1611 fi
1612
1613 # Check if the compiler supports the `long long' type.
1614
1615 AC_CACHE_CHECK([for long long support in compiler], gdb_cv_c_long_long,
1616                [AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
1617 [[extern long long foo;]],
1618 [[switch (foo & 2) { case 0: return 1; }]])],
1619                                   gdb_cv_c_long_long=yes,
1620                                   gdb_cv_c_long_long=no)])
1621 if test $gdb_cv_c_long_long != yes; then
1622   # libdecnumber requires long long.
1623   AC_MSG_ERROR([Compiler must support long long for GDB.])
1624 fi
1625
1626 # Check if the compiler and runtime support printing long longs.
1627
1628 AC_CACHE_CHECK([for long long support in printf],
1629                gdb_cv_printf_has_long_long,
1630                [AC_RUN_IFELSE([AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT],
1631 [[char buf[32];
1632   long long l = 0;
1633   l = (l << 16) + 0x0123;
1634   l = (l << 16) + 0x4567;
1635   l = (l << 16) + 0x89ab;
1636   l = (l << 16) + 0xcdef;
1637   sprintf (buf, "0x%016llx", l);
1638   return (strcmp ("0x0123456789abcdef", buf));]])],
1639                               gdb_cv_printf_has_long_long=yes,
1640                               gdb_cv_printf_has_long_long=no,
1641                               gdb_cv_printf_has_long_long=no)])
1642 if test $gdb_cv_printf_has_long_long = yes; then
1643   AC_DEFINE(PRINTF_HAS_LONG_LONG, 1,
1644             [Define to 1 if the "%ll" format works to print long longs.])
1645 fi
1646
1647 # Check if the compiler and runtime support printing decfloats.
1648
1649 AC_CACHE_CHECK([for decfloat support in printf],
1650                gdb_cv_printf_has_decfloat,
1651                [AC_RUN_IFELSE([AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT],
1652 [[char buf[64];
1653   _Decimal32 d32 = 1.2345df;
1654   _Decimal64 d64 = 1.2345dd;
1655   _Decimal128 d128 = 1.2345dl;
1656   sprintf (buf, "Decimal32: %H\nDecimal64: %D\nDecimal128: %DD", d32, d64, d128);
1657   return (strcmp ("Decimal32: 1.2345\nDecimal64: 1.2345\nDecimal128: 1.2345", buf));]])],
1658                               gdb_cv_printf_has_decfloat=yes,
1659                               gdb_cv_printf_has_decfloat=no,
1660                               gdb_cv_printf_has_decfloat=no)])
1661 if test $gdb_cv_printf_has_decfloat = yes; then
1662   AC_DEFINE(PRINTF_HAS_DECFLOAT, 1,
1663             [Define to 1 if the "%H, %D and %DD" formats work to print decfloats.])
1664 fi
1665
1666 # Check if the compiler supports the `long double' type.  We can't use
1667 # AC_C_LONG_DOUBLE because that one does additional checks on the
1668 # constants defined in <float.h> that fail on some systems,
1669 # e.g. FreeBSD/i386 4.7 and OpenBSD/i386 3.6.
1670
1671 AC_CACHE_CHECK([for long double support in compiler], gdb_cv_c_long_double,
1672                [AC_COMPILE_IFELSE([AC_LANG_SOURCE([[long double foo;]])],
1673                                   gdb_cv_c_long_double=yes,
1674                                   gdb_cv_c_long_double=no)])
1675 if test $gdb_cv_c_long_double = yes; then
1676   AC_DEFINE(HAVE_LONG_DOUBLE, 1,
1677            [Define to 1 if the compiler supports long double.])
1678 fi
1679
1680 # Check if the compiler and runtime support printing long doubles.
1681
1682 AC_CACHE_CHECK([for long double support in printf],
1683                gdb_cv_printf_has_long_double,
1684                [AC_RUN_IFELSE([AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT],
1685 [[char buf[16];
1686   long double f = 3.141592653;
1687   sprintf (buf, "%Lg", f);
1688   return (strncmp ("3.14159", buf, 7));]])],
1689                               gdb_cv_printf_has_long_double=yes,
1690                               gdb_cv_printf_has_long_double=no,
1691                               gdb_cv_printf_has_long_double=no)])
1692 if test $gdb_cv_printf_has_long_double = yes; then
1693   AC_DEFINE(PRINTF_HAS_LONG_DOUBLE, 1,
1694             [Define to 1 if the "%Lg" format works to print long doubles.])
1695 fi
1696
1697 # Check if the compiler and runtime support scanning long doubles.
1698
1699 AC_CACHE_CHECK([for long double support in scanf],
1700                gdb_cv_scanf_has_long_double,
1701                [AC_RUN_IFELSE([AC_LANG_PROGRAM(
1702 [[#include <stdio.h>]],
1703 [[char *buf = "3.141592653";
1704   long double f = 0;
1705   sscanf (buf, "%Lg", &f);
1706   return !(f > 3.14159 && f < 3.14160);]])],
1707                               gdb_cv_scanf_has_long_double=yes,
1708                               gdb_cv_scanf_has_long_double=no,
1709                               gdb_cv_scanf_has_long_double=no)])
1710 if test $gdb_cv_scanf_has_long_double = yes; then
1711   AC_DEFINE(SCANF_HAS_LONG_DOUBLE, 1,
1712             [Define to 1 if the "%Lg" format works to scan long doubles.])
1713 fi
1714
1715 case ${host_os} in
1716 aix*)
1717   AC_CACHE_CHECK([for -bbigtoc option], [gdb_cv_bigtoc], [
1718     SAVE_LDFLAGS=$LDFLAGS
1719
1720     case $GCC in
1721     yes) gdb_cv_bigtoc=-Wl,-bbigtoc ;;
1722     *) gdb_cv_bigtoc=-bbigtoc ;;
1723     esac
1724
1725     LDFLAGS=$LDFLAGS\ $gdb_cv_bigtoc
1726     AC_TRY_LINK([], [int i;], [], [gdb_cv_bigtoc=])
1727     LDFLAGS="${SAVE_LDFLAGS}"
1728   ])
1729   CONFIG_LDFLAGS="${CONFIG_LDFLAGS} ${gdb_cv_bigtoc}"
1730   ;;
1731 esac
1732
1733 AC_MSG_CHECKING(for the dynamic export flag)
1734 dynamic_list=false
1735 if test "${gdb_native}" = yes; then
1736    # The dynamically loaded libthread_db needs access to symbols in the gdb
1737    # executable.  Older GNU ld supports --export-dynamic but --dynamic-list
1738    # may not be supported there.
1739    old_LDFLAGS="$LDFLAGS"
1740    # Older GNU ld supports --export-dynamic but --dynamic-list it does not.
1741    RDYNAMIC="-Wl,--dynamic-list=${srcdir}/proc-service.list"
1742    LDFLAGS="$LDFLAGS $RDYNAMIC"
1743    if test "${have_libpython}" = no; then
1744      AC_TRY_LINK([], [], [dynamic_list=true])
1745    else
1746      # Workaround http://bugs.python.org/issue4434 where static
1747      # libpythonX.Y.a would get its symbols required for
1748      # pythonX.Y/lib-dynload/*.so modules hidden by -Wl,--dynamic-list.
1749      # Problem does not happen for the recommended libpythonX.Y.so linkage.
1750      old_CFLAGS="$CFLAGS"
1751      CFLAGS="$CFLAGS $PYTHON_CFLAGS"
1752      old_LIBS="$LIBS"
1753      LIBS="$LIBS $PYTHON_LIBS"
1754      AC_RUN_IFELSE(
1755        AC_LANG_PROGRAM(
1756          [#include "]${have_libpython}[/Python.h"],
1757          [int err;
1758           Py_Initialize ();
1759           err = PyRun_SimpleString ("import itertools\n");
1760           Py_Finalize ();
1761           return err == 0 ? 0 : 1;]),
1762        [dynamic_list=true], [], [true])
1763      LIBS="$old_LIBS"
1764      CFLAGS="$old_CFLAGS"
1765    fi
1766    LDFLAGS="$old_LDFLAGS"
1767 fi
1768 if $dynamic_list; then
1769   found="-Wl,--dynamic-list"
1770   RDYNAMIC='-Wl,--dynamic-list=$(srcdir)/proc-service.list'
1771 else
1772   found="-rdynamic"
1773   RDYNAMIC="-rdynamic"
1774 fi
1775 AC_SUBST(RDYNAMIC)
1776 AC_MSG_RESULT($found)
1777
1778 dnl For certain native configurations, we need to check whether thread
1779 dnl support can be built in or not.
1780 dnl
1781 dnl Note that we only want this if we are both native (host == target),
1782 dnl and not doing a canadian cross build (build == host).
1783
1784 if test ${build} = ${host} -a ${host} = ${target} ; then
1785    case ${host_os} in
1786    solaris*)
1787       # See if thread_db library is around for Solaris thread debugging.
1788       # Note that we must explicitly test for version 1 of the library
1789       # because version 0 (present on Solaris 2.4 or earlier) doesn't have
1790       # the same API.
1791       AC_MSG_CHECKING(for Solaris thread debugging library)
1792       if test -f /usr/lib/libthread_db.so.1 ; then
1793          AC_MSG_RESULT(yes)
1794          AC_DEFINE(HAVE_THREAD_DB_LIB, 1,
1795          [Define if using Solaris thread debugging.])
1796          CONFIG_OBS="${CONFIG_OBS} sol-thread.o"
1797          CONFIG_SRCS="${CONFIG_SRCS} sol-thread.c"
1798          AC_CHECK_LIB(dl, dlopen)
1799          CONFIG_LDFLAGS="${CONFIG_LDFLAGS} $RDYNAMIC"
1800          # Sun randomly tweaked the prototypes in <proc_service.h>
1801          # at one point.
1802          AC_MSG_CHECKING(if <proc_service.h> is old)
1803          AC_CACHE_VAL(gdb_cv_proc_service_is_old,[
1804             AC_TRY_COMPILE([
1805                 #include <proc_service.h>
1806                 ps_err_e ps_pdwrite
1807                     (struct ps_prochandle*, psaddr_t, const void*, size_t);
1808             ],, gdb_cv_proc_service_is_old=no,
1809                 gdb_cv_proc_service_is_old=yes)
1810          ])
1811          AC_MSG_RESULT($gdb_cv_proc_service_is_old)
1812          if test $gdb_cv_proc_service_is_old = yes; then
1813             AC_DEFINE(PROC_SERVICE_IS_OLD, 1,
1814             [Define if <proc_service.h> on solaris uses int instead of
1815              size_t, and assorted other type changes.])
1816          fi
1817       else
1818          AC_MSG_RESULT(no)
1819       fi
1820       ;;
1821    aix*)
1822       AC_MSG_CHECKING(for AiX thread debugging library)
1823       AC_CACHE_VAL(gdb_cv_have_aix_thread_debug,
1824                    [AC_TRY_COMPILE([#include <sys/pthdebug.h>],
1825                                    [#ifndef PTHDB_VERSION_3
1826                                     #error
1827                                     #endif],
1828                                    gdb_cv_have_aix_thread_debug=yes,
1829                                    gdb_cv_have_aix_thread_debug=no)])
1830       AC_MSG_RESULT($gdb_cv_have_aix_thread_debug)
1831       if test $gdb_cv_have_aix_thread_debug = yes; then
1832          CONFIG_SRCS="${CONFIG_SRCS} aix-thread.c"
1833          CONFIG_OBS="${CONFIG_OBS} aix-thread.o"
1834          LIBS="$LIBS -lpthdebug"
1835
1836          # Older versions of AIX do not provide the declaration for
1837          # the getthrds function (it appears that it was introduced
1838          # with AIX 6.x).
1839          AC_CHECK_DECLS(getthrds, [], [], [[#include <procinfo.h>]])
1840       fi
1841       ;;
1842    esac
1843    AC_SUBST(CONFIG_LDFLAGS)
1844 fi
1845
1846 dnl See if we have a thread_db header file that has TD_NOTALLOC and
1847 dnl other error codes.
1848 if test "x$ac_cv_header_thread_db_h" = "xyes"; then
1849    AC_CACHE_CHECK([whether <thread_db.h> has TD_NOTALLOC],
1850                   gdb_cv_thread_db_h_has_td_notalloc,
1851      AC_TRY_COMPILE(
1852        [#include <thread_db.h>],
1853        [int i = TD_NOTALLOC;],
1854        gdb_cv_thread_db_h_has_td_notalloc=yes,
1855        gdb_cv_thread_db_h_has_td_notalloc=no
1856      )
1857    )
1858    AC_CACHE_CHECK([whether <thread_db.h> has TD_VERSION],
1859                   gdb_cv_thread_db_h_has_td_version,
1860      AC_TRY_COMPILE(
1861        [#include <thread_db.h>],
1862        [int i = TD_VERSION;],
1863        gdb_cv_thread_db_h_has_td_version=yes,
1864        gdb_cv_thread_db_h_has_td_version=no
1865      )
1866    )
1867    AC_CACHE_CHECK([whether <thread_db.h> has TD_NOTLS],
1868                   gdb_cv_thread_db_h_has_td_notls,
1869      AC_TRY_COMPILE(
1870        [#include <thread_db.h>],
1871        [int i = TD_NOTLS;],
1872        gdb_cv_thread_db_h_has_td_notls=yes,
1873        gdb_cv_thread_db_h_has_td_notls=no
1874      )
1875    )
1876 fi
1877 if test "x$gdb_cv_thread_db_h_has_td_notalloc" = "xyes"; then
1878   AC_DEFINE(THREAD_DB_HAS_TD_NOTALLOC, 1,
1879             [Define if <thread_db.h> has the TD_NOTALLOC error code.])
1880 fi
1881 if test "x$gdb_cv_thread_db_h_has_td_version" = "xyes"; then
1882   AC_DEFINE(THREAD_DB_HAS_TD_VERSION, 1,
1883             [Define if <thread_db.h> has the TD_VERSION error code.])
1884 fi
1885 if test "x$gdb_cv_thread_db_h_has_td_notls" = "xyes"; then
1886   AC_DEFINE(THREAD_DB_HAS_TD_NOTLS, 1,
1887             [Define if <thread_db.h> has the TD_NOTLS error code.])
1888 fi
1889
1890 dnl See if we have a sys/syscall header file that has __NR_tkill.
1891 if test "x$ac_cv_header_sys_syscall_h" = "xyes"; then
1892    AC_CACHE_CHECK([whether <sys/syscall.h> has __NR_tkill],
1893                   gdb_cv_sys_syscall_h_has_tkill,
1894      AC_TRY_COMPILE(
1895        [#include <sys/syscall.h>],
1896        [int i = __NR_tkill;],
1897        gdb_cv_sys_syscall_h_has_tkill=yes,
1898        gdb_cv_sys_syscall_h_has_tkill=no
1899      )
1900    )
1901 fi
1902 dnl See if we can issue tkill syscall.
1903 if test "x$gdb_cv_sys_syscall_h_has_tkill" = "xyes"; then
1904   AC_CHECK_FUNC(syscall,
1905     AC_DEFINE(HAVE_TKILL_SYSCALL, 1, [Define if you support the tkill syscall.])
1906   )
1907 fi
1908
1909 dnl Check if we can disable the virtual address space randomization.
1910 dnl The functionality of setarch -R.
1911 AC_CHECK_DECLS([ADDR_NO_RANDOMIZE],,, [#include <sys/personality.h>])
1912 define([PERSONALITY_TEST], [AC_LANG_PROGRAM([#include <sys/personality.h>], [
1913 #      if !HAVE_DECL_ADDR_NO_RANDOMIZE
1914 #       define ADDR_NO_RANDOMIZE 0x0040000
1915 #      endif
1916        /* Test the flag could be set and stays set.  */
1917        personality (personality (0xffffffff) | ADDR_NO_RANDOMIZE);
1918        if (!(personality (personality (0xffffffff)) & ADDR_NO_RANDOMIZE))
1919            return 1])])
1920 AC_RUN_IFELSE([PERSONALITY_TEST],
1921               [have_personality=true],
1922               [have_personality=false],
1923               [AC_LINK_IFELSE([PERSONALITY_TEST],
1924                               [have_personality=true],
1925                               [have_personality=false])])
1926 if $have_personality
1927 then
1928     AC_DEFINE([HAVE_PERSONALITY], 1,
1929               [Define if you support the personality syscall.])
1930 fi
1931
1932 dnl Set the host's .gdbinit filename.
1933 case $host_os in
1934   go32* | *djgpp*)
1935     gdbinit=gdb.ini
1936     ;;
1937   *)
1938     gdbinit=.gdbinit
1939     ;;
1940 esac
1941 AC_DEFINE_UNQUOTED(GDBINIT,"$gdbinit",[The .gdbinit filename.])
1942
1943 dnl Handle optional features that can be enabled.
1944
1945 # Support for --with-sysroot is a copy of GDB_AC_WITH_DIR,
1946 # except that the argument to --with-sysroot is optional.
1947 # --with-sysroot (or --with-sysroot=yes) sets the default sysroot path.
1948 if test "x$with_sysroot" = xyes; then
1949   with_sysroot="${exec_prefix}/${target_alias}/sys-root"
1950 fi
1951 AC_ARG_WITH(sysroot,
1952   AS_HELP_STRING([--with-sysroot@<:@=DIR@:>@],
1953                  [search for usr/lib et al within DIR]),
1954   [TARGET_SYSTEM_ROOT=$withval], [TARGET_SYSTEM_ROOT=])
1955 AC_DEFINE_DIR(TARGET_SYSTEM_ROOT, TARGET_SYSTEM_ROOT,
1956               [search for usr/lib et al within DIR])
1957 AC_SUBST(TARGET_SYSTEM_ROOT)
1958 GDB_AC_DEFINE_RELOCATABLE(TARGET_SYSTEM_ROOT, sysroot, ${ac_define_dir})
1959
1960 GDB_AC_WITH_DIR(SYSTEM_GDBINIT, system-gdbinit,
1961     [automatically load a system-wide gdbinit file],
1962     [])
1963
1964 AC_ARG_ENABLE(werror,
1965   AS_HELP_STRING([--enable-werror], [treat compile warnings as errors]),
1966   [case "${enableval}" in
1967      yes | y) ERROR_ON_WARNING="yes" ;;
1968      no | n)  ERROR_ON_WARNING="no" ;;
1969      *) AC_MSG_ERROR(bad value ${enableval} for --enable-werror) ;;
1970    esac])
1971
1972 # Enable -Werror by default when using gcc in C mode.  Leave it off
1973 # for C++ until we're warning clean.  Turn it off for releases.
1974 if test "${GCC}" = yes -a -z "${ERROR_ON_WARNING}" \
1975    && test x"$enable_build_with_cxx" != x"yes" \
1976    && $development; then
1977     ERROR_ON_WARNING=yes
1978 fi
1979
1980 WERROR_CFLAGS=""
1981 if test "${ERROR_ON_WARNING}" = yes ; then
1982     WERROR_CFLAGS="-Werror"
1983 fi
1984
1985 # These options work in either C or C++ modes.
1986 build_warnings="-Wall -Wpointer-arith \
1987 -Wno-unused -Wunused-value -Wunused-function \
1988 -Wno-switch -Wno-char-subscripts \
1989 -Wempty-body"
1990
1991 # Now add in C and C++ specific options, depending on mode.
1992 if test "$enable_build_with_cxx" = "yes"; then
1993    build_warnings="$build_warnings -Wno-sign-compare -Wno-write-strings \
1994 -Wno-narrowing"
1995 else
1996    build_warnings="$build_warnings -Wpointer-sign -Wmissing-prototypes \
1997 -Wdeclaration-after-statement -Wmissing-parameter-type \
1998 -Wold-style-declaration -Wold-style-definition"
1999 fi
2000
2001 # Enable -Wno-format by default when using gcc on mingw since many
2002 # GCC versions complain about %I64.
2003 case "${host}" in
2004   *-*-mingw32*) build_warnings="$build_warnings -Wno-format" ;;
2005   *) build_warnings="$build_warnings -Wformat-nonliteral" ;;
2006 esac
2007
2008 AC_ARG_ENABLE(build-warnings,
2009 AS_HELP_STRING([--enable-build-warnings], [enable build-time compiler warnings if gcc is used]),
2010 [case "${enableval}" in
2011   yes)  ;;
2012   no)   build_warnings="-w";;
2013   ,*)   t=`echo "${enableval}" | sed -e "s/,/ /g"`
2014         build_warnings="${build_warnings} ${t}";;
2015   *,)   t=`echo "${enableval}" | sed -e "s/,/ /g"`
2016         build_warnings="${t} ${build_warnings}";;
2017   *)    build_warnings=`echo "${enableval}" | sed -e "s/,/ /g"`;;
2018 esac
2019 if test x"$silent" != x"yes" && test x"$build_warnings" != x""; then
2020   echo "Setting compiler warning flags = $build_warnings" 6>&1
2021 fi])dnl
2022 AC_ARG_ENABLE(gdb-build-warnings,
2023 AS_HELP_STRING([--enable-gdb-build-warnings], [enable GDB specific build-time compiler warnings if gcc is used]),
2024 [case "${enableval}" in
2025   yes)  ;;
2026   no)   build_warnings="-w";;
2027   ,*)   t=`echo "${enableval}" | sed -e "s/,/ /g"`
2028         build_warnings="${build_warnings} ${t}";;
2029   *,)   t=`echo "${enableval}" | sed -e "s/,/ /g"`
2030         build_warnings="${t} ${build_warnings}";;
2031   *)    build_warnings=`echo "${enableval}" | sed -e "s/,/ /g"`;;
2032 esac
2033 if test x"$silent" != x"yes" && test x"$build_warnings" != x""; then
2034   echo "Setting GDB specific compiler warning flags = $build_warnings" 6>&1
2035 fi])dnl
2036
2037 # The set of warnings supported by a C++ compiler is not the same as
2038 # of the C compiler.
2039 if test "$enable_build_with_cxx" = "yes"; then
2040     AC_LANG_PUSH([C++])
2041 fi
2042
2043 WARN_CFLAGS=""
2044 if test "x${build_warnings}" != x -a "x$GCC" = xyes
2045 then
2046     AC_MSG_CHECKING(compiler warning flags)
2047     # Separate out the -Werror flag as some files just cannot be
2048     # compiled with it enabled.
2049     for w in ${build_warnings}; do
2050         case $w in
2051         -Werr*) WERROR_CFLAGS=-Werror ;;
2052         *)
2053             # Check whether GCC accepts it.
2054             saved_CFLAGS="$CFLAGS"
2055             CFLAGS="$CFLAGS $w"
2056             saved_CXXFLAGS="$CXXFLAGS"
2057             CXXFLAGS="$CXXFLAGS $w"
2058             AC_TRY_COMPILE([],[],WARN_CFLAGS="${WARN_CFLAGS} $w",)
2059             CFLAGS="$saved_CFLAGS"
2060             CXXFLAGS="$saved_CXXFLAGS"
2061         esac
2062     done
2063     AC_MSG_RESULT(${WARN_CFLAGS} ${WERROR_CFLAGS})
2064 fi
2065 AC_SUBST(WARN_CFLAGS)
2066 AC_SUBST(WERROR_CFLAGS)
2067
2068 if test "$enable_build_with_cxx" = "yes"; then
2069    AC_LANG_POP([C++])
2070 fi
2071
2072 # In the Cygwin environment, we need some additional flags.
2073 AC_CACHE_CHECK([for cygwin], gdb_cv_os_cygwin,
2074 [AC_EGREP_CPP(^lose$, [
2075 #if defined (__CYGWIN__) || defined (__CYGWIN32__)
2076 lose
2077 #endif],[gdb_cv_os_cygwin=yes],[gdb_cv_os_cygwin=no])])
2078
2079
2080 dnl Figure out which of the many generic ser-*.c files the _host_ supports.
2081 SER_HARDWIRE="ser-base.o ser-unix.o ser-pipe.o ser-tcp.o"
2082 case ${host} in
2083   *go32* ) SER_HARDWIRE=ser-go32.o ;;
2084   *djgpp* ) SER_HARDWIRE=ser-go32.o ;;
2085   *mingw32*) SER_HARDWIRE="ser-base.o ser-tcp.o ser-mingw.o" ;;
2086 esac
2087 AC_SUBST(SER_HARDWIRE)
2088
2089 # libreadline needs libuser32.a in a cygwin environment
2090 WIN32LIBS=
2091 if test x$gdb_cv_os_cygwin = xyes; then
2092     WIN32LIBS="-luser32"
2093     case "${target}" in
2094         *cygwin*) WIN32LIBS="$WIN32LIBS -limagehlp"
2095         ;;
2096     esac
2097 fi
2098
2099 # The ser-tcp.c module requires sockets.
2100 case ${host} in
2101   *mingw32*)
2102     AC_DEFINE(USE_WIN32API, 1,
2103               [Define if we should use the Windows API, instead of the
2104                POSIX API.  On Windows, we use the Windows API when
2105                building for MinGW, but the POSIX API when building
2106                for Cygwin.])
2107     WIN32LIBS="$WIN32LIBS -lws2_32"
2108     ;;
2109 esac
2110 AC_SUBST(WIN32LIBS)
2111
2112 # Add ELF support to GDB, but only if BFD includes ELF support.
2113 GDB_AC_CHECK_BFD([for ELF support in BFD], gdb_cv_var_elf,
2114                  [bfd_get_elf_phdr_upper_bound (NULL)], elf-bfd.h)
2115 if test $gdb_cv_var_elf = yes; then
2116   CONFIG_OBS="$CONFIG_OBS elfread.o stap-probe.o dtrace-probe.o"
2117   AC_DEFINE(HAVE_ELF, 1,
2118             [Define if ELF support should be included.])
2119   # -ldl is provided by bfd/Makfile.am (LIBDL) <PLUGINS>.
2120   if test "$plugins" = "yes"; then
2121     AC_SEARCH_LIBS(dlopen, dl)
2122   fi
2123 fi
2124
2125 # Add macho support to GDB, but only if BFD includes it.
2126 GDB_AC_CHECK_BFD([for Mach-O support in BFD], gdb_cv_var_macho,
2127                  [bfd_mach_o_lookup_command (NULL, 0, NULL)], mach-o.h)
2128 if test $gdb_cv_var_macho = yes; then
2129   CONFIG_OBS="$CONFIG_OBS machoread.o"
2130 fi
2131
2132 # Add SOM support to GDB, but only if BFD includes it.
2133 GDB_AC_CHECK_BFD([for SOM support in BFD], gdb_cv_var_som,
2134                  [bfd_som_attach_aux_hdr (NULL, 0, NULL)], som.h)
2135 if test $gdb_cv_var_som = yes; then
2136   CONFIG_OBS="$CONFIG_OBS somread.o"
2137 fi
2138
2139 # Add any host-specific objects to GDB.
2140 CONFIG_OBS="${CONFIG_OBS} ${gdb_host_obs}"
2141
2142 # If building on ELF, look for lzma support for embedded compressed debug info.
2143 if test $gdb_cv_var_elf = yes; then
2144   AC_ARG_WITH(lzma,
2145     AS_HELP_STRING([--with-lzma], [support lzma compression (auto/yes/no)]),
2146     [], [with_lzma=auto])
2147   AC_MSG_CHECKING([whether to use lzma])
2148   AC_MSG_RESULT([$with_lzma])
2149
2150   if test "${with_lzma}" != no; then
2151     AC_LIB_HAVE_LINKFLAGS([lzma], [], [#include "lzma.h"],
2152                           [lzma_index_iter iter;
2153                            lzma_index_iter_init (&iter, 0);
2154                            lzma_mf_is_supported (LZMA_MF_HC3);])
2155     if test "$HAVE_LIBLZMA" != yes; then
2156       if test "$with_lzma" = yes; then
2157         AC_MSG_ERROR([missing liblzma for --with-lzma])
2158       fi
2159     fi
2160   fi
2161 fi
2162
2163 LIBGUI="../libgui/src/libgui.a"
2164 GUI_CFLAGS_X="-I${srcdir}/../libgui/src"
2165 AC_SUBST(LIBGUI)
2166 AC_SUBST(GUI_CFLAGS_X)
2167
2168 WIN32LDAPP=
2169 AC_SUBST(WIN32LIBS)
2170 AC_SUBST(WIN32LDAPP)
2171
2172 case "${host}" in
2173 *-*-cygwin* | *-*-mingw* )
2174     configdir="win"
2175     ;;
2176 *)
2177     configdir="unix"
2178     ;;
2179 esac
2180
2181 GDBTKLIBS=
2182 if test "${enable_gdbtk}" = "yes"; then
2183
2184     # Gdbtk must have an absolute path to srcdir in order to run
2185     # properly when not installed.
2186     here=`pwd`
2187     cd ${srcdir}
2188     GDBTK_SRC_DIR=`pwd`
2189     cd $here
2190
2191     SC_PATH_TCLCONFIG
2192
2193     # If $no_tk is nonempty, then we can't do Tk, and there is no
2194     # point to doing Tcl.
2195     SC_PATH_TKCONFIG
2196
2197     if test -z "${no_tcl}" -a -z "${no_tk}"; then
2198         SC_LOAD_TCLCONFIG
2199
2200         # Check for in-tree tcl
2201         here=`pwd`
2202         cd ${srcdir}/..
2203         topdir=`pwd`
2204         cd ${here}
2205
2206         intree="no"
2207         if test "${TCL_SRC_DIR}" = "${topdir}/tcl"; then
2208           intree="yes"
2209         fi
2210
2211         # Find Tcl private headers
2212         if test x"${intree}" = xno; then
2213           CY_AC_TCL_PRIVATE_HEADERS
2214           TCL_INCLUDE="${TCL_INCLUDE_SPEC} ${TCL_PRIVATE_INCLUDE}"
2215           TCL_LIBRARY="${TCL_LIB_SPEC}"
2216           TCL_DEPS=""
2217         else
2218           # If building tcl in the same src tree, private headers
2219           # are not needed, but we need to be sure to use the right
2220           # headers library
2221           TCL_INCLUDE="-I${TCL_SRC_DIR}/generic"
2222           TCL_LIBRARY="${TCL_BUILD_LIB_SPEC}"
2223           TCL_DEPS="../tcl/${configdir}${TCL_LIB_FILE}"
2224         fi
2225         AC_SUBST(TCL_INCLUDE)
2226         AC_SUBST(TCL_LIBRARY)
2227         AC_SUBST(TCL_DEPS)
2228
2229         SC_LOAD_TKCONFIG
2230
2231         # Check for in-tree Tk
2232         intree="no"
2233         if test "${TK_SRC_DIR}" = "${topdir}/tk"; then
2234           intree="yes"
2235         fi
2236
2237         # Find Tk private headers
2238         if test x"${intree}" = xno; then
2239           CY_AC_TK_PRIVATE_HEADERS
2240           TK_INCLUDE="${TK_INCLUDE_SPEC} ${TK_PRIVATE_INCLUDE}"
2241           TK_LIBRARY=${TK_LIB_SPEC}
2242           TK_DEPS=""
2243         else
2244           TK_INCLUDE="-I${TK_SRC_DIR}/generic"
2245           TK_LIBRARY="${TK_BUILD_LIB_SPEC}"
2246           TK_DEPS="../tk/${configdir}/${TK_LIB_FILE}"
2247         fi
2248         AC_SUBST(TK_INCLUDE)
2249         AC_SUBST(TK_LIBRARY)
2250         AC_SUBST(TK_DEPS)
2251         AC_SUBST(TK_XINCLUDES)
2252
2253         ENABLE_CFLAGS="${ENABLE_CFLAGS} \$(SUBDIR_GDBTK_CFLAGS)"
2254
2255         # Include some libraries that Tcl and Tk want.
2256         TCL_LIBS='$(LIBGUI) $(TK) $(TCL) $(X11_LDFLAGS) $(X11_LIBS)'
2257         # Yes, the ordering seems wrong here.  But it isn't.
2258         # TK_LIBS is the list of libraries that need to be linked
2259         # after Tcl/Tk.  Note that this isn't put into LIBS.  If it
2260         # were in LIBS then any link tests after this point would
2261         # try to include things like `$(LIBGUI)', which wouldn't work.
2262         GDBTKLIBS="${TCL_LIBS} ${TK_LIBS}"
2263
2264         CONFIG_OBS="${CONFIG_OBS} \$(SUBDIR_GDBTK_OBS)"
2265         CONFIG_DEPS="${CONFIG_DEPS} \$(SUBDIR_GDBTK_DEPS)"
2266         CONFIG_SRCS="${CONFIG_SRCS} \$(SUBDIR_GDBTK_SRCS)"
2267         CONFIG_ALL="${CONFIG_ALL} all-gdbtk"
2268         CONFIG_CLEAN="${CONFIG_CLEAN} clean-gdbtk"
2269         CONFIG_INSTALL="${CONFIG_INSTALL} install-gdbtk"
2270         CONFIG_UNINSTALL="${CONFIG_UNINSTALL} uninstall-gdbtk"
2271
2272         if test x$gdb_cv_os_cygwin = xyes; then
2273           WIN32LIBS="${WIN32LIBS} -lshell32 -lgdi32 -lcomdlg32 -ladvapi32"
2274           WIN32LDAPP="-Wl,--subsystem,console"
2275           CONFIG_OBS="${CONFIG_OBS} gdbres.o"
2276         fi
2277
2278         AC_CONFIG_SUBDIRS(gdbtk)
2279     fi
2280 fi
2281
2282 AC_SUBST(X_CFLAGS)
2283 AC_SUBST(X_LDFLAGS)
2284 AC_SUBST(X_LIBS)
2285 AC_SUBST(GDBTKLIBS)
2286 AC_SUBST(GDBTK_CFLAGS)
2287 AC_SUBST(GDBTK_SRC_DIR)
2288
2289 AC_PATH_X
2290
2291 # Unlike the sim directory, whether a simulator is linked is controlled by
2292 # presence of a gdb_sim definition in the target configure.tgt entry.
2293 # This code just checks for a few cases where we'd like to ignore those
2294 # definitions, even when they're present in the '.mt' file.  These cases
2295 # are when --disable-sim is specified, or if the simulator directory is
2296 # not part of the source tree.
2297 #
2298 AC_ARG_ENABLE(sim,
2299 AS_HELP_STRING([--enable-sim], [link gdb with simulator]),
2300 [echo "enable_sim = $enable_sim";
2301  echo "enableval = ${enableval}";
2302  case "${enableval}" in
2303   yes) ignore_sim=false ;;
2304   no)  ignore_sim=true ;;
2305   *)   ignore_sim=false ;;
2306  esac],
2307 [ignore_sim=false])
2308
2309 if test ! -d "${srcdir}/../sim"; then
2310   ignore_sim=true
2311 fi
2312
2313 SIM=
2314 SIM_OBS=
2315 if test "${ignore_sim}" = "false"; then
2316   if test x"${gdb_sim}" != x ; then
2317     SIM="${gdb_sim}"
2318     SIM_OBS="remote-sim.o"
2319     AC_DEFINE(WITH_SIM, 1, [Define if the simulator is being linked in.])
2320   fi
2321 fi
2322 AC_SUBST(SIM)
2323 AC_SUBST(SIM_OBS)
2324
2325 AC_SUBST(ENABLE_CFLAGS)
2326 AC_SUBST(PROFILE_CFLAGS)
2327
2328 AC_SUBST(CONFIG_OBS)
2329 AC_SUBST(CONFIG_DEPS)
2330 AC_SUBST(CONFIG_SRCS)
2331 AC_SUBST(CONFIG_ALL)
2332 AC_SUBST(CONFIG_CLEAN)
2333 AC_SUBST(CONFIG_INSTALL)
2334 AC_SUBST(CONFIG_UNINSTALL)
2335
2336 # List of host floatformats.
2337 AC_DEFINE_UNQUOTED(GDB_HOST_FLOAT_FORMAT,$gdb_host_float_format,[Host float floatformat])
2338 AC_DEFINE_UNQUOTED(GDB_HOST_DOUBLE_FORMAT,$gdb_host_double_format,[Host double floatformat])
2339 AC_DEFINE_UNQUOTED(GDB_HOST_LONG_DOUBLE_FORMAT,$gdb_host_long_double_format,[Host long double floatformat])
2340
2341 # target_subdir is used by the testsuite to find the target libraries.
2342 target_subdir=
2343 if test "${host}" != "${target}"; then
2344     target_subdir="${target_alias}/"
2345 fi
2346 AC_SUBST(target_subdir)
2347
2348 frags=
2349 if test "${gdb_native}" = "yes"; then
2350   host_makefile_frag=${srcdir}/config/${gdb_host_cpu}/${gdb_host}.mh
2351   if test ! -f ${host_makefile_frag}; then
2352     AC_MSG_ERROR("*** Gdb does not support native target ${host}")
2353   fi
2354   frags="$frags $host_makefile_frag"
2355 else
2356   host_makefile_frag=/dev/null
2357 fi
2358
2359 AC_SUBST_FILE(host_makefile_frag)
2360 AC_SUBST(frags)
2361
2362 changequote(,)dnl
2363 if test "${gdb_native}" = "yes"; then
2364 # We pick this up from the host configuration file (.mh) because we
2365 # do not have a native configuration Makefile fragment.
2366 nativefile=`sed -n '
2367 s/NAT_FILE[     ]*=[    ]*\([^  ]*\)/\1/p
2368 ' ${host_makefile_frag}`
2369 fi
2370 changequote([,])
2371
2372 if test x"${gdb_osabi}" != x ; then
2373     AC_DEFINE_UNQUOTED(GDB_OSABI_DEFAULT, $gdb_osabi,
2374                        [Define to the default OS ABI for this configuration.])
2375 fi
2376
2377 # Enable multi-ice-gdb-server.
2378 AC_ARG_ENABLE(multi-ice,
2379 AS_HELP_STRING([--enable-multi-ice], [build the multi-ice-gdb-server]),
2380   [case $enableval in
2381     yes | no)
2382       ;;
2383     *) AC_MSG_ERROR([bad value $enableval for --enable-multi-ice]) ;;
2384   esac])
2385 if test "x$enable_multi_ice" = xyes; then
2386    AC_CONFIG_SUBDIRS(multi-ice)
2387 fi
2388
2389 AC_ARG_ENABLE(gdbserver,
2390 AS_HELP_STRING([--enable-gdbserver],
2391                [automatically build gdbserver (yes/no/auto, default is auto)]),
2392 [case "${enableval}" in
2393   yes| no|auto) ;;
2394   *) AC_MSG_ERROR(bad value ${enableval} for --enable-gdbserver option) ;;
2395 esac],[enable_gdbserver=auto])
2396
2397 # We only build gdbserver automatically in a native configuration, and
2398 # only if the user did not explicitly disable its build.
2399 if test "$gdb_native" = "yes" -a "$enable_gdbserver" != "no"; then
2400   AC_MSG_CHECKING(whether gdbserver is supported on this host)
2401   if test "x$build_gdbserver" = xyes; then
2402     AC_MSG_RESULT(yes)
2403     AC_CONFIG_SUBDIRS(gdbserver)
2404     gdbserver_build_enabled=yes
2405   else
2406     AC_MSG_RESULT(no)
2407   fi
2408 fi
2409
2410 # If the user explicitly request the gdbserver to be built, verify that
2411 # we were in fact able to enable it.
2412 if test "$enable_gdbserver" = "yes" -a "$gdbserver_build_enabled" != "yes"; then
2413   AC_MSG_ERROR(Automatic gdbserver build is not supported for this configuration)
2414 fi
2415
2416 # Check for babeltrace and babeltrace-ctf
2417 AC_ARG_WITH(babeltrace,
2418   AC_HELP_STRING([--with-babeltrace], [include babeltrace support (auto/yes/no)]),
2419   [], [with_babeltrace=auto])
2420 AC_MSG_CHECKING([whether to use babeltrace])
2421 AC_MSG_RESULT([$with_babeltrace])
2422
2423 if test "x$with_babeltrace" = "xno"; then
2424   AC_MSG_WARN([babletrace support disabled; GDB is unable to read CTF data.])
2425 else
2426   # Append -Werror to CFLAGS so that configure can catch the warning
2427   # "assignment from incompatible pointer type", which is related to
2428   # the babeltrace change from 1.0.3 to 1.1.0.  Babeltrace 1.1.0 works
2429   # in GDB, while babeltrace 1.0.3 is broken.
2430   # AC_LIB_HAVE_LINKFLAGS may modify CPPFLAGS in it, so it should be
2431   # safe to save and restore CFLAGS here.
2432   saved_CFLAGS=$CFLAGS
2433   CFLAGS="$CFLAGS -Werror"
2434   AC_LIB_HAVE_LINKFLAGS([babeltrace], [babeltrace-ctf],
2435                         [#include <babeltrace/babeltrace.h>
2436                          #include <babeltrace/ctf/events.h>
2437                          #include <babeltrace/ctf/iterator.h>],
2438                         [struct bt_iter_pos *pos = bt_iter_get_pos (bt_ctf_get_iter (NULL));
2439                         struct bt_ctf_event *event = NULL;
2440                         const struct bt_definition *scope;
2441
2442                         bt_iter_set_pos (bt_ctf_get_iter (NULL), pos);
2443                         scope = bt_ctf_get_top_level_scope (event,
2444                                                            BT_STREAM_EVENT_HEADER);
2445                         bt_ctf_get_uint64 (bt_ctf_get_field (event, scope, "id"));
2446                         ])
2447   CFLAGS=$saved_CFLAGS
2448
2449   if test "$HAVE_LIBBABELTRACE" != yes; then
2450      if test "$with_babeltrace" = yes; then
2451        AC_MSG_ERROR([babeltrace is missing or unusable])
2452      else
2453        AC_MSG_WARN([babeltrace is missing or unusable; GDB is unable to read CTF data.])
2454      fi
2455   fi
2456 fi
2457
2458 # If nativefile (NAT_FILE) is not set in config/*/*.m[ht] files, we link
2459 # to an empty version.
2460
2461 files=
2462 links=
2463
2464 rm -f nm.h
2465 if test "${nativefile}" != ""; then
2466     case "${nativefile}" in
2467       nm-*.h ) GDB_NM_FILE="config/${gdb_host_cpu}/${nativefile}" ;;
2468       * ) GDB_NM_FILE="${nativefile}"
2469     esac
2470     files="${files} ${GDB_NM_FILE}"
2471     links="${links} nm.h"
2472     AC_DEFINE_UNQUOTED(GDB_NM_FILE, "${GDB_NM_FILE}", [nativefile])
2473 fi
2474 AC_SUBST(GDB_NM_FILE)
2475
2476 AC_LINK_FILES($files, $links)
2477
2478 dnl Check for exe extension set on certain hosts (e.g. Win32)
2479 AC_EXEEXT
2480
2481 dnl  Detect the character set used by this host.
2482 dnl  At the moment, we just assume it's UTF-8.
2483 AC_DEFINE(GDB_DEFAULT_HOST_CHARSET, "UTF-8",
2484           [Define to be a string naming the default host character set.])
2485
2486 GDB_AC_TRANSFORM([gdb], [GDB_TRANSFORM_NAME])
2487 GDB_AC_TRANSFORM([gcore], [GCORE_TRANSFORM_NAME])
2488 AC_CONFIG_FILES([gcore], [chmod +x gcore])
2489
2490 AC_OUTPUT(Makefile gdb-gdb.gdb doc/Makefile data-directory/Makefile,
2491 [
2492 case x$CONFIG_HEADERS in
2493 xconfig.h:config.in)
2494 echo > stamp-h ;;
2495 esac
2496 ])
2497
2498 exit 0