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