]> granicus.if.org Git - vim/commitdiff
updated for version 7.3.050 v7.3.050
authorBram Moolenaar <Bram@vim.org>
Wed, 3 Nov 2010 21:32:24 +0000 (22:32 +0100)
committerBram Moolenaar <Bram@vim.org>
Wed, 3 Nov 2010 21:32:24 +0000 (22:32 +0100)
Problem:    The link script is clumsy.
Solution:   Use the --as-needed linker option if available. (Kirill A.
            Shutemov)

src/Makefile
src/auto/configure
src/config.mk.in
src/configure.in
src/link.sh
src/version.c

index ad9b113d4dc2ff38db15adc2c63e9193b0a96b0d..8f47f45d652a6c584169dba19f36f3d7b9a996a9 100644 (file)
@@ -1700,7 +1700,8 @@ $(VIMTARGET): auto/config.mk objects $(OBJ) version.c version.h
        $(CCC) version.c -o objects/version.o
        @LINK="$(PURIFY) $(SHRPENV) $(CClink) $(ALL_LIB_DIRS) $(LDFLAGS) \
                -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
        cd xxd; CC="$(CC)" CFLAGS="$(CPPFLAGS) $(CFLAGS)" \
index f18f5e5ae048e757e4bc8aa46f98dbb8811723bd..3367441836e5a35eb908e39831a080bb869d24a9 100755 (executable)
@@ -593,6 +593,7 @@ ac_includes_default="\
 
 ac_subst_vars='LTLIBOBJS
 LIBOBJS
+LINK_AS_NEEDED
 DEPEND_CFLAGS_FILTER
 MAKEMO
 MSGFMT
@@ -12404,6 +12405,23 @@ $as_echo "no" >&6; }
 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"
 
 cat >confcache <<\_ACEOF
index 7154114ed163079d44cfdf721ceb6a0d62af50e9..3b08766d1b09f76c23965b932a26a953d5c02424 100644 (file)
@@ -30,6 +30,7 @@ TAGPRG                = @TAGPRG@
 CPP            = @CPP@
 CPP_MM         = @CPP_MM@
 DEPEND_CFLAGS_FILTER = @DEPEND_CFLAGS_FILTER@
+LINK_AS_NEEDED = @LINK_AS_NEEDED@
 X_CFLAGS       = @X_CFLAGS@
 X_LIBS_DIR     = @X_LIBS@
 X_PRE_LIBS     = @X_PRE_LIBS@
index 27bad25a1a60b860fc0b04edbe77fc823af755e8..6ffc675d955f1467db7b1398fc1f85e134c23911 100644 (file)
@@ -3527,6 +3527,23 @@ if test "$GCC" = yes; then
 fi
 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
 AC_OUTPUT(auto/config.mk:config.mk.in)
 
index 3d90f3cac232fadf74ee07d1874786987f5225a7..71ee061e315f6bdddb8a6b592e4d8cb7b0479561 100755 (executable)
@@ -5,7 +5,7 @@
 # libraries when they exist, but this doesn't mean they are needed for Vim.
 #
 #      Author: Bram Moolenaar
-# Last change: 2006 Sep 26
+# Last change: 2010 Nov 03
 #     License: Public domain
 #
 # Warning: This fails miserably if the linker doesn't return an error code!
 echo "$LINK " >link.cmd
 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
 # 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: 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."
@@ -124,6 +136,8 @@ if test -f auto/link.sed -a ! -s auto/link.sed -a ! -f link3.sed; then
   fi
 fi
 
+fi
+
 #
 # cleanup
 #
index fbca25ecb99792297f2d1c2db080621e9320562a..8756e19bbd587674b968c7c0a6e0c4991c958ab6 100644 (file)
@@ -714,6 +714,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    50,
 /**/
     49,
 /**/