mirror of
https://github.com/team-infusion-developers/android_kernel_samsung_msm8976.git
synced 2024-11-07 04:09:21 +00:00
7c74917b09
Change Android kernel build makefile to pick up multiple CONFIG_ARCH_ options for device tree targets. These options are used to indicate the DTS file(s) to compile. Change-Id: I25ea8072f428171b21c056177ea5fec1be660aa3 Signed-off-by: David Ng <dave@codeaurora.org>
91 lines
3.5 KiB
Makefile
91 lines
3.5 KiB
Makefile
#Android makefile to build kernel as a part of Android Build
|
|
PERL = perl
|
|
|
|
ifeq ($(TARGET_PREBUILT_KERNEL),)
|
|
|
|
KERNEL_OUT := $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ
|
|
KERNEL_CONFIG := $(KERNEL_OUT)/.config
|
|
TARGET_PREBUILT_INT_KERNEL := $(KERNEL_OUT)/arch/arm/boot/zImage
|
|
KERNEL_HEADERS_INSTALL := $(KERNEL_OUT)/usr
|
|
KERNEL_MODULES_INSTALL := system
|
|
KERNEL_MODULES_OUT := $(TARGET_OUT)/lib/modules
|
|
KERNEL_IMG=$(KERNEL_OUT)/arch/arm/boot/Image
|
|
|
|
DTS_NAMES ?= $(shell $(PERL) -e 'while (<>) {$$a = $$1 if /CONFIG_ARCH_((?:MSM|QSD)[a-zA-Z0-9]+)=y/; $$r = $$1 if /CONFIG_MSM_SOC_REV_(?!NONE)(\w+)=y/; $$arch = $$arch.lc("$$a$$r ") if /CONFIG_ARCH_((?:MSM|QSD)[a-zA-Z0-9]+)=y/} print $$arch;' $(KERNEL_CONFIG))
|
|
KERNEL_USE_OF ?= $(shell $(PERL) -e '$$of = "n"; while (<>) { if (/CONFIG_USE_OF=y/) { $$of = "y"; break; } } print $$of;' kernel/arch/arm/configs/$(KERNEL_DEFCONFIG))
|
|
|
|
ifeq "$(KERNEL_USE_OF)" "y"
|
|
DTS_FILES = $(wildcard $(TOP)/kernel/arch/arm/boot/dts/$(DTS_NAME)*.dts)
|
|
DTS_FILE = $(lastword $(subst /, ,$(1)))
|
|
DTB_FILE = $(addprefix $(KERNEL_OUT)/arch/arm/boot/,$(patsubst %.dts,%.dtb,$(call DTS_FILE,$(1))))
|
|
ZIMG_FILE = $(addprefix $(KERNEL_OUT)/arch/arm/boot/,$(patsubst %.dts,%-zImage,$(call DTS_FILE,$(1))))
|
|
KERNEL_ZIMG = $(KERNEL_OUT)/arch/arm/boot/zImage
|
|
DTC = $(KERNEL_OUT)/scripts/dtc/dtc
|
|
|
|
define append-dtb
|
|
mkdir -p $(KERNEL_OUT)/arch/arm/boot;\
|
|
$(foreach DTS_NAME, $(DTS_NAMES), \
|
|
$(foreach d, $(DTS_FILES), \
|
|
$(DTC) -p 1024 -O dtb -o $(call DTB_FILE,$(d)) $(d); \
|
|
cat $(KERNEL_ZIMG) $(call DTB_FILE,$(d)) > $(call ZIMG_FILE,$(d));))
|
|
endef
|
|
else
|
|
|
|
define append-dtb
|
|
endef
|
|
endif
|
|
|
|
ifeq ($(TARGET_USES_UNCOMPRESSED_KERNEL),true)
|
|
$(info Using uncompressed kernel)
|
|
TARGET_PREBUILT_KERNEL := $(KERNEL_OUT)/piggy
|
|
else
|
|
TARGET_PREBUILT_KERNEL := $(TARGET_PREBUILT_INT_KERNEL)
|
|
endif
|
|
|
|
define mv-modules
|
|
mdpath=`find $(KERNEL_MODULES_OUT) -type f -name modules.dep`;\
|
|
if [ "$$mdpath" != "" ];then\
|
|
mpath=`dirname $$mdpath`;\
|
|
ko=`find $$mpath/kernel -type f -name *.ko`;\
|
|
for i in $$ko; do mv $$i $(KERNEL_MODULES_OUT)/; done;\
|
|
fi
|
|
endef
|
|
|
|
define clean-module-folder
|
|
mdpath=`find $(KERNEL_MODULES_OUT) -type f -name modules.dep`;\
|
|
if [ "$$mdpath" != "" ];then\
|
|
mpath=`dirname $$mdpath`; rm -rf $$mpath;\
|
|
fi
|
|
endef
|
|
|
|
$(KERNEL_OUT):
|
|
mkdir -p $(KERNEL_OUT)
|
|
|
|
$(KERNEL_CONFIG): $(KERNEL_OUT)
|
|
$(MAKE) -C kernel O=../$(KERNEL_OUT) ARCH=arm CROSS_COMPILE=arm-eabi- $(KERNEL_DEFCONFIG)
|
|
|
|
$(KERNEL_OUT)/piggy : $(TARGET_PREBUILT_INT_KERNEL)
|
|
$(hide) gunzip -c $(KERNEL_OUT)/arch/arm/boot/compressed/piggy.gzip > $(KERNEL_OUT)/piggy
|
|
|
|
$(TARGET_PREBUILT_INT_KERNEL): $(KERNEL_OUT) $(KERNEL_CONFIG) $(KERNEL_HEADERS_INSTALL)
|
|
$(MAKE) -C kernel O=../$(KERNEL_OUT) ARCH=arm CROSS_COMPILE=arm-eabi-
|
|
$(MAKE) -C kernel O=../$(KERNEL_OUT) ARCH=arm CROSS_COMPILE=arm-eabi- modules
|
|
$(MAKE) -C kernel O=../$(KERNEL_OUT) INSTALL_MOD_PATH=../../$(KERNEL_MODULES_INSTALL) ARCH=arm CROSS_COMPILE=arm-eabi- modules_install
|
|
$(mv-modules)
|
|
$(clean-module-folder)
|
|
$(append-dtb)
|
|
|
|
$(KERNEL_HEADERS_INSTALL): $(KERNEL_OUT) $(KERNEL_CONFIG)
|
|
$(MAKE) -C kernel O=../$(KERNEL_OUT) ARCH=arm CROSS_COMPILE=arm-eabi- headers_install
|
|
|
|
kerneltags: $(KERNEL_OUT) $(KERNEL_CONFIG)
|
|
$(MAKE) -C kernel O=../$(KERNEL_OUT) ARCH=arm CROSS_COMPILE=arm-eabi- tags
|
|
|
|
kernelconfig: $(KERNEL_OUT) $(KERNEL_CONFIG)
|
|
env KCONFIG_NOTIMESTAMP=true \
|
|
$(MAKE) -C kernel O=../$(KERNEL_OUT) ARCH=arm CROSS_COMPILE=arm-eabi- menuconfig
|
|
env KCONFIG_NOTIMESTAMP=true \
|
|
$(MAKE) -C kernel O=../$(KERNEL_OUT) ARCH=arm CROSS_COMPILE=arm-eabi- savedefconfig
|
|
cp $(KERNEL_OUT)/defconfig kernel/arch/arm/configs/$(KERNEL_DEFCONFIG)
|
|
|
|
endif
|