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

Reply via email to