gettext-sister.m4: Renamed from gettext.m4
config/
2004-09-22 Kelley Cook <kcook@gcc.gnu.org>
* gettext-sister.m4: Renamed from gettext.m4
* codeset.m4, gettext.m4, glibc21.m4, iconv.m4, intdiv0.m4, po.m4,
inttypes.m4, inttypes-pri.m4, inttypes_h.m4, lcmessage.m4, lib-ld.m4,
lib-link.m4, lib-prefix.m4, nls.m4, progtest.m4, stdint_h.m4,
uintmax_t.m4, ulonglong.m4: Import from gettext-0.12.1 sources.
gcc/
2004-09-22 Kelley Cook <kcook@gcc.gnu.org>
* aclocal.m4: Update for rename of gettext-sister.m4.
libcpp/
2004-09-22 Kelley Cook <kcook@gcc.gnu.org>
* Makefile.in (aclocal.m4): Update dependencies.
* configure.ac (AC_CONFIG_MACRO_DIR): New.
* aclocal.m4, configure: Regenerate.
intl/
2004-09-22 Kelley Cook <kcook@gcc.gnu.org>
* configure.ac (AC_CONFIG_MACRO_DIR): New.
(ACLOCAL, AUTOCONF, AUTOHEADER, MAINT): Substitute.
* Makefile.in: Update with maintainer mode rules.
* README: Update aclocal regeneration instructions.
* aclocal.m4, configure: Regenerate.
From-SVN: r87900
2004-09-23 01:53:59 +02:00
|
|
|
# lib-link.m4 serial 4 (gettext-0.12)
|
|
|
|
dnl Copyright (C) 2001-2003 Free Software Foundation, Inc.
|
|
|
|
dnl This file is free software, distributed under the terms of the GNU
|
|
|
|
dnl General Public License. As a special exception to the GNU General
|
|
|
|
dnl Public License, this file may be distributed as part of a program
|
|
|
|
dnl that contains a configuration script generated by Autoconf, under
|
|
|
|
dnl the same distribution terms as the rest of that program.
|
|
|
|
|
|
|
|
dnl From Bruno Haible.
|
|
|
|
|
|
|
|
dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and
|
|
|
|
dnl the libraries corresponding to explicit and implicit dependencies.
|
|
|
|
dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and
|
|
|
|
dnl augments the CPPFLAGS variable.
|
|
|
|
AC_DEFUN([AC_LIB_LINKFLAGS],
|
|
|
|
[
|
|
|
|
AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
|
|
|
|
AC_REQUIRE([AC_LIB_RPATH])
|
|
|
|
define([Name],[translit([$1],[./-], [___])])
|
|
|
|
define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
|
|
|
|
[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
|
|
|
|
AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [
|
|
|
|
AC_LIB_LINKFLAGS_BODY([$1], [$2])
|
|
|
|
ac_cv_lib[]Name[]_libs="$LIB[]NAME"
|
|
|
|
ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME"
|
|
|
|
ac_cv_lib[]Name[]_cppflags="$INC[]NAME"
|
|
|
|
])
|
|
|
|
LIB[]NAME="$ac_cv_lib[]Name[]_libs"
|
|
|
|
LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs"
|
|
|
|
INC[]NAME="$ac_cv_lib[]Name[]_cppflags"
|
|
|
|
AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME)
|
|
|
|
AC_SUBST([LIB]NAME)
|
|
|
|
AC_SUBST([LTLIB]NAME)
|
|
|
|
dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the
|
|
|
|
dnl results of this search when this library appears as a dependency.
|
|
|
|
HAVE_LIB[]NAME=yes
|
|
|
|
undefine([Name])
|
|
|
|
undefine([NAME])
|
|
|
|
])
|
|
|
|
|
|
|
|
dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode)
|
|
|
|
dnl searches for libname and the libraries corresponding to explicit and
|
|
|
|
dnl implicit dependencies, together with the specified include files and
|
|
|
|
dnl the ability to compile and link the specified testcode. If found, it
|
|
|
|
dnl sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} and
|
|
|
|
dnl LTLIB${NAME} variables and augments the CPPFLAGS variable, and
|
|
|
|
dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs
|
|
|
|
dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty.
|
|
|
|
AC_DEFUN([AC_LIB_HAVE_LINKFLAGS],
|
|
|
|
[
|
|
|
|
AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
|
|
|
|
AC_REQUIRE([AC_LIB_RPATH])
|
|
|
|
define([Name],[translit([$1],[./-], [___])])
|
|
|
|
define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
|
|
|
|
[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
|
|
|
|
|
|
|
|
dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME
|
|
|
|
dnl accordingly.
|
|
|
|
AC_LIB_LINKFLAGS_BODY([$1], [$2])
|
|
|
|
|
|
|
|
dnl Add $INC[]NAME to CPPFLAGS before performing the following checks,
|
|
|
|
dnl because if the user has installed lib[]Name and not disabled its use
|
|
|
|
dnl via --without-lib[]Name-prefix, he wants to use it.
|
|
|
|
ac_save_CPPFLAGS="$CPPFLAGS"
|
|
|
|
AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME)
|
|
|
|
|
|
|
|
AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [
|
|
|
|
ac_save_LIBS="$LIBS"
|
|
|
|
LIBS="$LIBS $LIB[]NAME"
|
|
|
|
AC_TRY_LINK([$3], [$4], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name=no])
|
|
|
|
LIBS="$ac_save_LIBS"
|
|
|
|
])
|
|
|
|
if test "$ac_cv_lib[]Name" = yes; then
|
|
|
|
HAVE_LIB[]NAME=yes
|
|
|
|
AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the $1 library.])
|
|
|
|
AC_MSG_CHECKING([how to link with lib[]$1])
|
|
|
|
AC_MSG_RESULT([$LIB[]NAME])
|
|
|
|
else
|
|
|
|
HAVE_LIB[]NAME=no
|
|
|
|
dnl If $LIB[]NAME didn't lead to a usable library, we don't need
|
|
|
|
dnl $INC[]NAME either.
|
|
|
|
CPPFLAGS="$ac_save_CPPFLAGS"
|
|
|
|
LIB[]NAME=
|
|
|
|
LTLIB[]NAME=
|
|
|
|
fi
|
|
|
|
AC_SUBST([HAVE_LIB]NAME)
|
|
|
|
AC_SUBST([LIB]NAME)
|
|
|
|
AC_SUBST([LTLIB]NAME)
|
|
|
|
undefine([Name])
|
|
|
|
undefine([NAME])
|
|
|
|
])
|
|
|
|
|
|
|
|
dnl Determine the platform dependent parameters needed to use rpath:
|
|
|
|
dnl libext, shlibext, hardcode_libdir_flag_spec, hardcode_libdir_separator,
|
|
|
|
dnl hardcode_direct, hardcode_minus_L.
|
|
|
|
AC_DEFUN([AC_LIB_RPATH],
|
|
|
|
[
|
|
|
|
AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS
|
|
|
|
AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld
|
|
|
|
AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host
|
|
|
|
AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir
|
|
|
|
AC_CACHE_CHECK([for shared library run path origin], acl_cv_rpath, [
|
|
|
|
CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \
|
|
|
|
${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh
|
|
|
|
. ./conftest.sh
|
|
|
|
rm -f ./conftest.sh
|
|
|
|
acl_cv_rpath=done
|
|
|
|
])
|
|
|
|
wl="$acl_cv_wl"
|
|
|
|
libext="$acl_cv_libext"
|
|
|
|
shlibext="$acl_cv_shlibext"
|
|
|
|
hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec"
|
|
|
|
hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator"
|
|
|
|
hardcode_direct="$acl_cv_hardcode_direct"
|
|
|
|
hardcode_minus_L="$acl_cv_hardcode_minus_L"
|
|
|
|
dnl Determine whether the user wants rpath handling at all.
|
|
|
|
AC_ARG_ENABLE(rpath,
|
|
|
|
[ --disable-rpath do not hardcode runtime library paths],
|
|
|
|
:, enable_rpath=yes)
|
|
|
|
])
|
|
|
|
|
|
|
|
dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and
|
|
|
|
dnl the libraries corresponding to explicit and implicit dependencies.
|
|
|
|
dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables.
|
|
|
|
AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
|
|
|
|
[
|
|
|
|
define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
|
|
|
|
[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
|
|
|
|
dnl By default, look in $includedir and $libdir.
|
|
|
|
use_additional=yes
|
|
|
|
AC_LIB_WITH_FINAL_PREFIX([
|
|
|
|
eval additional_includedir=\"$includedir\"
|
|
|
|
eval additional_libdir=\"$libdir\"
|
|
|
|
])
|
|
|
|
AC_LIB_ARG_WITH([lib$1-prefix],
|
|
|
|
[ --with-lib$1-prefix[=DIR] search for lib$1 in DIR/include and DIR/lib
|
|
|
|
--without-lib$1-prefix don't search for lib$1 in includedir and libdir],
|
|
|
|
[
|
|
|
|
if test "X$withval" = "Xno"; then
|
|
|
|
use_additional=no
|
|
|
|
else
|
|
|
|
if test "X$withval" = "X"; then
|
|
|
|
AC_LIB_WITH_FINAL_PREFIX([
|
|
|
|
eval additional_includedir=\"$includedir\"
|
|
|
|
eval additional_libdir=\"$libdir\"
|
|
|
|
])
|
|
|
|
else
|
|
|
|
additional_includedir="$withval/include"
|
|
|
|
additional_libdir="$withval/lib"
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
])
|
gcc: Add new configure options to allow static libraries to be selected
The motivation behind this change is to make it easier for a user to
link against static libraries on a target where dynamic libraries are
the default library type (for example GNU/Linux).
Further, my motivation is really for linking libraries into GDB,
however, the binutils-gdb/config/ directory is a copy of gcc/config/
so changes for GDB need to be approved by the GCC project first.
After making this change in the gcc/config/ directory I've run
autoreconf on all of the configure scripts in the GCC tree and a
couple have been updated, so I'll use one of these to describe what my
change does.
Consider libcpp, this library links against libiconv. Currently if
the user builds on a system with both static and dynamic libiconv
installed then autotools will pick up the dynamic libiconv by
default. This is almost certainly the right thing to do.
However, if the user wants to link against static libiconv then things
are a little harder, they could remove the dynamic libiconv from their
system, but this is probably a bad idea (other things might depend on
that library), or the user can build their own version of libiconv,
install it into a unique prefix, and then configure gcc using the
--with-libiconv-prefix=DIR flag. This works fine, but is somewhat
annoying, the static library available, I just can't get autotools to
use it.
My change then adds a new flag --with-libiconv-type=TYPE, where type
is either auto, static, or shared. The default auto, ensures we keep
the existing behaviour unchanged.
If the user configures with --with-libiconv-type=static then the
configure script will ignore any dynamic libiconv it finds, and will
only look for a static libiconv, if no static libiconv is found then
the configure will continue as though there is no libiconv at all
available.
Similarly a user can specify --with-libiconv-type=shared and force the
use of shared libiconv, any static libiconv will be ignored.
As I've implemented this change within the AC_LIB_LINKFLAGS_BODY macro
then only libraries configured using the AC_LIB_LINKFLAGS or
AC_LIB_HAVE_LINKFLAGS macros will gain the new configure flag.
If this is accepted into GCC then there will be follow on patches for
binutils and GDB to regenerate some configure scripts in those
projects.
For GCC only two configure scripts needed updated after this commit,
libcpp and libstdc++-v3, both of which link against libiconv.
config/ChangeLog:
* lib-link.m4 (AC_LIB_LINKFLAGS_BODY): Add new
--with-libXXX-type=... option. Use this to guide the selection of
either a shared library or a static library.
libcpp/ChangeLog:
* configure: Regenerate.
libstdc++-v3/ChangeLog:
* configure: Regenerate.
2020-01-22 15:54:26 +01:00
|
|
|
AC_LIB_ARG_WITH([lib$1-type],
|
|
|
|
[ --with-lib$1-type=TYPE type of library to search for (auto/static/shared) ],
|
|
|
|
[ with_lib$1_type=$withval ], [ with_lib$1_type=auto ])
|
|
|
|
lib_type=`eval echo \$with_lib$1_type`
|
|
|
|
|
gettext-sister.m4: Renamed from gettext.m4
config/
2004-09-22 Kelley Cook <kcook@gcc.gnu.org>
* gettext-sister.m4: Renamed from gettext.m4
* codeset.m4, gettext.m4, glibc21.m4, iconv.m4, intdiv0.m4, po.m4,
inttypes.m4, inttypes-pri.m4, inttypes_h.m4, lcmessage.m4, lib-ld.m4,
lib-link.m4, lib-prefix.m4, nls.m4, progtest.m4, stdint_h.m4,
uintmax_t.m4, ulonglong.m4: Import from gettext-0.12.1 sources.
gcc/
2004-09-22 Kelley Cook <kcook@gcc.gnu.org>
* aclocal.m4: Update for rename of gettext-sister.m4.
libcpp/
2004-09-22 Kelley Cook <kcook@gcc.gnu.org>
* Makefile.in (aclocal.m4): Update dependencies.
* configure.ac (AC_CONFIG_MACRO_DIR): New.
* aclocal.m4, configure: Regenerate.
intl/
2004-09-22 Kelley Cook <kcook@gcc.gnu.org>
* configure.ac (AC_CONFIG_MACRO_DIR): New.
(ACLOCAL, AUTOCONF, AUTOHEADER, MAINT): Substitute.
* Makefile.in: Update with maintainer mode rules.
* README: Update aclocal regeneration instructions.
* aclocal.m4, configure: Regenerate.
From-SVN: r87900
2004-09-23 01:53:59 +02:00
|
|
|
dnl Search the library and its dependencies in $additional_libdir and
|
|
|
|
dnl $LDFLAGS. Using breadth-first-seach.
|
|
|
|
LIB[]NAME=
|
|
|
|
LTLIB[]NAME=
|
|
|
|
INC[]NAME=
|
|
|
|
rpathdirs=
|
|
|
|
ltrpathdirs=
|
|
|
|
names_already_handled=
|
|
|
|
names_next_round='$1 $2'
|
|
|
|
while test -n "$names_next_round"; do
|
|
|
|
names_this_round="$names_next_round"
|
|
|
|
names_next_round=
|
|
|
|
for name in $names_this_round; do
|
|
|
|
already_handled=
|
|
|
|
for n in $names_already_handled; do
|
|
|
|
if test "$n" = "$name"; then
|
|
|
|
already_handled=yes
|
|
|
|
break
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
if test -z "$already_handled"; then
|
|
|
|
names_already_handled="$names_already_handled $name"
|
|
|
|
dnl See if it was already located by an earlier AC_LIB_LINKFLAGS
|
|
|
|
dnl or AC_LIB_HAVE_LINKFLAGS call.
|
|
|
|
uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'`
|
|
|
|
eval value=\"\$HAVE_LIB$uppername\"
|
|
|
|
if test -n "$value"; then
|
|
|
|
if test "$value" = yes; then
|
|
|
|
eval value=\"\$LIB$uppername\"
|
|
|
|
test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value"
|
|
|
|
eval value=\"\$LTLIB$uppername\"
|
|
|
|
test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value"
|
|
|
|
else
|
|
|
|
dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined
|
|
|
|
dnl that this library doesn't exist. So just drop it.
|
|
|
|
:
|
|
|
|
fi
|
|
|
|
else
|
|
|
|
dnl Search the library lib$name in $additional_libdir and $LDFLAGS
|
|
|
|
dnl and the already constructed $LIBNAME/$LTLIBNAME.
|
|
|
|
found_dir=
|
|
|
|
found_la=
|
|
|
|
found_so=
|
|
|
|
found_a=
|
|
|
|
if test $use_additional = yes; then
|
gcc: Add new configure options to allow static libraries to be selected
The motivation behind this change is to make it easier for a user to
link against static libraries on a target where dynamic libraries are
the default library type (for example GNU/Linux).
Further, my motivation is really for linking libraries into GDB,
however, the binutils-gdb/config/ directory is a copy of gcc/config/
so changes for GDB need to be approved by the GCC project first.
After making this change in the gcc/config/ directory I've run
autoreconf on all of the configure scripts in the GCC tree and a
couple have been updated, so I'll use one of these to describe what my
change does.
Consider libcpp, this library links against libiconv. Currently if
the user builds on a system with both static and dynamic libiconv
installed then autotools will pick up the dynamic libiconv by
default. This is almost certainly the right thing to do.
However, if the user wants to link against static libiconv then things
are a little harder, they could remove the dynamic libiconv from their
system, but this is probably a bad idea (other things might depend on
that library), or the user can build their own version of libiconv,
install it into a unique prefix, and then configure gcc using the
--with-libiconv-prefix=DIR flag. This works fine, but is somewhat
annoying, the static library available, I just can't get autotools to
use it.
My change then adds a new flag --with-libiconv-type=TYPE, where type
is either auto, static, or shared. The default auto, ensures we keep
the existing behaviour unchanged.
If the user configures with --with-libiconv-type=static then the
configure script will ignore any dynamic libiconv it finds, and will
only look for a static libiconv, if no static libiconv is found then
the configure will continue as though there is no libiconv at all
available.
Similarly a user can specify --with-libiconv-type=shared and force the
use of shared libiconv, any static libiconv will be ignored.
As I've implemented this change within the AC_LIB_LINKFLAGS_BODY macro
then only libraries configured using the AC_LIB_LINKFLAGS or
AC_LIB_HAVE_LINKFLAGS macros will gain the new configure flag.
If this is accepted into GCC then there will be follow on patches for
binutils and GDB to regenerate some configure scripts in those
projects.
For GCC only two configure scripts needed updated after this commit,
libcpp and libstdc++-v3, both of which link against libiconv.
config/ChangeLog:
* lib-link.m4 (AC_LIB_LINKFLAGS_BODY): Add new
--with-libXXX-type=... option. Use this to guide the selection of
either a shared library or a static library.
libcpp/ChangeLog:
* configure: Regenerate.
libstdc++-v3/ChangeLog:
* configure: Regenerate.
2020-01-22 15:54:26 +01:00
|
|
|
if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext" && test x$lib_type != xstatic; then
|
gettext-sister.m4: Renamed from gettext.m4
config/
2004-09-22 Kelley Cook <kcook@gcc.gnu.org>
* gettext-sister.m4: Renamed from gettext.m4
* codeset.m4, gettext.m4, glibc21.m4, iconv.m4, intdiv0.m4, po.m4,
inttypes.m4, inttypes-pri.m4, inttypes_h.m4, lcmessage.m4, lib-ld.m4,
lib-link.m4, lib-prefix.m4, nls.m4, progtest.m4, stdint_h.m4,
uintmax_t.m4, ulonglong.m4: Import from gettext-0.12.1 sources.
gcc/
2004-09-22 Kelley Cook <kcook@gcc.gnu.org>
* aclocal.m4: Update for rename of gettext-sister.m4.
libcpp/
2004-09-22 Kelley Cook <kcook@gcc.gnu.org>
* Makefile.in (aclocal.m4): Update dependencies.
* configure.ac (AC_CONFIG_MACRO_DIR): New.
* aclocal.m4, configure: Regenerate.
intl/
2004-09-22 Kelley Cook <kcook@gcc.gnu.org>
* configure.ac (AC_CONFIG_MACRO_DIR): New.
(ACLOCAL, AUTOCONF, AUTOHEADER, MAINT): Substitute.
* Makefile.in: Update with maintainer mode rules.
* README: Update aclocal regeneration instructions.
* aclocal.m4, configure: Regenerate.
From-SVN: r87900
2004-09-23 01:53:59 +02:00
|
|
|
found_dir="$additional_libdir"
|
|
|
|
found_so="$additional_libdir/lib$name.$shlibext"
|
|
|
|
if test -f "$additional_libdir/lib$name.la"; then
|
|
|
|
found_la="$additional_libdir/lib$name.la"
|
|
|
|
fi
|
gcc: Add new configure options to allow static libraries to be selected
The motivation behind this change is to make it easier for a user to
link against static libraries on a target where dynamic libraries are
the default library type (for example GNU/Linux).
Further, my motivation is really for linking libraries into GDB,
however, the binutils-gdb/config/ directory is a copy of gcc/config/
so changes for GDB need to be approved by the GCC project first.
After making this change in the gcc/config/ directory I've run
autoreconf on all of the configure scripts in the GCC tree and a
couple have been updated, so I'll use one of these to describe what my
change does.
Consider libcpp, this library links against libiconv. Currently if
the user builds on a system with both static and dynamic libiconv
installed then autotools will pick up the dynamic libiconv by
default. This is almost certainly the right thing to do.
However, if the user wants to link against static libiconv then things
are a little harder, they could remove the dynamic libiconv from their
system, but this is probably a bad idea (other things might depend on
that library), or the user can build their own version of libiconv,
install it into a unique prefix, and then configure gcc using the
--with-libiconv-prefix=DIR flag. This works fine, but is somewhat
annoying, the static library available, I just can't get autotools to
use it.
My change then adds a new flag --with-libiconv-type=TYPE, where type
is either auto, static, or shared. The default auto, ensures we keep
the existing behaviour unchanged.
If the user configures with --with-libiconv-type=static then the
configure script will ignore any dynamic libiconv it finds, and will
only look for a static libiconv, if no static libiconv is found then
the configure will continue as though there is no libiconv at all
available.
Similarly a user can specify --with-libiconv-type=shared and force the
use of shared libiconv, any static libiconv will be ignored.
As I've implemented this change within the AC_LIB_LINKFLAGS_BODY macro
then only libraries configured using the AC_LIB_LINKFLAGS or
AC_LIB_HAVE_LINKFLAGS macros will gain the new configure flag.
If this is accepted into GCC then there will be follow on patches for
binutils and GDB to regenerate some configure scripts in those
projects.
For GCC only two configure scripts needed updated after this commit,
libcpp and libstdc++-v3, both of which link against libiconv.
config/ChangeLog:
* lib-link.m4 (AC_LIB_LINKFLAGS_BODY): Add new
--with-libXXX-type=... option. Use this to guide the selection of
either a shared library or a static library.
libcpp/ChangeLog:
* configure: Regenerate.
libstdc++-v3/ChangeLog:
* configure: Regenerate.
2020-01-22 15:54:26 +01:00
|
|
|
elif test x$lib_type != xshared; then
|
gettext-sister.m4: Renamed from gettext.m4
config/
2004-09-22 Kelley Cook <kcook@gcc.gnu.org>
* gettext-sister.m4: Renamed from gettext.m4
* codeset.m4, gettext.m4, glibc21.m4, iconv.m4, intdiv0.m4, po.m4,
inttypes.m4, inttypes-pri.m4, inttypes_h.m4, lcmessage.m4, lib-ld.m4,
lib-link.m4, lib-prefix.m4, nls.m4, progtest.m4, stdint_h.m4,
uintmax_t.m4, ulonglong.m4: Import from gettext-0.12.1 sources.
gcc/
2004-09-22 Kelley Cook <kcook@gcc.gnu.org>
* aclocal.m4: Update for rename of gettext-sister.m4.
libcpp/
2004-09-22 Kelley Cook <kcook@gcc.gnu.org>
* Makefile.in (aclocal.m4): Update dependencies.
* configure.ac (AC_CONFIG_MACRO_DIR): New.
* aclocal.m4, configure: Regenerate.
intl/
2004-09-22 Kelley Cook <kcook@gcc.gnu.org>
* configure.ac (AC_CONFIG_MACRO_DIR): New.
(ACLOCAL, AUTOCONF, AUTOHEADER, MAINT): Substitute.
* Makefile.in: Update with maintainer mode rules.
* README: Update aclocal regeneration instructions.
* aclocal.m4, configure: Regenerate.
From-SVN: r87900
2004-09-23 01:53:59 +02:00
|
|
|
if test -f "$additional_libdir/lib$name.$libext"; then
|
|
|
|
found_dir="$additional_libdir"
|
|
|
|
found_a="$additional_libdir/lib$name.$libext"
|
|
|
|
if test -f "$additional_libdir/lib$name.la"; then
|
|
|
|
found_la="$additional_libdir/lib$name.la"
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
if test "X$found_dir" = "X"; then
|
|
|
|
for x in $LDFLAGS $LTLIB[]NAME; do
|
|
|
|
AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
|
|
|
|
case "$x" in
|
|
|
|
-L*)
|
|
|
|
dir=`echo "X$x" | sed -e 's/^X-L//'`
|
gcc: Add new configure options to allow static libraries to be selected
The motivation behind this change is to make it easier for a user to
link against static libraries on a target where dynamic libraries are
the default library type (for example GNU/Linux).
Further, my motivation is really for linking libraries into GDB,
however, the binutils-gdb/config/ directory is a copy of gcc/config/
so changes for GDB need to be approved by the GCC project first.
After making this change in the gcc/config/ directory I've run
autoreconf on all of the configure scripts in the GCC tree and a
couple have been updated, so I'll use one of these to describe what my
change does.
Consider libcpp, this library links against libiconv. Currently if
the user builds on a system with both static and dynamic libiconv
installed then autotools will pick up the dynamic libiconv by
default. This is almost certainly the right thing to do.
However, if the user wants to link against static libiconv then things
are a little harder, they could remove the dynamic libiconv from their
system, but this is probably a bad idea (other things might depend on
that library), or the user can build their own version of libiconv,
install it into a unique prefix, and then configure gcc using the
--with-libiconv-prefix=DIR flag. This works fine, but is somewhat
annoying, the static library available, I just can't get autotools to
use it.
My change then adds a new flag --with-libiconv-type=TYPE, where type
is either auto, static, or shared. The default auto, ensures we keep
the existing behaviour unchanged.
If the user configures with --with-libiconv-type=static then the
configure script will ignore any dynamic libiconv it finds, and will
only look for a static libiconv, if no static libiconv is found then
the configure will continue as though there is no libiconv at all
available.
Similarly a user can specify --with-libiconv-type=shared and force the
use of shared libiconv, any static libiconv will be ignored.
As I've implemented this change within the AC_LIB_LINKFLAGS_BODY macro
then only libraries configured using the AC_LIB_LINKFLAGS or
AC_LIB_HAVE_LINKFLAGS macros will gain the new configure flag.
If this is accepted into GCC then there will be follow on patches for
binutils and GDB to regenerate some configure scripts in those
projects.
For GCC only two configure scripts needed updated after this commit,
libcpp and libstdc++-v3, both of which link against libiconv.
config/ChangeLog:
* lib-link.m4 (AC_LIB_LINKFLAGS_BODY): Add new
--with-libXXX-type=... option. Use this to guide the selection of
either a shared library or a static library.
libcpp/ChangeLog:
* configure: Regenerate.
libstdc++-v3/ChangeLog:
* configure: Regenerate.
2020-01-22 15:54:26 +01:00
|
|
|
if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext" && test x$lib_type != xstatic; then
|
gettext-sister.m4: Renamed from gettext.m4
config/
2004-09-22 Kelley Cook <kcook@gcc.gnu.org>
* gettext-sister.m4: Renamed from gettext.m4
* codeset.m4, gettext.m4, glibc21.m4, iconv.m4, intdiv0.m4, po.m4,
inttypes.m4, inttypes-pri.m4, inttypes_h.m4, lcmessage.m4, lib-ld.m4,
lib-link.m4, lib-prefix.m4, nls.m4, progtest.m4, stdint_h.m4,
uintmax_t.m4, ulonglong.m4: Import from gettext-0.12.1 sources.
gcc/
2004-09-22 Kelley Cook <kcook@gcc.gnu.org>
* aclocal.m4: Update for rename of gettext-sister.m4.
libcpp/
2004-09-22 Kelley Cook <kcook@gcc.gnu.org>
* Makefile.in (aclocal.m4): Update dependencies.
* configure.ac (AC_CONFIG_MACRO_DIR): New.
* aclocal.m4, configure: Regenerate.
intl/
2004-09-22 Kelley Cook <kcook@gcc.gnu.org>
* configure.ac (AC_CONFIG_MACRO_DIR): New.
(ACLOCAL, AUTOCONF, AUTOHEADER, MAINT): Substitute.
* Makefile.in: Update with maintainer mode rules.
* README: Update aclocal regeneration instructions.
* aclocal.m4, configure: Regenerate.
From-SVN: r87900
2004-09-23 01:53:59 +02:00
|
|
|
found_dir="$dir"
|
|
|
|
found_so="$dir/lib$name.$shlibext"
|
|
|
|
if test -f "$dir/lib$name.la"; then
|
|
|
|
found_la="$dir/lib$name.la"
|
|
|
|
fi
|
gcc: Add new configure options to allow static libraries to be selected
The motivation behind this change is to make it easier for a user to
link against static libraries on a target where dynamic libraries are
the default library type (for example GNU/Linux).
Further, my motivation is really for linking libraries into GDB,
however, the binutils-gdb/config/ directory is a copy of gcc/config/
so changes for GDB need to be approved by the GCC project first.
After making this change in the gcc/config/ directory I've run
autoreconf on all of the configure scripts in the GCC tree and a
couple have been updated, so I'll use one of these to describe what my
change does.
Consider libcpp, this library links against libiconv. Currently if
the user builds on a system with both static and dynamic libiconv
installed then autotools will pick up the dynamic libiconv by
default. This is almost certainly the right thing to do.
However, if the user wants to link against static libiconv then things
are a little harder, they could remove the dynamic libiconv from their
system, but this is probably a bad idea (other things might depend on
that library), or the user can build their own version of libiconv,
install it into a unique prefix, and then configure gcc using the
--with-libiconv-prefix=DIR flag. This works fine, but is somewhat
annoying, the static library available, I just can't get autotools to
use it.
My change then adds a new flag --with-libiconv-type=TYPE, where type
is either auto, static, or shared. The default auto, ensures we keep
the existing behaviour unchanged.
If the user configures with --with-libiconv-type=static then the
configure script will ignore any dynamic libiconv it finds, and will
only look for a static libiconv, if no static libiconv is found then
the configure will continue as though there is no libiconv at all
available.
Similarly a user can specify --with-libiconv-type=shared and force the
use of shared libiconv, any static libiconv will be ignored.
As I've implemented this change within the AC_LIB_LINKFLAGS_BODY macro
then only libraries configured using the AC_LIB_LINKFLAGS or
AC_LIB_HAVE_LINKFLAGS macros will gain the new configure flag.
If this is accepted into GCC then there will be follow on patches for
binutils and GDB to regenerate some configure scripts in those
projects.
For GCC only two configure scripts needed updated after this commit,
libcpp and libstdc++-v3, both of which link against libiconv.
config/ChangeLog:
* lib-link.m4 (AC_LIB_LINKFLAGS_BODY): Add new
--with-libXXX-type=... option. Use this to guide the selection of
either a shared library or a static library.
libcpp/ChangeLog:
* configure: Regenerate.
libstdc++-v3/ChangeLog:
* configure: Regenerate.
2020-01-22 15:54:26 +01:00
|
|
|
elif test x$lib_type != xshared; then
|
gettext-sister.m4: Renamed from gettext.m4
config/
2004-09-22 Kelley Cook <kcook@gcc.gnu.org>
* gettext-sister.m4: Renamed from gettext.m4
* codeset.m4, gettext.m4, glibc21.m4, iconv.m4, intdiv0.m4, po.m4,
inttypes.m4, inttypes-pri.m4, inttypes_h.m4, lcmessage.m4, lib-ld.m4,
lib-link.m4, lib-prefix.m4, nls.m4, progtest.m4, stdint_h.m4,
uintmax_t.m4, ulonglong.m4: Import from gettext-0.12.1 sources.
gcc/
2004-09-22 Kelley Cook <kcook@gcc.gnu.org>
* aclocal.m4: Update for rename of gettext-sister.m4.
libcpp/
2004-09-22 Kelley Cook <kcook@gcc.gnu.org>
* Makefile.in (aclocal.m4): Update dependencies.
* configure.ac (AC_CONFIG_MACRO_DIR): New.
* aclocal.m4, configure: Regenerate.
intl/
2004-09-22 Kelley Cook <kcook@gcc.gnu.org>
* configure.ac (AC_CONFIG_MACRO_DIR): New.
(ACLOCAL, AUTOCONF, AUTOHEADER, MAINT): Substitute.
* Makefile.in: Update with maintainer mode rules.
* README: Update aclocal regeneration instructions.
* aclocal.m4, configure: Regenerate.
From-SVN: r87900
2004-09-23 01:53:59 +02:00
|
|
|
if test -f "$dir/lib$name.$libext"; then
|
|
|
|
found_dir="$dir"
|
|
|
|
found_a="$dir/lib$name.$libext"
|
|
|
|
if test -f "$dir/lib$name.la"; then
|
|
|
|
found_la="$dir/lib$name.la"
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
if test "X$found_dir" != "X"; then
|
|
|
|
break
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
fi
|
|
|
|
if test "X$found_dir" != "X"; then
|
|
|
|
dnl Found the library.
|
|
|
|
LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name"
|
|
|
|
if test "X$found_so" != "X"; then
|
|
|
|
dnl Linking with a shared library. We attempt to hardcode its
|
|
|
|
dnl directory into the executable's runpath, unless it's the
|
|
|
|
dnl standard /usr/lib.
|
|
|
|
if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then
|
|
|
|
dnl No hardcoding is needed.
|
|
|
|
LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
|
|
|
|
else
|
|
|
|
dnl Use an explicit option to hardcode DIR into the resulting
|
|
|
|
dnl binary.
|
|
|
|
dnl Potentially add DIR to ltrpathdirs.
|
|
|
|
dnl The ltrpathdirs will be appended to $LTLIBNAME at the end.
|
|
|
|
haveit=
|
|
|
|
for x in $ltrpathdirs; do
|
|
|
|
if test "X$x" = "X$found_dir"; then
|
|
|
|
haveit=yes
|
|
|
|
break
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
if test -z "$haveit"; then
|
|
|
|
ltrpathdirs="$ltrpathdirs $found_dir"
|
|
|
|
fi
|
|
|
|
dnl The hardcoding into $LIBNAME is system dependent.
|
|
|
|
if test "$hardcode_direct" = yes; then
|
|
|
|
dnl Using DIR/libNAME.so during linking hardcodes DIR into the
|
|
|
|
dnl resulting binary.
|
|
|
|
LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
|
|
|
|
else
|
|
|
|
if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then
|
|
|
|
dnl Use an explicit option to hardcode DIR into the resulting
|
|
|
|
dnl binary.
|
|
|
|
LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
|
|
|
|
dnl Potentially add DIR to rpathdirs.
|
|
|
|
dnl The rpathdirs will be appended to $LIBNAME at the end.
|
|
|
|
haveit=
|
|
|
|
for x in $rpathdirs; do
|
|
|
|
if test "X$x" = "X$found_dir"; then
|
|
|
|
haveit=yes
|
|
|
|
break
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
if test -z "$haveit"; then
|
|
|
|
rpathdirs="$rpathdirs $found_dir"
|
|
|
|
fi
|
|
|
|
else
|
|
|
|
dnl Rely on "-L$found_dir".
|
|
|
|
dnl But don't add it if it's already contained in the LDFLAGS
|
|
|
|
dnl or the already constructed $LIBNAME
|
|
|
|
haveit=
|
|
|
|
for x in $LDFLAGS $LIB[]NAME; do
|
|
|
|
AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
|
|
|
|
if test "X$x" = "X-L$found_dir"; then
|
|
|
|
haveit=yes
|
|
|
|
break
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
if test -z "$haveit"; then
|
|
|
|
LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir"
|
|
|
|
fi
|
|
|
|
if test "$hardcode_minus_L" != no; then
|
|
|
|
dnl FIXME: Not sure whether we should use
|
|
|
|
dnl "-L$found_dir -l$name" or "-L$found_dir $found_so"
|
|
|
|
dnl here.
|
|
|
|
LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
|
|
|
|
else
|
|
|
|
dnl We cannot use $hardcode_runpath_var and LD_RUN_PATH
|
|
|
|
dnl here, because this doesn't fit in flags passed to the
|
|
|
|
dnl compiler. So give up. No hardcoding. This affects only
|
|
|
|
dnl very old systems.
|
|
|
|
dnl FIXME: Not sure whether we should use
|
|
|
|
dnl "-L$found_dir -l$name" or "-L$found_dir $found_so"
|
|
|
|
dnl here.
|
|
|
|
LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name"
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
else
|
|
|
|
if test "X$found_a" != "X"; then
|
|
|
|
dnl Linking with a static library.
|
|
|
|
LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a"
|
|
|
|
else
|
|
|
|
dnl We shouldn't come here, but anyway it's good to have a
|
|
|
|
dnl fallback.
|
|
|
|
LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name"
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
dnl Assume the include files are nearby.
|
|
|
|
additional_includedir=
|
|
|
|
case "$found_dir" in
|
|
|
|
*/lib | */lib/)
|
|
|
|
basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'`
|
|
|
|
additional_includedir="$basedir/include"
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
if test "X$additional_includedir" != "X"; then
|
|
|
|
dnl Potentially add $additional_includedir to $INCNAME.
|
|
|
|
dnl But don't add it
|
|
|
|
dnl 1. if it's the standard /usr/include,
|
|
|
|
dnl 2. if it's /usr/local/include and we are using GCC on Linux,
|
|
|
|
dnl 3. if it's already present in $CPPFLAGS or the already
|
|
|
|
dnl constructed $INCNAME,
|
|
|
|
dnl 4. if it doesn't exist as a directory.
|
|
|
|
if test "X$additional_includedir" != "X/usr/include"; then
|
|
|
|
haveit=
|
|
|
|
if test "X$additional_includedir" = "X/usr/local/include"; then
|
|
|
|
if test -n "$GCC"; then
|
|
|
|
case $host_os in
|
|
|
|
linux*) haveit=yes;;
|
|
|
|
esac
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
if test -z "$haveit"; then
|
|
|
|
for x in $CPPFLAGS $INC[]NAME; do
|
|
|
|
AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
|
|
|
|
if test "X$x" = "X-I$additional_includedir"; then
|
|
|
|
haveit=yes
|
|
|
|
break
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
if test -z "$haveit"; then
|
|
|
|
if test -d "$additional_includedir"; then
|
|
|
|
dnl Really add $additional_includedir to $INCNAME.
|
|
|
|
INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir"
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
dnl Look for dependencies.
|
|
|
|
if test -n "$found_la"; then
|
|
|
|
dnl Read the .la file. It defines the variables
|
|
|
|
dnl dlname, library_names, old_library, dependency_libs, current,
|
|
|
|
dnl age, revision, installed, dlopen, dlpreopen, libdir.
|
|
|
|
save_libdir="$libdir"
|
|
|
|
case "$found_la" in
|
|
|
|
*/* | *\\*) . "$found_la" ;;
|
|
|
|
*) . "./$found_la" ;;
|
|
|
|
esac
|
|
|
|
libdir="$save_libdir"
|
|
|
|
dnl We use only dependency_libs.
|
|
|
|
for dep in $dependency_libs; do
|
|
|
|
case "$dep" in
|
|
|
|
-L*)
|
|
|
|
additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
|
|
|
|
dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME.
|
|
|
|
dnl But don't add it
|
|
|
|
dnl 1. if it's the standard /usr/lib,
|
|
|
|
dnl 2. if it's /usr/local/lib and we are using GCC on Linux,
|
|
|
|
dnl 3. if it's already present in $LDFLAGS or the already
|
|
|
|
dnl constructed $LIBNAME,
|
|
|
|
dnl 4. if it doesn't exist as a directory.
|
|
|
|
if test "X$additional_libdir" != "X/usr/lib"; then
|
|
|
|
haveit=
|
|
|
|
if test "X$additional_libdir" = "X/usr/local/lib"; then
|
|
|
|
if test -n "$GCC"; then
|
|
|
|
case $host_os in
|
|
|
|
linux*) haveit=yes;;
|
|
|
|
esac
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
if test -z "$haveit"; then
|
|
|
|
haveit=
|
|
|
|
for x in $LDFLAGS $LIB[]NAME; do
|
|
|
|
AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
|
|
|
|
if test "X$x" = "X-L$additional_libdir"; then
|
|
|
|
haveit=yes
|
|
|
|
break
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
if test -z "$haveit"; then
|
|
|
|
if test -d "$additional_libdir"; then
|
|
|
|
dnl Really add $additional_libdir to $LIBNAME.
|
|
|
|
LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir"
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
haveit=
|
|
|
|
for x in $LDFLAGS $LTLIB[]NAME; do
|
|
|
|
AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
|
|
|
|
if test "X$x" = "X-L$additional_libdir"; then
|
|
|
|
haveit=yes
|
|
|
|
break
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
if test -z "$haveit"; then
|
|
|
|
if test -d "$additional_libdir"; then
|
|
|
|
dnl Really add $additional_libdir to $LTLIBNAME.
|
|
|
|
LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir"
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
;;
|
|
|
|
-R*)
|
|
|
|
dir=`echo "X$dep" | sed -e 's/^X-R//'`
|
|
|
|
if test "$enable_rpath" != no; then
|
|
|
|
dnl Potentially add DIR to rpathdirs.
|
|
|
|
dnl The rpathdirs will be appended to $LIBNAME at the end.
|
|
|
|
haveit=
|
|
|
|
for x in $rpathdirs; do
|
|
|
|
if test "X$x" = "X$dir"; then
|
|
|
|
haveit=yes
|
|
|
|
break
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
if test -z "$haveit"; then
|
|
|
|
rpathdirs="$rpathdirs $dir"
|
|
|
|
fi
|
|
|
|
dnl Potentially add DIR to ltrpathdirs.
|
|
|
|
dnl The ltrpathdirs will be appended to $LTLIBNAME at the end.
|
|
|
|
haveit=
|
|
|
|
for x in $ltrpathdirs; do
|
|
|
|
if test "X$x" = "X$dir"; then
|
|
|
|
haveit=yes
|
|
|
|
break
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
if test -z "$haveit"; then
|
|
|
|
ltrpathdirs="$ltrpathdirs $dir"
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
;;
|
|
|
|
-l*)
|
|
|
|
dnl Handle this in the next round.
|
|
|
|
names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'`
|
|
|
|
;;
|
|
|
|
*.la)
|
|
|
|
dnl Handle this in the next round. Throw away the .la's
|
|
|
|
dnl directory; it is already contained in a preceding -L
|
|
|
|
dnl option.
|
|
|
|
names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'`
|
|
|
|
;;
|
|
|
|
*)
|
|
|
|
dnl Most likely an immediate library name.
|
|
|
|
LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep"
|
|
|
|
LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep"
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
done
|
|
|
|
fi
|
|
|
|
else
|
|
|
|
dnl Didn't find the library; assume it is in the system directories
|
|
|
|
dnl known to the linker and runtime loader. (All the system
|
|
|
|
dnl directories known to the linker should also be known to the
|
|
|
|
dnl runtime loader, otherwise the system is severely misconfigured.)
|
2020-01-30 13:18:13 +01:00
|
|
|
if test "x$lib_type" = "xauto" || test "x$lib_type" = "xshared"; then
|
gcc: Add new configure options to allow static libraries to be selected
The motivation behind this change is to make it easier for a user to
link against static libraries on a target where dynamic libraries are
the default library type (for example GNU/Linux).
Further, my motivation is really for linking libraries into GDB,
however, the binutils-gdb/config/ directory is a copy of gcc/config/
so changes for GDB need to be approved by the GCC project first.
After making this change in the gcc/config/ directory I've run
autoreconf on all of the configure scripts in the GCC tree and a
couple have been updated, so I'll use one of these to describe what my
change does.
Consider libcpp, this library links against libiconv. Currently if
the user builds on a system with both static and dynamic libiconv
installed then autotools will pick up the dynamic libiconv by
default. This is almost certainly the right thing to do.
However, if the user wants to link against static libiconv then things
are a little harder, they could remove the dynamic libiconv from their
system, but this is probably a bad idea (other things might depend on
that library), or the user can build their own version of libiconv,
install it into a unique prefix, and then configure gcc using the
--with-libiconv-prefix=DIR flag. This works fine, but is somewhat
annoying, the static library available, I just can't get autotools to
use it.
My change then adds a new flag --with-libiconv-type=TYPE, where type
is either auto, static, or shared. The default auto, ensures we keep
the existing behaviour unchanged.
If the user configures with --with-libiconv-type=static then the
configure script will ignore any dynamic libiconv it finds, and will
only look for a static libiconv, if no static libiconv is found then
the configure will continue as though there is no libiconv at all
available.
Similarly a user can specify --with-libiconv-type=shared and force the
use of shared libiconv, any static libiconv will be ignored.
As I've implemented this change within the AC_LIB_LINKFLAGS_BODY macro
then only libraries configured using the AC_LIB_LINKFLAGS or
AC_LIB_HAVE_LINKFLAGS macros will gain the new configure flag.
If this is accepted into GCC then there will be follow on patches for
binutils and GDB to regenerate some configure scripts in those
projects.
For GCC only two configure scripts needed updated after this commit,
libcpp and libstdc++-v3, both of which link against libiconv.
config/ChangeLog:
* lib-link.m4 (AC_LIB_LINKFLAGS_BODY): Add new
--with-libXXX-type=... option. Use this to guide the selection of
either a shared library or a static library.
libcpp/ChangeLog:
* configure: Regenerate.
libstdc++-v3/ChangeLog:
* configure: Regenerate.
2020-01-22 15:54:26 +01:00
|
|
|
LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name"
|
|
|
|
LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name"
|
|
|
|
else
|
|
|
|
LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l:lib$name.$libext"
|
|
|
|
LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l:lib$name.$libext"
|
|
|
|
fi
|
gettext-sister.m4: Renamed from gettext.m4
config/
2004-09-22 Kelley Cook <kcook@gcc.gnu.org>
* gettext-sister.m4: Renamed from gettext.m4
* codeset.m4, gettext.m4, glibc21.m4, iconv.m4, intdiv0.m4, po.m4,
inttypes.m4, inttypes-pri.m4, inttypes_h.m4, lcmessage.m4, lib-ld.m4,
lib-link.m4, lib-prefix.m4, nls.m4, progtest.m4, stdint_h.m4,
uintmax_t.m4, ulonglong.m4: Import from gettext-0.12.1 sources.
gcc/
2004-09-22 Kelley Cook <kcook@gcc.gnu.org>
* aclocal.m4: Update for rename of gettext-sister.m4.
libcpp/
2004-09-22 Kelley Cook <kcook@gcc.gnu.org>
* Makefile.in (aclocal.m4): Update dependencies.
* configure.ac (AC_CONFIG_MACRO_DIR): New.
* aclocal.m4, configure: Regenerate.
intl/
2004-09-22 Kelley Cook <kcook@gcc.gnu.org>
* configure.ac (AC_CONFIG_MACRO_DIR): New.
(ACLOCAL, AUTOCONF, AUTOHEADER, MAINT): Substitute.
* Makefile.in: Update with maintainer mode rules.
* README: Update aclocal regeneration instructions.
* aclocal.m4, configure: Regenerate.
From-SVN: r87900
2004-09-23 01:53:59 +02:00
|
|
|
fi
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
done
|
|
|
|
if test "X$rpathdirs" != "X"; then
|
|
|
|
if test -n "$hardcode_libdir_separator"; then
|
|
|
|
dnl Weird platform: only the last -rpath option counts, the user must
|
|
|
|
dnl pass all path elements in one option. We can arrange that for a
|
|
|
|
dnl single library, but not when more than one $LIBNAMEs are used.
|
|
|
|
alldirs=
|
|
|
|
for found_dir in $rpathdirs; do
|
|
|
|
alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir"
|
|
|
|
done
|
|
|
|
dnl Note: hardcode_libdir_flag_spec uses $libdir and $wl.
|
|
|
|
acl_save_libdir="$libdir"
|
|
|
|
libdir="$alldirs"
|
|
|
|
eval flag=\"$hardcode_libdir_flag_spec\"
|
|
|
|
libdir="$acl_save_libdir"
|
|
|
|
LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag"
|
|
|
|
else
|
|
|
|
dnl The -rpath options are cumulative.
|
|
|
|
for found_dir in $rpathdirs; do
|
|
|
|
acl_save_libdir="$libdir"
|
|
|
|
libdir="$found_dir"
|
|
|
|
eval flag=\"$hardcode_libdir_flag_spec\"
|
|
|
|
libdir="$acl_save_libdir"
|
|
|
|
LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag"
|
|
|
|
done
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
if test "X$ltrpathdirs" != "X"; then
|
|
|
|
dnl When using libtool, the option that works for both libraries and
|
|
|
|
dnl executables is -R. The -R options are cumulative.
|
|
|
|
for found_dir in $ltrpathdirs; do
|
|
|
|
LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir"
|
|
|
|
done
|
|
|
|
fi
|
|
|
|
])
|
|
|
|
|
|
|
|
dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR,
|
|
|
|
dnl unless already present in VAR.
|
|
|
|
dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes
|
|
|
|
dnl contains two or three consecutive elements that belong together.
|
|
|
|
AC_DEFUN([AC_LIB_APPENDTOVAR],
|
|
|
|
[
|
|
|
|
for element in [$2]; do
|
|
|
|
haveit=
|
|
|
|
for x in $[$1]; do
|
|
|
|
AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
|
|
|
|
if test "X$x" = "X$element"; then
|
|
|
|
haveit=yes
|
|
|
|
break
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
if test -z "$haveit"; then
|
|
|
|
[$1]="${[$1]}${[$1]:+ }$element"
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
])
|