Sync with binutils: GCC: Pass --plugin to AR and RANLIB

Sync with binutils for building binutils with LTO:

50ad1254d50 GCC: Pass --plugin to AR and RANLIB

Detect GCC LTO plugin.  Pass --plugin to AR and RANLIB to support LTO
build.

ChangeLog:

	* Makefile.tpl (AR): Add @AR_PLUGIN_OPTION@
	(RANLIB): Add @RANLIB_PLUGIN_OPTION@.
	* configure.ac: Include config/gcc-plugin.m4.
	AC_SUBST AR_PLUGIN_OPTION and RANLIB_PLUGIN_OPTION.
	* libtool.m4 (_LT_CMD_OLD_ARCHIVE): Pass --plugin to AR and
	RANLIB if possible.
	* Makefile.in: Regenerated.
	* configure: Likewise.

config/

	* gcc-plugin.m4 (GCC_PLUGIN_OPTION): New.

libiberty/

	* Makefile.in (AR): Add @AR_PLUGIN_OPTION@
	(RANLIB): Add @RANLIB_PLUGIN_OPTION@.
	(configure_deps): Depend on ../config/gcc-plugin.m4.
	* configure.ac: AC_SUBST AR_PLUGIN_OPTION and
	RANLIB_PLUGIN_OPTION.
	* aclocal.m4: Regenerated.
	* configure: Likewise.

zlib/

	* configure: Regenerated.
This commit is contained in:
H.J. Lu 2021-11-13 06:11:41 -08:00
parent 807ad4bc85
commit bf8cdd3511
11 changed files with 191 additions and 10 deletions

View File

@ -418,7 +418,7 @@ MAKEINFOFLAGS = --split-size=5000000
# --------------------------------------------- # ---------------------------------------------
AS = @AS@ AS = @AS@
AR = @AR@ AR = @AR@ @AR_PLUGIN_OPTION@
AR_FLAGS = rc AR_FLAGS = rc
CC = @CC@ CC = @CC@
CXX = @CXX@ CXX = @CXX@
@ -429,7 +429,7 @@ LIPO = @LIPO@
NM = @NM@ NM = @NM@
OBJDUMP = @OBJDUMP@ OBJDUMP = @OBJDUMP@
OTOOL = @OTOOL@ OTOOL = @OTOOL@
RANLIB = @RANLIB@ RANLIB = @RANLIB@ @RANLIB_PLUGIN_OPTION@
READELF = @READELF@ READELF = @READELF@
STRIP = @STRIP@ STRIP = @STRIP@
WINDRES = @WINDRES@ WINDRES = @WINDRES@
@ -66653,6 +66653,7 @@ AUTOCONF = autoconf
$(srcdir)/configure: @MAINT@ $(srcdir)/configure.ac $(srcdir)/config/acx.m4 \ $(srcdir)/configure: @MAINT@ $(srcdir)/configure.ac $(srcdir)/config/acx.m4 \
$(srcdir)/config/override.m4 $(srcdir)/config/proginstall.m4 \ $(srcdir)/config/override.m4 $(srcdir)/config/proginstall.m4 \
$(srcdir)/config/elf.m4 $(srcdir)/config/isl.m4 \ $(srcdir)/config/elf.m4 $(srcdir)/config/isl.m4 \
$(srcdir)/config/gcc-plugin.m4 \
$(srcdir)/libtool.m4 $(srcdir)/ltoptions.m4 $(srcdir)/ltsugar.m4 \ $(srcdir)/libtool.m4 $(srcdir)/ltoptions.m4 $(srcdir)/ltsugar.m4 \
$(srcdir)/ltversion.m4 $(srcdir)/lt~obsolete.m4 $(srcdir)/ltversion.m4 $(srcdir)/lt~obsolete.m4
cd $(srcdir) && $(AUTOCONF) cd $(srcdir) && $(AUTOCONF)

View File

@ -421,7 +421,7 @@ MAKEINFOFLAGS = --split-size=5000000
# --------------------------------------------- # ---------------------------------------------
AS = @AS@ AS = @AS@
AR = @AR@ AR = @AR@ @AR_PLUGIN_OPTION@
AR_FLAGS = rc AR_FLAGS = rc
CC = @CC@ CC = @CC@
CXX = @CXX@ CXX = @CXX@
@ -432,7 +432,7 @@ LIPO = @LIPO@
NM = @NM@ NM = @NM@
OBJDUMP = @OBJDUMP@ OBJDUMP = @OBJDUMP@
OTOOL = @OTOOL@ OTOOL = @OTOOL@
RANLIB = @RANLIB@ RANLIB = @RANLIB@ @RANLIB_PLUGIN_OPTION@
READELF = @READELF@ READELF = @READELF@
STRIP = @STRIP@ STRIP = @STRIP@
WINDRES = @WINDRES@ WINDRES = @WINDRES@
@ -2035,6 +2035,7 @@ AUTOCONF = autoconf
$(srcdir)/configure: @MAINT@ $(srcdir)/configure.ac $(srcdir)/config/acx.m4 \ $(srcdir)/configure: @MAINT@ $(srcdir)/configure.ac $(srcdir)/config/acx.m4 \
$(srcdir)/config/override.m4 $(srcdir)/config/proginstall.m4 \ $(srcdir)/config/override.m4 $(srcdir)/config/proginstall.m4 \
$(srcdir)/config/elf.m4 $(srcdir)/config/isl.m4 \ $(srcdir)/config/elf.m4 $(srcdir)/config/isl.m4 \
$(srcdir)/config/gcc-plugin.m4 \
$(srcdir)/libtool.m4 $(srcdir)/ltoptions.m4 $(srcdir)/ltsugar.m4 \ $(srcdir)/libtool.m4 $(srcdir)/ltoptions.m4 $(srcdir)/ltsugar.m4 \
$(srcdir)/ltversion.m4 $(srcdir)/lt~obsolete.m4 $(srcdir)/ltversion.m4 $(srcdir)/lt~obsolete.m4
cd $(srcdir) && $(AUTOCONF) cd $(srcdir) && $(AUTOCONF)

View File

@ -129,3 +129,31 @@ AC_DEFUN([GCC_ENABLE_PLUGINS],
fi fi
fi fi
]) ])
dnl
dnl
dnl GCC_PLUGIN_OPTION
dnl (SHELL-CODE_HANDLER)
dnl
AC_DEFUN([GCC_PLUGIN_OPTION],[dnl
AC_MSG_CHECKING([for -plugin option])
plugin_names="liblto_plugin.so liblto_plugin-0.dll cyglto_plugin-0.dll"
plugin_option=
for plugin in $plugin_names; do
plugin_so=`${CC} ${CFLAGS} --print-prog-name $plugin`
if test x$plugin_so = x$plugin; then
plugin_so=`${CC} ${CFLAGS} --print-file-name $plugin`
fi
if test x$plugin_so != x$plugin; then
plugin_option="--plugin $plugin_so"
break
fi
done
if test -n "$plugin_option"; then
$1="$plugin_option"
AC_MSG_RESULT($plugin_option)
else
AC_MSG_RESULT([no])
fi
])

39
configure vendored
View File

@ -619,6 +619,8 @@ GFORTRAN_FOR_TARGET
GCC_FOR_TARGET GCC_FOR_TARGET
CXX_FOR_TARGET CXX_FOR_TARGET
CC_FOR_TARGET CC_FOR_TARGET
RANLIB_PLUGIN_OPTION
AR_PLUGIN_OPTION
GDCFLAGS GDCFLAGS
READELF READELF
OTOOL OTOOL
@ -12745,6 +12747,43 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for -plugin option" >&5
$as_echo_n "checking for -plugin option... " >&6; }
plugin_names="liblto_plugin.so liblto_plugin-0.dll cyglto_plugin-0.dll"
plugin_option=
for plugin in $plugin_names; do
plugin_so=`${CC} ${CFLAGS} --print-prog-name $plugin`
if test x$plugin_so = x$plugin; then
plugin_so=`${CC} ${CFLAGS} --print-file-name $plugin`
fi
if test x$plugin_so != x$plugin; then
plugin_option="--plugin $plugin_so"
break
fi
done
if test -n "$plugin_option"; then
PLUGIN_OPTION="$plugin_option"
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $plugin_option" >&5
$as_echo "$plugin_option" >&6; }
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
fi
AR_PLUGIN_OPTION=
RANLIB_PLUGIN_OPTION=
if test -n "$PLUGIN_OPTION"; then
if $AR --help 2>&1 | grep -q "\--plugin"; then
AR_PLUGIN_OPTION="$PLUGIN_OPTION"
fi
if $RANLIB --help 2>&1 | grep -q "\--plugin"; then
RANLIB_PLUGIN_OPTION="$PLUGIN_OPTION"
fi
fi
# Target tools. # Target tools.
# Check whether --with-build-time-tools was given. # Check whether --with-build-time-tools was given.

View File

@ -24,6 +24,7 @@ m4_include(config/override.m4)
m4_include(config/proginstall.m4) m4_include(config/proginstall.m4)
m4_include(config/elf.m4) m4_include(config/elf.m4)
m4_include(config/ax_cxx_compile_stdcxx.m4) m4_include(config/ax_cxx_compile_stdcxx.m4)
m4_include(config/gcc-plugin.m4)
m4_include([libtool.m4]) m4_include([libtool.m4])
m4_include([ltoptions.m4]) m4_include([ltoptions.m4])
m4_include([ltsugar.m4]) m4_include([ltsugar.m4])
@ -3535,6 +3536,20 @@ AC_SUBST(CXXFLAGS)
AC_SUBST(GDC) AC_SUBST(GDC)
AC_SUBST(GDCFLAGS) AC_SUBST(GDCFLAGS)
GCC_PLUGIN_OPTION(PLUGIN_OPTION)
AR_PLUGIN_OPTION=
RANLIB_PLUGIN_OPTION=
if test -n "$PLUGIN_OPTION"; then
if $AR --help 2>&1 | grep -q "\--plugin"; then
AR_PLUGIN_OPTION="$PLUGIN_OPTION"
fi
if $RANLIB --help 2>&1 | grep -q "\--plugin"; then
RANLIB_PLUGIN_OPTION="$PLUGIN_OPTION"
fi
fi
AC_SUBST(AR_PLUGIN_OPTION)
AC_SUBST(RANLIB_PLUGIN_OPTION)
# Target tools. # Target tools.
AC_ARG_WITH([build-time-tools], AC_ARG_WITH([build-time-tools],
[AS_HELP_STRING([--with-build-time-tools=PATH], [AS_HELP_STRING([--with-build-time-tools=PATH],

View File

@ -50,13 +50,13 @@ mkinstalldirs = $(SHELL) $(libiberty_topdir)/mkinstalldirs
# Some compilers can't handle cc -c blah.c -o foo/blah.o. # Some compilers can't handle cc -c blah.c -o foo/blah.o.
OUTPUT_OPTION = @OUTPUT_OPTION@ OUTPUT_OPTION = @OUTPUT_OPTION@
AR = @AR@ AR = @AR@ @AR_PLUGIN_OPTION@
AR_FLAGS = rc AR_FLAGS = rc
CC = @CC@ CC = @CC@
CFLAGS = @CFLAGS@ CFLAGS = @CFLAGS@
CPPFLAGS = @CPPFLAGS@ CPPFLAGS = @CPPFLAGS@
RANLIB = @RANLIB@ RANLIB = @RANLIB@ @RANLIB_PLUGIN_OPTION@
MAKEINFO = @MAKEINFO@ MAKEINFO = @MAKEINFO@
PERL = @PERL@ PERL = @PERL@
@ -507,6 +507,7 @@ aclocal_deps = \
$(srcdir)/../config/acx.m4 \ $(srcdir)/../config/acx.m4 \
$(srcdir)/../config/cet.m4 \ $(srcdir)/../config/cet.m4 \
$(srcdir)/../config/enable.m4 \ $(srcdir)/../config/enable.m4 \
$(srcdir)/../config/gcc-plugin.m4 \
$(srcdir)/../config/no-executables.m4 \ $(srcdir)/../config/no-executables.m4 \
$(srcdir)/../config/override.m4 \ $(srcdir)/../config/override.m4 \
$(srcdir)/../config/picflag.m4 \ $(srcdir)/../config/picflag.m4 \

View File

@ -15,6 +15,7 @@ m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun
m4_include([../config/acx.m4]) m4_include([../config/acx.m4])
m4_include([../config/cet.m4]) m4_include([../config/cet.m4])
m4_include([../config/enable.m4]) m4_include([../config/enable.m4])
m4_include([../config/gcc-plugin.m4])
m4_include([../config/no-executables.m4]) m4_include([../config/no-executables.m4])
m4_include([../config/picflag.m4]) m4_include([../config/picflag.m4])
m4_include([../config/warnings.m4]) m4_include([../config/warnings.m4])

37
libiberty/configure vendored
View File

@ -645,6 +645,8 @@ CPPFLAGS
LDFLAGS LDFLAGS
CFLAGS CFLAGS
CC CC
RANLIB_PLUGIN_OPTION
AR_PLUGIN_OPTION
RANLIB RANLIB
AR AR
host_os host_os
@ -2935,6 +2937,41 @@ else
fi fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for -plugin option" >&5
$as_echo_n "checking for -plugin option... " >&6; }
plugin_names="liblto_plugin.so liblto_plugin-0.dll cyglto_plugin-0.dll"
plugin_option=
for plugin in $plugin_names; do
plugin_so=`${CC} ${CFLAGS} --print-prog-name $plugin`
if test x$plugin_so = x$plugin; then
plugin_so=`${CC} ${CFLAGS} --print-file-name $plugin`
fi
if test x$plugin_so != x$plugin; then
plugin_option="--plugin $plugin_so"
break
fi
done
if test -n "$plugin_option"; then
PLUGIN_OPTION="$plugin_option"
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $plugin_option" >&5
$as_echo "$plugin_option" >&6; }
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
fi
if test -n "$PLUGIN_OPTION"; then
if $AR --help 2>&1 | grep -q "\--plugin"; then
AR_PLUGIN_OPTION="$PLUGIN_OPTION"
fi
if $RANLIB --help 2>&1 | grep -q "\--plugin"; then
RANLIB_PLUGIN_OPTION="$PLUGIN_OPTION"
fi
fi
# Add --enable-multilib to configure. # Add --enable-multilib to configure.
# Default to --enable-multilib # Default to --enable-multilib
# Check whether --enable-multilib was given. # Check whether --enable-multilib was given.

View File

@ -113,6 +113,18 @@ dnl to call AC_CHECK_PROG.
AC_CHECK_TOOL(AR, ar) AC_CHECK_TOOL(AR, ar)
AC_CHECK_TOOL(RANLIB, ranlib, :) AC_CHECK_TOOL(RANLIB, ranlib, :)
GCC_PLUGIN_OPTION(PLUGIN_OPTION)
if test -n "$PLUGIN_OPTION"; then
if $AR --help 2>&1 | grep -q "\--plugin"; then
AR_PLUGIN_OPTION="$PLUGIN_OPTION"
AC_SUBST(AR_PLUGIN_OPTION)
fi
if $RANLIB --help 2>&1 | grep -q "\--plugin"; then
RANLIB_PLUGIN_OPTION="$PLUGIN_OPTION"
AC_SUBST(RANLIB_PLUGIN_OPTION)
fi
fi
dnl When switching to automake, replace the following with AM_ENABLE_MULTILIB. dnl When switching to automake, replace the following with AM_ENABLE_MULTILIB.
# Add --enable-multilib to configure. # Add --enable-multilib to configure.
# Default to --enable-multilib # Default to --enable-multilib

25
libtool.m4 vendored
View File

@ -1325,8 +1325,26 @@ need_locks="$enable_libtool_lock"
# _LT_CMD_OLD_ARCHIVE # _LT_CMD_OLD_ARCHIVE
# ------------------- # -------------------
m4_defun([_LT_CMD_OLD_ARCHIVE], m4_defun([_LT_CMD_OLD_ARCHIVE],
[AC_CHECK_TOOL(AR, ar, false) [plugin_option=
plugin_names="liblto_plugin.so liblto_plugin-0.dll cyglto_plugin-0.dll"
for plugin in $plugin_names; do
plugin_so=`${CC} ${CFLAGS} --print-prog-name $plugin`
if test x$plugin_so = x$plugin; then
plugin_so=`${CC} ${CFLAGS} --print-file-name $plugin`
fi
if test x$plugin_so != x$plugin; then
plugin_option="--plugin $plugin_so"
break
fi
done
AC_CHECK_TOOL(AR, ar, false)
test -z "$AR" && AR=ar test -z "$AR" && AR=ar
if test -n "$plugin_option"; then
if $AR --help 2>&1 | grep -q "\--plugin"; then
AR="$AR $plugin_option"
fi
fi
test -z "$AR_FLAGS" && AR_FLAGS=cru test -z "$AR_FLAGS" && AR_FLAGS=cru
_LT_DECL([], [AR], [1], [The archiver]) _LT_DECL([], [AR], [1], [The archiver])
_LT_DECL([], [AR_FLAGS], [1]) _LT_DECL([], [AR_FLAGS], [1])
@ -1337,6 +1355,11 @@ _LT_DECL([], [STRIP], [1], [A symbol stripping program])
AC_CHECK_TOOL(RANLIB, ranlib, :) AC_CHECK_TOOL(RANLIB, ranlib, :)
test -z "$RANLIB" && RANLIB=: test -z "$RANLIB" && RANLIB=:
if test -n "$plugin_option" && test "$RANLIB" != ":"; then
if $RANLIB --help 2>&1 | grep -q "\--plugin"; then
RANLIB="$RANLIB $plugin_option"
fi
fi
_LT_DECL([], [RANLIB], [1], _LT_DECL([], [RANLIB], [1],
[Commands used to install an old-style archive]) [Commands used to install an old-style archive])

29
zlib/configure vendored
View File

@ -4169,7 +4169,7 @@ case "$host" in
case "$enable_cet" in case "$enable_cet" in
auto) auto)
# Check if target supports multi-byte NOPs # Check if target supports multi-byte NOPs
# and if assembler supports CET insn. # and if compiler and assembler support CET insn.
cet_save_CFLAGS="$CFLAGS" cet_save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -fcf-protection" CFLAGS="$CFLAGS -fcf-protection"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@ -5502,6 +5502,19 @@ test -z "$deplibs_check_method" && deplibs_check_method=unknown
plugin_option=
plugin_names="liblto_plugin.so liblto_plugin-0.dll cyglto_plugin-0.dll"
for plugin in $plugin_names; do
plugin_so=`${CC} ${CFLAGS} --print-prog-name $plugin`
if test x$plugin_so = x$plugin; then
plugin_so=`${CC} ${CFLAGS} --print-file-name $plugin`
fi
if test x$plugin_so != x$plugin; then
plugin_option="--plugin $plugin_so"
break
fi
done
if test -n "$ac_tool_prefix"; then if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
set dummy ${ac_tool_prefix}ar; ac_word=$2 set dummy ${ac_tool_prefix}ar; ac_word=$2
@ -5595,6 +5608,11 @@ else
fi fi
test -z "$AR" && AR=ar test -z "$AR" && AR=ar
if test -n "$plugin_option"; then
if $AR --help 2>&1 | grep -q "\--plugin"; then
AR="$AR $plugin_option"
fi
fi
test -z "$AR_FLAGS" && AR_FLAGS=cru test -z "$AR_FLAGS" && AR_FLAGS=cru
@ -5799,6 +5817,11 @@ else
fi fi
test -z "$RANLIB" && RANLIB=: test -z "$RANLIB" && RANLIB=:
if test -n "$plugin_option" && test "$RANLIB" != ":"; then
if $RANLIB --help 2>&1 | grep -q "\--plugin"; then
RANLIB="$RANLIB $plugin_option"
fi
fi
@ -10735,7 +10758,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF cat > conftest.$ac_ext <<_LT_EOF
#line 10748 "configure" #line 10761 "configure"
#include "confdefs.h" #include "confdefs.h"
#if HAVE_DLFCN_H #if HAVE_DLFCN_H
@ -10841,7 +10864,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF cat > conftest.$ac_ext <<_LT_EOF
#line 10854 "configure" #line 10867 "configure"
#include "confdefs.h" #include "confdefs.h"
#if HAVE_DLFCN_H #if HAVE_DLFCN_H