From d72814deb4c95c9df41e7dd3b5bf9389a974b9fc Mon Sep 17 00:00:00 2001 From: Aelin Date: Wed, 18 Feb 2026 03:08:42 +0100 Subject: [PATCH] linux-postmarketos-qcom-sm8150: Build with LLVM See https://postmarketos.org/edge/2025/11/11/kernels-llvm/ for the background behind this change and how we're handling these MRs. [ci:skip-kconfigcheck]: only changing toolchain Part-of: --- .../0003-fix-llvm-build.patch | 34 +++++++++++++++ .../linux-postmarketos-qcom-sm8150/APKBUILD | 12 ++++-- .../config-postmarketos-qcom-sm8150.aarch64 | 43 +++++++++++-------- 3 files changed, 67 insertions(+), 22 deletions(-) create mode 100644 device/testing/linux-postmarketos-qcom-sm8150/0003-fix-llvm-build.patch diff --git a/device/testing/linux-postmarketos-qcom-sm8150/0003-fix-llvm-build.patch b/device/testing/linux-postmarketos-qcom-sm8150/0003-fix-llvm-build.patch new file mode 100644 index 000000000..d5457475c --- /dev/null +++ b/device/testing/linux-postmarketos-qcom-sm8150/0003-fix-llvm-build.patch @@ -0,0 +1,34 @@ +From 01fc3dd3c8317362bcddd9eab9f243909621a4a0 Mon Sep 17 00:00:00 2001 +From: Nicola Guerrera +Date: Fri, 31 Oct 2025 18:38:21 +0100 +Subject: [PATCH] input: touchscreen: fts_touch: fix compilation with LLVM + +--- + drivers/input/touchscreen/fts_touch/fts_lib/ftsIO.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/drivers/input/touchscreen/fts_touch/fts_lib/ftsIO.c b/drivers/input/touchscreen/fts_touch/fts_lib/ftsIO.c +index ef6d66229cc1..18211a0470bf 100644 +--- a/drivers/input/touchscreen/fts_touch/fts_lib/ftsIO.c ++++ b/drivers/input/touchscreen/fts_touch/fts_lib/ftsIO.c +@@ -112,7 +112,7 @@ struct device *getDev(void) + * slave + * @return client if it was previously set or NULL in all the other cases + */ +-struct i2c_client *getClient() ++struct i2c_client *getClient(void) + { + if (client != NULL) + return (struct i2c_client *)client; +@@ -125,7 +125,7 @@ struct i2c_client *getClient() + * slave + * @return client if it was previously set or NULL in all the other cases + */ +-struct spi_device *getClient() ++struct spi_device *getClient(void) + { + if (client != NULL) + return (struct spi_device *)client; +-- +GitLab + diff --git a/device/testing/linux-postmarketos-qcom-sm8150/APKBUILD b/device/testing/linux-postmarketos-qcom-sm8150/APKBUILD index cd47f91bd..a324e4840 100644 --- a/device/testing/linux-postmarketos-qcom-sm8150/APKBUILD +++ b/device/testing/linux-postmarketos-qcom-sm8150/APKBUILD @@ -3,7 +3,7 @@ maintainer="Pan Ortiz " _flavor="postmarketos-qcom-sm8150" pkgname=linux-$_flavor pkgver=6.17.0 -pkgrel=1 +pkgrel=2 pkgdesc="Mainline Kernel fork for SM8150 devices" arch="aarch64" _carch="arm64" @@ -15,8 +15,11 @@ options="!strip !check !tracedeps " makedepends=" bison + clang findutils flex + lld + llvm openssl-dev perl postmarketos-installkernel @@ -31,6 +34,7 @@ source=" config-$_flavor.$arch 0001-lid-switch-fix.patch 0002-enable-ufs.patch + 0003-fix-llvm-build.patch " builddir="$srcdir/linux-$_tag" @@ -41,7 +45,7 @@ prepare() { build() { unset LDFLAGS - make ARCH="$_carch" CC="${CC:-gcc}" \ + make ARCH="$_carch" LLVM=1 \ KBUILD_BUILD_VERSION="$((pkgrel + 1 ))-$_flavor" } @@ -62,6 +66,7 @@ package() { make modules_install dtbs_install \ ARCH="$_carch" \ + LLVM=1 \ INSTALL_PATH="$pkgdir"/boot/ \ INSTALL_MOD_PATH="$pkgdir" \ INSTALL_MOD_STRIP=1 \ @@ -79,7 +84,8 @@ package() { sha512sums=" 274270bb0391bca972b1dffae778ff6fc372457b658e9252104d9894c9f24739e25df7021378cf0ac9c650cc417d0cdcdf1baa88bfdcd494920ee183298e1f34 linux-v6.17.0-sm8150.tar.gz -72aecca7ac7fb0d9a13d9f33be499673d676123e6fdfe0814b2d25f49d698cca614a4188f976ffa2fa5e94a7918a24ab079ab9091dadabcf70d068a13d4f8314 config-postmarketos-qcom-sm8150.aarch64 +7b9453ace6fdda1c05bb3ca0e7560bc19750c5a87a7320f1ec5557e7e1c4ecc603d810c94d25cc4b3c38593324860b27055095897ef0a284b842a087c9adee94 config-postmarketos-qcom-sm8150.aarch64 15422195814314d8f9ce905408d1256bec753ca1b58babc59391c4cb8b4fbbc9034c622129d52964ccceb39e6f4326f0eae5ca9271496e1a0432416ecd09cc1d 0001-lid-switch-fix.patch 316decafef4528b3d8fa9ce1f2c1588048ae0a99adf088d61372d84ff95ae7bf58e5cc0d03d73201f1735f3d523468d98113ac575714930229434a46385a5c3d 0002-enable-ufs.patch +61653196d559a725e372597f7a2d8da4f308bc14c610fce6ecc982fab25757dd37a684480b32c1b05547144c1ec14000f6ddf542c605894edb68e7484d40fbf1 0003-fix-llvm-build.patch " diff --git a/device/testing/linux-postmarketos-qcom-sm8150/config-postmarketos-qcom-sm8150.aarch64 b/device/testing/linux-postmarketos-qcom-sm8150/config-postmarketos-qcom-sm8150.aarch64 index f6e460452..005e9bff2 100644 --- a/device/testing/linux-postmarketos-qcom-sm8150/config-postmarketos-qcom-sm8150.aarch64 +++ b/device/testing/linux-postmarketos-qcom-sm8150/config-postmarketos-qcom-sm8150.aarch64 @@ -2,17 +2,19 @@ # Automatically generated file; DO NOT EDIT. # Linux/arm64 6.17.0 Kernel Configuration # -CONFIG_CC_VERSION_TEXT="aarch64-alpine-linux-musl-gcc (Alpine 15.2.0) 15.2.0" -CONFIG_CC_IS_GCC=y -CONFIG_GCC_VERSION=150200 -CONFIG_CLANG_VERSION=0 -CONFIG_AS_IS_GNU=y -CONFIG_AS_VERSION=24500 -CONFIG_LD_IS_BFD=y -CONFIG_LD_VERSION=24500 -CONFIG_LLD_VERSION=0 +CONFIG_CC_VERSION_TEXT="Alpine clang version 21.1.8" +CONFIG_GCC_VERSION=0 +CONFIG_CC_IS_CLANG=y +CONFIG_CLANG_VERSION=210108 +CONFIG_AS_IS_LLVM=y +CONFIG_AS_VERSION=210108 +CONFIG_LD_VERSION=0 +CONFIG_LD_IS_LLD=y +CONFIG_LLD_VERSION=210108 CONFIG_RUSTC_VERSION=0 CONFIG_RUSTC_LLVM_VERSION=0 +CONFIG_CC_HAS_ASM_GOTO_OUTPUT=y +CONFIG_CC_HAS_ASM_GOTO_TIED_OUTPUT=y CONFIG_TOOLS_SUPPORT_RELR=y CONFIG_CC_HAS_ASM_INLINE=y CONFIG_CC_HAS_NO_PROFILE_FN_ATTR=y @@ -172,11 +174,9 @@ CONFIG_GENERIC_SCHED_CLOCK=y CONFIG_ARCH_SUPPORTS_NUMA_BALANCING=y CONFIG_ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH=y CONFIG_CC_HAS_INT128=y -CONFIG_CC_IMPLICIT_FALLTHROUGH="-Wimplicit-fallthrough=5" +CONFIG_CC_IMPLICIT_FALLTHROUGH="-Wimplicit-fallthrough" CONFIG_GCC10_NO_ARRAY_BOUNDS=y -CONFIG_CC_NO_ARRAY_BOUNDS=y CONFIG_GCC_NO_STRINGOP_OVERFLOW=y -CONFIG_CC_NO_STRINGOP_OVERFLOW=y CONFIG_ARCH_SUPPORTS_INT128=y CONFIG_NUMA_BALANCING=y CONFIG_NUMA_BALANCING_DEFAULT_ENABLED=y @@ -298,7 +298,7 @@ CONFIG_CRASH_DUMP=y CONFIG_ARM64=y CONFIG_RUSTC_SUPPORTS_ARM64=y -CONFIG_GCC_SUPPORTS_DYNAMIC_FTRACE_WITH_ARGS=y +CONFIG_CLANG_SUPPORTS_DYNAMIC_FTRACE_WITH_ARGS=y CONFIG_64BIT=y CONFIG_MMU=y CONFIG_ARM64_CONT_PTE_SHIFT=4 @@ -485,6 +485,8 @@ CONFIG_RODATA_FULL_DEFAULT_ENABLED=y CONFIG_ARM64_TAGGED_ADDR_ABI=y CONFIG_COMPAT=y CONFIG_KUSER_HELPERS=y +CONFIG_COMPAT_VDSO=y +CONFIG_THUMB2_COMPAT_VDSO=y # CONFIG_COMPAT_ALIGNMENT_FIXUPS is not set # CONFIG_ARMV8_DEPRECATED is not set @@ -526,6 +528,7 @@ CONFIG_ARM64_TLB_RANGE=y # CONFIG_AS_HAS_ARMV8_5=y CONFIG_ARM64_BTI=y +# CONFIG_ARM64_BTI_KERNEL is not set CONFIG_CC_HAS_BRANCH_PROT_PAC_RET_BTI=y CONFIG_ARM64_E0PD=y CONFIG_ARM64_AS_HAS_MTE=y @@ -798,8 +801,13 @@ CONFIG_ARCH_SUPPORTS_SHADOW_CALL_STACK=y # CONFIG_SHADOW_CALL_STACK is not set CONFIG_ARCH_SUPPORTS_LTO_CLANG=y CONFIG_ARCH_SUPPORTS_LTO_CLANG_THIN=y +CONFIG_HAS_LTO_CLANG=y CONFIG_LTO_NONE=y +# CONFIG_LTO_CLANG_FULL is not set +# CONFIG_LTO_CLANG_THIN is not set CONFIG_ARCH_SUPPORTS_CFI_CLANG=y +# CONFIG_CFI_CLANG is not set +CONFIG_HAVE_CFI_ICALL_NORMALIZE_INTEGERS_CLANG=y CONFIG_HAVE_CONTEXT_TRACKING_USER=y CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y @@ -867,11 +875,8 @@ CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y # end of GCOV-based kernel profiling CONFIG_HAVE_GCC_PLUGINS=y -CONFIG_GCC_PLUGINS=y -# CONFIG_GCC_PLUGIN_LATENT_ENTROPY is not set CONFIG_FUNCTION_ALIGNMENT_4B=y CONFIG_FUNCTION_ALIGNMENT=4 -CONFIG_CC_HAS_MIN_FUNCTION_ALIGNMENT=y CONFIG_CC_HAS_SANE_FUNCTION_ALIGNMENT=y # end of General architecture-dependent options @@ -8371,6 +8376,7 @@ CONFIG_CC_HAS_AUTO_VAR_INIT_ZERO=y # CONFIG_INIT_STACK_NONE is not set # CONFIG_INIT_STACK_ALL_PATTERN is not set CONFIG_INIT_STACK_ALL_ZERO=y +CONFIG_CC_HAS_SANCOV_STACK_DEPTH_CALLBACK=y # CONFIG_KSTACK_ERASE is not set # CONFIG_INIT_ON_ALLOC_DEFAULT_ON is not set # CONFIG_INIT_ON_FREE_DEFAULT_ON is not set @@ -8392,9 +8398,9 @@ CONFIG_CC_HAS_ZERO_CALL_USED_REGS=y # CONFIG_BUG_ON_DATA_CORRUPTION is not set # end of Hardening of kernel data structures +CONFIG_CC_HAS_RANDSTRUCT=y CONFIG_RANDSTRUCT_NONE=y # CONFIG_RANDSTRUCT_FULL is not set -# CONFIG_RANDSTRUCT_PERFORMANCE is not set # end of Kernel hardening options # end of Security options @@ -8802,6 +8808,7 @@ CONFIG_OID_REGISTRY=y CONFIG_UCS2_STRING=y CONFIG_HAVE_GENERIC_VDSO=y CONFIG_GENERIC_GETTIMEOFDAY=y +CONFIG_GENERIC_COMPAT_VDSO=y CONFIG_GENERIC_VDSO_TIME_NS=y CONFIG_VDSO_GETRANDOM=y CONFIG_GENERIC_VDSO_DATA_STORE=y @@ -8863,9 +8870,7 @@ CONFIG_DEBUG_INFO_COMPRESSED_NONE=y # CONFIG_GDB_SCRIPTS is not set CONFIG_FRAME_WARN=2048 # CONFIG_STRIP_ASM_SYMS is not set -# CONFIG_READABLE_ASM is not set # CONFIG_HEADERS_INSTALL is not set -# CONFIG_DEBUG_SECTION_MISMATCH is not set CONFIG_SECTION_MISMATCH_WARN_ONLY=y CONFIG_ARCH_WANT_FRAME_POINTERS=y CONFIG_FRAME_POINTER=y