summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAxel Fagerstedt <axel.fagerstedt@linaro.org>2012-12-11 10:37:59 +0100
committerAxel Fagerstedt <axel.fagerstedt@linaro.org>2012-12-16 22:23:57 +0100
commitba0aafe6c9b93bbd73dc6f61ea71373cfb15071d (patch)
tree2388883502a831f4d1f35a028bcac8c0ab8174af
parent2c71818b6322613d6aeccd699002bcc5ccb221e9 (diff)
kernel.mk: let kernel reside in kernel/<vendor>/<device>
Remove assumption that kernel src is in kernel, instead: 1. use TARGET_KERNEL_SOURCE if defined 2. try to use kernel/<vendor>/<device> if it exists 3. try to use kernel Change-Id: I89dda827dd40916842d518e8cb92225354e3a87b
-rw-r--r--tasks/kernel.mk23
1 files changed, 16 insertions, 7 deletions
diff --git a/tasks/kernel.mk b/tasks/kernel.mk
index 8f2bb49..447af19 100644
--- a/tasks/kernel.mk
+++ b/tasks/kernel.mk
@@ -8,10 +8,19 @@ REALTOP=$(realpath $(TOP))
KERNEL_OUT=$(realpath $(PRODUCT_OUT))/obj/kernel
+# Decide on path for kernel
+# 1. use TARGET_KERNEL_SOURCE if defined
+# 2. try to use kernel/<vendor>/<device> if it exists
+# 3. try to use kernel
+TARGET_AUTO_KDIR := $(shell echo $(TARGET_DEVICE_DIR) | sed -e 's/^device/kernel/g')
+TARGET_KERNEL_SOURCE ?= $(shell if [ -e $(TARGET_AUTO_KDIR) ]; then echo $(TARGET_AUTO_KDIR); else echo kernel; fi;)
+KERNEL_SRC := $(TARGET_KERNEL_SOURCE)
+
+
ifneq ($(strip $(BUILD_TINY_ANDROID)),true)
# We can build perf if it's included in the kernel and has the
# Android compatibility patch in
-ifneq ($(wildcard $(TOP)/kernel/tools/perf/compat-android.h),)
+ifneq ($(wildcard $(KERNEL_SRC)/tools/perf/compat-android.h),)
INCLUDE_PERF := 1
PERF_DEP := $(PRODUCT_OUT)/obj/STATIC_LIBRARIES/libelf_intermediates/libelf.a $(TARGET_OUT_SHARED_LIBRARIES)/libc.so
endif
@@ -42,7 +51,7 @@ endif
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 $(TOP)/kernel &&\
+ cd $(KERNEL_SRC) &&\
export PATH=$(KERNEL_COMPILER_PATHS):$(PATH) && \
if [ -e $(KERNEL_TOOLS_PREFIX)ld.bfd ]; then LD=$(KERNEL_TOOLS_PREFIX)ld.bfd; else LD=$(KERNEL_TOOLS_PREFIX)ld; fi && \
if [ $(words $(KERNEL_CONFIG)) -gt 1 ]; \
@@ -52,7 +61,7 @@ android_kernel: $(BOOTLOADER_DEP) $(PERF_DEP)
$(MAKE) $(KERNEL_VERBOSE) O=$(KERNEL_OUT) ARCH=$(ARCH) CROSS_COMPILE=$(KERNEL_TOOLS_PREFIX) KCFLAGS="$(TARGET_EXTRA_CFLAGS) -fno-pic $(LOCAL_CFLAGS)" LD=$$LD $(KERNEL_TARGET)
ifeq ($(INCLUDE_PERF),1)
export PATH=$(KERNEL_COMPILER_PATHS):$(PATH) &&\
- cd $(TOP)/kernel/tools/perf &&\
+ cd $(KERNEL_SRC)/tools/perf &&\
mkdir -p $(KERNEL_OUT)/tools/perf &&\
if [ -e $(KERNEL_TOOLS_PREFIX)ld.bfd ]; then LD=$(KERNEL_TOOLS_PREFIX)ld.bfd; else LD=$(KERNEL_TOOLS_PREFIX)ld; fi && \
$(MAKE) EXTRA_CFLAGS="$(TARGET_EXTRA_CFLAGS) $(LOCAL_CFLAGS) -isystem $(REALTOP)/bionic/libc/include -isystem $(REALTOP)/bionic/libc/kernel/common -isystem $(REALTOP)/bionic/libc/kernel/arch-arm -isystem $(REALTOP)/bionic/libc/arch-arm/include -I$(REALTOP)/external/elfutils/libelf -isystem $(REALTOP)/bionic/libm/include -isystem $(shell dirname $(KERNEL_TOOLS_PREFIX))/../include -I$(KERNEL_OUT)/tools/perf" BASIC_LDFLAGS="-nostdlib -Wl,-dynamic-linker,/system/bin/linker,-z,muldefs$(shell if test $(PLATFORM_SDK_VERSION) -lt 16; then echo -ne ',-T$(REALTOP)/$(BUILD_SYSTEM)/armelf.x'; fi),-z,nocopyreloc,--no-undefined -L$(REALTOP)/$(TARGET_OUT_STATIC_LIBRARIES) -L$(REALTOP)/$(PRODUCT_OUT)/system/lib -L$(REALTOP)/external/elfutils -L$(realpath $(PRODUCT_OUT))/obj/STATIC_LIBRARIES/libelf_intermediates -lpthread -lelf -lm -lc $(REALTOP)/$(TARGET_CRTBEGIN_DYNAMIC_O) $(REALTOP)/$(TARGET_CRTEND_O)" $(KERNEL_VERBOSE) O=$(KERNEL_OUT)/tools/perf/ OUTPUT=$(KERNEL_OUT)/tools/perf/ ARCH=$(ARCH) CROSS_COMPILE=$(KERNEL_TOOLS_PREFIX) LD=$$LD prefix=/system NO_DWARF=1 NO_NEWT=1 NO_LIBPERL=1 NO_LIBPYTHON=1 NO_GTK2=1 NO_STRLCPY=1 WERROR=0 && \
@@ -61,11 +70,11 @@ endif
android_kernel_modules: $(INSTALLED_KERNEL_TARGET) $(ACP)
export PATH=$(KERNEL_COMPILER_PATHS):$(PATH) &&\
- cd $(TOP)/kernel &&\
+ cd $(KERNEL_SRC) &&\
if [ -e $(KERNEL_TOOLS_PREFIX)ld.bfd ]; then LD=$(KERNEL_TOOLS_PREFIX)ld.bfd; else LD=$(KERNEL_TOOLS_PREFIX)ld; fi && \
$(MAKE) $(KERNEL_VERBOSE) O=$(KERNEL_OUT) ARCH=$(ARCH) CROSS_COMPILE=$(KERNEL_TOOLS_PREFIX) LD=$$LD EXTRA_CFLAGS="$(EXTRA_CFLAGS) -fno-pic" KCFLAGS="$(TARGET_EXTRA_CFLAGS) -fno-pic $(LOCAL_CFLAGS)" modules
mkdir -p $(KERNEL_OUT)/modules_for_android
- cd $(TOP)/kernel &&\
+ cd $(KERNEL_SRC) &&\
if [ -e $(KERNEL_TOOLS_PREFIX)ld.bfd ]; then LD=$(KERNEL_TOOLS_PREFIX)ld.bfd; else LD=$(KERNEL_TOOLS_PREFIX)ld; fi && \
$(MAKE) O=$(KERNEL_OUT) ARCH=$(ARCH) CROSS_COMPILE=$(KERNEL_TOOLS_PREFIX) KCFLAGS="$(TARGET_EXTRA_CFLAGS) -fno-pic $(LOCAL_CFLAGS)" LD=$$LD modules_install INSTALL_MOD_PATH=$(KERNEL_OUT)/modules_for_android
mkdir -p $(TARGET_OUT)/modules
@@ -75,7 +84,7 @@ android_kernel_modules: $(INSTALLED_KERNEL_TARGET) $(ACP)
# artifacts in the O=$(KERNEL_OUT)
ifeq ($(TARGET_USE_GATOR),true)
-KERNEL_PATH:=$(shell pwd)/kernel
+KERNEL_PATH:=$(shell pwd)/$(KERNEL_SRC)
ifneq ($(TARGET_GATOR_WITH_MALI_SUPPORT),)
ifndef TARGET_MALI_DRIVER_DIR
@@ -149,7 +158,7 @@ ifneq ($(strip $(DTB_TARGETS)),)
.PHONY : all_dtbs
all_dtbs : $(INSTALLED_KERNEL_TARGET)
export PATH=$(KERNEL_COMPILER_PATHS):$(PATH) &&\
- cd $(TOP)/kernel && \
+ cd $(KERNEL_SRC) && \
$(MAKE) O=$(KERNEL_OUT) ARCH=$(ARCH) CROSS_COMPILE=$(KERNEL_TOOLS_PREFIX) $(DTB_TARGETS)
$(patsubst %,$(KERNEL_OUT)/arch/arm/boot/%,$(DTB_TARGETS)) : all_dtbs