xref: /linux-6.15/drivers/staging/greybus/Makefile (revision bebc013b)
1greybus-y :=	core.o		\
2		debugfs.o	\
3		hd.o		\
4		manifest.o	\
5		module.o	\
6		interface.o	\
7		bundle.o	\
8		connection.o	\
9		protocol.o	\
10		control.o	\
11		svc.o		\
12		svc_watchdog.o	\
13		bootrom.o	\
14		operation.o	\
15		legacy.o
16
17gb-phy-y :=	gpbridge.o	\
18		uart.o	\
19		usb.o
20
21# Prefix all modules with gb-
22gb-vibrator-y := vibrator.o
23gb-power-supply-y := power_supply.o
24gb-loopback-y := loopback.o
25gb-light-y := light.o
26gb-raw-y := raw.o
27gb-hid-y := hid.o
28gb-es2-y := es2.o
29gb-arche-y := arche-platform.o arche-apb-ctrl.o
30gb-audio-module-y := audio_module.o audio_topology.o
31gb-audio-codec-y := audio_codec.o
32gb-audio-gb-y := audio_gb.o
33gb-audio-apbridgea-y := audio_apbridgea.o
34gb-audio-manager-y += audio_manager.o
35gb-audio-manager-y += audio_manager_module.o
36gb-camera-y := camera.o
37gb-firmware-y := fw-core.o fw-download.o
38gb-spi-y := spi.o
39gb-sdio-y := sdio.o
40gb-pwm-y := pwm.o
41gb-gpio-y := gpio.o
42gb-i2c-y := i2c.o
43
44obj-m += greybus.o
45obj-m += gb-phy.o
46obj-m += gb-vibrator.o
47obj-m += gb-power-supply.o
48obj-m += gb-loopback.o
49obj-m += gb-light.o
50obj-m += gb-hid.o
51obj-m += gb-raw.o
52obj-m += gb-es2.o
53ifeq ($(CONFIG_USB_HSIC_USB3613),y)
54 obj-m += gb-arche.o
55endif
56ifeq ($(CONFIG_ARCH_MSM8994),y)
57 obj-m += gb-audio-codec.o
58 obj-m += gb-audio-module.o
59 obj-m += gb-camera.o
60endif
61obj-m += gb-audio-gb.o
62obj-m += gb-audio-apbridgea.o
63obj-m += gb-audio-manager.o
64obj-m += gb-firmware.o
65obj-m += gb-spi.o
66obj-m += gb-sdio.o
67obj-m += gb-pwm.o
68obj-m += gb-gpio.o
69obj-m += gb-i2c.o
70
71KERNELVER		?= $(shell uname -r)
72KERNELDIR 		?= /lib/modules/$(KERNELVER)/build
73INSTALL_MOD_PATH	?= /..
74PWD			:= $(shell pwd)
75
76# kernel config option that shall be enable
77CONFIG_OPTIONS_ENABLE := POWER_SUPPLY PWM SYSFS SPI USB SND_SOC MMC LEDS_CLASS INPUT
78
79# kernel config option that shall be disable
80CONFIG_OPTIONS_DISABLE :=
81
82# this only run in kbuild part of the makefile
83ifneq ($(KERNELRELEASE),)
84# This function returns the argument version if current kernel version is minor
85# than the passed version, return 1 if equal or the current kernel version if it
86# is greater than argument version.
87kvers_cmp=$(shell [ "$(KERNELVERSION)" = "$(1)" ] && echo 1 || printf "$(1)\n$(KERNELVERSION)" | sort -V | tail -1)
88
89ifneq ($(call kvers_cmp,"3.19.0"),3.19.0)
90    CONFIG_OPTIONS_ENABLE += LEDS_CLASS_FLASH
91endif
92
93ifneq ($(call kvers_cmp,"4.2.0"),4.2.0)
94    CONFIG_OPTIONS_ENABLE += V4L2_FLASH_LED_CLASS
95endif
96
97$(foreach opt,$(CONFIG_OPTIONS_ENABLE),$(if $(CONFIG_$(opt)),, \
98     $(error CONFIG_$(opt) is disabled in the kernel configuration and must be enable \
99     to continue compilation)))
100$(foreach opt,$(CONFIG_OPTIONS_DISABLE),$(if $(filter m y, $(CONFIG_$(opt))), \
101     $(error CONFIG_$(opt) is enabled in the kernel configuration and must be disable \
102     to continue compilation),))
103endif
104
105# add -Wall to try to catch everything we can.
106ccflags-y := -Wall
107
108# needed for trace events
109ccflags-y += -I$(src)
110
111GB_AUDIO_MANAGER_SYSFS ?= true
112ifeq ($(GB_AUDIO_MANAGER_SYSFS),true)
113gb-audio-manager-y += audio_manager_sysfs.o
114ccflags-y += -DGB_AUDIO_MANAGER_SYSFS
115endif
116
117all: module
118
119tools::
120	$(MAKE) -C tools KERNELDIR=$(realpath $(KERNELDIR))
121
122module:
123	$(MAKE) -C $(KERNELDIR) M=$(PWD)
124
125check:
126	$(MAKE) -C $(KERNELDIR) M=$(PWD) C=2 CF="-D__CHECK_ENDIAN__"
127
128clean:
129	rm -f *.o *~ core .depend .*.cmd *.ko *.mod.c
130	rm -f Module.markers Module.symvers modules.order
131	rm -rf .tmp_versions Modules.symvers
132	$(MAKE) -C tools clean
133
134coccicheck:
135	$(MAKE) -C $(KERNELDIR) M=$(PWD) coccicheck
136
137install: module
138	mkdir -p $(INSTALL_MOD_PATH)/lib/modules/$(KERNELVER)/kernel/drivers/greybus/
139	cp -f *.ko $(INSTALL_MOD_PATH)/lib/modules/$(KERNELVER)/kernel/drivers/greybus/
140	depmod -b $(INSTALL_MOD_PATH) -a $(KERNELVER)
141