diff --git a/BUILD.gn b/BUILD.gn index 08bd5c0fab73dcb6e4422cb39d31b4ff574d9c0b..d7108c2c21c7158b2d2890aedd382407541b2020 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -69,6 +69,8 @@ if (os_level == "mini" || os_level == "small") { product_path, device_name, linux_kernel_version, + build_variant, + device_type, ] } diff --git a/build_kernel.sh b/build_kernel.sh index 26797439c6db96cb32d0c131b1d05643c880a1d7..3e7085d00ed9a109765a56bd8e0d7da1f7653d4f 100755 --- a/build_kernel.sh +++ b/build_kernel.sh @@ -21,7 +21,7 @@ set -e echo build_kernel pushd ${1} -./kernel_module_build.sh ${2} ${4} ${5} ${6} ${7} ${8} +./kernel_module_build.sh ${2} ${4} ${5} ${6} ${7} ${8} ${9} ${10} mkdir -p ${3} rm -rf ${3}/../../../kernel.timestamp diff --git a/kernel.mk b/kernel.mk index ee391f181b62adb5bcbda6f43dcde76977b2acee..a1a827bc0f3a96d4c0f8ec1b0066fa192406b925 100644 --- a/kernel.mk +++ b/kernel.mk @@ -26,7 +26,6 @@ endif KERNEL_SRC_PATH := $(OHOS_BUILD_HOME)/kernel/linux/${KERNEL_VERSION} KERNEL_PATCH_PATH := $(OHOS_BUILD_HOME)/kernel/linux/patches/${KERNEL_VERSION} -KERNEL_CONFIG_PATH := $(OHOS_BUILD_HOME)/kernel/linux/config/${KERNEL_VERSION} PREBUILTS_GCC_DIR := $(OHOS_BUILD_HOME)/prebuilts/gcc CLANG_HOST_TOOLCHAIN := $(OHOS_BUILD_HOME)/prebuilts/clang/ohos/linux-x86_64/llvm/bin KERNEL_HOSTCC := $(CLANG_HOST_TOOLCHAIN)/clang @@ -70,6 +69,24 @@ DEFCONFIG_FILE := $(DEVICE_NAME)_$(BUILD_TYPE)_defconfig export KBUILD_OUTPUT=$(KERNEL_OBJ_TMP_PATH) +HARMONY_CONFIG_PATH := $(OHOS_BUILD_HOME)/kernel/linux/config/$(KERNEL_VERSION) +DEVICE_CONFIG_PATH := $(OHOS_BUILD_HOME)/kernel/linux/config/$(KERNEL_VERSION)/$(DEVICE_NAME) +DEFCONFIG_BASE_FILE := $(HARMONY_CONFIG_PATH)/base_defconfig +DEFCONFIG_TYPE_FILE := $(HARMONY_CONFIG_PATH)/type/$(BUILD_TYPE)_defconfig +DEFCONFIG_FORM_FILE := $(HARMONY_CONFIG_PATH)/form/$(KERNEL_FORM)_defconfig +DEFCONFIG_ARCH_FILE := $(DEVICE_CONFIG_PATH)/arch/$(KERNEL_ARCH)_defconfig +DEFCONFIG_PROC_FILE := $(DEVICE_CONFIG_PATH)/product/$(KERNEL_PROD)_defconfig + +ifneq ($(shell test -e $DEFCONFIG_FORM_FILE), 0) + DEFCONFIG_FORM_FILE := + $(warning no form config file $(DEFCONFIG_FORM_FILE)) +endif + +ifneq ($(shell test -e $DEFCONFIG_PROC_FILE), 0) + DEFCONFIG_PROC_FILE := + $(warning no product config file $(DEFCONFIG_PROC_FILE)) +endif + $(KERNEL_IMAGE_FILE): $(hide) echo "build kernel..." ifeq ($(DEVICE_NAME), hispark_phoenix) @@ -90,8 +107,8 @@ endif ifneq ($(findstring $(BUILD_TYPE), small),) $(hide) cd $(KERNEL_SRC_TMP_PATH) && patch -p1 < $(SMALL_PATCH_FILE) endif - - $(hide) cp -rf $(KERNEL_CONFIG_PATH)/. $(KERNEL_SRC_TMP_PATH)/ + sh $(OHOS_BUILD_HOME)/kernel/linux/$(KERNEL_VERSION)/scripts/kconfig/merge_config.sh -O $(KERNEL_SRC_TMP_PATH)/arch/$(KERNEL_ARCH)/configs/ -m $(DEFCONFIG_TYPE_FILE) $(DEFCONFIG_FORM_FILE) $(DEFCONFIG_ARCH_FILE) $(DEFCONFIG_PROC_FILE) $(DEFCONFIG_BASE_FILE) + mv $(KERNEL_SRC_TMP_PATH)/arch/$(KERNEL_ARCH)/configs/.config $(KERNEL_SRC_TMP_PATH)/arch/$(KERNEL_ARCH)/configs/$(DEFCONFIG_FILE) $(hide) $(KERNEL_MAKE) -C $(KERNEL_SRC_TMP_PATH) ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) distclean $(hide) $(KERNEL_MAKE) -C $(KERNEL_SRC_TMP_PATH) ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) $(DEFCONFIG_FILE) ifeq ($(KERNEL_VERSION), linux-5.10) diff --git a/kernel_build.py b/kernel_build.py old mode 100644 new mode 100755 diff --git a/kernel_module_build.sh b/kernel_module_build.sh index 74ac9c8e9bbf41aeda1a51a27ce720336047a158..7a4fc9e7a83e6346a82693ae7893e0125e3940e4 100755 --- a/kernel_module_build.sh +++ b/kernel_module_build.sh @@ -21,6 +21,7 @@ export KERNEL_ARCH=$3 export PRODUCT_PATH=$4 export DEVICE_NAME=$5 export KERNEL_VERSION=$6 + if [ "$BUILD_TYPE" == "small" ];then LINUX_KERNEL_OUT=${OUT_DIR}/kernel/${KERNEL_VERSION} elif [ "$BUILD_TYPE" == "standard" ];then