On Mon, Aug 23, 2010 at 03:44:12PM +0300, Kirill A. Shutemov wrote: > link.sh tries to avoid overlinking in a hackish way. > At least GNU ld supports --as-needed which provides the same functionality > at linker level. Let's use it.
Any comments? > Signed-off-by: Kirill A. Shutemov <[email protected]> > --- > src/Makefile | 2 +- > src/config.mk.in | 1 + > src/configure.in | 17 +++++++++++++++++ > src/link.sh | 6 +++++- > 4 files changed, 24 insertions(+), 2 deletions(-) > > diff --git a/src/Makefile b/src/Makefile > index 5c0729f..0156084 100644 > --- a/src/Makefile > +++ b/src/Makefile > @@ -1688,7 +1688,7 @@ $(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)" NO_LINK_SH=$(NO_LINK_SH) sh $(srcdir)/link.sh > > xxd/xxd$(EXEEXT): xxd/xxd.c > cd xxd; CC="$(CC)" CFLAGS="$(CPPFLAGS) $(CFLAGS)" \ > diff --git a/src/config.mk.in b/src/config.mk.in > index 7154114..cd334c6 100644 > --- a/src/config.mk.in > +++ b/src/config.mk.in > @@ -30,6 +30,7 @@ TAGPRG = @TAGPRG@ > CPP = @CPP@ > CPP_MM = @CPP_MM@ > DEPEND_CFLAGS_FILTER = @DEPEND_CFLAGS_FILTER@ > +NO_LINK_SH = @NO_LINK_SH@ > X_CFLAGS = @X_CFLAGS@ > X_LIBS_DIR = @X_LIBS@ > X_PRE_LIBS = @X_PRE_LIBS@ > diff --git a/src/configure.in b/src/configure.in > index 3b9f812..a4e5e74 100644 > --- a/src/configure.in > +++ b/src/configure.in > @@ -3479,6 +3479,23 @@ else > 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) > +NO_LINK_SH= > +# 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" > + NO_LINK_SH=yes > +fi > +if test "$NO_LINK_SH" = yes; then > + AC_MSG_RESULT(yes) > +else > + AC_MSG_RESULT(no) > +fi > +AC_SUBST(NO_LINK_SH) > + > dnl write output files > AC_OUTPUT(auto/config.mk:config.mk.in) > > diff --git a/src/link.sh b/src/link.sh > index 3d90f3c..06632dc 100755 > --- a/src/link.sh > +++ b/src/link.sh > @@ -16,11 +16,15 @@ > echo "$LINK " >link.cmd > exit_value=0 > > +if test "$NO_LINK_SH" = yes; then > + echo "link.sh: \$NO_LINK_SH set to 'yes': no needed in reducing library > set." > + echo > auto/link.sed > +elif 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." > -- > Kirill A. Shutemov > > -- > You received this message from the "vim_dev" maillist. > Do not top-post! Type your reply below the text you are replying to. > For more information, visit http://www.vim.org/maillist.php -- Kirill A. Shutemov -- You received this message from the "vim_dev" maillist. Do not top-post! Type your reply below the text you are replying to. For more information, visit http://www.vim.org/maillist.php
