The filename msmcopper.dts does not describe a target, split these up to create SoC specific (.dtsi) and board specific (.dts) device tree source files. The board specific files need to include the SoC file and can selectively specify the devices that are not present or supported. Update the makefile to generate all board variants of appended DTB zImage files or allow for a specific variant to be generated using the DTS_NAME override. Change-Id: Ic0bba8313866352dde67287fab88aa20b77738f0 Signed-off-by: Sathish Ambley <sambley@codeaurora.org>
92 lines
3.4 KiB
Makefile
92 lines
3.4 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
|
|
|
|
MSM_ARCH ?= $(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/;} print lc("$$a$$r\n");' $(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_NAME ?= $(MSM_ARCH)
|
|
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 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
|