]> git.ipfire.org Git - thirdparty/kmod.git/blobdiff - testsuite/module-playground/Makefile
libkmod, depmod, modprobe: Make directory for kernel modules configurable
[thirdparty/kmod.git] / testsuite / module-playground / Makefile
index 215cc82de909d089ea117443835cc531cff607d6..a7ab09bea2bfa5ccaca5e2c0642301c115c82d24 100644 (file)
@@ -1,5 +1,7 @@
 ifneq ($(KERNELRELEASE),)
 # kbuild part of makefile
+
+ifneq ($(KMOD_TESTSUITE_ARCH_BUILD),1)
 obj-m := mod-simple.o
 
 # mod-foo depends on foo-x, and foo-x modules don't depend
@@ -10,13 +12,24 @@ obj-m += mod-foo-c.o
 obj-m += mod-foo.o
 
 # mod-loop: create loops in dependencies:
-# 1) mod-loop-a -> mod-loop-b -> mod-loop-c -> mod-loop-a
+# 1) mod-loop-a  ->  mod-loop-b -> mod-loop-c -> mod-loop-a
+#     |-> mod-loop-f    |-> mod-loop-f
+#     \-> mod-loop-g    \-> mod-loop-g
 # 2) mod-loop-d -> mod-loop-e -> mod-loop-d
+# 3.1) mod-loop-h -> mod-loop-i -> mod-loop-j -> mod-loop-h
+# 3.2) mod-loop-h -> mod-loop-i -> mod-loop-j -> mod-loop-k -> mod-loop-h
+
 obj-m += mod-loop-a.o
 obj-m += mod-loop-b.o
 obj-m += mod-loop-c.o
 obj-m += mod-loop-d.o
 obj-m += mod-loop-e.o
+obj-m += mod-loop-f.o
+obj-m += mod-loop-g.o
+obj-m += mod-loop-h.o
+obj-m += mod-loop-i.o
+obj-m += mod-loop-j.o
+obj-m += mod-loop-k.o
 
 # mod-fake-*: fake the respective modules in kernel with these aliases. Aliases
 # list was taken from 3.5.4
@@ -24,15 +37,47 @@ obj-m += mod-fake-hpsa.o
 obj-m += mod-fake-scsi-mod.o
 obj-m += mod-fake-cciss.o
 
+else
+# only build ARCH-specific module
+ifeq ($(ARCH),)
+    $(error ARCH must be set to a valid architecture)
+endif
+obj-m := mod-simple-$(ARCH).o
+endif
+
 else
 # normal makefile
-KDIR ?= /lib/modules/`uname -r`/build
+KDIR ?= $(module_prefix)/lib/modules/`uname -r`/build
 KVER ?= `uname -r`
+ifeq ($(FAKE_BUILD),)
+    FAKE_BUILD=0
+endif
 
-default:
+ARCH_SPECIFIC_MODULES := mod-simple-x86_64.ko mod-simple-i386.ko mod-simple-sparc64.ko
+MY_MODULES := $(filter-out $(ARCH_SPECIFIC_MODULES),$(wildcard *.ko))
+
+default: modules arch-modules
+
+mod-simple-%.ko: mod-simple-%.c Makefile.arch
+       $(eval arch=$(patsubst mod-simple-%.ko,%,$@))
+       $(MAKE) KDIR=$(KDIR_$(arch)) ARCH=$(arch) CROSS_COMPILE=$(CROSS_COMPILE_$(arch)) -f Makefile.arch
+
+ifeq ($(FAKE_BUILD),0)
+modules:
        $(MAKE) -C $(KDIR) M=$$PWD
+else
+modules:
+       @echo "  CP       cache/*.ko"
+       @cp cache/*.ko .
+endif
+
+arch-modules: $(ARCH_SPECIFIC_MODULES)
 
 clean:
-       $(MAKE) -C $(KDIR) M=$$PWD clean
+       test -z "$(MY_MODULES)" || rm -rf $(MY_MODULES) || true
+       rm -rf .tmp_versions || true
+       rm -rf .*.cmd *.mod.c || true
+       rm -rf *.o || true
+       rm -rf Module.symvers modules.order
 
 endif