From 9b27b4a0f7d492e53c1f278e525c4cedc836e6d7 Mon Sep 17 00:00:00 2001 From: Jens Reidel Date: Tue, 21 Oct 2025 12:16:57 +0200 Subject: [PATCH] linux-purism-librem5: Build with LLVM Signed-off-by: Jens Reidel Part-of: --- .../community/linux-purism-librem5/APKBUILD | 13 ++++--- .../config-purism-librem5.aarch64 | 38 ++++++++++--------- 2 files changed, 28 insertions(+), 23 deletions(-) diff --git a/device/community/linux-purism-librem5/APKBUILD b/device/community/linux-purism-librem5/APKBUILD index 7562a02ae..e5d0cebdf 100644 --- a/device/community/linux-purism-librem5/APKBUILD +++ b/device/community/linux-purism-librem5/APKBUILD @@ -4,7 +4,7 @@ # Contributor: Clayton Craft pkgname=linux-purism-librem5 pkgver=6.6.110 -pkgrel=0 +pkgrel=1 # NOTE: Don't forget to rebase the config! See prepare() for instructions. _purismrel=1 _pureosrel=cri1 @@ -24,10 +24,13 @@ options="!strip !check !tracedeps makedepends=" bash bison + clang devicepkg-dev findutils flex installkernel + lld + llvm openssl-dev perl rsync @@ -62,7 +65,7 @@ prepare() { # This can be uncommented to help generate the defconfig using "pmbootstrap # build linux-purism-librem5". The build will fail (exit 1) to let you grab # the config before it starts building the kernel: - # make ARCH="$_carch" CC="${CC:-gcc}" \ + # make ARCH="$_carch" LLVM=1 \ # defconfig KBUILD_DEFCONFIG=librem5_defconfig # exit 1 # @@ -75,7 +78,7 @@ prepare() { build() { unset LDFLAGS - make ARCH="$_carch" CC="${CC:-gcc}" \ + make ARCH="$_carch" LLVM=1 \ KBUILD_BUILD_VERSION="$((pkgrel + 1 ))-postmarketOS" \ LOCALVERSION=".$_purismrel" } @@ -85,12 +88,12 @@ package() { make modules_install dtbs_install \ ARCH="$_carch" \ + LLVM=1 \ INSTALL_MOD_PATH="$pkgdir" \ INSTALL_DTBS_PATH="$pkgdir/boot/dtbs" - } sha512sums=" 33f525ea3e317e036d09595ceac9557ffa6d053b2d6ae891742f6ebaed3c7467879e09c1bacd2e1dfa72ca1fa50c12ef6f5708d45bde04f5feceb17e68fcfa96 linux-purism-librem5-6.6.110pureos1_cri1.tar.gz -667a1013fe904c4ba07b23286a001ffd5cd8a8ee04990b929c054dfa262c71f27bdc83aa65a046249319a8125564533ebe8b340426cefaddfcccd183ecb16d9f config-purism-librem5.aarch64 +bddbafe7ad4096b93d6d38cf8879f945c52763bc3b7c29e193783592095bee07e86ff399330eefb73f1465e423518293ec5e2eaa14e8f80e500dc28e1f4195cd config-purism-librem5.aarch64 " diff --git a/device/community/linux-purism-librem5/config-purism-librem5.aarch64 b/device/community/linux-purism-librem5/config-purism-librem5.aarch64 index a7309d342..eb0d26f1a 100644 --- a/device/community/linux-purism-librem5/config-purism-librem5.aarch64 +++ b/device/community/linux-purism-librem5/config-purism-librem5.aarch64 @@ -2,15 +2,15 @@ # Automatically generated file; DO NOT EDIT. # Linux/arm64 6.6.110 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.2" +CONFIG_GCC_VERSION=0 +CONFIG_CC_IS_CLANG=y +CONFIG_CLANG_VERSION=210102 +CONFIG_AS_IS_LLVM=y +CONFIG_AS_VERSION=210102 +CONFIG_LD_VERSION=0 +CONFIG_LD_IS_LLD=y +CONFIG_LLD_VERSION=210102 CONFIG_CC_HAS_ASM_GOTO_OUTPUT=y CONFIG_CC_HAS_ASM_GOTO_TIED_OUTPUT=y CONFIG_TOOLS_SUPPORT_RELR=y @@ -174,9 +174,8 @@ CONFIG_UCLAMP_BUCKETS_COUNT=5 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_ARCH_SUPPORTS_INT128=y CONFIG_CGROUPS=y CONFIG_PAGE_COUNTER=y @@ -287,7 +286,7 @@ CONFIG_TRACEPOINTS=y # end of General setup CONFIG_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_PAGE_SHIFT=12 @@ -458,6 +457,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 @@ -506,6 +507,7 @@ CONFIG_AS_HAS_ARMV8_4=y # CONFIG_AS_HAS_ARMV8_5=y CONFIG_ARM64_BTI=y +CONFIG_ARM64_BTI_KERNEL=y CONFIG_CC_HAS_BRANCH_PROT_PAC_RET_BTI=y CONFIG_ARM64_E0PD=y CONFIG_ARM64_AS_HAS_MTE=y @@ -679,8 +681,12 @@ 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_CONTEXT_TRACKING_USER=y CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y @@ -736,8 +742,6 @@ 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_8B=y CONFIG_FUNCTION_ALIGNMENT=8 @@ -7385,7 +7389,6 @@ 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_GCC_PLUGIN_STACKLEAK is not set # CONFIG_INIT_ON_ALLOC_DEFAULT_ON is not set # CONFIG_INIT_ON_FREE_DEFAULT_ON is not set CONFIG_CC_HAS_ZERO_CALL_USED_REGS=y @@ -7399,9 +7402,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 @@ -7825,6 +7828,7 @@ CONFIG_LIBFDT=y CONFIG_OID_REGISTRY=y CONFIG_HAVE_GENERIC_VDSO=y CONFIG_GENERIC_GETTIMEOFDAY=y +CONFIG_GENERIC_COMPAT_VDSO=y CONFIG_GENERIC_VDSO_TIME_NS=y CONFIG_FONT_SUPPORT=y # CONFIG_FONTS is not set @@ -7872,9 +7876,7 @@ CONFIG_DEBUG_INFO_NONE=y # CONFIG_DEBUG_INFO_DWARF5 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_DEBUG_FORCE_FUNCTION_ALIGN_64B is not set CONFIG_ARCH_WANT_FRAME_POINTERS=y