xref: /aosp_15_r20/external/kmod/testsuite/module-playground/Makefile (revision cc4ad7da8cefe208cb129ac2aa9a357c7c72deb2)
1*cc4ad7daSAndroid Build Coastguard Workerifneq ($(KERNELRELEASE),)
2*cc4ad7daSAndroid Build Coastguard Worker# kbuild part of makefile
3*cc4ad7daSAndroid Build Coastguard Worker
4*cc4ad7daSAndroid Build Coastguard Workerifneq ($(KMOD_TESTSUITE_ARCH_BUILD),1)
5*cc4ad7daSAndroid Build Coastguard Workerobj-m := mod-simple.o
6*cc4ad7daSAndroid Build Coastguard Worker
7*cc4ad7daSAndroid Build Coastguard Worker# mod-foo depends on foo-x, and foo-x modules don't depend
8*cc4ad7daSAndroid Build Coastguard Worker# on anyone
9*cc4ad7daSAndroid Build Coastguard Workerobj-m += mod-foo-a.o
10*cc4ad7daSAndroid Build Coastguard Workerobj-m += mod-foo-b.o
11*cc4ad7daSAndroid Build Coastguard Workerobj-m += mod-foo-c.o
12*cc4ad7daSAndroid Build Coastguard Workerobj-m += mod-foo.o
13*cc4ad7daSAndroid Build Coastguard Worker
14*cc4ad7daSAndroid Build Coastguard Worker# mod-loop: create loops in dependencies:
15*cc4ad7daSAndroid Build Coastguard Worker# 1) mod-loop-a  ->  mod-loop-b -> mod-loop-c -> mod-loop-a
16*cc4ad7daSAndroid Build Coastguard Worker#     |-> mod-loop-f    |-> mod-loop-f
17*cc4ad7daSAndroid Build Coastguard Worker#     \-> mod-loop-g    \-> mod-loop-g
18*cc4ad7daSAndroid Build Coastguard Worker# 2) mod-loop-d -> mod-loop-e -> mod-loop-d
19*cc4ad7daSAndroid Build Coastguard Worker# 3.1) mod-loop-h -> mod-loop-i -> mod-loop-j -> mod-loop-h
20*cc4ad7daSAndroid Build Coastguard Worker# 3.2) mod-loop-h -> mod-loop-i -> mod-loop-j -> mod-loop-k -> mod-loop-h
21*cc4ad7daSAndroid Build Coastguard Worker
22*cc4ad7daSAndroid Build Coastguard Workerobj-m += mod-loop-a.o
23*cc4ad7daSAndroid Build Coastguard Workerobj-m += mod-loop-b.o
24*cc4ad7daSAndroid Build Coastguard Workerobj-m += mod-loop-c.o
25*cc4ad7daSAndroid Build Coastguard Workerobj-m += mod-loop-d.o
26*cc4ad7daSAndroid Build Coastguard Workerobj-m += mod-loop-e.o
27*cc4ad7daSAndroid Build Coastguard Workerobj-m += mod-loop-f.o
28*cc4ad7daSAndroid Build Coastguard Workerobj-m += mod-loop-g.o
29*cc4ad7daSAndroid Build Coastguard Workerobj-m += mod-loop-h.o
30*cc4ad7daSAndroid Build Coastguard Workerobj-m += mod-loop-i.o
31*cc4ad7daSAndroid Build Coastguard Workerobj-m += mod-loop-j.o
32*cc4ad7daSAndroid Build Coastguard Workerobj-m += mod-loop-k.o
33*cc4ad7daSAndroid Build Coastguard Worker
34*cc4ad7daSAndroid Build Coastguard Worker# mod-fake-*: fake the respective modules in kernel with these aliases. Aliases
35*cc4ad7daSAndroid Build Coastguard Worker# list was taken from 3.5.4
36*cc4ad7daSAndroid Build Coastguard Workerobj-m += mod-fake-hpsa.o
37*cc4ad7daSAndroid Build Coastguard Workerobj-m += mod-fake-scsi-mod.o
38*cc4ad7daSAndroid Build Coastguard Workerobj-m += mod-fake-cciss.o
39*cc4ad7daSAndroid Build Coastguard Worker
40*cc4ad7daSAndroid Build Coastguard Workerelse
41*cc4ad7daSAndroid Build Coastguard Worker# only build ARCH-specific module
42*cc4ad7daSAndroid Build Coastguard Workerifeq ($(ARCH),)
43*cc4ad7daSAndroid Build Coastguard Worker    $(error ARCH must be set to a valid architecture)
44*cc4ad7daSAndroid Build Coastguard Workerendif
45*cc4ad7daSAndroid Build Coastguard Workerobj-m := mod-simple-$(ARCH).o
46*cc4ad7daSAndroid Build Coastguard Workerendif
47*cc4ad7daSAndroid Build Coastguard Worker
48*cc4ad7daSAndroid Build Coastguard Workerelse
49*cc4ad7daSAndroid Build Coastguard Worker# normal makefile
50*cc4ad7daSAndroid Build Coastguard WorkerKDIR ?= $(module_prefix)/lib/modules/`uname -r`/build
51*cc4ad7daSAndroid Build Coastguard WorkerKVER ?= `uname -r`
52*cc4ad7daSAndroid Build Coastguard Workerifeq ($(FAKE_BUILD),)
53*cc4ad7daSAndroid Build Coastguard Worker    FAKE_BUILD=0
54*cc4ad7daSAndroid Build Coastguard Workerendif
55*cc4ad7daSAndroid Build Coastguard Worker
56*cc4ad7daSAndroid Build Coastguard WorkerARCH_SPECIFIC_MODULES := mod-simple-x86_64.ko mod-simple-i386.ko mod-simple-sparc64.ko
57*cc4ad7daSAndroid Build Coastguard WorkerMY_MODULES := $(filter-out $(ARCH_SPECIFIC_MODULES),$(wildcard *.ko))
58*cc4ad7daSAndroid Build Coastguard Worker
59*cc4ad7daSAndroid Build Coastguard Workerdefault: modules arch-modules
60*cc4ad7daSAndroid Build Coastguard Worker
61*cc4ad7daSAndroid Build Coastguard Workermod-simple-%.ko: mod-simple-%.c Makefile.arch
62*cc4ad7daSAndroid Build Coastguard Worker	$(eval arch=$(patsubst mod-simple-%.ko,%,$@))
63*cc4ad7daSAndroid Build Coastguard Worker	$(MAKE) KDIR=$(KDIR_$(arch)) ARCH=$(arch) CROSS_COMPILE=$(CROSS_COMPILE_$(arch)) -f Makefile.arch
64*cc4ad7daSAndroid Build Coastguard Worker
65*cc4ad7daSAndroid Build Coastguard Workerifeq ($(FAKE_BUILD),0)
66*cc4ad7daSAndroid Build Coastguard Workermodules:
67*cc4ad7daSAndroid Build Coastguard Worker	$(MAKE) -C $(KDIR) M=$$PWD
68*cc4ad7daSAndroid Build Coastguard Workerelse
69*cc4ad7daSAndroid Build Coastguard Workermodules:
70*cc4ad7daSAndroid Build Coastguard Worker	@echo "  CP       cache/*.ko"
71*cc4ad7daSAndroid Build Coastguard Worker	@cp cache/*.ko .
72*cc4ad7daSAndroid Build Coastguard Workerendif
73*cc4ad7daSAndroid Build Coastguard Worker
74*cc4ad7daSAndroid Build Coastguard Workerarch-modules: $(ARCH_SPECIFIC_MODULES)
75*cc4ad7daSAndroid Build Coastguard Worker
76*cc4ad7daSAndroid Build Coastguard Workerclean:
77*cc4ad7daSAndroid Build Coastguard Worker	test -z "$(MY_MODULES)" || rm -rf $(MY_MODULES) || true
78*cc4ad7daSAndroid Build Coastguard Worker	rm -rf .tmp_versions || true
79*cc4ad7daSAndroid Build Coastguard Worker	rm -rf .*.cmd *.mod.c || true
80*cc4ad7daSAndroid Build Coastguard Worker	rm -rf *.o || true
81*cc4ad7daSAndroid Build Coastguard Worker	rm -rf Module.symvers modules.order
82*cc4ad7daSAndroid Build Coastguard Worker
83*cc4ad7daSAndroid Build Coastguard Workerendif
84