| # SPDX-License-Identifier: GPL-2.0 |
| # Copyright (C) 2019 MediaTek Inc. |
| |
| LOCAL_PATH := $(call my-dir) |
| MTK_PATH_DEVICE_BUILD ?= device/mediatek |
| ifeq ($(word 2,$(subst -, ,$(notdir $(LOCAL_PATH)))),$(word 2,$(subst -, ,$(strip $(LINUX_KERNEL_VERSION))))) |
| |
| include $(LOCAL_PATH)/kenv.mk |
| |
| ifeq ($(wildcard $(TARGET_PREBUILT_KERNEL)),) |
| KERNEL_MAKE_DEPENDENCIES := $(shell find $(KERNEL_DIR) -name .git -prune -o -type f | sort) |
| KERNEL_MAKE_DEPENDENCIES += $(shell find vendor/mediatek/kernel_modules -name .git -prune -o -type f | sort) |
| ifdef MTK_GKI_PREBUILTS_DIR |
| KERNEL_MAKE_DEPENDENCIES += $(wildcard $(MTK_GKI_PREBUILTS_DIR)/*) |
| endif |
| ifdef MTK_GKI_BUILD_CONFIG |
| KERNEL_MAKE_DEPENDENCIES += $(shell find kernel/$(REL_ACK_DIR) -name .git -prune -o -type f | sort) |
| endif |
| ifdef LINUX_KERNEL_VERSION |
| KERNEL_MAKE_DEPENDENCIES += $(shell find $(LINUX_KERNEL_VERSION) -name .git -prune -o -type f | sort) |
| endif |
| |
| $(GEN_KERNEL_BUILD_CONFIG): PRIVATE_GEN_BUILD_CONFIG := $(REL_KERNEL_DIR)/scripts/gen_build_config.py |
| $(GEN_KERNEL_BUILD_CONFIG): PRIVATE_KERNEL_DEFCONFIG := $(KERNEL_DEFCONFIG) |
| $(GEN_KERNEL_BUILD_CONFIG): PRIVATE_KERNEL_DEFCONFIG_OVERLAYS := $(KERNEL_DEFCONFIG_OVERLAYS) |
| $(GEN_KERNEL_BUILD_CONFIG): PRIVATE_KERNEL_BUILD_CONFIG := $(REL_GEN_KERNEL_BUILD_CONFIG) |
| $(GEN_KERNEL_BUILD_CONFIG): PRIVATE_KERNEL_BUILD_CONFIG_OVERLAYS := $(addprefix $(REL_KERNEL_DIR)/,$(KERNEL_BUILD_CONFIG_OVERLAYS)) |
| $(GEN_KERNEL_BUILD_CONFIG): $(KERNEL_DIR)/kernel/configs/ext_modules.list |
| $(GEN_KERNEL_BUILD_CONFIG): $(KERNEL_DIR)/scripts/gen_build_config.py $(wildcard $(KERNEL_DIR)/build.config.*) $(build_config_file) $(KERNEL_CONFIG_FILE) $(LOCAL_PATH)/Android.mk |
| $(hide) mkdir -p $(dir $@) |
| $(hide) cd kernel && python $(PRIVATE_GEN_BUILD_CONFIG) --kernel-defconfig $(PRIVATE_KERNEL_DEFCONFIG) --kernel-defconfig-overlays "$(PRIVATE_KERNEL_DEFCONFIG_OVERLAYS)" --kernel-build-config-overlays "$(PRIVATE_KERNEL_BUILD_CONFIG_OVERLAYS)" -m $(TARGET_BUILD_VARIANT) -o $(PRIVATE_KERNEL_BUILD_CONFIG) && cd .. |
| |
| ifeq (yes,$(strip $(BUILD_KERNEL))) |
| ifneq ($(KERNEL_USE_BAZEL),yes) |
| $(KERNEL_ZIMAGE_OUT): PRIVATE_DIR := $(KERNEL_DIR) |
| $(KERNEL_ZIMAGE_OUT): PRIVATE_KERNEL_OUT := $(REL_KERNEL_OUT) |
| $(KERNEL_ZIMAGE_OUT): PRIVATE_DIST_DIR := $(REL_KERNEL_OUT)/dist |
| $(KERNEL_ZIMAGE_OUT): PRIVATE_CC_WRAPPER := $(CCACHE_EXEC) |
| $(KERNEL_ZIMAGE_OUT): PRIVATE_KERNEL_BUILD_CONFIG := $(REL_GEN_KERNEL_BUILD_CONFIG) |
| ifeq (user,$(strip $(KERNEL_BUILD_VARIANT))) |
| ifneq (,$(strip $(shell grep "^CONFIG_ABI_MONITOR\s*=\s*y" $(KERNEL_CONFIG_FILE)))) |
| $(KERNEL_ZIMAGE_OUT): PRIVATE_KERNEL_BUILD_SCRIPT := ./build/build_abi.sh |
| else |
| $(KERNEL_ZIMAGE_OUT): PRIVATE_KERNEL_BUILD_SCRIPT := ./build/build.sh |
| endif |
| else |
| $(KERNEL_ZIMAGE_OUT): PRIVATE_KERNEL_BUILD_SCRIPT := ./build/build.sh |
| endif |
| $(KERNEL_ZIMAGE_OUT): $(GEN_KERNEL_BUILD_CONFIG) $(KERNEL_MAKE_DEPENDENCIES) | kernel-outputmakefile |
| $(hide) mkdir -p $(dir $@) |
| $(hide) cd kernel && CC_WRAPPER=$(PRIVATE_CC_WRAPPER) SKIP_MRPROPER=1 BUILD_CONFIG=$(PRIVATE_KERNEL_BUILD_CONFIG) OUT_DIR=$(PRIVATE_KERNEL_OUT) DIST_DIR=$(PRIVATE_DIST_DIR) $(PRIVATE_KERNEL_BUILD_SCRIPT) && cd .. |
| ifeq (uncompressed,$(strip $(MTK_KERNEL_COMPRESS_FORMAT))) |
| else |
| $(hide) $(call fixup-kernel-cmd-file,$(KERNEL_OUT)/arch/$(KERNEL_TARGET_ARCH)/boot/compressed/.piggy.xzkern.cmd) |
| endif |
| else |
| $(KERNEL_ZIMAGE_OUT): PRIVATE_BAZEL_DIST_OUT := $(KERNEL_BAZEL_DIST_OUT) |
| $(KERNEL_ZIMAGE_OUT): PRIVATE_BAZEL_PROJECT_NAME := $(subst _defconfig,,$(KERNEL_DEFCONFIG)) |
| $(KERNEL_ZIMAGE_OUT): PRIVATE_BAZEL_BUILD_PARAMETERS := --config=android_ci --lto=full |
| $(KERNEL_ZIMAGE_OUT): PRIVATE_BAZEL_BUILD_PARAMETERS += --config=$(PRIVATE_BAZEL_PROJECT_NAME) |
| $(KERNEL_ZIMAGE_OUT): PRIVATE_BAZEL_DIST_GOAL := //kernel_device_modules-5.15:$(PRIVATE_BAZEL_PROJECT_NAME)_dist |
| ifeq ($(BUILD_GKI_KERNEL),1) |
| $(KERNEL_ZIMAGE_OUT): PRIVATE_BAZEL_BUILD_PARAMETERS += --config=no_download_gki |
| endif |
| ifneq ($(wildcard vendor/mediatek/tests/kernel),) |
| $(KERNEL_ZIMAGE_OUT): PRIVATE_BAZEL_BUILD_PARAMETERS += --//kernel_device_modules-5.15:internal_build |
| endif |
| $(KERNEL_ZIMAGE_OUT): $(GEN_KERNEL_BUILD_CONFIG) $(KERNEL_MAKE_DEPENDENCIES) | kernel-outputmakefile |
| cd kernel && tools/bazel run $(PRIVATE_BAZEL_BUILD_PARAMETERS) $(PRIVATE_BAZEL_DIST_GOAL) -- --dist_dir=$(abspath $(PRIVATE_BAZEL_DIST_OUT)) |
| ### Copy output to specific folder. |
| $(hide) mkdir -p $(abspath $(PRIVATE_BAZEL_DIST_OUT))/kernel/$(REL_KERNEL_DIR) |
| # Maintain compatibility with the platform build. |
| $(hide) mkdir -p $(abspath $(PRIVATE_BAZEL_DIST_OUT))/kernel-5.15/kernel_aarch64 |
| $(hide) cp -rf $(abspath $(PRIVATE_BAZEL_DIST_OUT))/$(REL_KERNEL_DIR)/gki_artifacts/*.ko $(abspath $(PRIVATE_BAZEL_DIST_OUT))/kernel-5.15/kernel_aarch64/ |
| $(hide) cp -rf $(abspath $(PRIVATE_BAZEL_DIST_OUT))/$(REL_KERNEL_DIR)/gki_artifacts/$(KERNEL_IMAGE_NAME) $(abspath $(PRIVATE_BAZEL_DIST_OUT))/kernel-5.15/ |
| $(hide) cp -rf $(abspath $(PRIVATE_BAZEL_DIST_OUT))/$(REL_KERNEL_DIR)/gki_artifacts/$(BOOT_IMG_NAME) $(abspath $(PRIVATE_BAZEL_DIST_OUT))/kernel-5.15/boot.img |
| $(hide) cp -rf $(abspath $(PRIVATE_BAZEL_DIST_OUT))/$(REL_KERNEL_DIR)/$(PRIVATE_BAZEL_PROJECT_NAME)_device_modules/* $(abspath $(PRIVATE_BAZEL_DIST_OUT))/kernel/kernel_device_modules-5.15/ |
| $(hide) cp -rf $(abspath $(PRIVATE_BAZEL_DIST_OUT))/$(REL_KERNEL_DIR)/$(PRIVATE_BAZEL_PROJECT_NAME)/* $(abspath $(PRIVATE_BAZEL_DIST_OUT))/kernel/kernel_device_modules-5.15/ |
| $(hide) cp -rf $(abspath $(PRIVATE_BAZEL_DIST_OUT))/vendor/mediatek/kernel_modules/met_drv_v3/met_drv_v3/* $(abspath $(PRIVATE_BAZEL_DIST_OUT))/vendor/mediatek/kernel_modules/met_drv_v3/ |
| $(hide) cp -rf $(abspath $(PRIVATE_BAZEL_DIST_OUT))/$(REL_KERNEL_DIR)/$(PRIVATE_BAZEL_PROJECT_NAME)_unstripped_modules_archive/unstripped_modules.tar.gz $(abspath $(PRIVATE_BAZEL_DIST_OUT)) |
| ifneq ($(wildcard vendor/mediatek/tests/kernel),) |
| $(hide) cp -rf $(abspath $(PRIVATE_BAZEL_DIST_OUT))/vendor/mediatek/kernel_modules/met_drv_v3/met_api/met_api_v3_int/* $(abspath $(PRIVATE_BAZEL_DIST_OUT))/vendor/mediatek/kernel_modules/met_drv_v3/met_api/ |
| $(hide) cp -rf $(abspath $(PRIVATE_BAZEL_DIST_OUT))/vendor/mediatek/kernel_modules/met_drv_secure_v3/met_drv_secure_v3/* $(abspath $(PRIVATE_BAZEL_DIST_OUT))/vendor/mediatek/kernel_modules/met_drv_secure_v3/ |
| else |
| $(hide) cp -rf $(abspath $(PRIVATE_BAZEL_DIST_OUT))/vendor/mediatek/kernel_modules/met_drv_v3/met_api/met_api_v3_cus/* $(abspath $(PRIVATE_BAZEL_DIST_OUT))/vendor/mediatek/kernel_modules/met_drv_v3/met_api/ |
| endif |
| $(hide) cp -rf $(abspath $(PRIVATE_BAZEL_DIST_OUT))/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4-mt7663/wlan_drv_gen4/* $(abspath $(PRIVATE_BAZEL_DIST_OUT))/vendor/mediatek/kernel_modules/connectivity/ |
| $(hide) cp -rf $(abspath $(PRIVATE_BAZEL_DIST_OUT))/vendor/mediatek/kernel_modules/connectivity/bt/mt76xx/sdio/btmtksdio/* $(abspath $(PRIVATE_BAZEL_DIST_OUT))/vendor/mediatek/kernel_modules/connectivity/ |
| $(hide) rm -rf $(abspath $(PRIVATE_BAZEL_DIST_OUT))/vendor/mediatek/kernel_modules/connectivity/wlan |
| $(hide) rm -rf $(abspath $(PRIVATE_BAZEL_DIST_OUT))/vendor/mediatek/kernel_modules/connectivity/bt |
| endif |
| |
| ifneq ($(BUILT_KERNEL_TARGET),$(KERNEL_ZIMAGE_OUT)) |
| $(BUILT_KERNEL_TARGET): $(KERNEL_ZIMAGE_OUT) $(LOCAL_PATH)/Android.mk | $(ACP) |
| $(copy-file-to-target) |
| endif |
| |
| $(TARGET_PREBUILT_KERNEL): $(BUILT_KERNEL_TARGET) $(LOCAL_PATH)/Android.mk | $(ACP) |
| $(copy-file-to-new-target) |
| |
| endif#BUILD_KERNEL |
| endif #TARGET_PREBUILT_KERNEL is empty |
| |
| ifeq (yes,$(strip $(BUILD_KERNEL))) |
| ifneq ($(strip $(TARGET_NO_KERNEL)),true) |
| $(INSTALLED_KERNEL_TARGET): $(BUILT_KERNEL_TARGET) $(LOCAL_PATH)/Android.mk | $(ACP) |
| $(copy-file-to-target) |
| endif#TARGET_NO_KERNEL |
| endif#BUILD_KERNEL |
| |
| .PHONY: kernel save-kernel kernel-menuconfig menuconfig-kernel savedefconfig-kernel clean-kernel |
| kernel: $(INSTALLED_KERNEL_TARGET) |
| kernel: $(KERNEL_ZIMAGE_OUT) |
| save-kernel: $(TARGET_PREBUILT_KERNEL) |
| |
| kernel-menuconfig: |
| $(hide) mkdir -p $(KERNEL_OUT) |
| $(PREBUILT_MAKE_PREFIX)/$(MAKE) -C $(KERNEL_DIR) $(KERNEL_MAKE_OPTION) menuconfig |
| |
| menuconfig-kernel savedefconfig-kernel: |
| $(hide) mkdir -p $(KERNEL_OUT) |
| $(PREBUILT_MAKE_PREFIX)/$(MAKE) -C $(KERNEL_DIR) $(KERNEL_MAKE_OPTION) $(patsubst %config-kernel,%config,$@) |
| |
| ifneq ($(KERNEL_USE_BAZEL),yes) |
| clean-kernel: |
| $(hide) rm -rf $(KERNEL_OUT) $(INSTALLED_KERNEL_TARGET) |
| else |
| clean-kernel: PRIVATE_BAZEL_DIST_OUT := $(KERNEL_BAZEL_DIST_OUT) |
| clean-kernel: |
| $(hide) cd kernel && tools/bazel clean |
| $(hide) rm -rf $(PRIVATE_BAZEL_DIST_OUT) |
| endif |
| |
| .PHONY: kernel-outputmakefile |
| kernel-outputmakefile: PRIVATE_DIR := kernel/$(REL_ACK_DIR) |
| kernel-outputmakefile: PRIVATE_KERNEL_OUT := $(shell bash $(dir $(mkfile_path))scripts/get_rel_path.sh $(KERNEL_OUT) kernel/$(REL_ACK_DIR)) |
| kernel-outputmakefile: |
| $(PREBUILT_MAKE_PREFIX)/$(MAKE) -C $(PRIVATE_DIR) O=$(PRIVATE_KERNEL_OUT) outputmakefile |
| |
| ### DTB build template |
| MTK_DTBIMAGE_DTS := $(addsuffix .dts,$(addprefix $(KERNEL_DIR)/arch/$(KERNEL_TARGET_ARCH)/boot/dts/,$(PLATFORM_DTB_NAME))) |
| include $(MTK_PATH_DEVICE_BUILD)/build/core/build_dtbimage.mk |
| |
| MTK_DTBOIMAGE_DTS := $(addsuffix .dts,$(addprefix $(KERNEL_DIR)/arch/$(KERNEL_TARGET_ARCH)/boot/dts/,$(PROJECT_DTB_NAMES))) |
| include $(MTK_PATH_DEVICE_BUILD)/build/core/build_dtboimage.mk |
| |
| endif #LINUX_KERNEL_VERSION |