mirror of
https://github.com/vim/vim.git
synced 2025-10-02 05:04:20 -04:00
updated for version 7.3.050
Problem: The link script is clumsy. Solution: Use the --as-needed linker option if available. (Kirill A. Shutemov)
This commit is contained in:
@@ -1700,7 +1700,8 @@ $(VIMTARGET): auto/config.mk objects $(OBJ) version.c version.h
|
|||||||
$(CCC) version.c -o objects/version.o
|
$(CCC) version.c -o objects/version.o
|
||||||
@LINK="$(PURIFY) $(SHRPENV) $(CClink) $(ALL_LIB_DIRS) $(LDFLAGS) \
|
@LINK="$(PURIFY) $(SHRPENV) $(CClink) $(ALL_LIB_DIRS) $(LDFLAGS) \
|
||||||
-o $(VIMTARGET) $(OBJ) objects/version.o $(ALL_LIBS)" \
|
-o $(VIMTARGET) $(OBJ) objects/version.o $(ALL_LIBS)" \
|
||||||
MAKE="$(MAKE)" sh $(srcdir)/link.sh
|
MAKE="$(MAKE)" LINK_AS_NEEDED=$(LINK_AS_NEEDED) \
|
||||||
|
sh $(srcdir)/link.sh
|
||||||
|
|
||||||
xxd/xxd$(EXEEXT): xxd/xxd.c
|
xxd/xxd$(EXEEXT): xxd/xxd.c
|
||||||
cd xxd; CC="$(CC)" CFLAGS="$(CPPFLAGS) $(CFLAGS)" \
|
cd xxd; CC="$(CC)" CFLAGS="$(CPPFLAGS) $(CFLAGS)" \
|
||||||
|
18
src/auto/configure
vendored
18
src/auto/configure
vendored
@@ -593,6 +593,7 @@ ac_includes_default="\
|
|||||||
|
|
||||||
ac_subst_vars='LTLIBOBJS
|
ac_subst_vars='LTLIBOBJS
|
||||||
LIBOBJS
|
LIBOBJS
|
||||||
|
LINK_AS_NEEDED
|
||||||
DEPEND_CFLAGS_FILTER
|
DEPEND_CFLAGS_FILTER
|
||||||
MAKEMO
|
MAKEMO
|
||||||
MSGFMT
|
MSGFMT
|
||||||
@@ -12404,6 +12405,23 @@ $as_echo "no" >&6; }
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking linker --as-needed support" >&5
|
||||||
|
$as_echo_n "checking linker --as-needed support... " >&6; }
|
||||||
|
LINK_AS_NEEDED=
|
||||||
|
# Check if linker supports --as-needed and --no-as-needed options
|
||||||
|
if $CC -Wl,--help 2>/dev/null | grep as-needed > /dev/null; then
|
||||||
|
LDFLAGS="$LDFLAGS -Wl,--as-needed"
|
||||||
|
LINK_AS_NEEDED=yes
|
||||||
|
fi
|
||||||
|
if test "$LINK_AS_NEEDED" = yes; then
|
||||||
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
|
||||||
|
$as_echo "yes" >&6; }
|
||||||
|
else
|
||||||
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
|
||||||
|
$as_echo "no" >&6; }
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
ac_config_files="$ac_config_files auto/config.mk:config.mk.in"
|
ac_config_files="$ac_config_files auto/config.mk:config.mk.in"
|
||||||
|
|
||||||
cat >confcache <<\_ACEOF
|
cat >confcache <<\_ACEOF
|
||||||
|
@@ -30,6 +30,7 @@ TAGPRG = @TAGPRG@
|
|||||||
CPP = @CPP@
|
CPP = @CPP@
|
||||||
CPP_MM = @CPP_MM@
|
CPP_MM = @CPP_MM@
|
||||||
DEPEND_CFLAGS_FILTER = @DEPEND_CFLAGS_FILTER@
|
DEPEND_CFLAGS_FILTER = @DEPEND_CFLAGS_FILTER@
|
||||||
|
LINK_AS_NEEDED = @LINK_AS_NEEDED@
|
||||||
X_CFLAGS = @X_CFLAGS@
|
X_CFLAGS = @X_CFLAGS@
|
||||||
X_LIBS_DIR = @X_LIBS@
|
X_LIBS_DIR = @X_LIBS@
|
||||||
X_PRE_LIBS = @X_PRE_LIBS@
|
X_PRE_LIBS = @X_PRE_LIBS@
|
||||||
|
@@ -3527,6 +3527,23 @@ if test "$GCC" = yes; then
|
|||||||
fi
|
fi
|
||||||
AC_SUBST(DEPEND_CFLAGS_FILTER)
|
AC_SUBST(DEPEND_CFLAGS_FILTER)
|
||||||
|
|
||||||
|
dnl link.sh tries to avoid overlinking in a hackish way.
|
||||||
|
dnl At least GNU ld supports --as-needed which provides the same functionality
|
||||||
|
dnl at linker level. Let's use it.
|
||||||
|
AC_MSG_CHECKING(linker --as-needed support)
|
||||||
|
LINK_AS_NEEDED=
|
||||||
|
# Check if linker supports --as-needed and --no-as-needed options
|
||||||
|
if $CC -Wl,--help 2>/dev/null | grep as-needed > /dev/null; then
|
||||||
|
LDFLAGS="$LDFLAGS -Wl,--as-needed"
|
||||||
|
LINK_AS_NEEDED=yes
|
||||||
|
fi
|
||||||
|
if test "$LINK_AS_NEEDED" = yes; then
|
||||||
|
AC_MSG_RESULT(yes)
|
||||||
|
else
|
||||||
|
AC_MSG_RESULT(no)
|
||||||
|
fi
|
||||||
|
AC_SUBST(LINK_AS_NEEDED)
|
||||||
|
|
||||||
dnl write output files
|
dnl write output files
|
||||||
AC_OUTPUT(auto/config.mk:config.mk.in)
|
AC_OUTPUT(auto/config.mk:config.mk.in)
|
||||||
|
|
||||||
|
18
src/link.sh
18
src/link.sh
@@ -5,7 +5,7 @@
|
|||||||
# libraries when they exist, but this doesn't mean they are needed for Vim.
|
# libraries when they exist, but this doesn't mean they are needed for Vim.
|
||||||
#
|
#
|
||||||
# Author: Bram Moolenaar
|
# Author: Bram Moolenaar
|
||||||
# Last change: 2006 Sep 26
|
# Last change: 2010 Nov 03
|
||||||
# License: Public domain
|
# License: Public domain
|
||||||
#
|
#
|
||||||
# Warning: This fails miserably if the linker doesn't return an error code!
|
# Warning: This fails miserably if the linker doesn't return an error code!
|
||||||
@@ -16,11 +16,23 @@
|
|||||||
echo "$LINK " >link.cmd
|
echo "$LINK " >link.cmd
|
||||||
exit_value=0
|
exit_value=0
|
||||||
|
|
||||||
|
if test "$LINK_AS_NEEDED" = yes; then
|
||||||
|
echo "link.sh: \$LINK_AS_NEEDED set to 'yes': invoking linker directly."
|
||||||
|
cat link.cmd
|
||||||
|
if sh link.cmd; then
|
||||||
|
exit_value=0
|
||||||
|
echo "link.sh: Linked fine"
|
||||||
|
else
|
||||||
|
exit_value=$?
|
||||||
|
echo "link.sh: Linking failed"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
if test -f auto/link.sed; then
|
||||||
|
|
||||||
#
|
#
|
||||||
# If auto/link.sed already exists, use it. We assume a previous run of
|
# If auto/link.sed already exists, use it. We assume a previous run of
|
||||||
# link.sh has found the correct set of libraries.
|
# link.sh has found the correct set of libraries.
|
||||||
#
|
#
|
||||||
if test -f auto/link.sed; then
|
|
||||||
echo "link.sh: The file 'auto/link.sed' exists, which is going to be used now."
|
echo "link.sh: The file 'auto/link.sed' exists, which is going to be used now."
|
||||||
echo "link.sh: If linking fails, try deleting the auto/link.sed file."
|
echo "link.sh: If linking fails, try deleting the auto/link.sed file."
|
||||||
echo "link.sh: If this fails too, try creating an empty auto/link.sed file."
|
echo "link.sh: If this fails too, try creating an empty auto/link.sed file."
|
||||||
@@ -124,6 +136,8 @@ if test -f auto/link.sed -a ! -s auto/link.sed -a ! -f link3.sed; then
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
#
|
#
|
||||||
# cleanup
|
# cleanup
|
||||||
#
|
#
|
||||||
|
@@ -714,6 +714,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
50,
|
||||||
/**/
|
/**/
|
||||||
49,
|
49,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user