From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 11986 invoked from network); 19 Apr 2001 14:41:58 -0000 Received: from sunsite.dk (130.225.51.30) by ns1.primenet.com.au with SMTP; 19 Apr 2001 14:41:58 -0000 Received: (qmail 20559 invoked by alias); 19 Apr 2001 14:41:50 -0000 Mailing-List: contact zsh-workers-help@sunsite.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 14033 Received: (qmail 20538 invoked from network); 19 Apr 2001 14:41:49 -0000 Date: Thu, 19 Apr 2001 10:41:46 -0400 From: Clint Adams To: zsh-workers@sunsite.dk Subject: PATCH: reduce unnecessary linking Message-ID: <20010419104146.A25004@dman.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.2.5i This could probably use some tidying. Index: acconfig.h =================================================================== RCS file: /cvsroot/zsh/zsh/acconfig.h,v retrieving revision 1.6 diff -u -r1.6 acconfig.h --- acconfig.h 2001/04/12 04:08:36 1.6 +++ acconfig.h 2001/04/19 14:38:12 @@ -317,3 +317,9 @@ /* Define if you have the terminfo strnames symbol. */ #undef HAVE_STRNAMES + +/* Define if you have the cap library. */ +#undef HAVE_LIBCAP + +/* Define if you have the socket library. */ +#undef HAVE_LIBSOCKET Index: aczsh.m4 =================================================================== RCS file: /cvsroot/zsh/zsh/aczsh.m4,v retrieving revision 1.8 diff -u -r1.8 aczsh.m4 --- aczsh.m4 2001/03/07 11:40:48 1.8 +++ aczsh.m4 2001/04/19 14:38:12 @@ -683,3 +683,27 @@ then LIBS="$4" else LIBS="$enable_libs" fi)]) + +dnl zsh_SEARCH_LIBS(FUNCTION, SEARCH-LIBS [, ACTION-IF-FOUND +dnl [, ACTION-IF-NOT-FOUND [, OTHER-LIBRARIES]]]) +dnl Search for a library defining FUNC, if it's not already available. + +AC_DEFUN(zsh_SEARCH_LIBS, +[AC_PREREQ([2.13]) +AC_CACHE_CHECK([for library containing $1], [ac_cv_search_$1], +[ac_func_search_save_LIBS="$LIBS" +ac_cv_search_$1="no" +AC_TRY_LINK_FUNC([$1], [ac_cv_search_$1="none required"]) +test "$ac_cv_search_$1" = "no" && for i in $2; do +LIBS="-l$i $5 $ac_func_search_save_LIBS" +AC_TRY_LINK_FUNC([$1], +[ac_cv_search_$1="-l$i" +break]) +done +LIBS="$ac_func_search_save_LIBS"]) +if test "$ac_cv_search_$1" != "no"; then + test "$ac_cv_search_$1" = "none required" || ZS_LIBS="$ac_cv_search_$1" + $3 +else : + $4 +fi]) Index: configure.in =================================================================== RCS file: /cvsroot/zsh/zsh/configure.in,v retrieving revision 1.43 diff -u -r1.43 configure.in --- configure.in 2001/04/12 04:08:36 1.43 +++ configure.in 2001/04/19 14:38:12 @@ -504,7 +504,7 @@ dnl may happen. AC_CHECK_LIB(c, printf, [LIBS="$LIBS -lc"]) -AC_CHECK_LIB(m, pow) +AC_CHECK_LIB(m, pow, [LIBS_M="-lm"]) dnl Prefer BSD termcap library to SysV curses library, except on certain dnl SYSV-derived systems. @@ -514,7 +514,12 @@ *) termcap_curses_order="termcap curses ncurses" ;; esac -AC_SEARCH_LIBS(tgetent, [$termcap_curses_order]) +zsh_SEARCH_LIBS(tgetent, [$termcap_curses_order]) +LIBS_TERMCAP=$ZS_LIBS + +zsh_SEARCH_LIBS(tigetstr, [$termcap_curses_order]) +LIBS_TERMINFO=$ZS_LIBS + AC_MSG_CHECKING(if boolcodes is available) AC_TRY_COMPILE([#include #include ], [char **test = boolcodes;], @@ -549,7 +554,8 @@ dnl Some systems (Solaris 2.x, Linux Redhat 5.x) require dnl libnsl (Network Services Library) to find yp_all -AC_SEARCH_LIBS(yp_all, nsl) +zsh_SEARCH_LIBS(yp_all, nsl) +LIBS_YP=$ZS_LIBS dnl I am told that told that unicos reqire these for nis_list if test `echo $host_os | sed 's/^\(unicos\).*/\1/'` = unicos; then @@ -560,9 +566,11 @@ AC_CHECK_LIB(dl, dlopen) fi -AC_CHECK_LIB(cap, cap_get_proc) +AC_CHECK_LIB(cap, cap_get_proc, [LIBS_CAP="-lcap" +AC_DEFINE(HAVE_LIBCAP)]) -AC_CHECK_LIB(socket, socket) +AC_CHECK_LIB(socket, socket, [LIBS_SOCKET="-lsocket" +AC_DEFINE(HAVE_LIBSOCKET)]) dnl --------------------- dnl CHECK TERMCAP LIBRARY @@ -831,6 +839,9 @@ dnl need to integrate this function dnl AC_FUNC_STRFTIME +SAVELIBS=$LIBS +LIBS="$LIBS_TERMCAP $LIBS_TERMINFO $LIBS" + AC_CHECK_FUNCS(strftime difftime gettimeofday \ select poll \ readlink lstat lchown faccessx fchdir ftruncate \ @@ -887,6 +898,8 @@ AC_DEFINE(TGETENT_ACCEPTS_NULL) fi +LIBS=$SAVELIBS + AC_FUNC_MMAP if test x$ac_cv_func_mmap_fixed_mapped = xyes; then AC_CHECK_FUNCS(munmap msync) @@ -1675,10 +1688,16 @@ test "$zsh_cv_shared_environ" = yes || dynamic=no dnl test "$zsh_cv_sys_dynamic_broken" = no || dynamic=no if test "$ac_cv_func_tgetent" = yes; then + SAVELIBS=$LIBS + LIBS="$LIBS_TERMCAP $LIBS" zsh_SHARED_FUNCTION([tgetent]) + LIBS=$SAVELIBS fi if test "$ac_cv_func_tigetstr" = yes; then + SAVELIBS=$LIBS + LIBS="$LIBS_TERMINFO $LIBS" zsh_SHARED_FUNCTION([tigetstr]) + LIBS=$SAVELIBS fi fi @@ -1752,6 +1771,12 @@ AC_SUBST(MOD_IMPORT_VARIABLE)dnl AC_SUBST(MOD_IMPORT_FUNCTION)dnl AC_SUBST(EXTRAZSHOBJS)dnl +AC_SUBST(LIBS_M)dnl +AC_SUBST(LIBS_CAP)dnl +AC_SUBST(LIBS_SOCKET)dnl +AC_SUBST(LIBS_TERMCAP)dnl +AC_SUBST(LIBS_TERMINFO)dnl +AC_SUBST(LIBS_YP)dnl # Generate config.modules. We look for *.mdd files in first and second # level subdirectories. Any existing line not containing 'auto=y' will be Index: Config/defs.mk.in =================================================================== RCS file: /cvsroot/zsh/zsh/Config/defs.mk.in,v retrieving revision 1.4 diff -u -r1.4 defs.mk.in --- Config/defs.mk.in 2000/12/04 19:21:07 1.4 +++ Config/defs.mk.in 2001/04/19 14:38:12 @@ -63,6 +63,14 @@ EXPOPT = @EXPOPT@ IMPOPT = @IMPOPT@ +# extra libraries +LIBS_M = @LIBS_M@ +LIBS_CAP = @LIBS_CAP@ +LIBS_SOCKET = @LIBS_SOCKET@ +LIBS_TERMCAP = @LIBS_TERMCAP@ +LIBS_TERMINFO = @LIBS_TERMINFO@ +LIBS_YP = @LIBS_YP@ + # utilities AWK = @AWK@ YODL = @YODL@ Index: Src/Makefile.in =================================================================== RCS file: /cvsroot/zsh/zsh/Src/Makefile.in,v retrieving revision 1.7 diff -u -r1.7 Makefile.in --- Src/Makefile.in 2000/11/26 20:01:03 1.7 +++ Src/Makefile.in 2001/04/19 14:38:12 @@ -82,11 +82,11 @@ zsh$(EXEEXT): $(@L@IBZSH) $(@L@STMP) $(MAIN_OBJS) zsh.export $(EXTRAZSHOBJS) rm -f $@ - $(@L@DRUNPATH) $(LINK) $(MAIN_OBJS) $(EXTRAZSHOBJS) $(@L@LIST) $(ZSH_@E@XPORT) $(@L@IBZSH) $(LIBS) + $(@L@DRUNPATH) $(LINK) $(MAIN_OBJS) $(EXTRAZSHOBJS) $(@L@LIST) $(ZSH_@E@XPORT) $(@L@IBZSH) $(LIBS_M) $(LIBS_TERMCAP) $(LIBS_YP) $(LIBS) $(LIBZSH): $(LIBOBJS) $(NSTMP) rm -f $@ - $(DLLINK) $(LIBOBJS) $(NLIST) $(LIBS) + $(DLLINK) $(LIBOBJS) $(NLIST) $(LIBS_M) $(LIBS_TERMCAP) $(LIBS) zsh.res.o: $(sdir)/zsh.rc $(sdir)/zsh.ico windres -O coff --include-dir $(sdir) -i $(sdir)/zsh.rc -o zsh.res.o Index: Src/mkmakemod.sh =================================================================== RCS file: /cvsroot/zsh/zsh/Src/mkmakemod.sh,v retrieving revision 1.8 diff -u -r1.8 mkmakemod.sh --- Src/mkmakemod.sh 2001/04/19 01:44:30 1.8 +++ Src/mkmakemod.sh 2001/04/19 14:38:12 @@ -27,6 +27,7 @@ # autoprefixconds like autoinfixconds, but for prefix condition codes # autoparams parameters defined by the module, for autoloading # automathfuncs math functions defined by the module, for autoloading +# extralibs libraries specific to this module (default none) # objects .o files making up this module (*must* be defined) # proto .syms files for this module (default generated from $objects) # headers extra headers for this module (default none) @@ -190,7 +191,8 @@ unset name moddeps nozshdep alwayslink hasexport unset autobins autoinfixconds autoprefixconds autoparams automathfuncs - unset objects proto headers hdrdeps otherincs + unset extralibs objects proto headers hdrdeps otherincs + unset EXTRALIBS . $top_srcdir/$the_subdir/${mddname}.mdd q_name=`echo $name | sed 's,Q,Qq,g;s,_,Qu,g;s,/,Qs,g'` test -n "${moddeps+set}" || moddeps= @@ -199,6 +201,24 @@ proto=`echo $objects '' | sed 's,\.o ,.syms ,g'` dobjects=`echo $objects '' | sed 's,\.o ,..o ,g'` + + for lib in $extralibs; do + case $lib in + m) EXTRALIBS="$EXTRALIBS \$(LIBS_M)" + ;; + cap) EXTRALIBS="$EXTRALIBS \$(LIBS_CAP)" + ;; + socket) EXTRALIBS="$EXTRALIBS \$(LIBS_SOCKET)" + ;; + termcap) EXTRALIBS="$EXTRALIBS \$(LIBS_TERMCAP)" + ;; + terminfo) EXTRALIBS="$EXTRALIBS \$(LIBS_TERMINFO)" + ;; + yp) EXTRALIBS="$EXTRALIBS \$(LIBS_YP)" + ;; + esac + done + modhdeps= mododeps= exportdeps= @@ -302,6 +322,7 @@ echo "NXPIMP_${mddname} =" echo "LINKMODS_${mddname} = $mododeps" echo "NOLINKMODS_${mddname} = " + echo "EXTRALIBS_${mddname} = $EXTRALIBS" echo echo "proto.${mddname}: \$(EPRO_${mddname})" echo "\$(SYMS_${mddname}): \$(PROTODEPS)" @@ -328,7 +349,7 @@ echo echo "${mddname}.\$(DL_EXT): \$(MODDOBJS_${mddname}) ${mddname}.export $exportdeps \$(@LINKMODS@_${mddname})" echo ' rm -f $@' - echo " \$(DLLINK) \$(@E@XPIMP_$mddname) \$(@E@NTRYOPT) \$(MODDOBJS_${mddname}) \$(@LINKMODS@_${mddname}) \$(LIBS) " + echo " \$(DLLINK) \$(@E@XPIMP_$mddname) \$(@E@NTRYOPT) \$(MODDOBJS_${mddname}) \$(@LINKMODS@_${mddname}) $EXTRALIBS \$(LIBS)" echo fi echo "${mddname}.mdhi: ${mddname}.mdhs \$(INCS_${mddname})" Index: Src/zsh.mdd =================================================================== RCS file: /cvsroot/zsh/zsh/Src/zsh.mdd,v retrieving revision 1.7 diff -u -r1.7 zsh.mdd --- Src/zsh.mdd 2001/04/02 14:36:38 1.7 +++ Src/zsh.mdd 2001/04/19 14:38:12 @@ -17,6 +17,8 @@ headers="../config.h system.h zsh.h sigcount.h signals.h \ prototypes.h hashtable.h ztype.h" +extralibs="m termcap yp" + :<<\Make @CONFIG_MK@ Index: Src/Modules/cap.mdd =================================================================== RCS file: /cvsroot/zsh/zsh/Src/Modules/cap.mdd,v retrieving revision 1.2 diff -u -r1.2 cap.mdd --- Src/Modules/cap.mdd 2000/11/26 20:01:03 1.2 +++ Src/Modules/cap.mdd 2001/04/19 14:38:12 @@ -5,3 +5,5 @@ autobins="cap getcap setcap" objects="cap.o" + +extralibs="cap" Index: Src/Modules/termcap.mdd =================================================================== RCS file: /cvsroot/zsh/zsh/Src/Modules/termcap.mdd,v retrieving revision 1.4 diff -u -r1.4 termcap.mdd --- Src/Modules/termcap.mdd 2001/04/09 17:26:59 1.4 +++ Src/Modules/termcap.mdd 2001/04/19 14:38:12 @@ -15,3 +15,5 @@ autobins="echotc" objects="termcap.o" + +extralibs="termcap" Index: Src/Modules/terminfo.mdd =================================================================== RCS file: /cvsroot/zsh/zsh/Src/Modules/terminfo.mdd,v retrieving revision 1.6 diff -u -r1.6 terminfo.mdd --- Src/Modules/terminfo.mdd 2001/04/09 17:26:59 1.6 +++ Src/Modules/terminfo.mdd 2001/04/19 14:38:12 @@ -16,3 +16,5 @@ autoparams="terminfo" objects="terminfo.o" + +extralibs="terminfo"