# -*- Makefile -*- top_srcdir := @top_srcdir@ srcdir := @srcdir@ abstop_srcdir := $(shell readlink -e ${top_srcdir}) abssrcdir := $(shell readlink -e ${srcdir}) ifeq (${abstop_srcdir},) $(error Path resolution of ${top_srcdir} failed) endif ifeq (${abssrcdir},) $(error Path resolution of ${srcdir} failed) endif 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@ xtables_CFLAGS := @xtables_CFLAGS@ AM_CFLAGS := ${regular_CFLAGS} -I${top_srcdir}/include ${xtables_CFLAGS} ${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 -include ${top_srcdir}/mconfig.* include ${srcdir}/Mbuild -include ${srcdir}/Mbuild.* -include ${srcdir}/*.Mbuild # # Building blocks # targets := ${obj-m} targets_install := ${obj-m} .SECONDARY: .PHONY: all install clean distclean FORCE all: modules user matches.man targets.man user: ${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 .manpages.lst; -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 $<; # # Manpages # wcman_matches := $(wildcard ${srcdir}/libxt_[a-z]*.man) wcman_targets := $(wildcard ${srcdir}/libxt_[A-Z]*.man) wlist_matches := $(patsubst ${srcdir}/libxt_%.man,%,${wcman_matches}) wlist_targets := $(patsubst ${srcdir}/libxt_%.man,%,${wcman_targets}) .manpages.lst: FORCE @echo "${wlist_targets} ${wlist_matches}" >$@.tmp; \ cmp -s $@ $@.tmp || mv $@.tmp $@; \ rm -f $@.tmp; man_run = \ ${AM_VERBOSE_GEN} \ for ext in $(1); do \ f="${srcdir}/libxt_$$ext.man"; \ if [ -f "$$f" ]; then \ echo ".SS $$ext"; \ cat "$$f"; \ continue; \ fi; \ done >$@; matches.man: .manpages.lst ${wcman_matches} $(call man_run,${wlist_matches}) targets.man: .manpages.lst ${wcman_targets} $(call man_run,${wlist_targets})