blob: fe568696ef816119e704c55ce842dc7eb916f25d [file] [log] [blame]
Jackeaglea76b7262019-05-03 14:53:47 +02001From ada368514dcea02d4099ab05c787a00e8838fd84 Mon Sep 17 00:00:00 2001
Jackeagled3ba2282018-11-17 20:49:22 -07002From: Jackeagle <jackeagle102@gmail.com>
Jackeaglea76b7262019-05-03 14:53:47 +02003Date: Fri, 3 May 2019 14:51:44 +0200
4Subject: [PATCH 17/17] Revert "vendor/bliss: Move some kernel definitions to
Jackeagled3ba2282018-11-17 20:49:22 -07005 BoardConfigKernel"
6
7This reverts commit 3a8423358f51b6616622c881e04d82ba2f603984.
8---
9 build/tasks/kernel.mk | 122 ++++++++++++++++++++++++++++++++----
10 config/BoardConfigBliss.mk | 2 -
11 config/BoardConfigKernel.mk | 111 --------------------------------
12 3 files changed, 111 insertions(+), 124 deletions(-)
13 delete mode 100644 config/BoardConfigKernel.mk
14
15diff --git a/build/tasks/kernel.mk b/build/tasks/kernel.mk
Jackeaglea76b7262019-05-03 14:53:47 +020016index d0263d37..6057b9f1 100644
Jackeagled3ba2282018-11-17 20:49:22 -070017--- a/build/tasks/kernel.mk
18+++ b/build/tasks/kernel.mk
19@@ -1,5 +1,4 @@
20 # Copyright (C) 2012 The CyanogenMod Project
21-# (C) 2017 The LineageOS Project
22 #
23 # Licensed under the Apache License, Version 2.0 (the "License");
24 # you may not use this file except in compliance with the License.
25@@ -21,10 +20,17 @@
26 #
27 # These config vars are usually set in BoardConfig.mk:
28 #
29+# TARGET_KERNEL_SOURCE = Kernel source dir, optional, defaults
30+# to kernel/$(TARGET_DEVICE_DIR)
31 # TARGET_KERNEL_CONFIG = Kernel defconfig
32 # TARGET_KERNEL_VARIANT_CONFIG = Variant defconfig, optional
33 # TARGET_KERNEL_SELINUX_CONFIG = SELinux defconfig, optional
34 # TARGET_KERNEL_ADDITIONAL_CONFIG = Additional defconfig, optional
35+# TARGET_KERNEL_ARCH = Kernel Arch
36+# TARGET_KERNEL_CROSS_COMPILE_PREFIX = Compiler prefix (e.g. arm-eabi-)
37+# defaults to arm-linux-androidkernel- for arm
38+# aarch64-linux-androidkernel- for arm64
39+# x86_64-linux-androidkernel- for x86
40 #
41 # TARGET_KERNEL_CLANG_COMPILE = Compile kernel with clang, defaults to false
42 #
43@@ -41,6 +47,13 @@
44 # For example, for ARM devices,
45 # use zImage-dtb instead of zImage.
46 #
47+# KERNEL_TOOLCHAIN_PREFIX = Overrides TARGET_KERNEL_CROSS_COMPILE_PREFIX,
48+# Set this var in shell to override
49+# toolchain specified in BoardConfig.mk
50+# KERNEL_TOOLCHAIN = Path to toolchain, if unset, assumes
51+# TARGET_KERNEL_CROSS_COMPILE_PREFIX
52+# is in PATH
53+#
54 # KERNEL_CC = The C Compiler used. This is automatically set based
55 # on whether the clang version is set, optional.
56 #
57@@ -49,6 +62,8 @@
58 # aarch64-linux-gnu- for arm64
59 # x86_64-linux-gnu- for x86
60 #
61+# USE_CCACHE = Enable ccache (global Android flag)
62+#
63 # NEED_KERNEL_MODULE_ROOT = Optional, if true, install kernel
64 # modules in root instead of vendor
65 # NEED_KERNEL_MODULE_SYSTEM = Optional, if true, install kernel
66@@ -56,7 +71,11 @@
67
68 ifneq ($(TARGET_NO_KERNEL),true)
69
70+TARGET_AUTO_KDIR := $(shell echo $(TARGET_DEVICE_DIR) | sed -e 's/^device/kernel/g')
71+
72 ## Externally influenced variables
73+# kernel location - optional, defaults to kernel/<vendor>/<device>
74+TARGET_KERNEL_SOURCE ?= $(TARGET_AUTO_KDIR)
75 KERNEL_SRC := $(TARGET_KERNEL_SOURCE)
76 # kernel configuration - mandatory
77 KERNEL_DEFCONFIG := $(TARGET_KERNEL_CONFIG)
78@@ -67,6 +86,13 @@ SELINUX_DEFCONFIG := $(TARGET_KERNEL_SELINUX_CONFIG)
79 KERNEL_OUT := $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ
80 KERNEL_CONFIG := $(KERNEL_OUT)/.config
81
82+TARGET_KERNEL_ARCH := $(strip $(TARGET_KERNEL_ARCH))
83+ifeq ($(TARGET_KERNEL_ARCH),)
84+KERNEL_ARCH := $(TARGET_ARCH)
85+else
86+KERNEL_ARCH := $(TARGET_KERNEL_ARCH)
87+endif
88+
89 ifeq ($(KERNEL_ARCH),x86_64)
90 KERNEL_DEFCONFIG_ARCH := x86
91 else
92@@ -85,6 +111,19 @@ $(error TARGET_KERNEL_APPEND_DTB is deprecated.)
93 endif
94 TARGET_PREBUILT_INT_KERNEL := $(KERNEL_OUT)/arch/$(KERNEL_ARCH)/boot/$(BOARD_KERNEL_IMAGE_NAME)
95
96+# Clear this first to prevent accidental poisoning from env
97+MAKE_FLAGS :=
98+
99+ifeq ($(KERNEL_ARCH),arm)
100+ # Avoid "Unknown symbol _GLOBAL_OFFSET_TABLE_" errors
101+ MAKE_FLAGS += CFLAGS_MODULE="-fno-pic"
102+endif
103+
104+ifeq ($(KERNEL_ARCH),arm64)
105+ # Avoid "unsupported RELA relocation: 311" errors (R_AARCH64_ADR_GOT_PAGE)
106+ MAKE_FLAGS += CFLAGS_MODULE="-fno-pic"
107+endif
108+
109 ifneq ($(TARGET_KERNEL_ADDITIONAL_CONFIG),)
110 KERNEL_ADDITIONAL_CONFIG := $(TARGET_KERNEL_ADDITIONAL_CONFIG)
111 KERNEL_ADDITIONAL_CONFIG_SRC := $(KERNEL_SRC)/arch/$(KERNEL_ARCH)/configs/$(KERNEL_ADDITIONAL_CONFIG)
112@@ -96,6 +135,16 @@ else
113 KERNEL_ADDITIONAL_CONFIG_SRC := /dev/null
114 endif
115
116+## Do be discontinued in a future version. Notify builder about target
117+## kernel format requirement
118+ifeq ($(BOARD_KERNEL_IMAGE_NAME),)
119+ifeq ($(BOARD_USES_UBOOT),true)
120+ $(error "Please set BOARD_KERNEL_IMAGE_NAME to uImage")
121+else ifeq ($(BOARD_USES_UNCOMPRESSED_BOOT),true)
122+ $(error "Please set BOARD_KERNEL_IMAGE_NAME to Image")
123+endif
124+endif
125+
126 ifeq "$(wildcard $(KERNEL_SRC) )" ""
127 ifneq ($(TARGET_PREBUILT_KERNEL),)
128 HAS_PREBUILT_KERNEL := true
129@@ -114,6 +163,7 @@ ifeq "$(wildcard $(KERNEL_SRC) )" ""
130 $(warning * THIS IS DEPRECATED, AND WILL BE DISCONTINUED *)
131 $(warning * Please configure your device to download the kernel *)
132 $(warning * source repository to $(KERNEL_SRC))
133+ $(warning * See http://wiki.cyanogenmod.org/w/Doc:_integrated_kernel_building)
134 $(warning * for more information *)
135 $(warning ***************************************************************)
136 FULL_KERNEL_BUILD := false
137@@ -171,6 +221,27 @@ KERNEL_DEPMOD_STAGING_DIR := $(call intermediates-dir-for,PACKAGING,depmod_vendo
138 KERNEL_MODULE_MOUNTPOINT := vendor
139 endif
140
141+TARGET_KERNEL_CROSS_COMPILE_PREFIX := $(strip $(TARGET_KERNEL_CROSS_COMPILE_PREFIX))
142+ifneq ($(TARGET_KERNEL_CROSS_COMPILE_PREFIX),)
143+KERNEL_TOOLCHAIN_PREFIX ?= $(TARGET_KERNEL_CROSS_COMPILE_PREFIX)
144+else ifeq ($(KERNEL_ARCH),arm64)
145+KERNEL_TOOLCHAIN_PREFIX ?= aarch64-linux-androidkernel-
146+else ifeq ($(KERNEL_ARCH),arm)
147+KERNEL_TOOLCHAIN_PREFIX ?= arm-linux-androidkernel-
148+else ifeq ($(KERNEL_ARCH),x86)
149+KERNEL_TOOLCHAIN_PREFIX ?= x86_64-linux-androidkernel-
150+endif
151+
152+ifeq ($(KERNEL_TOOLCHAIN),)
153+KERNEL_TOOLCHAIN_PATH := $(KERNEL_TOOLCHAIN_PREFIX)
154+else
155+ifneq ($(KERNEL_TOOLCHAIN_PREFIX),)
156+KERNEL_TOOLCHAIN_PATH := $(KERNEL_TOOLCHAIN)/$(KERNEL_TOOLCHAIN_PREFIX)
157+endif
158+endif
159+
160+BUILD_TOP := $(shell pwd)
161+
162 ifeq ($(TARGET_KERNEL_CLANG_COMPILE),true)
163 ifneq ($(TARGET_KERNEL_CLANG_VERSION),)
164 # Find the clang-* directory containing the specified version
165@@ -187,9 +258,38 @@ ifeq ($(TARGET_KERNEL_CLANG_COMPILE),true)
166 else ifeq ($(KERNEL_ARCH),x86)
167 KERNEL_CLANG_TRIPLE ?= CLANG_TRIPLE=x86_64-linux-gnu-
168 endif
169+endif
170+
171+ifneq ($(USE_CCACHE),)
172+ # Detect if the system already has ccache installed to use instead of the prebuilt
173+ ccache := $(shell which ccache)
174+
175+ ifeq ($(ccache),)
176+ ccache := $(BUILD_TOP)/prebuilts/misc/$(HOST_PREBUILT_TAG)/ccache/ccache
177+ # Check that the executable is here.
178+ ccache := $(strip $(wildcard $(ccache)))
179+ endif
180+endif
181+
182+ifeq ($(TARGET_KERNEL_CLANG_COMPILE),true)
183+ KERNEL_CROSS_COMPILE := CROSS_COMPILE="$(KERNEL_TOOLCHAIN_PATH)"
184 ifeq ($(KERNEL_CC),)
185- KERNEL_CC := CC="$(CCACHE_BIN) $(TARGET_KERNEL_CLANG_PATH)/clang"
186+ KERNEL_CC := CC="$(ccache) $(TARGET_KERNEL_CLANG_PATH)/clang"
187 endif
188+else
189+ KERNEL_CROSS_COMPILE := CROSS_COMPILE="$(ccache) $(KERNEL_TOOLCHAIN_PATH)"
190+endif
191+
192+# Needed for CONFIG_COMPAT_VDSO, safe to set for all arm64 builds
193+ifeq ($(KERNEL_ARCH),arm64)
194+ KERNEL_CROSS_COMPILE += CROSS_COMPILE_ARM32="arm-linux-androideabi-"
195+endif
196+
197+ccache =
198+
199+ifeq ($(HOST_OS),darwin)
200+ MAKE_FLAGS += C_INCLUDE_PATH=$(BUILD_TOP)/external/elfutils/libelf:/usr/local/opt/openssl/include
201+ MAKE_FLAGS += LIBRARY_PATH=/usr/local/opt/openssl/lib
202 endif
203
204 ifeq ($(TARGET_KERNEL_MODULES),)
205@@ -205,7 +305,7 @@ $(KERNEL_ADDITIONAL_CONFIG_OUT): force_additional_config
206 $(KERNEL_CONFIG): $(KERNEL_DEFCONFIG_SRC) $(KERNEL_ADDITIONAL_CONFIG_OUT)
207 @echo "Building Kernel Config"
208 $(hide) mkdir -p $(KERNEL_OUT)
209- $(MAKE) $(KERNEL_MAKE_FLAGS) -C $(KERNEL_SRC) O=$(KERNEL_OUT) ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) $(KERNEL_CLANG_TRIPLE) $(KERNEL_CC) VARIANT_DEFCONFIG=$(VARIANT_DEFCONFIG) SELINUX_DEFCONFIG=$(SELINUX_DEFCONFIG) $(KERNEL_DEFCONFIG)
210+ $(MAKE) $(MAKE_FLAGS) -C $(KERNEL_SRC) O=$(KERNEL_OUT) ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) $(KERNEL_CLANG_TRIPLE) $(KERNEL_CC) VARIANT_DEFCONFIG=$(VARIANT_DEFCONFIG) SELINUX_DEFCONFIG=$(SELINUX_DEFCONFIG) $(KERNEL_DEFCONFIG)
211 $(hide) if [ ! -z "$(KERNEL_CONFIG_OVERRIDE)" ]; then \
212 echo "Overriding kernel config with '$(KERNEL_CONFIG_OVERRIDE)'"; \
213 echo $(KERNEL_CONFIG_OVERRIDE) >> $(KERNEL_OUT)/.config; \
214@@ -223,21 +323,21 @@ TARGET_KERNEL_BINARIES: $(KERNEL_CONFIG)
215 $(hide) rm -rf $(KERNEL_MODULES_OUT)
216 $(hide) mkdir -p $(KERNEL_MODULES_OUT)
217 $(hide) rm -rf $(KERNEL_DEPMOD_STAGING_DIR)
218- $(MAKE) $(KERNEL_MAKE_FLAGS) -C $(KERNEL_SRC) O=$(KERNEL_OUT) ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) $(KERNEL_CLANG_TRIPLE) $(KERNEL_CC) $(BOARD_KERNEL_IMAGE_NAME)
219+ $(MAKE) $(MAKE_FLAGS) -C $(KERNEL_SRC) O=$(KERNEL_OUT) ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) $(KERNEL_CLANG_TRIPLE) $(KERNEL_CC) $(BOARD_KERNEL_IMAGE_NAME)
220 $(hide) if grep -q '^CONFIG_OF=y' $(KERNEL_CONFIG); then \
221 echo "Building DTBs"; \
222- $(MAKE) $(KERNEL_MAKE_FLAGS) -C $(KERNEL_SRC) O=$(KERNEL_OUT) ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) $(KERNEL_CLANG_TRIPLE) $(KERNEL_CC) dtbs; \
223+ $(MAKE) $(MAKE_FLAGS) -C $(KERNEL_SRC) O=$(KERNEL_OUT) ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) $(KERNEL_CLANG_TRIPLE) $(KERNEL_CC) dtbs; \
224 fi
225 $(hide) if grep -q '^CONFIG_MODULES=y' $(KERNEL_CONFIG); then \
226 echo "Building Kernel Modules"; \
227- $(MAKE) $(KERNEL_MAKE_FLAGS) -C $(KERNEL_SRC) O=$(KERNEL_OUT) ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) $(KERNEL_CLANG_TRIPLE) $(KERNEL_CC) modules; \
228+ $(MAKE) $(MAKE_FLAGS) -C $(KERNEL_SRC) O=$(KERNEL_OUT) ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) $(KERNEL_CLANG_TRIPLE) $(KERNEL_CC) modules; \
229 fi
230
231 .PHONY: INSTALLED_KERNEL_MODULES
232 INSTALLED_KERNEL_MODULES: depmod-host
233 $(hide) if grep -q '^CONFIG_MODULES=y' $(KERNEL_CONFIG); then \
234 echo "Installing Kernel Modules"; \
235- $(MAKE) $(KERNEL_MAKE_FLAGS) -C $(KERNEL_SRC) O=$(KERNEL_OUT) ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) $(KERNEL_CLANG_TRIPLE) $(KERNEL_CC) INSTALL_MOD_PATH=../../$(KERNEL_MODULES_INSTALL) modules_install && \
236+ $(MAKE) $(MAKE_FLAGS) -C $(KERNEL_SRC) O=$(KERNEL_OUT) ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) $(KERNEL_CLANG_TRIPLE) $(KERNEL_CC) INSTALL_MOD_PATH=../../$(KERNEL_MODULES_INSTALL) modules_install && \
237 mofile=$$(find $(KERNEL_MODULES_OUT) -type f -name modules.order) && \
238 mpath=$$(dirname $$mofile) && \
239 for f in $$(find $$mpath/kernel -type f -name '*.ko'); do \
240@@ -313,7 +413,7 @@ kernelconfig: KERNELCONFIG_MODE := menuconfig
241 kernelxconfig: KERNELCONFIG_MODE := xconfig
242 kernelxconfig kernelconfig:
243 $(hide) mkdir -p $(KERNEL_OUT)
244- $(MAKE) $(KERNEL_MAKE_FLAGS) -C $(KERNEL_SRC) O=$(KERNEL_OUT) ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) $(KERNEL_CLANG_TRIPLE) $(KERNEL_CC) $(KERNEL_DEFCONFIG)
245+ $(MAKE) $(MAKE_FLAGS) -C $(KERNEL_SRC) O=$(KERNEL_OUT) ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) $(KERNEL_CLANG_TRIPLE) $(KERNEL_CC) $(KERNEL_DEFCONFIG)
246 env KCONFIG_NOTIMESTAMP=true \
247 $(MAKE) -C $(KERNEL_SRC) O=$(KERNEL_OUT) ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) $(KERNEL_CLANG_TRIPLE) $(KERNEL_CC) $(KERNELCONFIG_MODE)
248 env KCONFIG_NOTIMESTAMP=true \
249@@ -322,7 +422,7 @@ kernelxconfig kernelconfig:
250
251 kernelsavedefconfig:
252 $(hide) mkdir -p $(KERNEL_OUT)
253- $(MAKE) $(KERNEL_MAKE_FLAGS) -C $(KERNEL_SRC) O=$(KERNEL_OUT) ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) $(KERNEL_CLANG_TRIPLE) $(KERNEL_CC) $(KERNEL_DEFCONFIG)
254+ $(MAKE) $(MAKE_FLAGS) -C $(KERNEL_SRC) O=$(KERNEL_OUT) ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) $(KERNEL_CLANG_TRIPLE) $(KERNEL_CC) $(KERNEL_DEFCONFIG)
255 env KCONFIG_NOTIMESTAMP=true \
256 $(MAKE) -C $(KERNEL_SRC) O=$(KERNEL_OUT) ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) $(KERNEL_CLANG_TRIPLE) $(KERNEL_CC) savedefconfig
257 cp $(KERNEL_OUT)/defconfig $(KERNEL_DEFCONFIG_SRC)
258@@ -337,8 +437,8 @@ endif # FULL_KERNEL_BUILD
259 TARGET_PREBUILT_DTBO = $(PRODUCT_OUT)/dtbo/arch/$(KERNEL_ARCH)/boot/dtbo.img
260 $(TARGET_PREBUILT_DTBO): $(AVBTOOL)
261 echo -e ${CL_GRN}"Building DTBO.img"${CL_RST}
262- $(MAKE) $(KERNEL_MAKE_FLAGS) -C $(KERNEL_SRC) O=$(PRODUCT_OUT)/dtbo ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) $(KERNEL_CLANG_TRIPLE) $(KERNEL_CC) $(KERNEL_DEFCONFIG)
263- $(MAKE) $(KERNEL_MAKE_FLAGS) -C $(KERNEL_SRC) O=$(PRODUCT_OUT)/dtbo ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) $(KERNEL_CLANG_TRIPLE) $(KERNEL_CC) dtbo.img
264+ $(MAKE) $(MAKE_FLAGS) -C $(KERNEL_SRC) O=$(PRODUCT_OUT)/dtbo ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) $(KERNEL_CLANG_TRIPLE) $(KERNEL_CC) $(KERNEL_DEFCONFIG)
265+ $(MAKE) $(MAKE_FLAGS) -C $(KERNEL_SRC) O=$(PRODUCT_OUT)/dtbo ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) $(KERNEL_CLANG_TRIPLE) $(KERNEL_CC) dtbo.img
266 $(AVBTOOL) add_hash_footer \
267 --image $@ \
268 --partition_size $(BOARD_DTBOIMG_PARTITION_SIZE) \
269diff --git a/config/BoardConfigBliss.mk b/config/BoardConfigBliss.mk
Jackeaglea76b7262019-05-03 14:53:47 +0200270index e38938b0..e6102f7a 100644
Jackeagled3ba2282018-11-17 20:49:22 -0700271--- a/config/BoardConfigBliss.mk
272+++ b/config/BoardConfigBliss.mk
273@@ -8,8 +8,6 @@ ifeq ($(TARGET_HW_DISK_ENCRYPTION),true)
274 TARGET_CRYPTFS_HW_PATH ?= vendor/qcom/opensource/cryptfs_hw
275 endif
276
277-include vendor/bliss/config/BoardConfigKernel.mk
278-
279 ifeq ($(BOARD_USES_QCOM_HARDWARE),true)
280 include vendor/bliss/config/BoardConfigQcom.mk
281 endif
282diff --git a/config/BoardConfigKernel.mk b/config/BoardConfigKernel.mk
283deleted file mode 100644
Jackeaglea76b7262019-05-03 14:53:47 +0200284index 74f3413b..00000000
Jackeagled3ba2282018-11-17 20:49:22 -0700285--- a/config/BoardConfigKernel.mk
286+++ /dev/null
287@@ -1,111 +0,0 @@
288-# Copyright (C) 2018 The LineageOS Project
289-#
290-# Licensed under the Apache License, Version 2.0 (the "License");
291-# you may not use this file except in compliance with the License.
292-# You may obtain a copy of the License at
293-#
294-# http://www.apache.org/licenses/LICENSE-2.0
295-#
296-# Unless required by applicable law or agreed to in writing, software
297-# distributed under the License is distributed on an "AS IS" BASIS,
298-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
299-# See the License for the specific language governing permissions and
300-# limitations under the License.
301-#
302-#
303-# Kernel build configuration variables
304-# ====================================
305-#
306-# These config vars are usually set in BoardConfig.mk:
307-#
308-# TARGET_KERNEL_SOURCE = Kernel source dir, optional, defaults
309-# to kernel/$(TARGET_DEVICE_DIR)
310-# TARGET_KERNEL_ARCH = Kernel Arch
311-# TARGET_KERNEL_CROSS_COMPILE_PREFIX = Compiler prefix (e.g. arm-eabi-)
312-# defaults to arm-linux-androidkernel- for arm
313-# aarch64-linux-androidkernel- for arm64
314-# x86_64-linux-androidkernel- for x86
315-#
316-# TARGET_KERNEL_CLANG_COMPILE = Compile kernel with clang, defaults to false
317-#
318-# KERNEL_TOOLCHAIN_PREFIX = Overrides TARGET_KERNEL_CROSS_COMPILE_PREFIX,
319-# Set this var in shell to override
320-# toolchain specified in BoardConfig.mk
321-# KERNEL_TOOLCHAIN = Path to toolchain, if unset, assumes
322-# TARGET_KERNEL_CROSS_COMPILE_PREFIX
323-# is in PATH
324-# USE_CCACHE = Enable ccache (global Android flag)
325-
326-BUILD_TOP := $(shell pwd)
327-
328-TARGET_AUTO_KDIR := $(shell echo $(TARGET_DEVICE_DIR) | sed -e 's/^device/kernel/g')
329-TARGET_KERNEL_SOURCE ?= $(TARGET_AUTO_KDIR)
330-ifneq ($(TARGET_PREBUILT_KERNEL),)
331-TARGET_KERNEL_SOURCE :=
332-endif
333-
334-TARGET_KERNEL_ARCH := $(strip $(TARGET_KERNEL_ARCH))
335-ifeq ($(TARGET_KERNEL_ARCH),)
336-KERNEL_ARCH := $(TARGET_ARCH)
337-else
338-KERNEL_ARCH := $(TARGET_KERNEL_ARCH)
339-endif
340-
341-TARGET_KERNEL_CROSS_COMPILE_PREFIX := $(strip $(TARGET_KERNEL_CROSS_COMPILE_PREFIX))
342-ifneq ($(TARGET_KERNEL_CROSS_COMPILE_PREFIX),)
343-KERNEL_TOOLCHAIN_PREFIX ?= $(TARGET_KERNEL_CROSS_COMPILE_PREFIX)
344-else ifeq ($(KERNEL_ARCH),arm64)
345-KERNEL_TOOLCHAIN_PREFIX ?= aarch64-linux-androidkernel-
346-else ifeq ($(KERNEL_ARCH),arm)
347-KERNEL_TOOLCHAIN_PREFIX ?= arm-linux-androidkernel-
348-else ifeq ($(KERNEL_ARCH),x86)
349-KERNEL_TOOLCHAIN_PREFIX ?= x86_64-linux-androidkernel-
350-endif
351-
352-ifeq ($(KERNEL_TOOLCHAIN),)
353-KERNEL_TOOLCHAIN_PATH := $(KERNEL_TOOLCHAIN_PREFIX)
354-else
355-ifneq ($(KERNEL_TOOLCHAIN_PREFIX),)
356-KERNEL_TOOLCHAIN_PATH := $(KERNEL_TOOLCHAIN)/$(KERNEL_TOOLCHAIN_PREFIX)
357-endif
358-endif
359-
360-ifneq ($(USE_CCACHE),)
361- # Detect if the system already has ccache installed to use instead of the prebuilt
362- CCACHE_BIN := $(shell which ccache)
363-
364- ifeq ($(CCACHE_BIN),)
365- CCACHE_BIN := $(BUILD_TOP)/prebuilts/misc/$(HOST_PREBUILT_TAG)/ccache/ccache
366- # Check that the executable is here.
367- CCACHE_BIN := $(strip $(wildcard $(CCACHE_BIN)))
368- endif
369-endif
370-
371-ifeq ($(TARGET_KERNEL_CLANG_COMPILE),true)
372- KERNEL_CROSS_COMPILE := CROSS_COMPILE="$(KERNEL_TOOLCHAIN_PATH)"
373-else
374- KERNEL_CROSS_COMPILE := CROSS_COMPILE="$(CCACHE_BIN) $(KERNEL_TOOLCHAIN_PATH)"
375-endif
376-
377-# Needed for CONFIG_COMPAT_VDSO, safe to set for all arm64 builds
378-ifeq ($(KERNEL_ARCH),arm64)
379- KERNEL_CROSS_COMPILE += CROSS_COMPILE_ARM32="arm-linux-androidkernel-"
380-endif
381-
382-# Clear this first to prevent accidental poisoning from env
383-KERNEL_MAKE_FLAGS :=
384-
385-ifeq ($(KERNEL_ARCH),arm)
386- # Avoid "Unknown symbol _GLOBAL_OFFSET_TABLE_" errors
387- KERNEL_MAKE_FLAGS += CFLAGS_MODULE="-fno-pic"
388-endif
389-
390-ifeq ($(KERNEL_ARCH),arm64)
391- # Avoid "unsupported RELA relocation: 311" errors (R_AARCH64_ADR_GOT_PAGE)
392- KERNEL_MAKE_FLAGS += CFLAGS_MODULE="-fno-pic"
393-endif
394-
395-ifeq ($(HOST_OS),darwin)
396- KERNEL_MAKE_FLAGS += C_INCLUDE_PATH=$(BUILD_TOP)/external/elfutils/libelf:/usr/local/opt/openssl/include
397- KERNEL_MAKE_FLAGS += LIBRARY_PATH=/usr/local/opt/openssl/lib
398-endif
399--
Jackeaglea76b7262019-05-03 14:53:47 +02004002.21.0
Jackeagled3ba2282018-11-17 20:49:22 -0700401