blob: 6b7e9b3433f372139c55d298e1f8bb6b1baf3de7 [file] [log] [blame]
From d90fac6121821ac30cd915e4a36ff107d3709b54 Mon Sep 17 00:00:00 2001
From: Jackeagle <jackeagle102@gmail.com>
Date: Mon, 3 Dec 2018 10:56:07 -0500
Subject: [PATCH 05/11] Revert "vendor/bliss: Remove kernel.mk headers
generation"
This reverts commit 6a4c7c1258ffecc26324b034c9091373bf0272dd.
---
build/tasks/kernel.mk | 50 +++++++++++++++++++++++++++++++++++++++++++
1 file changed, 50 insertions(+)
diff --git a/build/tasks/kernel.mk b/build/tasks/kernel.mk
index b42d86d..d0263d3 100644
--- a/build/tasks/kernel.mk
+++ b/build/tasks/kernel.mk
@@ -151,6 +151,9 @@ endif
ifeq ($(FULL_KERNEL_BUILD),true)
+KERNEL_HEADERS_INSTALL_DIR := $(KERNEL_OUT)/usr
+KERNEL_HEADERS_INSTALL_DEPS := $(KERNEL_OUT)/.headers_install_deps
+
ifeq ($(NEED_KERNEL_MODULE_ROOT),true)
KERNEL_MODULES_INSTALL := root
KERNEL_MODULES_OUT := $(TARGET_ROOT_OUT)/lib/modules
@@ -252,6 +255,53 @@ $(TARGET_KERNEL_MODULES): TARGET_KERNEL_BINARIES
$(TARGET_PREBUILT_INT_KERNEL): $(TARGET_KERNEL_MODULES)
+# Install kernel (uapi) headers.
+#
+# The dependency file serves two purposes:
+# - It is a stamp indicating when the headers were last installed.
+# - It contains a rule to regenerate itself when any kernel header
+# files change. This rule is identical to the rule emitted by
+# GCC using the M/MM flags.
+#
+# Note that the location of installed kernel headers changed when the
+# kernel uapi system was introduced in 3.7. Unfortunately, it is not
+# sufficient to test whether the uapi directories exist because some
+# kernels backport patches that contain uapi headers. So we look for
+# the string "version_h" in the kernel makefile which was introduced
+# as a part of the uapi system (commit d183e6f570f3).
+-include $(KERNEL_HEADERS_INSTALL_DEPS)
+$(KERNEL_HEADERS_INSTALL_DEPS):
+ @echo "Building Kernel Headers"
+ $(hide) mkdir -p $(KERNEL_OUT)
+ $(hide) rm -f $@
+ $(hide) $(MAKE) $(MAKE_FLAGS) -C $(KERNEL_SRC) O=$(KERNEL_OUT) ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) $(KERNEL_CLANG_TRIPLE) $(KERNEL_CC) headers_install
+ $(hide) echo "$@: \\" > $@
+ $(hide) ( cd $(KERNEL_SRC); \
+ if grep -q '^version_h' 'Makefile'; then \
+ depdirs="arch/$(KERNEL_ARCH)/include/uapi include/uapi"; \
+ else \
+ depdirs="arch/$(KERNEL_ARCH)/include/asm include"; \
+ fi; \
+ deps="Makefile $$(find $$depdirs -type f -name '*.h')"; \
+ for f in $$deps; do \
+ echo " $(KERNEL_SRC)/$$f \\" >> $@; \
+ done ; \
+ echo "" >> $@ ; \
+ for f in $$deps; do \
+ echo "$(KERNEL_SRC)/$$f:" >> $@; \
+ echo "" >> $@; \
+ done \
+ )
+
+.PHONY: INSTALLED_KERNEL_HEADERS
+INSTALLED_KERNEL_HEADERS: $(KERNEL_HEADERS_INSTALL_DEPS)
+
+# Dependencies on $(KERNEL_OUT)/usr are deprecated
+$(KERNEL_HEADERS_INSTALL_DIR): $(KERNEL_HEADERS_INSTALL_DEPS)
+ @echo "Depending on $(KERNEL_HEADERS_INSTALL_DIR) is deprecated." 1>&2
+ @echo "Use INSTALLED_KERNEL_HEADERS instead." 1>&2
+ @exit 1
+
.PHONY: kerneltags
kerneltags: $(KERNEL_CONFIG)
$(hide) mkdir -p $(KERNEL_OUT)
--
2.17.1