MTK平台的代码,在编译时有时会出现如下报错信息:
*** String ERROR ***: CONFIG_CUSTOM_KERNEL_IMGSENSOR not sync with CUSTOM_KERNEL_IMGSENSOR in ProjectConfig.mk
最直接的原因是在ProjectConfig.mk与mt6765_xxx_defconfig中都配置了CUSTOM_KERNEL_IMGSENSOR字串,但两个位置配置的值不一致。
但它的检测方式,并不是去检测代码中获取到的定义,而是使用一个脚本用解析字串的方式分别解析两个文件:
python device/mediatek/build/build/tools/check_kernel_config.py -c device/oplus/mt6765/ProjectConfig.mk -k out/target/product/mt6765/obj/KERNEL_OBJ/.config -p mt6765
——此命令可以从编译报错的log中看到
这一点更直观的表示是:
如果在ProjectConfig.mk中添加宏控对CUSTOM_KERNEL_IMGSENSOR做区分:
ifdef EXAMPLE_DEFINE
CUSTOM_KERNEL_IMGSENSOR = str1
else
CUSTOM_KERNEL_IMGSENSOR = str2
endif
6765_defconfig中的定义是:
CONFIG_CUSTOM_KERNEL_IMGSENSOR = str1
执行export EXAMPLE_DEFINE=yes 后编译,从代码中可以看到加载imgsensor的驱动/效果参数时,已经按照str1中的配置去加载。但是*** String ERROR ***的报错仍会出现。
原因是check_kernel_config.py文件去解析ProjectConfig.mk时,同个tag对应的值出现两次的话,后面的值会将前一个值覆盖。此解析脚本不会关注代码中实际取到的是什么值。