mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-21 04:42:53 +08:00
da48217f31
Make gdbserver's build system locate libiconv when building for Linux.
Commit 07b3255c3b
("Filter invalid encodings from Linux thread names")
make libiconv madantory for building gdbserver on Linux.
While trying to cross-compile gdb for xtensa-fsf-linux-uclibc (with a
toolchain generated with crosstool-ng), I got:
/home/smarchi/src/binutils-gdb/gdbserver/linux-low.cc:48:10: fatal error: iconv.h: No such file or directory
48 | #include <iconv.h>
| ^~~~~~~~~
I downloaded GNU libiconv, built it for that host, and installed it in
an arbitrary directory. I had to modify the gdbserver build system to
locate libiconv and use it, the result is this patch.
I eventually found that crosstool-ng has a config option to make uclibc
provide an implementation of iconv, which is of course much easier. But
given that this patch is now written, I think it would be worth merging
it, it could help some people who do not have iconv built-in their libc
in the future (and may not have the luxury of rebuilding their libc like
I do).
Using AM_ICONV in configure.ac adds these options for configure (the
same we have for gdb):
--with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib
--without-libiconv-prefix don't search for libiconv in includedir and libdir
--with-libiconv-type=TYPE type of library to search for (auto/static/shared)
It sets the `LIBICONV` variable with whatever is needed to link with
libiconv, and adds the necessary `-I` flag to `CPPFLAGS`.
To avoid unnecessarily linking against libiconv on hosts that don't need
it, set `MAYBE_LIBICONV` with the contents of `LIBICONV` only if the
host is Linux, and use `MAYBE_LIBICONV` in `Makefile.in`.
Since libiconv is a hard requirement for Linux hosts, error out if it is
not found.
The bits in acinclude.m4 are similar to what we have in
gdb/acinclude.m4.
Update the top-level build system to support building against an in-tree
libiconv (I did not test this part though). Something tells me that the
all-gdbserver dependency on all-libiconv is unnecessary, since there is
already a dependency of configure-gdbserver on all-libiconv (and
all-gdbserver surely depends on configure-gdbserver). I just copied
what's done for GDB though.
ChangeLog:
* Makefile.def: Add configure-gdbserver and all-gdbserver
dependencies on all-libiconv.
* Makefile.in: Re-generate.
Change-Id: I90f8ef88dd4917df5a68b45550d93622fc9cfed4
Approved-By: Tom Tromey <tom@tromey.com>
214 lines
8.5 KiB
Plaintext
214 lines
8.5 KiB
Plaintext
# generated automatically by aclocal 1.15.1 -*- Autoconf -*-
|
|
|
|
# Copyright (C) 1996-2017 Free Software Foundation, Inc.
|
|
|
|
# This file is free software; the Free Software Foundation
|
|
# gives unlimited permission to copy and/or distribute it,
|
|
# with or without modifications, as long as this notice is preserved.
|
|
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
|
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
|
# PARTICULAR PURPOSE.
|
|
|
|
m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])])
|
|
# AM_AUX_DIR_EXPAND -*- Autoconf -*-
|
|
|
|
# Copyright (C) 2001-2017 Free Software Foundation, Inc.
|
|
#
|
|
# This file is free software; the Free Software Foundation
|
|
# gives unlimited permission to copy and/or distribute it,
|
|
# with or without modifications, as long as this notice is preserved.
|
|
|
|
# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
|
|
# $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to
|
|
# '$srcdir', '$srcdir/..', or '$srcdir/../..'.
|
|
#
|
|
# Of course, Automake must honor this variable whenever it calls a
|
|
# tool from the auxiliary directory. The problem is that $srcdir (and
|
|
# therefore $ac_aux_dir as well) can be either absolute or relative,
|
|
# depending on how configure is run. This is pretty annoying, since
|
|
# it makes $ac_aux_dir quite unusable in subdirectories: in the top
|
|
# source directory, any form will work fine, but in subdirectories a
|
|
# relative path needs to be adjusted first.
|
|
#
|
|
# $ac_aux_dir/missing
|
|
# fails when called from a subdirectory if $ac_aux_dir is relative
|
|
# $top_srcdir/$ac_aux_dir/missing
|
|
# fails if $ac_aux_dir is absolute,
|
|
# fails when called from a subdirectory in a VPATH build with
|
|
# a relative $ac_aux_dir
|
|
#
|
|
# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
|
|
# are both prefixed by $srcdir. In an in-source build this is usually
|
|
# harmless because $srcdir is '.', but things will broke when you
|
|
# start a VPATH build or use an absolute $srcdir.
|
|
#
|
|
# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
|
|
# iff we strip the leading $srcdir from $ac_aux_dir. That would be:
|
|
# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
|
|
# and then we would define $MISSING as
|
|
# MISSING="\${SHELL} $am_aux_dir/missing"
|
|
# This will work as long as MISSING is not called from configure, because
|
|
# unfortunately $(top_srcdir) has no meaning in configure.
|
|
# However there are other variables, like CC, which are often used in
|
|
# configure, and could therefore not use this "fixed" $ac_aux_dir.
|
|
#
|
|
# Another solution, used here, is to always expand $ac_aux_dir to an
|
|
# absolute PATH. The drawback is that using absolute paths prevent a
|
|
# configured tree to be moved without reconfiguration.
|
|
|
|
AC_DEFUN([AM_AUX_DIR_EXPAND],
|
|
[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
|
|
# Expand $ac_aux_dir to an absolute path.
|
|
am_aux_dir=`cd "$ac_aux_dir" && pwd`
|
|
])
|
|
|
|
# AM_CONDITIONAL -*- Autoconf -*-
|
|
|
|
# Copyright (C) 1997-2017 Free Software Foundation, Inc.
|
|
#
|
|
# This file is free software; the Free Software Foundation
|
|
# gives unlimited permission to copy and/or distribute it,
|
|
# with or without modifications, as long as this notice is preserved.
|
|
|
|
# AM_CONDITIONAL(NAME, SHELL-CONDITION)
|
|
# -------------------------------------
|
|
# Define a conditional.
|
|
AC_DEFUN([AM_CONDITIONAL],
|
|
[AC_PREREQ([2.52])dnl
|
|
m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])],
|
|
[$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
|
|
AC_SUBST([$1_TRUE])dnl
|
|
AC_SUBST([$1_FALSE])dnl
|
|
_AM_SUBST_NOTMAKE([$1_TRUE])dnl
|
|
_AM_SUBST_NOTMAKE([$1_FALSE])dnl
|
|
m4_define([_AM_COND_VALUE_$1], [$2])dnl
|
|
if $2; then
|
|
$1_TRUE=
|
|
$1_FALSE='#'
|
|
else
|
|
$1_TRUE='#'
|
|
$1_FALSE=
|
|
fi
|
|
AC_CONFIG_COMMANDS_PRE(
|
|
[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
|
|
AC_MSG_ERROR([[conditional "$1" was never defined.
|
|
Usually this means the macro was only invoked conditionally.]])
|
|
fi])])
|
|
|
|
# Copyright (C) 2001-2017 Free Software Foundation, Inc.
|
|
#
|
|
# This file is free software; the Free Software Foundation
|
|
# gives unlimited permission to copy and/or distribute it,
|
|
# with or without modifications, as long as this notice is preserved.
|
|
|
|
# AM_PROG_INSTALL_SH
|
|
# ------------------
|
|
# Define $install_sh.
|
|
AC_DEFUN([AM_PROG_INSTALL_SH],
|
|
[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
|
|
if test x"${install_sh+set}" != xset; then
|
|
case $am_aux_dir in
|
|
*\ * | *\ *)
|
|
install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
|
|
*)
|
|
install_sh="\${SHELL} $am_aux_dir/install-sh"
|
|
esac
|
|
fi
|
|
AC_SUBST([install_sh])])
|
|
|
|
# Add --enable-maintainer-mode option to configure. -*- Autoconf -*-
|
|
# From Jim Meyering
|
|
|
|
# Copyright (C) 1996-2017 Free Software Foundation, Inc.
|
|
#
|
|
# This file is free software; the Free Software Foundation
|
|
# gives unlimited permission to copy and/or distribute it,
|
|
# with or without modifications, as long as this notice is preserved.
|
|
|
|
# AM_MAINTAINER_MODE([DEFAULT-MODE])
|
|
# ----------------------------------
|
|
# Control maintainer-specific portions of Makefiles.
|
|
# Default is to disable them, unless 'enable' is passed literally.
|
|
# For symmetry, 'disable' may be passed as well. Anyway, the user
|
|
# can override the default with the --enable/--disable switch.
|
|
AC_DEFUN([AM_MAINTAINER_MODE],
|
|
[m4_case(m4_default([$1], [disable]),
|
|
[enable], [m4_define([am_maintainer_other], [disable])],
|
|
[disable], [m4_define([am_maintainer_other], [enable])],
|
|
[m4_define([am_maintainer_other], [enable])
|
|
m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])])
|
|
AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
|
|
dnl maintainer-mode's default is 'disable' unless 'enable' is passed
|
|
AC_ARG_ENABLE([maintainer-mode],
|
|
[AS_HELP_STRING([--]am_maintainer_other[-maintainer-mode],
|
|
am_maintainer_other[ make rules and dependencies not useful
|
|
(and sometimes confusing) to the casual installer])],
|
|
[USE_MAINTAINER_MODE=$enableval],
|
|
[USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes]))
|
|
AC_MSG_RESULT([$USE_MAINTAINER_MODE])
|
|
AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes])
|
|
MAINT=$MAINTAINER_MODE_TRUE
|
|
AC_SUBST([MAINT])dnl
|
|
]
|
|
)
|
|
|
|
# Copyright (C) 2001-2017 Free Software Foundation, Inc.
|
|
#
|
|
# This file is free software; the Free Software Foundation
|
|
# gives unlimited permission to copy and/or distribute it,
|
|
# with or without modifications, as long as this notice is preserved.
|
|
|
|
# AM_PROG_INSTALL_STRIP
|
|
# ---------------------
|
|
# One issue with vendor 'install' (even GNU) is that you can't
|
|
# specify the program used to strip binaries. This is especially
|
|
# annoying in cross-compiling environments, where the build's strip
|
|
# is unlikely to handle the host's binaries.
|
|
# Fortunately install-sh will honor a STRIPPROG variable, so we
|
|
# always use install-sh in "make install-strip", and initialize
|
|
# STRIPPROG with the value of the STRIP variable (set by the user).
|
|
AC_DEFUN([AM_PROG_INSTALL_STRIP],
|
|
[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
|
|
# Installed binaries are usually stripped using 'strip' when the user
|
|
# run "make install-strip". However 'strip' might not be the right
|
|
# tool to use in cross-compilation environments, therefore Automake
|
|
# will honor the 'STRIP' environment variable to overrule this program.
|
|
dnl Don't test for $cross_compiling = yes, because it might be 'maybe'.
|
|
if test "$cross_compiling" != no; then
|
|
AC_CHECK_TOOL([STRIP], [strip], :)
|
|
fi
|
|
INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
|
|
AC_SUBST([INSTALL_STRIP_PROGRAM])])
|
|
|
|
# Copyright (C) 2006-2017 Free Software Foundation, Inc.
|
|
#
|
|
# This file is free software; the Free Software Foundation
|
|
# gives unlimited permission to copy and/or distribute it,
|
|
# with or without modifications, as long as this notice is preserved.
|
|
|
|
# _AM_SUBST_NOTMAKE(VARIABLE)
|
|
# ---------------------------
|
|
# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
|
|
# This macro is traced by Automake.
|
|
AC_DEFUN([_AM_SUBST_NOTMAKE])
|
|
|
|
# AM_SUBST_NOTMAKE(VARIABLE)
|
|
# --------------------------
|
|
# Public sister of _AM_SUBST_NOTMAKE.
|
|
AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
|
|
|
|
m4_include([../config/acx.m4])
|
|
m4_include([../config/ax_pthread.m4])
|
|
m4_include([../config/depstand.m4])
|
|
m4_include([../config/gettext-sister.m4])
|
|
m4_include([../config/gettext.m4])
|
|
m4_include([../config/intlmacosx.m4])
|
|
m4_include([../config/lead-dot.m4])
|
|
m4_include([../config/nls.m4])
|
|
m4_include([../config/override.m4])
|
|
m4_include([../config/po.m4])
|
|
m4_include([../config/progtest.m4])
|
|
m4_include([acinclude.m4])
|