]> git.ipfire.org Git - thirdparty/xtables-addons.git/commitdiff
Allow user to select what extensions to compile and install
authorJan Engelhardt <jengelh@computergmbh.de>
Thu, 14 Feb 2008 16:38:15 +0000 (17:38 +0100)
committerJan Engelhardt <jengelh@computergmbh.de>
Thu, 14 Feb 2008 16:49:47 +0000 (17:49 +0100)
Signed-off-by: Jan Engelhardt <jengelh@computergmbh.de>
INSTALL
configure.ac
extensions/GNUmakefile.in [new file with mode: 0644]
extensions/Kbuild
extensions/Makefile.am [deleted file]
mconfig [new file with mode: 0644]

diff --git a/INSTALL b/INSTALL
index 4bb442c2f0cc17d68dffc5ca91c2147d3d11e481..818d8bad55f8cc3f58bc3be084aaa1ab34dc95bb 100644 (file)
--- a/INSTALL
+++ b/INSTALL
@@ -17,6 +17,13 @@ Prerequirements
        * kernel-source >= 2.6.19 with prepared output directory
 
 
+Selecting extensions
+====================
+
+You can edit the "mconfig" file to select what modules to build and
+install. By default, all modules are enabled.
+
+
 Configuring and compiling
 =========================
 
index 5e3a3a3a72bb5f251b383eebab2f8558c7b32ed4..567b1de634a9d054ee65ac9f4dd78b2b994cf64c 100644 (file)
@@ -64,4 +64,4 @@ AC_SUBST([regular_CFLAGS xtables_CFLAGS kinclude_CFLAGS])
 AC_SUBST([kbuilddir])
 AC_SUBST([ksourcedir])
 AC_SUBST([xtlibdir])
-AC_OUTPUT([Makefile extensions/Makefile])
+AC_OUTPUT([Makefile extensions/GNUmakefile])
diff --git a/extensions/GNUmakefile.in b/extensions/GNUmakefile.in
new file mode 100644 (file)
index 0000000..ea48696
--- /dev/null
@@ -0,0 +1,90 @@
+# -*- Makefile -*-
+
+top_srcdir      := @top_srcdir@
+srcdir          := @srcdir@
+abstop_srcdir   := $(realpath ${top_srcdir})
+abssrcdir       := $(realpath ${srcdir})
+prefix          := @prefix@
+exec_prefix     := @exec_prefix@
+libdir          := @libdir@
+libexecdir      := @libexecdir@
+xtlibdir        := @xtlibdir@
+kbuilddir       := @kbuilddir@
+
+CC              := @CC@
+CCLD            := ${CC}
+CFLAGS          := @CFLAGS@
+LDFLAGS         := @LDFLAGS@
+regular_CFLAGS  := @regular_CFLAGS@
+kinclude_CFLAGS := @kinclude_CFLAGS@
+
+AM_CFLAGS      := ${regular_CFLAGS} -I${top_srcdir}/include ${kinclude_CFLAGS}
+AM_DEPFLAGS     = -Wp,-MMD,$(@D)/.$(@F).d,-MT,$@
+
+ifeq (${V},)
+AM_LIBTOOL_SILENT = --silent
+AM_VERBOSE_CC     = @echo "  CC      " $@;
+AM_VERBOSE_CCLD   = @echo "  CCLD    " $@;
+AM_VERBOSE_CXX    = @echo "  CXX     " $@;
+AM_VERBOSE_CXXLD  = @echo "  CXXLD   " $@;
+AM_VERBOSE_AR     = @echo "  AR      " $@;
+AM_VERBOSE_GEN    = @echo "  GEN     " $@;
+endif
+
+#
+#      Wildcard module list
+#
+include ${top_srcdir}/mconfig
+pfx_all_mod   := $(patsubst ${srcdir}/libxt_%.c,%,$(wildcard ${srcdir}/libxt_*.c))
+pfx_build_mod := $(foreach i,${pfx_all_mod},$(if ${build_${i}},${i},))
+pfx_solibs    := $(patsubst %,libxt_%.so,${pfx_build_mod})
+
+
+#
+#      Building blocks
+#
+targets := ${pfx_solibs}
+targets_install := ${pfx_solibs}
+
+.SECONDARY:
+
+.PHONY: all install clean distclean FORCE
+
+all: modules ${targets}
+
+install: modules_install ${targets_install}
+       @mkdir -p "${DESTDIR}${xtlibdir}";
+       install -pm0755 ${targets_install} "${DESTDIR}${xtlibdir}/";
+
+clean: clean_modules
+       rm -f *.oo *.so;
+
+distclean: clean
+       rm -f .*.d;
+
+-include .*.d
+
+
+#
+#      Call out to kbuild
+#
+.PHONY: modules modules_install clean_modules
+
+modules:
+       make -C ${kbuilddir} M=${abssrcdir} XA_TOPSRCDIR=${abstop_srcdir} modules;
+
+modules_install:
+       make -C ${kbuilddir} M=${abssrcdir} XA_TOPSRCDIR=${abstop_srcdir} INSTALL_MOD_PATH=${DESTDIR} modules_install;
+
+clean_modules:
+       make -C ${kbuilddir} M=${abssrcdir} XA_TOPSRCDIR=${abstop_srcdir} clean;
+
+
+#
+#      Shared libraries
+#
+lib%.so: lib%.oo
+       ${AM_VERBOSE_CCLD} ${CCLD} ${AM_LDFLAGS} -shared ${LDFLAGS} -o $@ $<;
+
+lib%.oo: ${srcdir}/lib%.c
+       ${AM_VERBOSE_CC} ${CC} ${AM_DEPFLAGS} ${AM_CFLAGS} -D_INIT=lib$*_init -DPIC -fPIC ${CFLAGS} -o $@ -c $<;
index 8662717166cac36a5e8fce35cdff68430ba1eefa..eeb94fa77d97fd44cdbfc1d20d978b67f602d43b 100644 (file)
@@ -1,6 +1,9 @@
 # -*- Makefile -*-
 
-obj-m += xt_LOGMARK.o
-obj-m += xt_TARPIT.o
-obj-m += xt_TEE.o
-obj-m += compat_xtables.o
+include ${XA_TOPSRCDIR}/mconfig
+
+obj-m                += compat_xtables.o
+
+obj-${build_LOGMARK} += xt_LOGMARK.o
+obj-${build_TARPIT}  += xt_TARPIT.o
+obj-${build_TEE}     += xt_TEE.o
diff --git a/extensions/Makefile.am b/extensions/Makefile.am
deleted file mode 100644 (file)
index df3bf14..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-# -*- Makefile -*-
-
-AUTOMAKE_OPTIONS = foreign subdir-objects
-abssrcdir        = $(shell readlink -f ${srcdir})
-
-regular_CFLAGS  := @regular_CFLAGS@
-xtables_CFLAGS  := @xtables_CFLAGS@
-kinclude_CFLAGS := @kinclude_CFLAGS@
-AM_CFLAGS        = ${regular_CFLAGS} -I ${top_srcdir}/include \
-                   ${xtables_CFLAGS} ${kinclude_CFLAGS} \
-                   -D_INIT=$*_init
-AM_LDFLAGS       = -module -avoid-version
-xtlib_LTLIBRARIES = \
-       libxt_LOGMARK.la \
-       libxt_TARPIT.la \
-       libxt_TEE.la
-
-#
-#      Call out to kbuild
-#
-.PHONY: modules modules_install clean_modules
-
-all-local: modules
-
-install-exec-local: modules_install
-
-clean-local: clean_modules
-
-modules:
-       make -C ${kbuilddir} M=${abssrcdir} modules;
-
-modules_install:
-       make -C ${kbuilddir} M=${abssrcdir} INSTALL_MOD_PATH=${DESTDIR} modules_install;
-
-clean_modules:
-       make -C ${kbuilddir} M=${abssrcdir} clean;
diff --git a/mconfig b/mconfig
new file mode 100644 (file)
index 0000000..fa29bfc
--- /dev/null
+++ b/mconfig
@@ -0,0 +1,8 @@
+# -*- Makefile -*-
+#
+# Only "build_${name}=m" (build extensions) or "build_${name}="
+# (do not build) are valid!
+#
+build_LOGMARK=m
+build_TARPIT=m
+build_TEE=m