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