Android Kernel如何確定使用哪個defconfig文件?
答案:
device/廠商名/項目名/AndroidBoard.mk 決定了使用哪個def_config文件
1. 項目控制的AndroidBoard.mk
以device/qcom/sm6150/AndroidBoard.mk爲例子
因爲KERNEL_DEFCONFIG被定義爲sdmsteppe-perf_defconfig、sdmsteppe_defconfig文件,所以kernel編譯時會使用這兩個中的一個。
#----------------------------------------------------------------------
# Compile Linux Kernel
#----------------------------------------------------------------------
ifeq ($(KERNEL_DEFCONFIG),)
ifeq ($(TARGET_BUILD_VARIANT),user)
KERNEL_DEFCONFIG := vendor/sdmsteppe-perf_defconfig
else
KERNEL_DEFCONFIG := vendor/sdmsteppe_defconfig
endif
endif
而TARGET_BUILD_VARIANT變量是在Android編譯系統中定義的
這個變量決定了編譯的是userdebug還是eng版本
也會決定具體是使用sdmsteppe-perf_defconfig,還是sdmsteppe_defconfig文件
2. 控制kernel編譯的AndroidKernel.mk
在內核源碼中的kernel/msm-4.14/AndroidKernel.mk文件確定了具體使用哪個config文件
ifeq ($(shell echo $(KERNEL_DEFCONFIG) | grep vendor),)
KERNEL_DEFCONFIG := vendor/$(KERNEL_DEFCONFIG)
endif