【发布时间】:2017-06-20 02:16:05
【问题描述】:
下面是我正在为 Android 编译的 Linux 内核中 cyttsp4 的 Makefile,使用 kyasu msm8974 项目 (https://github.com/kyasu/android_kernel_samsung_msm8974)。
### 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 中的
-=运算符。并且找不到任何支持它的证据。 -
我不太习惯 Makefiles,我通常使用 CMake 生成它们并且不手动编辑它们所以看到 += 让我觉得 -= 也存在,但你是对的,我也找不到。我通过用 $(filter-out, $(CY_CFLAG_REMOVE),$(CFLAGS_cyttsp_thing.o)) 替换所有 -= 条目来修复它,现在似乎可以正常工作,奇怪的是制作 Cyttsp4 驱动程序的人甚至会犯错误那...
-
当您的解决方案有效时,您可以考虑提供一个答案。如果其他人找到更好的解决方案(例如
make的修补版本),那将只是另一个答案。 -
好主意,一旦我开始工作就太兴奋了,多亏了你,我编译了内核,现在我已经成功地在三星 S4 i9506 上移植了 90% 功能的 Android 版 Nethunter OS: ) 我会在几分钟内回答这个问题,使用我的 S4 作为键盘和鼠标:D
标签: c++ linux makefile linux-kernel