summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog7
-rw-r--r--Src/Modules/cap.c10
-rw-r--r--Src/Modules/cap.mdd2
-rw-r--r--Src/Modules/db_gdbm.c10
-rw-r--r--Src/Modules/db_gdbm.mdd4
-rw-r--r--Src/Modules/pcre.mdd2
-rw-r--r--Src/mkmakemod.sh5
-rw-r--r--configure.ac43
8 files changed, 52 insertions, 31 deletions
diff --git a/ChangeLog b/ChangeLog
index 12e5e4512..e87b638a1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2026-06-07 Mikael Magnusson <mikachu@gmail.com>
+
+ * 54669: Src/Modules/cap.c, Src/Modules/cap.mdd,
+ Src/Modules/db_gdbm.c, Src/Modules/db_gdbm.mdd,
+ Src/Modules/pcre.mdd, Src/mkmakemod.sh, configure.ac: add
+ --disable-link-all-libs configure option
+
2026-06-06 dana <dana@dana.is>
* unposted: NEWS: better document hlgroups, termquery, etc
diff --git a/Src/Modules/cap.c b/Src/Modules/cap.c
index 6db7cbc2a..a99e15c88 100644
--- a/Src/Modules/cap.c
+++ b/Src/Modules/cap.c
@@ -30,8 +30,6 @@
#include "cap.mdh"
#include "cap.pro"
-#ifdef HAVE_CAP_GET_PROC
-
static int
bin_cap(char *nam, char **argv, UNUSED(Options ops), UNUSED(int func))
{
@@ -116,14 +114,6 @@ bin_setcap(char *nam, char **argv, UNUSED(Options ops), UNUSED(int func))
return ret;
}
-#else /* !HAVE_CAP_GET_PROC */
-
-# define bin_cap bin_notavail
-# define bin_getcap bin_notavail
-# define bin_setcap bin_notavail
-
-#endif /* !HAVE_CAP_GET_PROC */
-
/* module paraphernalia */
static struct builtin bintab[] = {
diff --git a/Src/Modules/cap.mdd b/Src/Modules/cap.mdd
index 905f7ca47..543cf0139 100644
--- a/Src/Modules/cap.mdd
+++ b/Src/Modules/cap.mdd
@@ -1,5 +1,5 @@
name=zsh/cap
-link=dynamic
+link=`if test "x$enable_cap" = xyes; then echo dynamic; else echo no; fi`
load=no
autofeatures="b:cap b:getcap b:setcap"
diff --git a/Src/Modules/db_gdbm.c b/Src/Modules/db_gdbm.c
index 34f577e30..604788ae8 100644
--- a/Src/Modules/db_gdbm.c
+++ b/Src/Modules/db_gdbm.c
@@ -46,12 +46,6 @@ static void myfreeparamnode(HashNode hn);
static int no_database_action = 0;
-/*
- * Make sure we have all the bits I'm using for memory mapping, otherwise
- * I don't know what I'm doing.
- */
-#if defined(HAVE_GDBM_H) && defined(HAVE_GDBM_OPEN)
-
#include <gdbm.h>
static char *backtype = "db/gdbm";
@@ -817,7 +811,3 @@ myfreeparamnode(HashNode hn)
}
zfree(pm, sizeof(struct param));
}
-
-#else
-# error no gdbm
-#endif /* have gdbm */
diff --git a/Src/Modules/db_gdbm.mdd b/Src/Modules/db_gdbm.mdd
index 210c22177..122ba8a36 100644
--- a/Src/Modules/db_gdbm.mdd
+++ b/Src/Modules/db_gdbm.mdd
@@ -1,5 +1,5 @@
name=zsh/db/gdbm
-link='if test "x$ac_cv_lib_gdbm_gdbm_open" = xyes && test "x$ac_cv_header_gdbm_h" = xyes; then
+link='if test "x$enable_gdbm" = xyes; then
echo dynamic
else
echo no
@@ -10,3 +10,5 @@ load=no
autofeatures="b:ztie b:zuntie b:zgdbmpath p:zgdbm_tied"
objects="db_gdbm.o"
+
+libs="@GDBM_LIBS@"
diff --git a/Src/Modules/pcre.mdd b/Src/Modules/pcre.mdd
index 3e1579117..dac271b48 100644
--- a/Src/Modules/pcre.mdd
+++ b/Src/Modules/pcre.mdd
@@ -5,3 +5,5 @@ load=no
autofeatures="b:pcre_compile b:pcre_study b:pcre_match"
objects="pcre.o"
+
+libs="@PCRE_LIBS@"
diff --git a/Src/mkmakemod.sh b/Src/mkmakemod.sh
index 3ccf9c5e5..5e5adc070 100644
--- a/Src/mkmakemod.sh
+++ b/Src/mkmakemod.sh
@@ -28,6 +28,7 @@
# headers extra headers for this module (default none)
# hdrdeps extra headers on which the .mdh depends (default none)
# otherincs extra headers that are included indirectly (default none)
+# libs extra libraries to link this module against (default none)
#
# The .mdd file may also include a Makefile.in fragment between lines
# `:<<\Make' and `Make' -- this will be copied into Makemod.in.
@@ -186,7 +187,7 @@ if $first_stage; then
unset name moddeps nozshdep alwayslink hasexport
unset autofeatures autofeatures_emu
- unset objects proto headers hdrdeps otherincs
+ unset objects proto headers hdrdeps otherincs libs
. $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=
@@ -324,7 +325,7 @@ if $first_stage; then
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}) \$(LIBS) ${libs} "
echo
fi
echo "${mddname}.mdhi: ${mddname}.mdhs \$(INCS_${mddname})"
diff --git a/configure.ac b/configure.ac
index e152588eb..4d348134e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -438,8 +438,15 @@ AS_HELP_STRING([--enable-cap],[enable the search for POSIX capabilities (may req
# Default off for licensing reasons
AC_ARG_ENABLE(gdbm,
-AS_HELP_STRING([--enable-gdbm],[enable the search for the GDBM library (see the zsh/db/gdbm module)]),
-[gdbm="$enableval"], [gdbm=no])
+AS_HELP_STRING([--enable-gdbm],[enable the search for the GDBM library (see the zsh/db/gdbm module)]))
+
+dnl
+dnl link all libraries in main shell
+dnl
+AC_ARG_ENABLE(link-all-libs,
+AS_HELP_STRING([--disable-link-all-libs],
+ [do not link module-only libraries into the main binary]),
+[enable_link_all_libs=$enableval], [enable_link_all_libs=yes])
dnl ------------------
dnl CHECK THE COMPILER
@@ -719,7 +726,6 @@ AC_ARG_WITH(term-lib,
AS_HELP_STRING([--with-term-lib=LIBS],[search space-separated LIBS for terminal handling]),
[if test "x$withval" != xno && test "x$withval" != x ; then
termcap_curses_order="$withval"
- AC_SEARCH_LIBS(tigetstr, [$termcap_curses_order])
else
termcap_curses_order="$ncursesw_test $ncurses_test tinfow tinfo termcap curses"
fi],
@@ -931,9 +937,18 @@ elif test x$zsh_cv_decl_ospeed_must_define = xyes; then
AC_DEFINE(MUST_DEFINE_OSPEED)
fi
-if test x$gdbm != xno; then
+if test x$enable_gdbm = xyes; then
AC_CHECK_HEADERS(gdbm.h)
+ save_LIBS=$LIBS
+ LIBS=
AC_CHECK_LIB(gdbm, gdbm_open)
+ GDBM_LIBS=$LIBS
+ LIBS=$save_LIBS
+ if test x$enable_link_all_libs = xyes; then
+ LIBS="$GDBM_LIBS $LIBS"
+ GDBM_LIBS=
+ fi
+ AC_SUBST(GDBM_LIBS)
fi
AC_CHECK_HEADERS(sys/xattr.h)
@@ -1268,7 +1283,7 @@ AC_CHECK_FUNCS(strftime strptime mktime timelocal \
grantpt unlockpt ptsname \
htons ntohs \
regcomp regexec regerror regfree \
- gdbm_open getxattr \
+ getxattr \
realpath canonicalize_file_name \
symlink getcwd \
cygwin_conv_path \
@@ -1320,8 +1335,16 @@ if test x$zsh_cv_func_realpath_accepts_null = xyes; then
fi
if test x$enable_pcre = xyes; then
- LIBS="`$PCRE_CONFIG --libs8` $LIBS"
+ save_LIBS=$LIBS
+ PCRE_LIBS="`$PCRE_CONFIG --libs8`"
+ LIBS="$PCRE_LIBS $LIBS"
AC_CHECK_FUNCS(pcre2_compile_8)
+ LIBS=$save_LIBS
+ if test x$enable_link_all_libs = xyes; then
+ LIBS="$PCRE_LIBS $LIBS"
+ PCRE_LIBS=
+ fi
+ AC_SUBST(PCRE_LIBS)
fi
if test x$enable_cap = xyes; then
@@ -3051,7 +3074,13 @@ if test "x$dynamic" = xyes; then
module linker flags : ${LDFLAGS} ${LIBLDFLAGS} ${DLLDFLAGS}"
fi
echo "\
-library flags : ${LIBS}
+library flags : ${LIBS}"
+if test x$enable_link_all_libs != xyes; then
+echo "\
+gdbm module library flags : ${GDBM_LIBS}
+pcre module library flags : ${PCRE_LIBS}"
+fi
+echo "\
installation basename : ${tzsh_name}
binary install path : ${zshbin2}
man page install path : ${zshman2}