kernel: Use libc sysroot from host for 6.11+

Linux kernel 6.11 has removed support for old libc versions by commit
[1]. The commit message implies it's done as part of retiring
RHEL/CentOS 7, CentOS 7 includes glibc 2.17, All glibc available from
AOSP are NOT newer than that version.

Before there's a better solution, use libc sysroot from host.

[1]: 3914cdde89

Change-Id: I9210a9b4742304214d90f7d319b06167f0508052
This commit is contained in:
Yumi Yukimura
2024-09-29 03:50:19 +08:00
committed by Jan Altensen
parent 3aed30191a
commit 1241611c87

View File

@@ -30,6 +30,8 @@
# TARGET_KERNEL_CLANG_VERSION = Clang prebuilts version, optional, defaults to clang-stable
# TARGET_KERNEL_CLANG_PATH = Clang prebuilts path, optional
#
# TARGET_KERNEL_LIBC_SYSROOT_USE = libc sysroot to use, defaults to "host" for 6.11+
#
# TARGET_KERNEL_LLVM_BINUTILS = Use LLVM binutils, defaults to true
# TARGET_KERNEL_RUST_VERSION = Rust prebuilts version, optional
# TARGET_KERNEL_NO_GCC = Fully compile the kernel without GCC.
@@ -85,6 +87,19 @@ ifneq ($(KERNEL_VERSION),)
endif
endif
# 6.11+ can no longer use aosp glibc sysroot headers (too old)
ifneq ($(KERNEL_VERSION),)
ifeq ($(shell expr $(KERNEL_VERSION) \< 6), 1)
# empty
else ifeq ($(KERNEL_VERSION), 6)
ifeq ($(shell expr $(KERNEL_PATCHLEVEL) \>= 11), 1)
TARGET_KERNEL_LIBC_SYSROOT_USE ?= host
endif
else
TARGET_KERNEL_LIBC_SYSROOT_USE ?= host
endif
endif
ifeq ($(TARGET_KERNEL_NO_GCC), true)
KERNEL_NO_GCC := true
endif
@@ -188,8 +203,14 @@ ifneq ($(KERNEL_NO_GCC), true)
endif
endif
else
KERNEL_MAKE_FLAGS += HOSTCFLAGS="--sysroot=$(BUILD_TOP)/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.17-4.8/sysroot -I$(BUILD_TOP)/prebuilts/kernel-build-tools/linux-x86/include"
KERNEL_MAKE_FLAGS += HOSTLDFLAGS="--sysroot=$(BUILD_TOP)/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.17-4.8/sysroot -Wl,-rpath,$(BUILD_TOP)/prebuilts/kernel-build-tools/linux-x86/lib64 -L $(BUILD_TOP)/prebuilts/kernel-build-tools/linux-x86/lib64 -fuse-ld=lld --rtlib=compiler-rt"
ifeq ($(TARGET_KERNEL_LIBC_SYSROOT_USE), host)
KERNEL_HOST_C_LD_FLAGS_SYSROOT :=
else
KERNEL_HOST_C_LD_FLAGS_SYSROOT := --sysroot=$(BUILD_TOP)/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.17-4.8/sysroot
endif
KERNEL_MAKE_FLAGS += HOSTCFLAGS="$(KERNEL_HOST_C_LD_FLAGS_SYSROOT) -I$(BUILD_TOP)/prebuilts/kernel-build-tools/linux-x86/include"
KERNEL_MAKE_FLAGS += HOSTLDFLAGS="$(KERNEL_HOST_C_LD_FLAGS_SYSROOT) -Wl,-rpath,$(BUILD_TOP)/prebuilts/kernel-build-tools/linux-x86/lib64 -L $(BUILD_TOP)/prebuilts/kernel-build-tools/linux-x86/lib64 -fuse-ld=lld --rtlib=compiler-rt"
TOOLS_PATH_OVERRIDE += PATH=$(BUILD_TOP)/prebuilts/tools-lineage/$(HOST_PREBUILT_TAG)/bin:$(TARGET_KERNEL_CLANG_PATH)/bin:$(BUILD_TOP)/prebuilts/rust/$(HOST_PREBUILT_TAG)/$(TARGET_KERNEL_RUST_VERSION)/bin:$(BUILD_TOP)/prebuilts/clang-tools/$(HOST_PREBUILT_TAG)/bin:$$PATH
endif