diff options
author | Yongqin Liu <yongqin.liu@linaro.org> | 2019-01-14 21:34:47 +0800 |
---|---|---|
committer | Yongqin Liu <yongqin.liu@linaro.org> | 2019-01-14 21:34:47 +0800 |
commit | 84e16d279feaeb1dedcc8f644aaaaae5f1ffeca3 (patch) | |
tree | 4947a431bdb96ff128aa3a0665dfc5048047e312 | |
parent | 70808ab66e83bc1fc1e2750d06780f45bd997a51 (diff) | |
download | common-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.mk | 40 |
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) &&\ |