下面是我正在使用kyasu msm8974项目(https://github.com/kyasu/android_kernel_samsung_msm8974)为Android编译的Linux内核中的cyttsp4的Makefile。cyttsp4错误(linux内核)Makefile
### CYTTSP
#obj-m += cyttsp4.o
obj-$(CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP4) += cyttsp4_core.o
obj-$(CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP4) += cyttsp4_i2c.o
obj-$(CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP4) += cyttsp4_platform.o
obj-$(CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP4) += cyttsp4_devtree.o
obj-$(CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP4) += cyttsp4_mt_common.o
obj-$(CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP4) += cyttsp4_mtb.o
obj-$(CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP4) += cyttsp4_btn.o
obj-$(CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP4) += cyttsp4_debug.o
obj-$(CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP4) += cyttsp4_device_access.o
obj-$(CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP4) += cyttsp4_loader.o
obj-$(CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP4) += cyttsp4_samsung_sysfs.o
CY_CFLAG_ADD =\
-DCONFIG_TOUCHSCREEN_CYPRESS_CYTTSP4\
-DCONFIG_TOUCHSCREEN_CYPRESS_CYTTSP4_DEVICETREE_SUPPORT\
-DCONFIG_TOUCHSCREEN_CYPRESS_CYTTSP4_BUTTON\
-DCONFIG_TOUCHSCREEN_CYPRESS_CYTTSP4_DEVICE_ACCESS\
-DCONFIG_TOUCHSCREEN_CYPRESS_CYTTSP4_LOADER\
-DCONFIG_TOUCHSCREEN_CYPRESS_CYTTSP4_PLATFORM_FW_UPGRADE\
-DCONFIG_TOUCHSCREEN_CYPRESS_CYTTSP4_BINARY_FW_UPGRADE
CY_CFLAG_REMOVE =\
-DCYTTSP4_PDATA_IN_PLATFORM_C\
-DCONFIG_TOUCHSCREEN_CYPRESS_CYTTSP4_PROXIMITY\
-DCONFIG_TOUCHSCREEN_CYPRESS_CYTTSP4_PLATFORM_TTCONFIG_UPGRADE\
-DCONFIG_TOUCHSCREEN_CYPRESS_CYTTSP4_DEVICE_ACCESS_API\
-DCONFIG_TOUCHSCREEN_CYPRESS_CYTTSP4_DEBUG\
-DCONFIG_TOUCHSCREEN_CYPRESS_CYTTSP4_MANUAL_TTCONFIG_UPGRADE
CFLAGS_cyttsp4_core.o += $(CY_CFLAG_ADD) -DDEBUG
CFLAGS_cyttsp4_i2c.o += $(CY_CFLAG_ADD) -DDEBUG
CFLAGS_cyttsp4_spi.o += $(CY_CFLAG_ADD)
CFLAGS_cyttsp4_mta.o += $(CY_CFLAG_ADD)
CFLAGS_cyttsp4_mtb.o += $(CY_CFLAG_ADD)
CFLAGS_cyttsp4_mt_a.o += $(CY_CFLAG_ADD)
CFLAGS_cyttsp4_mt_b.o += $(CY_CFLAG_ADD)
CFLAGS_cyttsp4_mt_common.o += $(CY_CFLAG_ADD)
CFLAGS_cyttsp4_btn.o += $(CY_CFLAG_ADD)
CFLAGS_cyttsp4_proximity.o += $(CY_CFLAG_ADD)
CFLAGS_cyttsp4_samsung_sysfs.o += $(CY_CFLAG_ADD)
CFLAGS_cyttsp4_device_access.o += $(CY_CFLAG_ADD)
CFLAGS_cyttsp4_test_device_access_api.o += $(CY_CFLAG_ADD)
CFLAGS_cyttsp4_loader.o += $(CY_CFLAG_ADD)
CFLAGS_cyttsp4_debug.o += $(CY_CFLAG_ADD)
CFLAGS_cyttsp4_devtree.o += $(CY_CFLAG_ADD) -DDEBUG
CFLAGS_cyttsp4_platform.o += $(CY_CFLAG_ADD) -DDEBUG
CFLAGS_cyttsp4_core.o -= $(CY_CFLAG_REMOVE)
CFLAGS_cyttsp4_i2c.o -= $(CY_CFLAG_REMOVE)
CFLAGS_cyttsp4_spi.o -= $(CY_CFLAG_REMOVE)
CFLAGS_cyttsp4_mta.o -= $(CY_CFLAG_REMOVE)
CFLAGS_cyttsp4_mtb.o -= $(CY_CFLAG_REMOVE)
CFLAGS_cyttsp4_mt_a.o -= $(CY_CFLAG_REMOVE)
CFLAGS_cyttsp4_mt_b.o -= $(CY_CFLAG_REMOVE)
CFLAGS_cyttsp4_mt_common.o -= $(CY_CFLAG_REMOVE)
CFLAGS_cyttsp4_btn.o -= $(CY_CFLAG_REMOVE)
CFLAGS_cyttsp4_proximity.o -= $(CY_CFLAG_REMOVE)
CFLAGS_cyttsp4_samsung_sysfs.o -= $(CY_CFLAG_REMOVE)
CFLAGS_cyttsp4_device_access.o -= $(CY_CFLAG_REMOVE)
CFLAGS_cyttsp4_test_device_access_api.o -= $(CY_CFLAG_REMOVE)
CFLAGS_cyttsp4_loader.o -= $(CY_CFLAG_REMOVE)
CFLAGS_cyttsp4_debug.o -= $(CY_CFLAG_REMOVE)
CFLAGS_cyttsp4_devtree.o -= $(CY_CFLAG_REMOVE)
CFLAGS_cyttsp4_platform.o -= $(CY_CFLAG_REMOVE)
我得到的错误是:
/home/USER/Projects/OS/android_kernel_samsung_msm8974/drivers/gpu/gpu_sysfs/Kbuild:29: **** Make sure target file is defined. Check the TARGET and GPU configs in Makefile and Kernel Config. Module won't work without target file. ****
/home/USER/Projects/OS/android_kernel_samsung_msm8974/drivers/input/touchscreen/cyttsp4/Makefile:50: *** missing separator. Stop.
scripts/Makefile.clean:94: recipe for target 'drivers/input/touchscreen/cyttsp4' failed
make[3]: *** [drivers/input/touchscreen/cyttsp4] Error 2
scripts/Makefile.clean:94: recipe for target 'drivers/input/touchscreen' failed
make[2]: *** [drivers/input/touchscreen] Error 2
scripts/Makefile.clean:94: recipe for target 'drivers/input' failed
make[1]: *** [drivers/input] Error 2
Makefile:1201: recipe for target '_clean_drivers' failed
make: *** [_clean_drivers] Error 2
第一次听说Make中有' - ='运算符。并找不到任何证据证明它是支持的。 – Tsyvarev
我不是很习惯Makefile,我通常使用CMake来生成它们,而不是手动编辑它们,所以看到+ =让我觉得 - =也存在,但是你是对的,我也找不到它。我通过用$(filter-out,$(CY_CFLAG_REMOVE),$(CFLAGS_cyttsp_thing.o))替换所有的= =条目来修复它,现在似乎正常工作,很奇怪,制作Cyttsp4驱动程序的人甚至可能会出错那...... –
由于您的解决方案有效,您可以考虑提供答案。如果有人找到更好的解决方案(比如'make'的修补版本),那将只是另一个答案。 – Tsyvarev