Makefile example: top_srcdir ?= ../../../..
include $(top_srcdir)/include/mk/testcases.mk REQ_VERSION_MAJOR := 2 REQ_VERSION_PATCH := 6 MODULE_NAMES := Module01 Module02 ... MAKE_TARGETS := test01 test02 ... include $(top_srcdir)/include/mk/module.mk include $(top_srcdir)/include/mk/generic_leaf_target.mk Signed-off-by: Alexey Kodanev <[email protected]> --- include/mk/module.mk | 69 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 69 insertions(+), 0 deletions(-) create mode 100644 include/mk/module.mk diff --git a/include/mk/module.mk b/include/mk/module.mk new file mode 100644 index 0000000..9304e4c --- /dev/null +++ b/include/mk/module.mk @@ -0,0 +1,69 @@ +# Copyright (c) 2013 Oracle and/or its affiliates. All Rights Reserved. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 2 of +# the License, or (at your option) any later version. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# Author: Alexey Kodanev <[email protected]> +# +# Include it to build kernel modules. +# MODULE_NAMES, REQ_VERSION_MAJOR and REQ_VERSION_PATCH must be defined +# beforehand. +# + +ifneq ($(KERNELRELEASE),) + +obj-m := $(addsuffix .o, $(MODULE_NAMES)) + +else + +# prerequisites +$(if $(ENV_PRE_LOADED),,\ + $(error You must load env_pre.mk before including this file)) + +$(if $(MODULE_NAMES),,\ + $(error You must define MODULE_NAMES)) + +$(if $(REQ_VERSION_MAJOR),,\ + $(error You must define REQ_VERSION_MAJOR)) + +$(if $(REQ_VERSION_PATCH),,\ + $(error You must define REQ_VERSION_MINOR)) + +export ENV_PRE_LOADED +export top_srcdir := $(abs_srcdir)/$(top_srcdir) + +ifeq ($(MAKECMDGOALS),clean) +SKIP := 0 +endif + +SKIP ?= $(shell [ "$(WITH_MODULES)" = yes ] && \ + [ $(LINUX_VERSION_MAJOR) -gt $(REQ_VERSION_MAJOR) ] || \ + [ $(LINUX_VERSION_MAJOR) -eq $(REQ_VERSION_MAJOR) -a \ + $(LINUX_VERSION_PATCH) -ge $(REQ_VERSION_PATCH) ]; echo $$?) + +ifeq ($(SKIP),0) +MODULE_FILES := $(addsuffix .ko, $(MODULE_NAMES)) +MAKE_TARGETS += $(if $(filter $(MAKECMDGOALS),install),\ + $(wildcard $(MODULE_FILES)),$(MODULE_FILES)) +endif + +# Ignoring the exit status of commands is done to be forward compatible with +# kernel internal API changes. The user-space test will return TCONF, if it +# doesn't find the module (i.e. it wasn't built either due to kernel-devel +# missing or module build failure). +%.ko: %.c + -$(MAKE) -C $(LINUX_DIR) M=$(abs_srcdir) + -rm -rf *.mod.c *.o modules.order .tmp* .*.ko .*.cmd Module.symvers + +endif -- 1.7.1 ------------------------------------------------------------------------------ LIMITED TIME SALE - Full Year of Microsoft Training For Just $49.99! 1,500+ hours of tutorials including VisualStudio 2012, Windows 8, SharePoint 2013, SQL 2012, MVC 4, more. BEST VALUE: New Multi-Library Power Pack includes Mobile, Cloud, Java, and UX Design. Lowest price ever! Ends 9/20/13. http://pubads.g.doubleclick.net/gampad/clk?id=58041151&iu=/4140/ostg.clktrk _______________________________________________ Ltp-list mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/ltp-list
