Android Kernel如何确定使用哪个defconfig文件

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文件
Android Kernel如何确定使用哪个defconfig文件_第1张图片

2. 控制kernel编译的AndroidKernel.mk

在内核源码中的kernel/msm-4.14/AndroidKernel.mk文件确定了具体使用哪个config文件

ifeq ($(shell echo $(KERNEL_DEFCONFIG) | grep vendor),)
KERNEL_DEFCONFIG := vendor/$(KERNEL_DEFCONFIG)
endif

你可能感兴趣的:(Android底层)