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