From 84e16d279feaeb1dedcc8f644aaaaae5f1ffeca3 Mon Sep 17 00:00:00 2001 From: Yongqin Liu Date: Mon, 14 Jan 2019 21:34:47 +0800 Subject: tasks/kernel.mk: update for clang support Change-Id: Id67b995c611bed923645b9247318b20103a55597 Signed-off-by: Yongqin Liu --- tasks/kernel.mk | 40 ++++++++++++++++++++++++++-------------- 1 file changed, 26 insertions(+), 14 deletions(-) diff --git a/tasks/kernel.mk b/tasks/kernel.mk index 4e2d9de..a1e4fa8 100644 --- a/tasks/kernel.mk +++ b/tasks/kernel.mk @@ -20,10 +20,9 @@ endif UNRESOLVED_KERNEL_TOOLS_PREFIX ?= $(ABS_TARGET_TOOLS_PREFIX) KERNEL_TOOLS_PREFIX := $(UNRESOLVED_KERNEL_TOOLS_PREFIX) -ifneq ($(strip $(CLANG)),) ABS_CLANG = $(shell cd `dirname $(CLANG)` && pwd)/$(shell basename $(CLANG)) -UNRESOLVED_ABS_CLANG ?= $(ABS_CLANG) -ABS_CLANG := $(UNRESOLVED_ABS_CLANG) +ifneq ($(strip $(KERNEL_CLANG)),) +ABS_CLANG = $(shell cd `dirname $(KERNEL_CLANG)` && pwd)/$(shell basename $(KERNEL_CLANG)) endif REALTOP := $(realpath $(TOP)) @@ -86,22 +85,35 @@ else KLDR := endif +KERNEL_TC_LD := $(KERNEL_TOOLS_PREFIX)ld +ifneq (,$(wildcard $(KERNEL_TOOLS_PREFIX)ld.bfd)) +KERNEL_TC_LD := $(KERNEL_TOOLS_PREFIX)ld.bfd +endif + +ifneq ($(strip $(CLANG_TRIPLE)),) +CLANG_TRIPLE_OPT := CLANG_TRIPLE=$(CLANG_TRIPLE) +else +CLANG_TRIPLE_OPT := +endif + +ifeq ($(strip $(KERNEL_BUILD_WITH_CLANG)),true) +KERNEL_MAKE_CMDS=$(MAKE) $(KLDR) $(KERNEL_VERBOSE) -C $(KERNEL_SRC) O=$(KERNEL_OUT) ARCH=$(ARCH) CROSS_COMPILE="$(KERNEL_TOOLS_PREFIX)" ${CLANG_TRIPLE_OPT} KCFLAGS="$(TARGET_EXTRA_CFLAGS) -fno-pic $(LOCAL_CFLAGS)" LD="$(KERNEL_TC_LD)" CC=$(ABS_CLANG) HOSTCC=$(ABS_CLANG) $(KERNEL_TARGET) +else +KERNEL_MAKE_CMDS=$(MAKE) $(KLDR) $(KERNEL_VERBOSE) -C $(KERNEL_SRC) O=$(KERNEL_OUT) ARCH=$(ARCH) CROSS_COMPILE="$(KERNEL_TOOLS_PREFIX)" KCFLAGS="$(TARGET_EXTRA_CFLAGS) -fno-pic $(LOCAL_CFLAGS)" LD="$(KERNEL_TC_LD)" $(KERNEL_TARGET) +endif + +HOST_PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin android_kernel: $(BOOTLOADER_DEP) $(PERF_DEP) echo building kernel $(KERNEL_TARGET) with config $(KERNEL_CONFIG) for bootloader $(TARGET_BOOTLOADER_TYPE) mkdir -p $(KERNEL_OUT) - cd $(KERNEL_SRC) &&\ - if [ "`echo $(KERNEL_TOOLS_PREFIX) |cut -b1`" = "/" ]; then KTP="$(KERNEL_TOOLS_PREFIX)"; else KTP="$(REALTOP)/$(KERNEL_TOOLS_PREFIX)"; fi ; \ - export PATH=$(KERNEL_COMPILER_PATHS):$(PATH) && \ - if [ -e "$${KTP}ld.bfd" ]; then LD="$${KTP}ld.bfd"; else LD="$${KTP}ld"; fi && \ - if [ $(words $(KERNEL_CONFIG)) -gt 1 ]; \ - then scripts/kconfig/merge_config.sh -m $(KERNEL_CONFIG) && mv -f .config $(KERNEL_OUT)/.merged.config && $(MAKE) -j1 $(KERNEL_VERBOSE) O=$(KERNEL_OUT) ARCH=$(ARCH) KCONFIG_ALLCONFIG=$(KERNEL_OUT)/.merged.config alldefconfig; \ - else $(MAKE) -j1 KCFLAGS="$(TARGET_EXTRA_CFLAGS) -fno-pic $(LOCAL_CFLAGS)" $(KERNEL_VERBOSE) O=$(KERNEL_OUT) ARCH=$(ARCH) CROSS_COMPILE="$${KTP}" LD="$${LD}" defconfig $(KERNEL_CONFIG); \ - fi && \ - if [ "$(KERNEL_BUILD_WITH_CLANG)" = "true" -a -n "$(CLANG)" ] ; then \ - $(MAKE) $(KLDR) $(KERNEL_VERBOSE) O=$(KERNEL_OUT) ARCH=$(ARCH) CROSS_COMPILE="$${KTP}" KCFLAGS="$(TARGET_EXTRA_CFLAGS) -fno-pic $(LOCAL_CFLAGS)" LD="$${LD}" CC=$(ABS_CLANG) HOSTCC=$(ABS_CLANG) $(KERNEL_TARGET); \ + if [ $(words $(KERNEL_CONFIG)) -gt 1 ]; then \ + cd $(KERNEL_SRC) && KCONFIG_CONFIG=$(KERNEL_OUT)/.merged.config ./scripts/kconfig/merge_config.sh -m $(KERNEL_CONFIG) && cd - && \ + PATH=$(HOST_PATH):$$PATH $(MAKE) -C $(KERNEL_SRC) -j1 $(KERNEL_VERBOSE) O=$(KERNEL_OUT) ARCH=$(ARCH) CROSS_COMPILE="$(KERNEL_TOOLS_PREFIX)" LD="$(KERNEL_TC_LD)" KCONFIG_ALLCONFIG=$(KERNEL_OUT)/.merged.config alldefconfig; \ else \ - $(MAKE) $(KLDR) $(KERNEL_VERBOSE) O=$(KERNEL_OUT) ARCH=$(ARCH) CROSS_COMPILE="$${KTP}" KCFLAGS="$(TARGET_EXTRA_CFLAGS) -fno-pic $(LOCAL_CFLAGS)" LD="$${LD}" $(KERNEL_TARGET); \ + PATH=$(HOST_PATH):$$PATH $(MAKE) -C $(KERNEL_SRC) -j1 $(KERNEL_VERBOSE) O=$(KERNEL_OUT) ARCH=$(ARCH) CROSS_COMPILE="$(KERNEL_TOOLS_PREFIX)" LD="$(KERNEL_TC_LD)" $(KERNEL_CONFIG); \ fi + echo $(KERNEL_MAKE_CMDS) + PATH=$(HOST_PATH):$$PATH $(KERNEL_MAKE_CMDS) ifeq ($(INCLUDE_PERF),1) export PATH=$(KERNEL_COMPILER_PATHS):$(PATH) &&\ -- cgit v1.2.3