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