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