summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYongqin Liu <yongqin.liu@linaro.org>2019-01-14 21:34:47 +0800
committerYongqin Liu <yongqin.liu@linaro.org>2019-01-14 21:34:47 +0800
commit84e16d279feaeb1dedcc8f644aaaaae5f1ffeca3 (patch)
tree4947a431bdb96ff128aa3a0665dfc5048047e312
parent70808ab66e83bc1fc1e2750d06780f45bd997a51 (diff)
downloadcommon-linaro-oreo.tar.gz
tasks/kernel.mk: update for clang supportlinaro-oreo
Change-Id: Id67b995c611bed923645b9247318b20103a55597 Signed-off-by: Yongqin Liu <yongqin.liu@linaro.org>
-rw-r--r--tasks/kernel.mk40
1 files 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) &&\