From: Claudio Jeker Subject: Fix llvm 20 and 21 on ports-gcc systems To: Sebastien Marie , Robert Nagy Cc: ports@openbsd.org Date: Thu, 18 Dec 2025 13:58:25 +0100 This adds the same ${OPENBSD_LD_IS_LLD} SUBST_VARS magic to LLVM 20 and 21 as is present in LLVM 19. With this sparc64 is able to build LLVM 20 which is needed to get rust going. I did not test build LLVM 21 yet but the patch is the same. -- :wq Claudio Index: 20/patches/patch-clang_tools_clang-shlib_CMakeLists_txt =================================================================== RCS file: /cvs/ports/devel/llvm/20/patches/patch-clang_tools_clang-shlib_CMakeLists_txt,v diff -u -p -r1.1.1.1 patch-clang_tools_clang-shlib_CMakeLists_txt --- 20/patches/patch-clang_tools_clang-shlib_CMakeLists_txt 20 May 2025 03:29:44 -0000 1.1.1.1 +++ 20/patches/patch-clang_tools_clang-shlib_CMakeLists_txt 18 Dec 2025 09:43:37 -0000 @@ -8,7 +8,7 @@ Index: clang/tools/clang-shlib/CMakeList # Optimize function calls for default visibility definitions to avoid PLT and # reduce dynamic relocations. -if (NOT APPLE AND NOT MINGW AND NOT LLVM_LINKER_IS_SOLARISLD_ILLUMOS) -+if (NOT APPLE AND NOT MINGW AND NOT LLVM_LINKER_IS_SOLARISLD_ILLUMOS AND TRUE) ++if (NOT APPLE AND NOT MINGW AND NOT LLVM_LINKER_IS_SOLARISLD_ILLUMOS AND ${OPENBSD_LD_IS_LLD}) target_link_options(clang-cpp PRIVATE LINKER:-Bsymbolic-functions) endif() if (MINGW OR CYGWIN) Index: 20/patches/patch-llvm_tools_llvm-shlib_CMakeLists_txt =================================================================== RCS file: /cvs/ports/devel/llvm/20/patches/patch-llvm_tools_llvm-shlib_CMakeLists_txt,v diff -u -p -r1.1.1.1 patch-llvm_tools_llvm-shlib_CMakeLists_txt --- 20/patches/patch-llvm_tools_llvm-shlib_CMakeLists_txt 20 May 2025 03:29:44 -0000 1.1.1.1 +++ 20/patches/patch-llvm_tools_llvm-shlib_CMakeLists_txt 18 Dec 2025 09:43:17 -0000 @@ -14,7 +14,7 @@ Index: llvm/tools/llvm-shlib/CMakeLists. set(LIB_NAMES -Wl,--version-script,${LLVM_LIBRARY_DIR}/tools/llvm-shlib/simple_version_script.map ${LIB_NAMES}) endif() - if (NOT MINGW AND NOT LLVM_LINKER_IS_SOLARISLD_ILLUMOS) -+ if (NOT MINGW AND NOT LLVM_LINKER_IS_SOLARISLD_ILLUMOS AND TRUE) ++ if (NOT MINGW AND NOT LLVM_LINKER_IS_SOLARISLD_ILLUMOS AND ${OPENBSD_LD_IS_LLD}) # Optimize function calls for default visibility definitions to avoid PLT and # reduce dynamic relocations. # Note: for -fno-pic default, the address of a function may be different from Index: 21/patches/patch-clang_tools_clang-shlib_CMakeLists_txt =================================================================== RCS file: /cvs/ports/devel/llvm/21/patches/patch-clang_tools_clang-shlib_CMakeLists_txt,v diff -u -p -r1.2 patch-clang_tools_clang-shlib_CMakeLists_txt --- 21/patches/patch-clang_tools_clang-shlib_CMakeLists_txt 10 Nov 2025 15:12:47 -0000 1.2 +++ 21/patches/patch-clang_tools_clang-shlib_CMakeLists_txt 18 Dec 2025 10:22:07 -0000 @@ -6,7 +6,7 @@ Index: clang/tools/clang-shlib/CMakeList # Optimize function calls for default visibility definitions to avoid PLT and # reduce dynamic relocations. -if (NOT APPLE AND LLVM_LINKER_SUPPORTS_B_SYMBOLIC_FUNCTIONS) -+if (NOT APPLE AND LLVM_LINKER_SUPPORTS_B_SYMBOLIC_FUNCTIONS AND TRUE) ++if (NOT APPLE AND LLVM_LINKER_SUPPORTS_B_SYMBOLIC_FUNCTIONS AND ${OPENBSD_LD_IS_LLD}) target_link_options(clang-cpp PRIVATE LINKER:-Bsymbolic-functions) endif() if (MINGW OR CYGWIN) Index: 21/patches/patch-llvm_tools_llvm-shlib_CMakeLists_txt =================================================================== RCS file: /cvs/ports/devel/llvm/21/patches/patch-llvm_tools_llvm-shlib_CMakeLists_txt,v diff -u -p -r1.1.1.1 patch-llvm_tools_llvm-shlib_CMakeLists_txt --- 21/patches/patch-llvm_tools_llvm-shlib_CMakeLists_txt 4 Sep 2025 12:32:33 -0000 1.1.1.1 +++ 21/patches/patch-llvm_tools_llvm-shlib_CMakeLists_txt 18 Dec 2025 10:21:52 -0000 @@ -14,7 +14,7 @@ Index: llvm/tools/llvm-shlib/CMakeLists. set(LIB_NAMES -Wl,--version-script,${LLVM_LIBRARY_DIR}/tools/llvm-shlib/simple_version_script.map ${LIB_NAMES}) endif() - if (LLVM_LINKER_SUPPORTS_B_SYMBOLIC_FUNCTIONS) -+ if (LLVM_LINKER_SUPPORTS_B_SYMBOLIC_FUNCTIONS AND TRUE) ++ if (LLVM_LINKER_SUPPORTS_B_SYMBOLIC_FUNCTIONS AND ${OPENBSD_LD_IS_LLD}) # Optimize function calls for default visibility definitions to avoid PLT and # reduce dynamic relocations. # Note: for -fno-pic default, the address of a function may be different from