xref: /dragonfly/contrib/gdb-7/gdb/configure.ac (revision dca3c15d)
1dnl Autoconf configure script for GDB, the GNU debugger.
2dnl Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
3dnl 2005, 2006, 2007, 2008, 2009
4dnl Free Software Foundation, Inc.
5dnl
6dnl This file is part of GDB.
7dnl
8dnl This program is free software; you can redistribute it and/or modify
9dnl it under the terms of the GNU General Public License as published by
10dnl the Free Software Foundation; either version 3 of the License, or
11dnl (at your option) any later version.
12dnl
13dnl This program is distributed in the hope that it will be useful,
14dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
15dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16dnl GNU General Public License for more details.
17dnl
18dnl You should have received a copy of the GNU General Public License
19dnl along with this program.  If not, see <http://www.gnu.org/licenses/>.
20
21dnl Process this file with autoconf to produce a configure script.
22
23AC_PREREQ(2.59)dnl
24AC_INIT(main.c)
25AC_CONFIG_HEADER(config.h:config.in)
26AM_MAINTAINER_MODE
27
28AC_PROG_CC
29AC_USE_SYSTEM_EXTENSIONS
30gl_EARLY
31AM_PROG_CC_STDC
32
33AC_CONFIG_AUX_DIR(..)
34AC_CANONICAL_SYSTEM
35
36# Dependency checking.
37ZW_CREATE_DEPDIR
38ZW_PROG_COMPILER_DEPENDENCIES([CC])
39
40# Check for the 'make' the user wants to use.
41AC_CHECK_PROGS(MAKE, make)
42MAKE_IS_GNU=
43case "`$MAKE --version 2>&1 | sed 1q`" in
44  *GNU*)
45    MAKE_IS_GNU=yes
46    ;;
47esac
48AM_CONDITIONAL(GMAKE, test "$MAKE_IS_GNU" = yes)
49AC_PROG_MAKE_SET
50
51dnl List of object files and targets accumulated by configure.
52
53CONFIG_OBS=
54CONFIG_DEPS=
55CONFIG_SRCS=
56ENABLE_CFLAGS=
57
58CONFIG_ALL=
59CONFIG_CLEAN=
60CONFIG_INSTALL=
61CONFIG_UNINSTALL=
62
63dnl Set up for gettext.
64ZW_GNU_GETTEXT_SISTER_DIR
65
66localedir='${datadir}/locale'
67AC_SUBST(localedir)
68
69if test x"$USE_NLS" = xyes; then
70   CONFIG_ALL="$CONFIG_ALL all-po"
71   CONFIG_CLEAN="$CONFIG_CLEAN clean-po"
72   CONFIG_INSTALL="$CONFIG_INSTALL install-po"
73   CONFIG_UNINSTALL="$CONFIG_UNINSTALL uninstall-po"
74fi
75
76gl_INIT
77
78# For Makefile dependencies.
79GNULIB_STDINT_H=
80if test x"$STDINT_H" != x; then
81  GNULIB_STDINT_H=gnulib/$STDINT_H
82fi
83AC_SUBST(GNULIB_STDINT_H)
84
85PACKAGE=gdb
86AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of this package. ])
87AC_SUBST(PACKAGE)
88
89# GDB does not use automake, but gnulib does.  This line lets us
90# generate its Makefile.in.
91AM_INIT_AUTOMAKE(gdb, UNUSED-VERSION, [no-define])
92
93GDB_AC_WITH_DIR(DEBUGDIR, separate-debug-dir,
94    [look for global separate debug info in this path @<:@LIBDIR/debug@:>@],
95    [${libdir}/debug])
96
97# GDB's datadir relocation
98
99GDB_AC_WITH_DIR(GDB_DATADIR, gdb-datadir,
100    [look for global separate data files in this path @<:@DATADIR/gdb@:>@],
101    [${datadir}/gdb])
102
103AC_ARG_WITH(relocated-sources,
104AS_HELP_STRING([--with-relocated-sources=PATH], [automatically relocate this path for source files]),
105[reloc_srcdir="${withval}"
106 AC_DEFINE_DIR(RELOC_SRCDIR, reloc_srcdir,
107              [Relocated directory for source files. ])
108])
109
110AC_CONFIG_SUBDIRS(doc testsuite)
111
112# Check whether to support alternative target configurations
113AC_ARG_ENABLE(targets,
114AS_HELP_STRING([--enable-targets=TARGETS], [alternative target configurations]),
115[case "${enableval}" in
116  yes | "") AC_ERROR(enable-targets option must specify target names or 'all')
117            ;;
118  no)       enable_targets= ;;
119  *)        enable_targets=$enableval ;;
120esac])
121
122# Check whether to enable 64-bit support on 32-bit hosts
123AC_ARG_ENABLE(64-bit-bfd,
124AS_HELP_STRING([--enable-64-bit-bfd], [64-bit support (on hosts with narrower word sizes)]),
125[case "${enableval}" in
126  yes)  want64=true  ;;
127  no)   want64=false ;;
128  *)    AC_MSG_ERROR(bad value ${enableval} for 64-bit-bfd option) ;;
129esac],[want64=false])dnl
130
131# Provide defaults for some variables set by the per-host and per-target
132# configuration.
133gdb_host_obs=posix-hdep.o
134
135if test "${target}" = "${host}"; then
136  gdb_native=yes
137else
138  gdb_native=no
139fi
140
141. $srcdir/configure.host
142
143# Accumulate some settings from configure.tgt over all enabled targets
144
145TARGET_OBS=
146all_targets=
147
148for targ_alias in `echo $target_alias $enable_targets | sed 's/,/ /g'`
149do
150  if test "$targ_alias" = "all"; then
151    all_targets=true
152  else
153    # Canonicalize the secondary target names.
154    result=`$ac_config_sub $targ_alias 2>/dev/null`
155    if test -n "$result"; then
156        targ=$result
157    else
158        targ=$targ_alias
159    fi
160
161    . ${srcdir}/configure.tgt
162
163    # Target-specific object files
164    for i in ${gdb_target_obs}; do
165        case " $TARGET_OBS " in
166        *" ${i} "*) ;;
167        *)
168          TARGET_OBS="$TARGET_OBS ${i}"
169          ;;
170        esac
171    done
172
173    # Check whether this target needs 64-bit CORE_ADDR
174    if test x${want64} = xfalse; then
175      . ${srcdir}/../bfd/config.bfd
176    fi
177  fi
178done
179
180if test x${all_targets} = xtrue; then
181
182  # We want all 64-bit targets if we either:
183  #  - run on a 64-bit host  or
184  #  - already require 64-bit support for some other target  or
185  #  - the --enable-64-bit-bfd option was supplied
186  # Otherwise we only support all 32-bit targets.
187  #
188  # NOTE: This test must be in sync with the corresponding
189  #       tests in BFD!
190
191  if test x${want64} = xfalse; then
192    AC_CHECK_SIZEOF(long)
193    if test "x${ac_cv_sizeof_long}" = "x8"; then
194      want64=true
195    fi
196  fi
197  if test x${want64} = xtrue; then
198    TARGET_OBS='$(ALL_TARGET_OBS) $(ALL_64_TARGET_OBS)'
199  else
200    TARGET_OBS='$(ALL_TARGET_OBS)'
201  fi
202fi
203
204AC_SUBST(TARGET_OBS)
205
206# For other settings, only the main target counts.
207gdb_sim=
208gdb_osabi=
209build_gdbserver=
210targ=$target; . ${srcdir}/configure.tgt
211
212# Fetch the default architecture and default target vector from BFD.
213targ=$target; . $srcdir/../bfd/config.bfd
214
215# We only want the first architecture, so strip off the others if
216# there is more than one.
217targ_archs=`echo $targ_archs | sed 's/ .*//'`
218
219if test "x$targ_archs" != x; then
220  AC_DEFINE_UNQUOTED(DEFAULT_BFD_ARCH, $targ_archs,
221    [Define to BFD's default architecture. ])
222fi
223if test "x$targ_defvec" != x; then
224  AC_DEFINE_UNQUOTED(DEFAULT_BFD_VEC, $targ_defvec,
225    [Define to BFD's default target vector. ])
226fi
227
228# The CLI cannot be disabled yet, but may be in the future.
229
230# Enable CLI.
231AC_ARG_ENABLE(gdbcli,
232AS_HELP_STRING([--disable-gdbcli], [disable command-line interface (CLI)]),
233  [case $enableval in
234    yes)
235      ;;
236    no)
237      AC_MSG_ERROR([the command-line interface cannot be disabled yet]) ;;
238    *)
239      AC_MSG_ERROR([bad value $enableval for --enable-gdbcli]) ;;
240  esac],
241  [enable_gdbcli=yes])
242if test x"$enable_gdbcli" = xyes; then
243  if test -d $srcdir/cli; then
244    CONFIG_OBS="$CONFIG_OBS \$(SUBDIR_CLI_OBS)"
245    CONFIG_DEPS="$CONFIG_DEPS \$(SUBDIR_CLI_DEPS)"
246    CONFIG_SRCS="$CONFIG_SRCS \$(SUBDIR_CLI_SRCS)"
247    ENABLE_CFLAGS="$ENABLE_CFLAGS \$(SUBDIR_CLI_CFLAGS)"
248  fi
249fi
250
251# Enable MI.
252AC_ARG_ENABLE(gdbmi,
253AS_HELP_STRING([--disable-gdbmi], [disable machine-interface (MI)]),
254  [case $enableval in
255    yes | no)
256      ;;
257    *)
258      AC_MSG_ERROR([bad value $enableval for --enable-gdbmi]) ;;
259  esac],
260  [enable_gdbmi=yes])
261if test x"$enable_gdbmi" = xyes; then
262  if test -d $srcdir/mi; then
263    CONFIG_OBS="$CONFIG_OBS \$(SUBDIR_MI_OBS)"
264    CONFIG_DEPS="$CONFIG_DEPS \$(SUBDIR_MI_DEPS)"
265    CONFIG_SRCS="$CONFIG_SRCS \$(SUBDIR_MI_SRCS)"
266    ENABLE_CFLAGS="$ENABLE_CFLAGS \$(SUBDIR_MI_CFLAGS)"
267  fi
268fi
269
270# Enable TUI.
271AC_ARG_ENABLE(tui,
272AS_HELP_STRING([--enable-tui], [enable full-screen terminal user interface (TUI)]),
273  [case $enableval in
274    yes | no | auto)
275      ;;
276    *)
277      AC_MSG_ERROR([bad value $enableval for --enable-tui]) ;;
278  esac],enable_tui=auto)
279
280# Enable gdbtk.
281AC_ARG_ENABLE(gdbtk,
282AS_HELP_STRING([--enable-gdbtk], [enable gdbtk graphical user interface (GUI)]),
283  [case $enableval in
284    yes | no)
285      ;;
286    *)
287      AC_MSG_ERROR([bad value $enableval for --enable-gdbtk]) ;;
288  esac],
289  [if test -d $srcdir/gdbtk; then
290    enable_gdbtk=yes
291  else
292    enable_gdbtk=no
293  fi])
294# We unconditionally disable gdbtk tests on selected platforms.
295case $host_os in
296  go32* | windows*)
297    AC_MSG_WARN([gdbtk isn't supported on $host; disabling])
298    enable_gdbtk=no ;;
299esac
300
301# Libunwind support.
302AC_ARG_WITH(libunwind,
303AS_HELP_STRING([--with-libunwind], [use libunwind frame unwinding support]),
304[case "${withval}" in
305  yes)  enable_libunwind=yes ;;
306  no)   enable_libunwind=no ;;
307  *)    AC_MSG_ERROR(bad value ${withval} for GDB with-libunwind option) ;;
308esac],[
309  AC_CHECK_HEADERS(libunwind.h libunwind-ia64.h)
310  if test x"$ac_cv_header_libunwind_h" = xyes -a x"$ac_cv_header_libunwind_ia64_h" = xyes; then
311    enable_libunwind=yes;
312  fi
313])
314
315if test x"$enable_libunwind" = xyes; then
316  AC_CHECK_HEADERS(libunwind.h libunwind-ia64.h)
317  AC_DEFINE(HAVE_LIBUNWIND, 1, [Define if libunwind library is being used.])
318  CONFIG_OBS="$CONFIG_OBS libunwind-frame.o"
319  CONFIG_DEPS="$CONFIG_DEPS libunwind-frame.o"
320  CONFIG_SRCS="$CONFIG_SRCS libunwind-frame.c"
321fi
322
323opt_curses=no
324AC_ARG_WITH(curses, AS_HELP_STRING([--with-curses], [use the curses library instead of the termcap library]), opt_curses=$withval)
325
326prefer_curses=no
327if test "$opt_curses" = "yes"; then
328  prefer_curses=yes
329fi
330
331# Profiling support.
332AC_ARG_ENABLE(profiling,
333AS_HELP_STRING([--enable-profiling], [enable profiling of GDB]),
334  [case $enableval in
335    yes | no)
336      ;;
337    *)
338      AC_MSG_ERROR([bad value $enableval for --enable-profile]) ;;
339  esac],
340 [enable_profiling=no])
341
342AC_CHECK_FUNCS(monstartup _mcleanup)
343AC_CACHE_CHECK([for _etext], ac_cv_var__etext,
344[AC_TRY_LINK(
345[#include <stdlib.h>
346extern char _etext;
347],
348[free (&_etext);], ac_cv_var__etext=yes, ac_cv_var__etext=no)])
349if test $ac_cv_var__etext = yes; then
350  AC_DEFINE(HAVE__ETEXT, 1,
351            [Define to 1 if your system has the _etext variable. ])
352fi
353AC_CACHE_CHECK([for etext], ac_cv_var_etext,
354[AC_TRY_LINK(
355[#include <stdlib.h>
356extern char etext;
357],
358[free (&etext);], ac_cv_var_etext=yes, ac_cv_var_etext=no)])
359if test $ac_cv_var_etext = yes; then
360  AC_DEFINE(HAVE_ETEXT, 1,
361            [Define to 1 if your system has the etext variable. ])
362fi
363if test "$enable_profiling" = yes ; then
364  if test $ac_cv_func_monstartup = no || test $ac_cv_func__mcleanup = no; then
365    AC_MSG_ERROR(--enable-profiling requires monstartup and _mcleanup)
366  fi
367  PROFILE_CFLAGS=-pg
368  OLD_CFLAGS="$CFLAGS"
369  CFLAGS="$CFLAGS $PROFILE_CFLAGS"
370
371  AC_CACHE_CHECK([whether $CC supports -pg], ac_cv_cc_supports_pg,
372    [AC_TRY_COMPILE([], [int x;], ac_cv_cc_supports_pg=yes,
373     ac_cv_cc_supports_pg=no)])
374
375  if test $ac_cv_cc_supports_pg = no; then
376    AC_MSG_ERROR(--enable-profiling requires a compiler which supports -pg)
377  fi
378
379  CFLAGS="$OLD_CFLAGS"
380fi
381
382ACX_PKGVERSION([GDB])
383ACX_BUGURL([http://www.gnu.org/software/gdb/bugs/])
384AC_DEFINE_UNQUOTED([PKGVERSION], ["$PKGVERSION"], [Additional package description])
385AC_DEFINE_UNQUOTED([REPORT_BUGS_TO], ["$REPORT_BUGS_TO"], [Bug reporting address])
386
387# --------------------- #
388# Checks for programs.  #
389# --------------------- #
390
391AC_PROG_AWK
392AC_PROG_INSTALL
393AC_PROG_LN_S
394AC_PROG_RANLIB
395AC_PROG_YACC
396
397AC_CHECK_TOOL(AR, ar)
398AC_CHECK_TOOL(DLLTOOL, dlltool)
399AC_CHECK_TOOL(WINDRES, windres)
400
401# Needed for GNU/Hurd.
402AC_CHECK_TOOL(MIG, mig)
403
404# ---------------------- #
405# Checks for libraries.  #
406# ---------------------- #
407
408# We might need to link with -lm; most simulators need it.
409AC_CHECK_LIB(m, main)
410
411# We need to link with -lw to get `wctype' on Solaris before Solaris
412# 2.6.  Solaris 2.6 and beyond have this function in libc, and have a
413# libw that some versions of the GNU linker cannot hanle (GNU ld 2.9.1
414# is known to have this problem).  Therefore we avoid libw if we can.
415AC_CHECK_FUNC(wctype, [],
416  [AC_CHECK_LIB(w, wctype)])
417
418# Some systems (e.g. Solaris) have `gethostbyname' in libnsl.
419AC_SEARCH_LIBS(gethostbyname, nsl)
420
421# Some systems (e.g. Solaris) have `socketpair' in libsocket.
422AC_SEARCH_LIBS(socketpair, socket)
423
424# Link in zlib if we can.  This allows us to read compressed debug sections.
425AC_SEARCH_LIBS(zlibVersion, z, [AC_CHECK_HEADERS(zlib.h)])
426
427# On HP/UX we may need libxpdl for dlgetmodinfo (used by solib-pa64.c).
428AC_SEARCH_LIBS(dlgetmodinfo, [dl xpdl])
429
430AM_ICONV
431
432# On alpha-osf, it appears that libtermcap and libcurses are not compatible.
433# There is a very specific comment in /usr/include/curses.h explaining that
434# termcap routines built into libcurses must not be used.
435#
436# The symptoms we observed so far is GDB unexpectedly changing
437# the terminal settings when tgetent is called - this is particularly
438# visible as the output is missing carriage returns, and so rapidly
439# becomes very hard to read.
440#
441# The readline configure script has already decided that libtermcap
442# was enough for its purposes, and so decided to build readline using
443# libtermcap.  Since the TUI mode requires curses, building GDB with
444# TUI enabled results in both libraries to be used at the same time,
445# which is not allowed.  This basically means that GDB with TUI is
446# broken on alpha-osf.
447
448case $host_os in
449  alpha*-*-osf* )
450    if "$enable_tui" = "yes"; then
451      AC_MSG_ERROR([Building GDB with TUI mode is not supported on this host])
452    fi
453    if "$enable_tui" = "auto"; then
454      enable_tui=no
455    fi
456    ;;
457esac
458
459# For the TUI, we need enhanced curses functionality.
460if test x"$enable_tui" != xno; then
461  prefer_curses=yes
462fi
463
464curses_found=no
465if test x"$prefer_curses" = xyes; then
466  # FIXME: kettenis/20040905: We prefer ncurses over the vendor-supplied
467  # curses library because the latter might not provide all the
468  # functionality we need.  However, this leads to problems on systems
469  # where the linker searches /usr/local/lib, but the compiler doesn't
470  # search /usr/local/include, if ncurses is installed in /usr/local.  A
471  # default installation of ncurses on alpha*-dec-osf* will lead to such
472  # a situation.
473  AC_SEARCH_LIBS(waddstr, [ncurses cursesX curses])
474
475  if test "$ac_cv_search_waddstr" != no; then
476    curses_found=yes
477  fi
478fi
479
480# Check whether we should enable the TUI, but only do so if we really
481# can.
482if test x"$enable_tui" != xno; then
483  if test -d $srcdir/tui; then
484    if test "$curses_found" != no; then
485      CONFIG_OBS="$CONFIG_OBS \$(SUBDIR_TUI_OBS)"
486      CONFIG_DEPS="$CONFIG_DEPS \$(SUBDIR_TUI_DEPS)"
487      CONFIG_SRCS="$CONFIG_SRCS \$(SUBDIR_TUI_SRCS)"
488      ENABLE_CFLAGS="$ENABLE_CFLAGS \$(SUBDIR_TUI_CFLAGS)"
489      CONFIG_ALL="${CONFIG_ALL} all-tui"
490      CONFIG_CLEAN="${CONFIG_CLEAN} clean-tui"
491      CONFIG_INSTALL="${CONFIG_INSTALL} install-tui"
492      CONFIG_UNINSTALL="${CONFIG_UNINSTALL} uninstall-tui"
493    else
494      if test x"$enable_tui" = xyes; then
495	AC_MSG_ERROR([no enhanced curses library found; disable TUI])
496      else
497	AC_MSG_WARN([no enhanced curses library found; disabling TUI])
498      fi
499    fi
500  fi
501fi
502
503# Since GDB uses Readline, we need termcap functionality.  In many
504# cases this will be provided by the curses library, but some systems
505# have a seperate termcap library, or no curses library at all.
506
507case $host_os in
508  cygwin*)
509    if test -d $srcdir/libtermcap; then
510      LIBS="../libtermcap/libtermcap.a $LIBS"
511      ac_cv_search_tgetent="../libtermcap/libtermcap.a"
512    fi ;;
513  go32* | *djgpp*)
514    ac_cv_search_tgetent="none required"
515    ;;
516  *mingw32*)
517    ac_cv_search_tgetent="none required"
518    CONFIG_OBS="$CONFIG_OBS windows-termcap.o"
519    ;;
520esac
521
522# These are the libraries checked by Readline.
523AC_SEARCH_LIBS(tgetent, [termcap tinfo curses ncurses])
524
525if test "$ac_cv_search_tgetent" = no; then
526  AC_MSG_ERROR([no termcap library found])
527fi
528
529AC_ARG_WITH([system-readline],
530  [AS_HELP_STRING([--with-system-readline],
531                  [use installed readline library])])
532
533if test "$with_system_readline" = yes; then
534  READLINE=-lreadline
535  READLINE_DEPS=
536  READLINE_CFLAGS=
537else
538  READLINE='$(READLINE_DIR)/libreadline.a'
539  READLINE_DEPS='$(READLINE)'
540  READLINE_CFLAGS='-I$(READLINE_SRC)/..'
541fi
542AC_SUBST(READLINE)
543AC_SUBST(READLINE_DEPS)
544AC_SUBST(READLINE_CFLAGS)
545
546AC_ARG_WITH(expat,
547  AS_HELP_STRING([--with-expat], [include expat support (auto/yes/no)]),
548  [], [with_expat=auto])
549AC_MSG_CHECKING([whether to use expat])
550AC_MSG_RESULT([$with_expat])
551
552if test "${with_expat}" = no; then
553  AC_MSG_WARN([expat support disabled; some features may be unavailable.])
554  HAVE_LIBEXPAT=no
555else
556  AC_LIB_HAVE_LINKFLAGS([expat], [], [#include "expat.h"],
557			[XML_Parser p = XML_ParserCreate (0);])
558  if test "$HAVE_LIBEXPAT" != yes; then
559    if test "$with_expat" = yes; then
560      AC_MSG_ERROR([expat is missing or unusable])
561    else
562      AC_MSG_WARN([expat is missing or unusable; some features may be unavailable.])
563    fi
564  else
565    save_LIBS=$LIBS
566    LIBS="$LIBS $LIBEXPAT"
567    AC_CHECK_FUNCS(XML_StopParser)
568    LIBS=$save_LIBS
569  fi
570fi
571
572dnl Utility to simplify finding libpython.
573AC_DEFUN([AC_TRY_LIBPYTHON],
574[
575  version=$1
576  define([have_libpython_var],$2)
577  define([VERSION],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
578                                  [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
579  [HAVE_LIB]VERSION=no
580  AC_MSG_CHECKING([for ${version}])
581  save_LIBS=$LIBS
582  LIBS="$LIBS -l${version}"
583  AC_LINK_IFELSE(AC_LANG_PROGRAM([[#include "${version}/Python.h"]],
584                                 [[Py_Initialize ();]]),
585                 [[HAVE_LIB]VERSION=yes
586                  have_libpython_var=yes],
587                 [LIBS=$save_LIBS])
588  AC_MSG_RESULT([$[HAVE_LIB]VERSION])
589])
590
591AC_ARG_WITH(python,
592  AS_HELP_STRING([--with-python], [include python support (auto/yes/no/<path>)]),
593  [], [with_python=auto])
594AC_MSG_CHECKING([whether to use python])
595AC_MSG_RESULT([$with_python])
596
597if test "${with_python}" = no; then
598  AC_MSG_WARN([python support disabled; some features may be unavailable.])
599  have_libpython=no
600else
601  case "${with_python}" in
602  yes | auto)
603    # Leave as empty, use defaults.
604    python_includes=
605    python_libs=
606    ;;
607  /*)
608    python_includes="-I${with_python}/include"
609    python_libs="-L${with_python}/lib"
610    ;;
611  *)
612    AC_ERROR(invalid value for --with-python)
613    ;;
614  esac
615
616  save_CPPFLAGS=$CPPFLAGS
617  CPPFLAGS="$CPPFLAGS ${python_includes}"
618  save_LIBS=$LIBS
619  LIBS="$LIBS ${python_libs}"
620  have_libpython=no
621  if test "${have_libpython}" = no; then
622    AC_TRY_LIBPYTHON(python2.6, have_libpython)
623    if test "${HAVE_LIBPYTHON2_6}" = yes; then
624      AC_DEFINE(HAVE_LIBPYTHON2_6, 1, [Define if Python 2.6 is being used.])
625    fi
626  fi
627  if test ${have_libpython} = no; then
628    AC_TRY_LIBPYTHON(python2.5, have_libpython)
629    if test "${HAVE_LIBPYTHON2_5}" = yes; then
630      AC_DEFINE(HAVE_LIBPYTHON2_5, 1, [Define if Python 2.5 is being used.])
631    fi
632  fi
633  if test ${have_libpython} = no; then
634    AC_TRY_LIBPYTHON(python2.4, have_libpython)
635    if test "${HAVE_LIBPYTHON2_4}" = yes; then
636      AC_DEFINE(HAVE_LIBPYTHON2_4, 1, [Define if Python 2.4 is being used.])
637    fi
638  fi
639  if test ${have_libpython} = no; then
640    case "${with_python}" in
641    yes)
642      AC_MSG_ERROR([python is missing or unusable])
643      ;;
644    auto)
645      AC_MSG_WARN([python is missing or unusable; some features may be unavailable.])
646      ;;
647    *)
648      AC_MSG_ERROR([no usable python found at ${with_python}])
649      ;;
650    esac
651    CPPFLAGS=$save_CPPFLAGS
652    LIBS=$save_LIBS
653  fi
654fi
655
656if test "${have_libpython}" = yes; then
657  AC_DEFINE(HAVE_PYTHON, 1, [Define if Python interpreter is being linked in.])
658  CONFIG_OBS="$CONFIG_OBS \$(SUBDIR_PYTHON_OBS)"
659  CONFIG_DEPS="$CONFIG_DEPS \$(SUBDIR_PYTHON_DEPS)"
660  CONFIG_SRCS="$CONFIG_SRCS \$(SUBDIR_PYTHON_SRCS)"
661  ENABLE_CFLAGS="$ENABLE_CFLAGS \$(SUBDIR_PYTHON_CFLAGS)"
662
663  # Flags needed to compile Python code (taken from python-config --cflags).
664  # We cannot call python-config directly because it will output whatever was
665  # used when compiling the Python interpreter itself, including flags which
666  # would make the python-related objects be compiled differently from the
667  # rest of GDB (e.g., -O2 and -fPIC).
668  if test "${GCC}" = yes; then
669    tentative_python_cflags="-fno-strict-aliasing -DNDEBUG -fwrapv"
670  fi
671
672  if test "x${tentative_python_cflags}" != x; then
673    AC_MSG_CHECKING(compiler flags for python code)
674    for flag in ${tentative_python_cflags}; do
675      # Check that the compiler accepts it
676      saved_CFLAGS="$CFLAGS"
677      CFLAGS="$CFLAGS $flag"
678      AC_TRY_COMPILE([],[],PYTHON_CFLAGS="${PYTHON_CFLAGS} $flag",)
679      CFLAGS="$saved_CFLAGS"
680    done
681    AC_MSG_RESULT(${PYTHON_CFLAGS})
682  fi
683else
684  # Even if Python support is not compiled in, we need to have these files
685  # included in order to recognize the GDB command "python".
686  CONFIG_OBS="$CONFIG_OBS python.o py-value.o py-prettyprint.o"
687  CONFIG_SRCS="$CONFIG_SRCS python/python.c python/py-value.c python/py-prettyprint.c"
688fi
689AC_SUBST(PYTHON_CFLAGS)
690
691# ------------------------- #
692# Checks for header files.  #
693# ------------------------- #
694
695AC_HEADER_DIRENT
696AC_HEADER_STAT
697AC_HEADER_STDC
698# elf_hp.h is for HP/UX 64-bit shared library support.
699# FIXME: kettenis/20030102: In most cases we include these (ctype.h, time.h)
700# unconditionally, so what's the point in checking these?
701AC_CHECK_HEADERS([nlist.h machine/reg.h poll.h sys/poll.h proc_service.h \
702                  thread_db.h gnu/libc-version.h signal.h stddef.h \
703		  stdlib.h string.h memory.h strings.h sys/fault.h \
704		  sys/file.h sys/filio.h sys/ioctl.h sys/param.h \
705		  sys/resource.h sys/procfs.h sys/ptrace.h ptrace.h \
706		  sys/reg.h sys/debugreg.h sys/select.h sys/syscall.h \
707		  sys/types.h sys/wait.h wait.h termios.h termio.h \
708		  sgtty.h unistd.h elf_hp.h ctype.h time.h locale.h])
709AC_CHECK_HEADERS(link.h, [], [],
710[#if HAVE_SYS_TYPES_H
711# include <sys/types.h>
712#endif
713#if HAVE_NLIST_H
714# include <nlist.h>
715#endif
716])
717AC_CHECK_HEADERS(sys/proc.h, [], [],
718[#if HAVE_SYS_PARAM_H
719# include <sys/param.h>
720#endif
721])
722AC_CHECK_HEADERS(sys/user.h, [], [],
723[#if HAVE_SYS_PARAM_H
724# include <sys/param.h>
725#endif
726])
727
728# On Solaris 2.[789], we need to define _MSE_INT_H to avoid a clash
729# between <widec.h> and <wchar.h> that would cause AC_CHECK_HEADERS to
730# think that we don't have <curses.h> if we're using GCC.
731case $host_os in
732  solaris2.[[789]])
733    if test "$GCC" = yes; then
734      AC_DEFINE(_MSE_INT_H, 1,
735        [Define to 1 to avoid a clash between <widec.h> and <wchar.h> on
736   Solaris 2.[789] when using GCC. ])
737    fi ;;
738esac
739AC_CHECK_HEADERS(curses.h cursesX.h ncurses.h ncurses/ncurses.h ncurses/term.h)
740AC_CHECK_HEADERS(term.h, [], [],
741[#if HAVE_CURSES_H
742# include <curses.h>
743#endif
744])
745
746# ------------------------- #
747# Checks for declarations.  #
748# ------------------------- #
749
750AC_CHECK_DECLS([free, malloc, realloc, strerror, strstr, getopt,
751                snprintf, vsnprintf])
752AM_LC_MESSAGES
753
754# ----------------------- #
755# Checks for structures.  #
756# ----------------------- #
757
758AC_CHECK_MEMBERS([struct stat.st_blocks, struct stat.st_blksize])
759
760# ------------------ #
761# Checks for types.  #
762# ------------------ #
763
764AC_TYPE_SIGNAL
765AC_CHECK_TYPES(socklen_t, [], [],
766[#include <sys/types.h>
767#include <sys/socket.h>
768])
769
770# ------------------------------------- #
771# Checks for compiler characteristics.  #
772# ------------------------------------- #
773
774AC_C_CONST
775AC_C_INLINE
776AC_C_BIGENDIAN
777
778# ------------------------------ #
779# Checks for library functions.  #
780# ------------------------------ #
781
782AC_FUNC_ALLOCA
783AC_FUNC_MMAP
784AC_FUNC_VFORK
785AC_CHECK_FUNCS([canonicalize_file_name realpath getrusage getuid \
786		getgid pipe poll pread64 sbrk setpgid setpgrp setsid \
787		sigaction sigprocmask sigsetmask socketpair syscall \
788		ttrace wborder setlocale iconvlist libiconvlist btowc])
789AM_LANGINFO_CODESET
790
791# Check the return and argument types of ptrace.  No canned test for
792# this, so roll our own.
793gdb_ptrace_headers='
794#if HAVE_SYS_TYPES_H
795# include <sys/types.h>
796#endif
797#if HAVE_SYS_PTRACE_H
798# include <sys/ptrace.h>
799#endif
800#if HAVE_UNISTD_H
801# include <unistd.h>
802#endif
803'
804# There is no point in checking if we don't have a prototype.
805AC_CHECK_DECLS(ptrace, [], [
806  : ${gdb_cv_func_ptrace_ret='int'}
807  : ${gdb_cv_func_ptrace_args='int,int,long,long'}
808], $gdb_ptrace_headers)
809# Check return type.  Varargs (used on GNU/Linux) conflict with the
810# empty argument list, so check for that explicitly.
811AC_CACHE_CHECK([return type of ptrace], gdb_cv_func_ptrace_ret,
812  AC_TRY_COMPILE($gdb_ptrace_headers,
813    [extern long ptrace (enum __ptrace_request, ...);],
814    gdb_cv_func_ptrace_ret='long',
815    AC_TRY_COMPILE($gdb_ptrace_headers,
816      [extern int ptrace ();],
817      gdb_cv_func_ptrace_ret='int',
818      gdb_cv_func_ptrace_ret='long')))
819AC_DEFINE_UNQUOTED(PTRACE_TYPE_RET, $gdb_cv_func_ptrace_ret,
820  [Define as the return type of ptrace.])
821# Check argument types.
822AC_CACHE_CHECK([types of arguments for ptrace], gdb_cv_func_ptrace_args, [
823  AC_TRY_COMPILE($gdb_ptrace_headers,
824    [extern long ptrace (enum __ptrace_request, ...);],
825    [gdb_cv_func_ptrace_args='int,int,long,long'],[
826for gdb_arg1 in 'int' 'long'; do
827 for gdb_arg2 in 'pid_t' 'int' 'long'; do
828  for gdb_arg3 in 'int *' 'caddr_t' 'int' 'long' 'void *'; do
829   for gdb_arg4 in 'int' 'long'; do
830     AC_TRY_COMPILE($gdb_ptrace_headers, [
831extern $gdb_cv_func_ptrace_ret
832  ptrace ($gdb_arg1, $gdb_arg2, $gdb_arg3, $gdb_arg4);
833], [gdb_cv_func_ptrace_args="$gdb_arg1,$gdb_arg2,$gdb_arg3,$gdb_arg4";
834    break 4;])
835    for gdb_arg5 in 'int *' 'int' 'long'; do
836     AC_TRY_COMPILE($gdb_ptrace_headers, [
837extern $gdb_cv_func_ptrace_ret
838  ptrace ($gdb_arg1, $gdb_arg2, $gdb_arg3, $gdb_arg4, $gdb_arg5);
839], [
840gdb_cv_func_ptrace_args="$gdb_arg1,$gdb_arg2,$gdb_arg3,$gdb_arg4,$gdb_arg5";
841    break 5;])
842    done
843   done
844  done
845 done
846done
847# Provide a safe default value.
848: ${gdb_cv_func_ptrace_args='int,int,long,long'}
849])])
850ac_save_IFS=$IFS; IFS=','
851set dummy `echo "$gdb_cv_func_ptrace_args" | sed 's/\*/\*/g'`
852IFS=$ac_save_IFS
853shift
854AC_DEFINE_UNQUOTED(PTRACE_TYPE_ARG3, $[3],
855  [Define to the type of arg 3 for ptrace.])
856if test -n "$[5]"; then
857  AC_DEFINE_UNQUOTED(PTRACE_TYPE_ARG5, $[5],
858    [Define to the type of arg 5 for ptrace.])
859fi
860
861dnl AC_FUNC_SETPGRP does not work when cross compiling
862dnl Instead, assume we will have a prototype for setpgrp if cross compiling.
863if test "$cross_compiling" = no; then
864  AC_FUNC_SETPGRP
865else
866  AC_CACHE_CHECK([whether setpgrp takes no argument], ac_cv_func_setpgrp_void,
867    [AC_TRY_COMPILE([
868#include <unistd.h>
869], [
870  if (setpgrp(1,1) == -1)
871    exit (0);
872  else
873    exit (1);
874], ac_cv_func_setpgrp_void=no, ac_cv_func_setpgrp_void=yes)])
875if test $ac_cv_func_setpgrp_void = yes; then
876  AC_DEFINE(SETPGRP_VOID, 1)
877fi
878fi
879
880# Check if sigsetjmp is available.  Using AC_CHECK_FUNCS won't do
881# since sigsetjmp might only be defined as a macro.
882AC_CACHE_CHECK([for sigsetjmp], gdb_cv_func_sigsetjmp,
883[AC_TRY_COMPILE([
884#include <setjmp.h>
885], [sigjmp_buf env; while (! sigsetjmp (env, 1)) siglongjmp (env, 1);],
886gdb_cv_func_sigsetjmp=yes, gdb_cv_func_sigsetjmp=no)])
887if test $gdb_cv_func_sigsetjmp = yes; then
888  AC_DEFINE(HAVE_SIGSETJMP, 1, [Define if sigsetjmp is available. ])
889fi
890
891# Assume we'll default to using the included libiberty regex.
892gdb_use_included_regex=yes
893
894# However, if the system regex is GNU regex, then default to *not*
895# using the included regex.
896AC_CACHE_CHECK(
897  [for GNU regex],
898  [gdb_cv_have_gnu_regex],
899  [AC_TRY_COMPILE(
900    [#include <gnu-versions.h>],
901    [#define REGEX_INTERFACE_VERSION 1
902#if _GNU_REGEX_INTERFACE_VERSION != REGEX_INTERFACE_VERSION
903# error "Version mismatch"
904#endif],
905    gdb_cv_have_gnu_regex=yes,
906    gdb_cv_have_gnu_regex=no)])
907if test $gdb_cv_have_gnu_regex = yes; then
908  gdb_use_included_regex=no
909fi
910
911AC_ARG_WITH(included-regex,
912  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)]),
913  gdb_with_regex=$withval,
914  gdb_with_regex=$gdb_use_included_regex)
915if test "$gdb_with_regex" = yes; then
916  AC_DEFINE(USE_INCLUDED_REGEX, 1,
917    [Define to 1 if the regex included in libiberty should be used.])
918fi
919
920# Check if <sys/proc.h> defines `struct thread' with a td_pcb member.
921AC_CHECK_MEMBERS([struct thread.td_pcb], [], [],
922[#include <sys/param.h>
923#include <sys/proc.h>
924])
925
926# See if <sys/lwp.h> defines `struct lwp`.
927AC_CACHE_CHECK([for struct lwp], gdb_cv_struct_lwp,
928[AC_TRY_COMPILE([#include <sys/param.h>
929#include <sys/lwp.h>], [struct lwp l;],
930gdb_cv_struct_lwp=yes, gdb_cv_struct_lwp=no)])
931if test $gdb_cv_struct_lwp = yes; then
932  AC_DEFINE(HAVE_STRUCT_LWP, 1,
933            [Define to 1 if your system has struct lwp.])
934fi
935
936# See if <machine/reg.h> degines `struct reg'.
937AC_CACHE_CHECK([for struct reg in machine/reg.h], gdb_cv_struct_reg,
938[AC_TRY_COMPILE([#include <sys/types.h>
939#include <machine/reg.h>], [struct reg r;],
940gdb_cv_struct_reg=yes, gdb_cv_struct_reg=no)])
941if test $gdb_cv_struct_reg = yes; then
942  AC_DEFINE(HAVE_STRUCT_REG, 1,
943            [Define to 1 if your system has struct reg in <machine/reg.h>.])
944fi
945
946# See if <machine/reg.h> supports the %fs and %gs i386 segment registers.
947# Older i386 BSD's don't have the r_fs and r_gs members of `struct reg'.
948AC_CHECK_MEMBERS([struct reg.r_fs, struct reg.r_gs], [], [],
949                 [#include <machine/reg.h>])
950
951# See if <sys/ptrace.h> provides the PTRACE_GETREGS request.
952AC_MSG_CHECKING(for PTRACE_GETREGS)
953AC_CACHE_VAL(gdb_cv_have_ptrace_getregs,
954[AC_TRY_COMPILE([#include <sys/ptrace.h>],
955		[PTRACE_GETREGS;],
956		[gdb_cv_have_ptrace_getregs=yes],
957		[gdb_cv_have_ptrace_getregs=no])])
958AC_MSG_RESULT($gdb_cv_have_ptrace_getregs)
959if test $gdb_cv_have_ptrace_getregs = yes; then
960  AC_DEFINE(HAVE_PTRACE_GETREGS, 1,
961  [Define if sys/ptrace.h defines the PTRACE_GETREGS request.])
962fi
963
964# See if <sys/ptrace.h> provides the PTRACE_GETFPXREGS request.
965AC_MSG_CHECKING(for PTRACE_GETFPXREGS)
966AC_CACHE_VAL(gdb_cv_have_ptrace_getfpxregs,
967[AC_TRY_COMPILE([#include <sys/ptrace.h>],
968		[PTRACE_GETFPXREGS;],
969		[gdb_cv_have_ptrace_getfpxregs=yes],
970		[gdb_cv_have_ptrace_getfpxregs=no])])
971AC_MSG_RESULT($gdb_cv_have_ptrace_getfpxregs)
972if test $gdb_cv_have_ptrace_getfpxregs = yes; then
973  AC_DEFINE(HAVE_PTRACE_GETFPXREGS, 1,
974  [Define if sys/ptrace.h defines the PTRACE_GETFPXREGS request.])
975fi
976
977# See if <sys/ptrace.h> provides the PT_GETDBREGS request.
978AC_MSG_CHECKING(for PT_GETDBREGS)
979AC_CACHE_VAL(gdb_cv_have_pt_getdbregs,
980[AC_TRY_COMPILE([#include <sys/types.h>
981#include <sys/ptrace.h>],
982		[PT_GETDBREGS;],
983		[gdb_cv_have_pt_getdbregs=yes],
984		[gdb_cv_have_pt_getdbregs=no])])
985AC_MSG_RESULT($gdb_cv_have_pt_getdbregs)
986if test $gdb_cv_have_pt_getdbregs = yes; then
987  AC_DEFINE(HAVE_PT_GETDBREGS, 1,
988  [Define if sys/ptrace.h defines the PT_GETDBREGS request.])
989fi
990
991# See if <sys/ptrace.h> provides the PT_GETXMMREGS request.
992AC_MSG_CHECKING(for PT_GETXMMREGS)
993AC_CACHE_VAL(gdb_cv_have_pt_getxmmregs,
994[AC_TRY_COMPILE([#include <sys/types.h>
995#include <sys/ptrace.h>],
996		[PT_GETXMMREGS;],
997		[gdb_cv_have_pt_getxmmregs=yes],
998		[gdb_cv_have_pt_getxmmregs=no])])
999AC_MSG_RESULT($gdb_cv_have_pt_getxmmregs)
1000if test $gdb_cv_have_pt_getxmmregs = yes; then
1001  AC_DEFINE(HAVE_PT_GETXMMREGS, 1,
1002  [Define if sys/ptrace.h defines the PT_GETXMMREGS request.])
1003fi
1004
1005# Detect which type of /proc is in use, such as for Unixware or Solaris.
1006
1007if test "${target}" = "${host}"; then
1008  case "${host}" in
1009  *-*-unixware* | *-*-sysv4.2* | *-*-sysv5* | *-*-interix* )
1010      AC_DEFINE(NEW_PROC_API, 1,
1011      [Define if you want to use new multi-fd /proc interface
1012       (replaces HAVE_MULTIPLE_PROC_FDS as well as other macros).])
1013      ;;
1014  *-*-solaris2.[[6789]] | *-*-solaris2.1[[0-9]]*)
1015      AC_DEFINE(NEW_PROC_API, 1,
1016      [Define if you want to use new multi-fd /proc interface
1017       (replaces HAVE_MULTIPLE_PROC_FDS as well as other macros).])
1018      ;;
1019  mips-sgi-irix5*)
1020      # Work around <sys/proc.h> needing _KMEMUSER problem on IRIX 5.
1021      AC_DEFINE([_KMEMUSER], 1,
1022      [Define to 1 so <sys/proc.h> gets a definition of anon_hdl.  Works
1023       around a <sys/proc.h> problem on IRIX 5.])
1024      ;;
1025  esac
1026fi
1027
1028if test "$ac_cv_header_sys_procfs_h" = yes; then
1029  BFD_HAVE_SYS_PROCFS_TYPE(pstatus_t)
1030  BFD_HAVE_SYS_PROCFS_TYPE(prrun_t)
1031  BFD_HAVE_SYS_PROCFS_TYPE(gregset_t)
1032  BFD_HAVE_SYS_PROCFS_TYPE(fpregset_t)
1033  BFD_HAVE_SYS_PROCFS_TYPE(prgregset_t)
1034  BFD_HAVE_SYS_PROCFS_TYPE(prfpregset_t)
1035  BFD_HAVE_SYS_PROCFS_TYPE(prgregset32_t)
1036  BFD_HAVE_SYS_PROCFS_TYPE(prfpregset32_t)
1037  BFD_HAVE_SYS_PROCFS_TYPE(lwpid_t)
1038  BFD_HAVE_SYS_PROCFS_TYPE(psaddr_t)
1039  BFD_HAVE_SYS_PROCFS_TYPE(prsysent_t)
1040  BFD_HAVE_SYS_PROCFS_TYPE(pr_sigset_t)
1041  BFD_HAVE_SYS_PROCFS_TYPE(pr_sigaction64_t)
1042  BFD_HAVE_SYS_PROCFS_TYPE(pr_siginfo64_t)
1043
1044
1045  dnl Check for broken prfpregset_t type
1046
1047  dnl For Linux/i386, glibc 2.1.3 was released with a bogus
1048  dnl prfpregset_t type (it's a typedef for the pointer to a struct
1049  dnl instead of the struct itself).  We detect this here, and work
1050  dnl around it in gdb_proc_service.h.
1051
1052  if test $bfd_cv_have_sys_procfs_type_prfpregset_t = yes; then
1053    AC_MSG_CHECKING(whether prfpregset_t type is broken)
1054    AC_CACHE_VAL(gdb_cv_prfpregset_t_broken,
1055      [AC_TRY_RUN([#include <sys/procfs.h>
1056       int main ()
1057       {
1058         if (sizeof (prfpregset_t) == sizeof (void *))
1059           return 1;
1060         return 0;
1061       }],
1062       gdb_cv_prfpregset_t_broken=no,
1063       gdb_cv_prfpregset_t_broken=yes,
1064       gdb_cv_prfpregset_t_broken=yes)])
1065    AC_MSG_RESULT($gdb_cv_prfpregset_t_broken)
1066    if test $gdb_cv_prfpregset_t_broken = yes; then
1067      AC_DEFINE(PRFPREGSET_T_BROKEN, 1,
1068      [Define if the prfpregset_t type is broken.])
1069    fi
1070  fi
1071
1072  dnl Check for PIOCSET ioctl entry
1073
1074  AC_MSG_CHECKING(for PIOCSET ioctl entry in sys/procfs.h)
1075  AC_CACHE_VAL(gdb_cv_have_procfs_piocset,
1076  [AC_TRY_COMPILE([#include <unistd.h>
1077#include <sys/types.h>
1078#include <sys/procfs.h>
1079], [
1080    int dummy;;
1081    dummy = ioctl(0, PIOCSET, &dummy);
1082  ],
1083  gdb_cv_have_procfs_piocset=yes, gdb_cv_have_procfs_piocset=no)])
1084  AC_MSG_RESULT($gdb_cv_have_procfs_piocset)
1085  if test $gdb_cv_have_procfs_piocset = yes; then
1086    AC_DEFINE(HAVE_PROCFS_PIOCSET, 1,
1087    [Define if ioctl argument PIOCSET is available.])
1088  fi
1089fi
1090
1091dnl For native ports (host == target), check to see what kind of
1092dnl legacy link.h support is needed.  (See solib-legacy.c.)
1093if test ${host} = ${target} ; then
1094  dnl Check for struct link_map with l_ members which are indicative
1095  dnl of SVR4-like shared libraries
1096
1097  AC_MSG_CHECKING(for member l_addr in struct link_map)
1098  AC_CACHE_VAL(gdb_cv_have_struct_link_map_with_l_members,
1099    [AC_TRY_COMPILE([#include <link.h>],
1100                    [struct link_map lm; (void) lm.l_addr;],
1101                    gdb_cv_have_struct_link_map_with_l_members=yes,
1102                    gdb_cv_have_struct_link_map_with_l_members=no)])
1103  AC_MSG_RESULT($gdb_cv_have_struct_link_map_with_l_members)
1104  if test $gdb_cv_have_struct_link_map_with_l_members = yes; then
1105    AC_DEFINE(HAVE_STRUCT_LINK_MAP_WITH_L_MEMBERS,1,
1106    [Define if <link.h> exists and defines struct link_map which has
1107     members with an ``l_'' prefix.  (For Solaris, SVR4, and
1108     SVR4-like systems.)])
1109  fi
1110
1111  dnl Check for struct link_map with lm_ members which are indicative
1112  dnl of SunOS-like shared libraries
1113
1114  AC_MSG_CHECKING(for member lm_addr in struct link_map)
1115  AC_CACHE_VAL(gdb_cv_have_struct_link_map_with_lm_members,
1116    [AC_TRY_COMPILE([#include <sys/types.h>
1117#include <link.h>],
1118                    [struct link_map lm; (void) lm.lm_addr;],
1119                    gdb_cv_have_struct_link_map_with_lm_members=yes,
1120                    gdb_cv_have_struct_link_map_with_lm_members=no)])
1121  AC_MSG_RESULT($gdb_cv_have_struct_link_map_with_lm_members)
1122  if test $gdb_cv_have_struct_link_map_with_lm_members = yes; then
1123    AC_DEFINE(HAVE_STRUCT_LINK_MAP_WITH_LM_MEMBERS, 1,
1124    [Define if <link.h> exists and defines struct link_map which has
1125     members with an ``lm_'' prefix.  (For SunOS.)])
1126  fi
1127
1128  dnl Check for struct so_map with som_ members which are found on
1129  dnl some *BSD systems.
1130
1131  AC_MSG_CHECKING(for member som_addr in struct so_map)
1132  AC_CACHE_VAL(gdb_cv_have_struct_so_map_with_som_members,
1133    [AC_TRY_COMPILE([#include <sys/types.h>
1134#ifdef HAVE_NLIST_H
1135#include <nlist.h>
1136#endif
1137#include <link.h>],
1138                    [struct so_map lm; (void) lm.som_addr;],
1139                    gdb_cv_have_struct_so_map_with_som_members=yes,
1140                    gdb_cv_have_struct_so_map_with_som_members=no)])
1141  AC_MSG_RESULT($gdb_cv_have_struct_so_map_with_som_members)
1142  if test $gdb_cv_have_struct_so_map_with_som_members = yes; then
1143    AC_DEFINE(HAVE_STRUCT_SO_MAP_WITH_SOM_MEMBERS, 1,
1144    [Define if <link.h> exists and defines a struct so_map which has
1145     members with an ``som_'' prefix.  (Found on older *BSD systems.)])
1146  fi
1147
1148  dnl Check for struct link_map32 type, which allows a 64-bit Solaris
1149  dnl debugger to debug a 32-bit Solaris app with 32-bit shared libraries.
1150
1151  AC_MSG_CHECKING(for struct link_map32 in sys/link.h)
1152  AC_CACHE_VAL(gdb_cv_have_struct_link_map32,
1153    [AC_TRY_COMPILE([#define _SYSCALL32
1154#include <sys/link.h>], [struct link_map32 l;],
1155     gdb_cv_have_struct_link_map32=yes,
1156     gdb_cv_have_struct_link_map32=no)])
1157  AC_MSG_RESULT($gdb_cv_have_struct_link_map32)
1158  if test $gdb_cv_have_struct_link_map32 = yes; then
1159    AC_DEFINE(HAVE_STRUCT_LINK_MAP32, 1,
1160    [Define if <sys/link.h> has struct link_map32])
1161    AC_DEFINE(_SYSCALL32, 1,
1162    [Define if <sys/link.h> has link_map32 (solaris sparc-64 target)])
1163  fi
1164fi
1165
1166# Check if the compiler supports the `long long' type.
1167
1168AC_CACHE_CHECK([for long long support in compiler], gdb_cv_c_long_long,
1169               [AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
1170[[extern long long foo;]],
1171[[switch (foo & 2) { case 0: return 1; }]])],
1172                                  gdb_cv_c_long_long=yes,
1173                                  gdb_cv_c_long_long=no)])
1174if test $gdb_cv_c_long_long = yes; then
1175  AC_DEFINE(CC_HAS_LONG_LONG, 1,
1176            [Define to 1 if the compiler supports long long.])
1177fi
1178
1179# Check if the compiler and runtime support printing long longs.
1180
1181AC_CACHE_CHECK([for long long support in printf],
1182               gdb_cv_printf_has_long_long,
1183               [AC_RUN_IFELSE([AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT],
1184[[char buf[32];
1185  long long l = 0;
1186  l = (l << 16) + 0x0123;
1187  l = (l << 16) + 0x4567;
1188  l = (l << 16) + 0x89ab;
1189  l = (l << 16) + 0xcdef;
1190  sprintf (buf, "0x%016llx", l);
1191  return (strcmp ("0x0123456789abcdef", buf));]])],
1192                              gdb_cv_printf_has_long_long=yes,
1193                              gdb_cv_printf_has_long_long=no,
1194                              gdb_cv_printf_has_long_long=no)])
1195if test $gdb_cv_printf_has_long_long = yes; then
1196  AC_DEFINE(PRINTF_HAS_LONG_LONG, 1,
1197            [Define to 1 if the "%ll" format works to print long longs.])
1198fi
1199
1200# Check if the compiler and runtime support printing decfloats.
1201
1202AC_CACHE_CHECK([for decfloat support in printf],
1203               gdb_cv_printf_has_decfloat,
1204               [AC_RUN_IFELSE([AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT],
1205[[char buf[64];
1206  _Decimal32 d32 = 1.2345df;
1207  _Decimal64 d64 = 1.2345dd;
1208  _Decimal128 d128 = 1.2345dl;
1209  sprintf (buf, "Decimal32: %H\nDecimal64: %D\nDecimal128: %DD", d32, d64, d128);
1210  return (strcmp ("Decimal32: 1.2345\nDecimal64: 1.2345\nDecimal128: 1.2345", buf));]])],
1211                              gdb_cv_printf_has_decfloat=yes,
1212                              gdb_cv_printf_has_decfloat=no,
1213                              gdb_cv_printf_has_decfloat=no)])
1214if test $gdb_cv_printf_has_decfloat = yes; then
1215  AC_DEFINE(PRINTF_HAS_DECFLOAT, 1,
1216            [Define to 1 if the "%H, %D and %DD" formats work to print decfloats.])
1217fi
1218
1219# Check if the compiler supports the `long double' type.  We can't use
1220# AC_C_LONG_DOUBLE because that one does additional checks on the
1221# constants defined in <float.h> that fail on some systems,
1222# e.g. FreeBSD/i386 4.7 and OpenBSD/i386 3.6.
1223
1224AC_CACHE_CHECK([for long double support in compiler], gdb_cv_c_long_double,
1225               [AC_COMPILE_IFELSE([AC_LANG_SOURCE([[long double foo;]])],
1226                                  gdb_cv_c_long_double=yes,
1227                                  gdb_cv_c_long_double=no)])
1228if test $gdb_cv_c_long_double = yes; then
1229  AC_DEFINE(HAVE_LONG_DOUBLE, 1,
1230           [Define to 1 if the compiler supports long double.])
1231fi
1232
1233# Check if the compiler and runtime support printing long doubles.
1234
1235AC_CACHE_CHECK([for long double support in printf],
1236               gdb_cv_printf_has_long_double,
1237               [AC_RUN_IFELSE([AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT],
1238[[char buf[16];
1239  long double f = 3.141592653;
1240  sprintf (buf, "%Lg", f);
1241  return (strncmp ("3.14159", buf, 7));]])],
1242                              gdb_cv_printf_has_long_double=yes,
1243                              gdb_cv_printf_has_long_double=no,
1244                              gdb_cv_printf_has_long_double=no)])
1245if test $gdb_cv_printf_has_long_double = yes; then
1246  AC_DEFINE(PRINTF_HAS_LONG_DOUBLE, 1,
1247            [Define to 1 if the "%Lg" format works to print long doubles.])
1248fi
1249
1250# Check if the compiler and runtime support scanning long doubles.
1251
1252AC_CACHE_CHECK([for long double support in scanf],
1253               gdb_cv_scanf_has_long_double,
1254               [AC_RUN_IFELSE([AC_LANG_PROGRAM(
1255[[#include <stdio.h>]],
1256[[char *buf = "3.141592653";
1257  long double f = 0;
1258  sscanf (buf, "%Lg", &f);
1259  return !(f > 3.14159 && f < 3.14160);]])],
1260                              gdb_cv_scanf_has_long_double=yes,
1261                              gdb_cv_scanf_has_long_double=no,
1262                              gdb_cv_scanf_has_long_double=no)])
1263if test $gdb_cv_scanf_has_long_double = yes; then
1264  AC_DEFINE(SCANF_HAS_LONG_DOUBLE, 1,
1265            [Define to 1 if the "%Lg" format works to scan long doubles.])
1266fi
1267
1268case ${host_os} in
1269aix*)
1270  AC_CACHE_CHECK([for -bbigtoc option], [gdb_cv_bigtoc], [
1271    SAVE_LDFLAGS=$LDFLAGS
1272
1273    case $GCC in
1274    yes) gdb_cv_bigtoc=-Wl,-bbigtoc ;;
1275    *) gdb_cv_bigtoc=-bbigtoc ;;
1276    esac
1277
1278    LDFLAGS=$LDFLAGS\ $gdb_cv_bigtoc
1279    AC_TRY_LINK([], [int i;], [], [gdb_cv_bigtoc=])
1280    LDFLAGS="${SAVE_LDFLAGS}"
1281  ])
1282  CONFIG_LDFLAGS="${CONFIG_LDFLAGS} ${gdb_cv_bigtoc}"
1283  ;;
1284esac
1285
1286
1287dnl For certain native configurations, we need to check whether thread
1288dnl support can be built in or not.
1289dnl
1290dnl Note that we only want this if we are both native (host == target),
1291dnl and not doing a canadian cross build (build == host).
1292
1293if test ${build} = ${host} -a ${host} = ${target} ; then
1294   case ${host_os} in
1295   hpux*)
1296      AC_MSG_CHECKING(for HPUX/OSF thread support)
1297      if test -f /usr/include/dce/cma_config.h ; then
1298         if test "$GCC" = "yes" ; then
1299            AC_MSG_RESULT(yes)
1300            AC_DEFINE(HAVE_HPUX_THREAD_SUPPORT, 1,
1301	    [Define if you have HPUX threads])
1302            CONFIG_OBS="${CONFIG_OBS} hpux-thread.o"
1303            CONFIG_SRCS="${CONFIG_SRCS} hpux-thread.c"
1304         else
1305            AC_MSG_RESULT(no (suppressed because you are not using GCC))
1306         fi
1307      else
1308         AC_MSG_RESULT(no)
1309      fi
1310      ;;
1311   solaris*)
1312      # See if thread_db library is around for Solaris thread debugging.
1313      # Note that we must explicitly test for version 1 of the library
1314      # because version 0 (present on Solaris 2.4 or earlier) doesn't have
1315      # the same API.
1316      AC_MSG_CHECKING(for Solaris thread debugging library)
1317      if test -f /usr/lib/libthread_db.so.1 ; then
1318         AC_MSG_RESULT(yes)
1319         AC_DEFINE(HAVE_THREAD_DB_LIB, 1,
1320         [Define if using Solaris thread debugging.])
1321         CONFIG_OBS="${CONFIG_OBS} sol-thread.o"
1322         CONFIG_SRCS="${CONFIG_SRCS} sol-thread.c"
1323         AC_CHECK_LIB(dl, dlopen)
1324         if test "$GCC" = "yes" ; then
1325            # The GNU linker requires the -export-dynamic option to make
1326            # all symbols visible in the dynamic symbol table.
1327            hold_ldflags=$LDFLAGS
1328            AC_MSG_CHECKING(for the ld -export-dynamic flag)
1329            LDFLAGS="${LDFLAGS} -Wl,-export-dynamic"
1330            AC_TRY_LINK(, [int i;], found=yes, found=no)
1331            LDFLAGS=$hold_ldflags
1332            AC_MSG_RESULT($found)
1333            if test $found = yes; then
1334               CONFIG_LDFLAGS="${CONFIG_LDFLAGS} -Wl,-export-dynamic"
1335            fi
1336         fi
1337	 # Sun randomly tweaked the prototypes in <proc_service.h>
1338	 # at one point.
1339	 AC_MSG_CHECKING(if <proc_service.h> is old)
1340	 AC_CACHE_VAL(gdb_cv_proc_service_is_old,[
1341	    AC_TRY_COMPILE([
1342		#include <proc_service.h>
1343		ps_err_e ps_pdwrite
1344		    (struct ps_prochandle*, psaddr_t, const void*, size_t);
1345	    ],, gdb_cv_proc_service_is_old=no,
1346	        gdb_cv_proc_service_is_old=yes)
1347	 ])
1348	 AC_MSG_RESULT($gdb_cv_proc_service_is_old)
1349	 if test $gdb_cv_proc_service_is_old = yes; then
1350	    AC_DEFINE(PROC_SERVICE_IS_OLD, 1,
1351            [Define if <proc_service.h> on solaris uses int instead of
1352             size_t, and assorted other type changes.])
1353	 fi
1354      else
1355         AC_MSG_RESULT(no)
1356      fi
1357      ;;
1358   aix*)
1359      AC_MSG_CHECKING(for AiX thread debugging library)
1360      AC_CACHE_VAL(gdb_cv_have_aix_thread_debug,
1361                   [AC_TRY_COMPILE([#include <sys/pthdebug.h>],
1362                                   [#ifndef PTHDB_VERSION_3
1363                                    #error
1364                                    #endif],
1365                                   gdb_cv_have_aix_thread_debug=yes,
1366                                   gdb_cv_have_aix_thread_debug=no)])
1367      AC_MSG_RESULT($gdb_cv_have_aix_thread_debug)
1368      if test $gdb_cv_have_aix_thread_debug = yes; then
1369         CONFIG_SRCS="${CONFIG_SRCS} aix-thread.c"
1370         CONFIG_OBS="${CONFIG_OBS} aix-thread.o"
1371         CONFIG_LDFLAGS="${CONFIG_LDFLAGS} -lpthdebug"
1372      fi
1373      ;;
1374   esac
1375   AC_SUBST(CONFIG_LDFLAGS)
1376fi
1377
1378dnl See if we have a thread_db header file that has TD_NOTALLOC and
1379dnl other error codes.
1380if test "x$ac_cv_header_thread_db_h" = "xyes"; then
1381   AC_CACHE_CHECK([whether <thread_db.h> has TD_NOTALLOC],
1382                  gdb_cv_thread_db_h_has_td_notalloc,
1383     AC_TRY_COMPILE(
1384       [#include <thread_db.h>],
1385       [int i = TD_NOTALLOC;],
1386       gdb_cv_thread_db_h_has_td_notalloc=yes,
1387       gdb_cv_thread_db_h_has_td_notalloc=no
1388     )
1389   )
1390   AC_CACHE_CHECK([whether <thread_db.h> has TD_VERSION],
1391                  gdb_cv_thread_db_h_has_td_version,
1392     AC_TRY_COMPILE(
1393       [#include <thread_db.h>],
1394       [int i = TD_VERSION;],
1395       gdb_cv_thread_db_h_has_td_version=yes,
1396       gdb_cv_thread_db_h_has_td_version=no
1397     )
1398   )
1399   AC_CACHE_CHECK([whether <thread_db.h> has TD_NOTLS],
1400                  gdb_cv_thread_db_h_has_td_notls,
1401     AC_TRY_COMPILE(
1402       [#include <thread_db.h>],
1403       [int i = TD_NOTLS;],
1404       gdb_cv_thread_db_h_has_td_notls=yes,
1405       gdb_cv_thread_db_h_has_td_notls=no
1406     )
1407   )
1408fi
1409if test "x$gdb_cv_thread_db_h_has_td_notalloc" = "xyes"; then
1410  AC_DEFINE(THREAD_DB_HAS_TD_NOTALLOC, 1,
1411            [Define if <thread_db.h> has the TD_NOTALLOC error code.])
1412fi
1413if test "x$gdb_cv_thread_db_h_has_td_version" = "xyes"; then
1414  AC_DEFINE(THREAD_DB_HAS_TD_VERSION, 1,
1415            [Define if <thread_db.h> has the TD_VERSION error code.])
1416fi
1417if test "x$gdb_cv_thread_db_h_has_td_notls" = "xyes"; then
1418  AC_DEFINE(THREAD_DB_HAS_TD_NOTLS, 1,
1419            [Define if <thread_db.h> has the TD_NOTLS error code.])
1420fi
1421
1422dnl See if we have a sys/syscall header file that has __NR_tkill.
1423if test "x$ac_cv_header_sys_syscall_h" = "xyes"; then
1424   AC_CACHE_CHECK([whether <sys/syscall.h> has __NR_tkill],
1425                  gdb_cv_sys_syscall_h_has_tkill,
1426     AC_TRY_COMPILE(
1427       [#include <sys/syscall.h>],
1428       [int i = __NR_tkill;],
1429       gdb_cv_sys_syscall_h_has_tkill=yes,
1430       gdb_cv_sys_syscall_h_has_tkill=no
1431     )
1432   )
1433fi
1434dnl See if we can issue tkill syscall.
1435if test "x$gdb_cv_sys_syscall_h_has_tkill" = "xyes" && test "x$ac_cv_func_syscall" = "xyes"; then
1436  AC_DEFINE(HAVE_TKILL_SYSCALL, 1, [Define if you support the tkill syscall.])
1437fi
1438
1439dnl Check if we can disable the virtual address space randomization.
1440dnl The functionality of setarch -R.
1441AC_CHECK_DECLS([ADDR_NO_RANDOMIZE],,, [#include <sys/personality.h>])
1442define([PERSONALITY_TEST], [AC_LANG_PROGRAM([#include <sys/personality.h>], [
1443#      if !HAVE_DECL_ADDR_NO_RANDOMIZE
1444#       define ADDR_NO_RANDOMIZE 0x0040000
1445#      endif
1446       /* Test the flag could be set and stays set.  */
1447       personality (personality (0xffffffff) | ADDR_NO_RANDOMIZE);
1448       if (!(personality (personality (0xffffffff)) & ADDR_NO_RANDOMIZE))
1449	   return 1])])
1450AC_RUN_IFELSE([PERSONALITY_TEST],
1451	      [have_personality=true],
1452	      [have_personality=false],
1453	      [AC_LINK_IFELSE([PERSONALITY_TEST],
1454			      [have_personality=true],
1455			      [have_personality=false])])
1456if $have_personality
1457then
1458    AC_DEFINE([HAVE_PERSONALITY], 1,
1459	      [Define if you support the personality syscall.])
1460fi
1461
1462dnl Handle optional features that can be enabled.
1463
1464target_sysroot_reloc=0
1465AC_ARG_WITH(sysroot,
1466AS_HELP_STRING([--with-sysroot@<:@=DIR@:>@], [search for usr/lib et al within DIR]),
1467[
1468 case ${with_sysroot} in
1469 yes) TARGET_SYSTEM_ROOT='${exec_prefix}/${target_alias}/sys-root' ;;
1470 *) TARGET_SYSTEM_ROOT=$with_sysroot ;;
1471 esac
1472
1473 TARGET_SYSTEM_ROOT_DEFINE='-DTARGET_SYSTEM_ROOT=\"$(TARGET_SYSTEM_ROOT)\"'
1474
1475 if test "x$prefix" = xNONE; then
1476  test_prefix=/usr/local
1477 else
1478  test_prefix=$prefix
1479 fi
1480 if test "x$exec_prefix" = xNONE || test "x$exec_prefix" = 'x${prefix}'; then
1481  test_exec_prefix=$test_prefix
1482 else
1483  test_exec_prefix=$exec_prefix
1484 fi
1485 case ${TARGET_SYSTEM_ROOT} in
1486 "${test_prefix}"|"${test_prefix}/"*|\
1487 "${test_exec_prefix}"|"${test_exec_prefix}/"*|\
1488 '${prefix}'|'${prefix}/'*|\
1489 '${exec_prefix}'|'${exec_prefix}/'*)
1490   target_sysroot_reloc=1
1491   ;;
1492 esac
1493], [
1494 TARGET_SYSTEM_ROOT=
1495 TARGET_SYSTEM_ROOT_DEFINE='-DTARGET_SYSTEM_ROOT=\"\"'
1496])
1497TARGET_SYSTEM_ROOT_DEFINE="$TARGET_SYSTEM_ROOT_DEFINE -DTARGET_SYSTEM_ROOT_RELOCATABLE=$target_sysroot_reloc"
1498AC_SUBST(TARGET_SYSTEM_ROOT)
1499AC_SUBST(TARGET_SYSTEM_ROOT_DEFINE)
1500
1501GDB_AC_WITH_DIR(SYSTEM_GDBINIT, system-gdbinit,
1502    [automatically load a system-wide gdbinit file],
1503    [])
1504
1505AC_ARG_ENABLE(werror,
1506  AS_HELP_STRING([--enable-werror], [treat compile warnings as errors]),
1507  [case "${enableval}" in
1508     yes | y) ERROR_ON_WARNING="yes" ;;
1509     no | n)  ERROR_ON_WARNING="no" ;;
1510     *) AC_MSG_ERROR(bad value ${enableval} for --enable-werror) ;;
1511   esac])
1512
1513WERROR_CFLAGS=""
1514if test "${ERROR_ON_WARNING}" = yes ; then
1515    WERROR_CFLAGS="-Werror"
1516fi
1517
1518# The entries after -Wno-pointer-sign are disabled warnings which may
1519# be enabled in the future, which can not currently be used to build
1520# GDB.
1521# NOTE: If you change this list, remember to update
1522# gdb/doc/gdbint.texinfo.
1523build_warnings="-Wall -Wdeclaration-after-statement -Wpointer-arith \
1524-Wformat-nonliteral -Wno-pointer-sign \
1525-Wno-unused -Wno-switch -Wno-char-subscripts"
1526
1527# Enable -Wno-format by default when using gcc on mingw since many
1528# GCC versions complain about %I64.
1529case "${host}" in
1530  *-*-mingw32*) build_warnings="$build_warnings -Wno-format" ;;
1531esac
1532
1533AC_ARG_ENABLE(build-warnings,
1534AS_HELP_STRING([--enable-build-warnings], [enable build-time compiler warnings if gcc is used]),
1535[case "${enableval}" in
1536  yes)	;;
1537  no)	build_warnings="-w";;
1538  ,*)   t=`echo "${enableval}" | sed -e "s/,/ /g"`
1539        build_warnings="${build_warnings} ${t}";;
1540  *,)   t=`echo "${enableval}" | sed -e "s/,/ /g"`
1541        build_warnings="${t} ${build_warnings}";;
1542  *)    build_warnings=`echo "${enableval}" | sed -e "s/,/ /g"`;;
1543esac
1544if test x"$silent" != x"yes" && test x"$build_warnings" != x""; then
1545  echo "Setting compiler warning flags = $build_warnings" 6>&1
1546fi])dnl
1547AC_ARG_ENABLE(gdb-build-warnings,
1548AS_HELP_STRING([--enable-gdb-build-warnings], [enable GDB specific build-time compiler warnings if gcc is used]),
1549[case "${enableval}" in
1550  yes)	;;
1551  no)	build_warnings="-w";;
1552  ,*)   t=`echo "${enableval}" | sed -e "s/,/ /g"`
1553        build_warnings="${build_warnings} ${t}";;
1554  *,)   t=`echo "${enableval}" | sed -e "s/,/ /g"`
1555        build_warnings="${t} ${build_warnings}";;
1556  *)    build_warnings=`echo "${enableval}" | sed -e "s/,/ /g"`;;
1557esac
1558if test x"$silent" != x"yes" && test x"$build_warnings" != x""; then
1559  echo "Setting GDB specific compiler warning flags = $build_warnings" 6>&1
1560fi])dnl
1561WARN_CFLAGS=""
1562if test "x${build_warnings}" != x -a "x$GCC" = xyes
1563then
1564    AC_MSG_CHECKING(compiler warning flags)
1565    # Separate out the -Werror flag as some files just cannot be
1566    # compiled with it enabled.
1567    for w in ${build_warnings}; do
1568	case $w in
1569	-Werr*) WERROR_CFLAGS=-Werror ;;
1570	*) # Check that GCC accepts it
1571	    saved_CFLAGS="$CFLAGS"
1572	    CFLAGS="$CFLAGS $w"
1573	    AC_TRY_COMPILE([],[],WARN_CFLAGS="${WARN_CFLAGS} $w",)
1574	    CFLAGS="$saved_CFLAGS"
1575	esac
1576    done
1577    AC_MSG_RESULT(${WARN_CFLAGS} ${WERROR_CFLAGS})
1578fi
1579AC_SUBST(WARN_CFLAGS)
1580AC_SUBST(WERROR_CFLAGS)
1581
1582# In the Cygwin environment, we need some additional flags.
1583AC_CACHE_CHECK([for cygwin], gdb_cv_os_cygwin,
1584[AC_EGREP_CPP(lose, [
1585#if defined (__CYGWIN__) || defined (__CYGWIN32__)
1586lose
1587#endif],[gdb_cv_os_cygwin=yes],[gdb_cv_os_cygwin=no])])
1588
1589
1590dnl Figure out which of the many generic ser-*.c files the _host_ supports.
1591SER_HARDWIRE="ser-base.o ser-unix.o ser-pipe.o ser-tcp.o"
1592case ${host} in
1593  *go32* ) SER_HARDWIRE=ser-go32.o ;;
1594  *djgpp* ) SER_HARDWIRE=ser-go32.o ;;
1595  *mingw32*) SER_HARDWIRE="ser-base.o ser-tcp.o ser-mingw.o" ;;
1596esac
1597AC_SUBST(SER_HARDWIRE)
1598
1599# libreadline needs libuser32.a in a cygwin environment
1600WIN32LIBS=
1601if test x$gdb_cv_os_cygwin = xyes; then
1602    WIN32LIBS="-luser32"
1603    case "${target}" in
1604	*cygwin*) WIN32LIBS="$WIN32LIBS -limagehlp"
1605	;;
1606    esac
1607fi
1608
1609# The ser-tcp.c module requires sockets.
1610case ${host} in
1611  *mingw32*)
1612    AC_DEFINE(USE_WIN32API, 1,
1613              [Define if we should use the Windows API, instead of the
1614	       POSIX API.  On Windows, we use the Windows API when
1615	       building for MinGW, but the POSIX API when building
1616	       for Cygwin.])
1617    WIN32LIBS="$WIN32LIBS -lws2_32"
1618    ;;
1619esac
1620AC_SUBST(WIN32LIBS)
1621
1622# Add ELF support to GDB, but only if BFD includes ELF support.
1623OLD_CFLAGS=$CFLAGS
1624OLD_LDFLAGS=$LDFLAGS
1625OLD_LIBS=$LIBS
1626CFLAGS="$CFLAGS -I${srcdir}/../include -I../bfd -I${srcdir}/../bfd"
1627LDFLAGS="$LDFLAGS -L../bfd -L../libiberty"
1628intl=`echo $LIBINTL | sed 's,${top_builddir}/,,g'`
1629LIBS="-lbfd -liberty $intl $LIBS"
1630AC_CACHE_CHECK([for ELF support in BFD], gdb_cv_var_elf,
1631[AC_TRY_LINK(
1632[#include <stdlib.h>
1633#include "bfd.h"
1634#include "elf-bfd.h"
1635],
1636[bfd *abfd = NULL; bfd_get_elf_phdr_upper_bound (abfd); ],
1637gdb_cv_var_elf=yes, gdb_cv_var_elf=no)])
1638if test $gdb_cv_var_elf = yes; then
1639  CONFIG_OBS="$CONFIG_OBS elfread.o"
1640  AC_DEFINE(HAVE_ELF, 1,
1641	    [Define if ELF support should be included.])
1642fi
1643CFLAGS=$OLD_CFLAGS
1644LDFLAGS=$OLD_LDFLAGS
1645LIBS=$OLD_LIBS
1646
1647# Add any host-specific objects to GDB.
1648CONFIG_OBS="${CONFIG_OBS} ${gdb_host_obs}"
1649
1650LIBGUI="../libgui/src/libgui.a"
1651GUI_CFLAGS_X="-I${srcdir}/../libgui/src"
1652AC_SUBST(LIBGUI)
1653AC_SUBST(GUI_CFLAGS_X)
1654
1655WIN32LDAPP=
1656AC_SUBST(WIN32LIBS)
1657AC_SUBST(WIN32LDAPP)
1658
1659case "${host}" in
1660*-*-cygwin* | *-*-mingw* )
1661    configdir="win"
1662    ;;
1663*)
1664    configdir="unix"
1665    ;;
1666esac
1667
1668GDBTKLIBS=
1669if test "${enable_gdbtk}" = "yes"; then
1670
1671    # Gdbtk must have an absolute path to srcdir in order to run
1672    # properly when not installed.
1673    here=`pwd`
1674    cd ${srcdir}
1675    GDBTK_SRC_DIR=`pwd`
1676    cd $here
1677
1678    SC_PATH_TCLCONFIG
1679
1680    # If $no_tk is nonempty, then we can't do Tk, and there is no
1681    # point to doing Tcl.
1682    SC_PATH_TKCONFIG
1683
1684    if test -z "${no_tcl}" -a -z "${no_tk}"; then
1685	SC_LOAD_TCLCONFIG
1686
1687        # Check for in-tree tcl
1688        here=`pwd`
1689        cd ${srcdir}/..
1690        topdir=`pwd`
1691        cd ${here}
1692
1693        intree="no"
1694        if test "${TCL_SRC_DIR}" = "${topdir}/tcl"; then
1695          intree="yes"
1696        fi
1697
1698        # Find Tcl private headers
1699        if test x"${intree}" = xno; then
1700          CY_AC_TCL_PRIVATE_HEADERS
1701	  TCL_INCLUDE="${TCL_INCLUDE_SPEC} ${TCL_PRIVATE_INCLUDE}"
1702          TCL_LIBRARY="${TCL_LIB_SPEC}"
1703          TCL_DEPS=""
1704        else
1705          # If building tcl in the same src tree, private headers
1706          # are not needed, but we need to be sure to use the right
1707          # headers library
1708	  TCL_INCLUDE="-I${TCL_SRC_DIR}/generic"
1709          TCL_LIBRARY="${TCL_BUILD_LIB_SPEC}"
1710          TCL_DEPS="../tcl/${configdir}${TCL_LIB_FILE}"
1711        fi
1712	AC_SUBST(TCL_INCLUDE)
1713	AC_SUBST(TCL_LIBRARY)
1714        AC_SUBST(TCL_DEPS)
1715
1716	SC_LOAD_TKCONFIG
1717
1718        # Check for in-tree Tk
1719        intree="no"
1720        if test "${TK_SRC_DIR}" = "${topdir}/tk"; then
1721          intree="yes"
1722        fi
1723
1724        # Find Tk private headers
1725        if test x"${intree}" = xno; then
1726          CY_AC_TK_PRIVATE_HEADERS
1727	  TK_INCLUDE="${TK_INCLUDE_SPEC} ${TK_PRIVATE_INCLUDE}"
1728	  TK_LIBRARY=${TK_LIB_SPEC}
1729          TK_DEPS=""
1730        else
1731          TK_INCLUDE="-I${TK_SRC_DIR}/generic"
1732          TK_LIBRARY="${TK_BUILD_LIB_SPEC}"
1733          TK_DEPS="../tk/${configdir}/${TK_LIB_FILE}"
1734        fi
1735	AC_SUBST(TK_INCLUDE)
1736	AC_SUBST(TK_LIBRARY)
1737	AC_SUBST(TK_DEPS)
1738	AC_SUBST(TK_XINCLUDES)
1739
1740        ENABLE_CFLAGS="${ENABLE_CFLAGS} \$(SUBDIR_GDBTK_CFLAGS)"
1741
1742	# Include some libraries that Tcl and Tk want.
1743	TCL_LIBS='$(LIBGUI) $(TK) $(TCL) $(X11_LDFLAGS) $(X11_LIBS)'
1744	# Yes, the ordering seems wrong here.  But it isn't.
1745	# TK_LIBS is the list of libraries that need to be linked
1746	# after Tcl/Tk.  Note that this isn't put into LIBS.  If it
1747	# were in LIBS then any link tests after this point would
1748	# try to include things like `$(LIBGUI)', which wouldn't work.
1749	GDBTKLIBS="${TCL_LIBS} ${TK_LIBS}"
1750
1751        CONFIG_OBS="${CONFIG_OBS} \$(SUBDIR_GDBTK_OBS)"
1752        CONFIG_DEPS="${CONFIG_DEPS} \$(SUBDIR_GDBTK_DEPS)"
1753        CONFIG_SRCS="${CONFIG_SRCS} \$(SUBDIR_GDBTK_SRCS)"
1754	CONFIG_ALL="${CONFIG_ALL} all-gdbtk"
1755	CONFIG_CLEAN="${CONFIG_CLEAN} clean-gdbtk"
1756	CONFIG_INSTALL="${CONFIG_INSTALL} install-gdbtk"
1757	CONFIG_UNINSTALL="${CONFIG_UNINSTALL} uninstall-gdbtk"
1758
1759	if test x$gdb_cv_os_cygwin = xyes; then
1760	  WIN32LIBS="${WIN32LIBS} -lshell32 -lgdi32 -lcomdlg32 -ladvapi32"
1761	  WIN32LDAPP="-Wl,--subsystem,console"
1762	  CONFIG_OBS="${CONFIG_OBS} gdbres.o"
1763	fi
1764
1765        AC_CONFIG_SUBDIRS(gdbtk)
1766    fi
1767fi
1768
1769AC_SUBST(X_CFLAGS)
1770AC_SUBST(X_LDFLAGS)
1771AC_SUBST(X_LIBS)
1772AC_SUBST(GDBTKLIBS)
1773AC_SUBST(GDBTK_CFLAGS)
1774AC_SUBST(GDBTK_SRC_DIR)
1775
1776AC_PATH_X
1777
1778# Unlike the sim directory, whether a simulator is linked is controlled by
1779# presence of a gdb_sim definition in the target configure.tgt entry.
1780# This code just checks for a few cases where we'd like to ignore those
1781# definitions, even when they're present in the '.mt' file.  These cases
1782# are when --disable-sim is specified, or if the simulator directory is
1783# not part of the source tree.
1784#
1785AC_ARG_ENABLE(sim,
1786AS_HELP_STRING([--enable-sim], [link gdb with simulator]),
1787[echo "enable_sim = $enable_sim";
1788 echo "enableval = ${enableval}";
1789 case "${enableval}" in
1790  yes) ignore_sim=false ;;
1791  no)  ignore_sim=true ;;
1792  *)   ignore_sim=false ;;
1793 esac],
1794[ignore_sim=false])
1795
1796if test ! -d "${srcdir}/../sim"; then
1797  ignore_sim=true
1798fi
1799
1800SIM=
1801SIM_OBS=
1802if test "${ignore_sim}" = "false"; then
1803  if test x"${gdb_sim}" != x ; then
1804    SIM="${gdb_sim}"
1805    SIM_OBS="remote-sim.o"
1806    AC_DEFINE(WITH_SIM, 1, [Define if the simulator is being linked in.])
1807  fi
1808fi
1809AC_SUBST(SIM)
1810AC_SUBST(SIM_OBS)
1811
1812AC_SUBST(ENABLE_CFLAGS)
1813AC_SUBST(PROFILE_CFLAGS)
1814
1815AC_SUBST(CONFIG_OBS)
1816AC_SUBST(CONFIG_DEPS)
1817AC_SUBST(CONFIG_SRCS)
1818AC_SUBST(CONFIG_ALL)
1819AC_SUBST(CONFIG_CLEAN)
1820AC_SUBST(CONFIG_INSTALL)
1821AC_SUBST(CONFIG_UNINSTALL)
1822
1823# List of host floatformats.
1824AC_DEFINE_UNQUOTED(GDB_HOST_FLOAT_FORMAT,$gdb_host_float_format,[Host float floatformat])
1825AC_DEFINE_UNQUOTED(GDB_HOST_DOUBLE_FORMAT,$gdb_host_double_format,[Host double floatformat])
1826AC_DEFINE_UNQUOTED(GDB_HOST_LONG_DOUBLE_FORMAT,$gdb_host_long_double_format,[Host long double floatformat])
1827
1828# target_subdir is used by the testsuite to find the target libraries.
1829target_subdir=
1830if test "${host}" != "${target}"; then
1831    target_subdir="${target_alias}/"
1832fi
1833AC_SUBST(target_subdir)
1834
1835frags=
1836if test "${gdb_native}" = "yes"; then
1837  host_makefile_frag=${srcdir}/config/${gdb_host_cpu}/${gdb_host}.mh
1838  if test ! -f ${host_makefile_frag}; then
1839    AC_MSG_ERROR("*** Gdb does not support native target ${host}")
1840  fi
1841  frags="$frags $host_makefile_frag"
1842else
1843  host_makefile_frag=/dev/null
1844fi
1845
1846AC_SUBST_FILE(host_makefile_frag)
1847AC_SUBST(frags)
1848
1849changequote(,)dnl
1850if test "${gdb_native}" = "yes"; then
1851# We pick this up from the host configuration file (.mh) because we
1852# do not have a native configuration Makefile fragment.
1853nativefile=`sed -n '
1854s/NAT_FILE[ 	]*=[ 	]*\([^ 	]*\)/\1/p
1855' ${host_makefile_frag}`
1856fi
1857changequote([,])
1858
1859if test x"${gdb_osabi}" != x ; then
1860    AC_DEFINE_UNQUOTED(GDB_OSABI_DEFAULT, $gdb_osabi,
1861		       [Define to the default OS ABI for this configuration.])
1862fi
1863
1864# Enable multi-ice-gdb-server.
1865AC_ARG_ENABLE(multi-ice,
1866AS_HELP_STRING([--enable-multi-ice], [build the multi-ice-gdb-server]),
1867  [case $enableval in
1868    yes | no)
1869      ;;
1870    *) AC_MSG_ERROR([bad value $enableval for --enable-multi-ice]) ;;
1871  esac])
1872if test "x$enable_multi_ice" = xyes; then
1873   AC_CONFIG_SUBDIRS(multi-ice)
1874fi
1875
1876# We only build gdbserver automatically in a native configuration.
1877if test "$gdb_native" = "yes"; then
1878  AC_MSG_CHECKING(whether gdbserver is supported on this host)
1879  if test "x$build_gdbserver" = xyes; then
1880    AC_MSG_RESULT(yes)
1881    AC_CONFIG_SUBDIRS(gdbserver)
1882  else
1883    AC_MSG_RESULT(no)
1884  fi
1885fi
1886
1887# If nativefile (NAT_FILE) is not set in config/*/*.m[ht] files, we link
1888# to an empty version.
1889
1890files=
1891links=
1892
1893rm -f nm.h
1894if test "${nativefile}" != ""; then
1895    case "${nativefile}" in
1896      nm-*.h ) GDB_NM_FILE="config/${gdb_host_cpu}/${nativefile}" ;;
1897      * ) GDB_NM_FILE="${nativefile}"
1898    esac
1899    files="${files} ${GDB_NM_FILE}"
1900    links="${links} nm.h"
1901    AC_DEFINE_UNQUOTED(GDB_NM_FILE, "${GDB_NM_FILE}", [nativefile])
1902fi
1903AC_SUBST(GDB_NM_FILE)
1904
1905AC_LINK_FILES($files, $links)
1906
1907dnl Check for exe extension set on certain hosts (e.g. Win32)
1908AC_EXEEXT
1909
1910dnl  Detect the character set used by this host.
1911dnl  At the moment, we just assume it's UTF-8.
1912AC_DEFINE(GDB_DEFAULT_HOST_CHARSET, "UTF-8",
1913          [Define to be a string naming the default host character set.])
1914
1915AC_OUTPUT(Makefile .gdbinit:gdbinit.in gnulib/Makefile,
1916[
1917case x$CONFIG_HEADERS in
1918xconfig.h:config.in)
1919echo > stamp-h ;;
1920esac
1921])
1922
1923exit 0
1924