diff --git a/doc/release-notes/rl-2511.section.md b/doc/release-notes/rl-2511.section.md index 314459a6ab97..a8bd8ab82bf0 100644 --- a/doc/release-notes/rl-2511.section.md +++ b/doc/release-notes/rl-2511.section.md @@ -26,7 +26,7 @@ - GCC 9, 10, 11, and 12 have been removed, as they have reached end‐of‐life upstream and are no longer supported. -- LLVM 12 and 13 have been removed, as they have reached end‐of‐life upstream and are no longer supported. +- LLVM 12, 13, and 14 have been removed, as they have reached end‐of‐life upstream and are no longer supported. - GHCJS 8.10, exposed via `haskell.compiler.ghcjs` and `haskell.compiler.ghcjs810`, has been removed. Downstream users should migrate their projects to the new JavaScript backend of GHC proper which can be used via `pkgsCross.ghcjs` from Nixpkgs. Haskell packaging code, like `haskellPackages.mkDerivation`, `ghcWithPackages` and `hoogleWithPackages`, also no longer supports GHCJS. diff --git a/pkgs/development/compilers/llvm/14/clang/gnu-install-dirs.patch b/pkgs/development/compilers/llvm/14/clang/gnu-install-dirs.patch deleted file mode 100644 index 57c54e18c37b..000000000000 --- a/pkgs/development/compilers/llvm/14/clang/gnu-install-dirs.patch +++ /dev/null @@ -1,50 +0,0 @@ -diff --git a/cmake/modules/AddClang.cmake b/cmake/modules/AddClang.cmake -index 9bbbfc032b7d..947bd0da865d 100644 ---- a/cmake/modules/AddClang.cmake -+++ b/cmake/modules/AddClang.cmake -@@ -119,8 +119,8 @@ macro(add_clang_library name) - install(TARGETS ${lib} - COMPONENT ${lib} - ${export_to_clangtargets} -- LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX} -- ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX} -+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX} -+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX} - RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}") - - if (NOT LLVM_ENABLE_IDE) -@@ -175,7 +175,7 @@ endmacro() - macro(add_clang_symlink name dest) - add_llvm_tool_symlink(${name} ${dest} ALWAYS_GENERATE) - # Always generate install targets -- llvm_install_symlink(${name} ${dest} ALWAYS_GENERATE) -+ llvm_install_symlink(${name} ${dest} ${CMAKE_INSTALL_FULL_BINDIR} ALWAYS_GENERATE) - endmacro() - - function(clang_target_link_libraries target type) -diff --git a/lib/Headers/CMakeLists.txt b/lib/Headers/CMakeLists.txt -index 078988980c52..14b58614b40a 100644 ---- a/lib/Headers/CMakeLists.txt -+++ b/lib/Headers/CMakeLists.txt -@@ -234,7 +234,7 @@ set_target_properties(clang-resource-headers PROPERTIES - FOLDER "Misc" - RUNTIME_OUTPUT_DIRECTORY "${output_dir}") - --set(header_install_dir lib${LLVM_LIBDIR_SUFFIX}/clang/${CLANG_VERSION}/include) -+set(header_install_dir ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}/clang/${CLANG_VERSION}/include) - - install( - FILES ${files} ${generated_files} -diff --git a/tools/libclang/CMakeLists.txt b/tools/libclang/CMakeLists.txt -index 4e0647971ab4..68dd67fcc476 100644 ---- a/tools/libclang/CMakeLists.txt -+++ b/tools/libclang/CMakeLists.txt -@@ -216,7 +216,7 @@ foreach(PythonVersion ${CLANG_PYTHON_BINDINGS_VERSIONS}) - COMPONENT - libclang-python-bindings - DESTINATION -- "lib${LLVM_LIBDIR_SUFFIX}/python${PythonVersion}/site-packages") -+ "${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}/python${PythonVersion}/site-packages") - endforeach() - if(NOT LLVM_ENABLE_IDE) - add_custom_target(libclang-python-bindings) diff --git a/pkgs/development/compilers/llvm/14/clang/purity.patch b/pkgs/development/compilers/llvm/14/clang/purity.patch deleted file mode 100644 index deb230a36c5b..000000000000 --- a/pkgs/development/compilers/llvm/14/clang/purity.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 4add81bba40dcec62c4ea4481be8e35ac53e89d8 Mon Sep 17 00:00:00 2001 -From: Will Dietz -Date: Thu, 18 May 2017 11:56:12 -0500 -Subject: [PATCH] "purity" patch for 5.0 - ---- - lib/Driver/ToolChains/Gnu.cpp | 7 ------- - 1 file changed, 7 deletions(-) - -diff --git a/lib/Driver/ToolChains/Gnu.cpp b/lib/Driver/ToolChains/Gnu.cpp -index fe3c0191bb..c6a482bece 100644 ---- a/lib/Driver/ToolChains/Gnu.cpp -+++ b/lib/Driver/ToolChains/Gnu.cpp -@@ -487,12 +487,6 @@ void tools::gnutools::Linker::ConstructJob(Compilation &C, const JobAction &JA, - if (!IsStatic) { - if (Args.hasArg(options::OPT_rdynamic)) - CmdArgs.push_back("-export-dynamic"); -- -- if (!Args.hasArg(options::OPT_shared) && !IsStaticPIE) { -- CmdArgs.push_back("-dynamic-linker"); -- CmdArgs.push_back(Args.MakeArgString(Twine(D.DyldPrefix) + -- ToolChain.getDynamicLinker(Args))); -- } - } - - CmdArgs.push_back("-o"); --- -2.11.0 diff --git a/pkgs/development/compilers/llvm/14/compiler-rt/X86-support-extension.patch b/pkgs/development/compilers/llvm/14/compiler-rt/X86-support-extension.patch deleted file mode 100644 index 66742e5b1498..000000000000 --- a/pkgs/development/compilers/llvm/14/compiler-rt/X86-support-extension.patch +++ /dev/null @@ -1,21 +0,0 @@ -diff --git a/lib/builtins/CMakeLists.txt b/lib/builtins/CMakeLists.txt -index 3a66dd9c3fb..7efc85d9f9f 100644 ---- a/lib/builtins/CMakeLists.txt -+++ b/lib/builtins/CMakeLists.txt -@@ -345,4 +345,8 @@ if (NOT MSVC) - -+ set(i486_SOURCES ${i386_SOURCES}) -+ set(i586_SOURCES ${i386_SOURCES}) -+ set(i686_SOURCES ${i386_SOURCES}) -+ - if (WIN32) - set(i386_SOURCES - ${i386_SOURCES} -@@ -608,6 +612,7 @@ else () - endif() - - foreach (arch ${BUILTIN_SUPPORTED_ARCH}) -+ message("arch: ${arch}") - if (CAN_TARGET_${arch}) - # For ARM archs, exclude any VFP builtins if VFP is not supported - if (${arch} MATCHES "^(arm|armhf|armv7|armv7s|armv7k|armv7m|armv7em)$") diff --git a/pkgs/development/compilers/llvm/14/compiler-rt/armv6-scudo-libatomic.patch b/pkgs/development/compilers/llvm/14/compiler-rt/armv6-scudo-libatomic.patch deleted file mode 100644 index 13b67eb2a41c..000000000000 --- a/pkgs/development/compilers/llvm/14/compiler-rt/armv6-scudo-libatomic.patch +++ /dev/null @@ -1,65 +0,0 @@ -From a56bb19a9dc303a50ef12d83cd24c2395bf81076 Mon Sep 17 00:00:00 2001 -From: Ben Wolsieffer -Date: Wed, 7 Dec 2022 21:25:46 -0500 -Subject: [PATCH] [scudo][standalone] Use CheckAtomic to decide to link to - libatomic - -Standalone scudo uses the atomic operation builtin functions, which require -linking to libatomic on some platforms. Currently, this is done in an ad-hoc -manner. MIPS platforms always link to libatomic, and the tests are always linked -to it as well. libatomic is required on base ARMv6 (but not ARMv6K), but it is -currently not linked, causing the build to fail. - -This patch replaces this ad-hoc logic with the CheckAtomic CMake module already -used in other parts of LLVM. The CheckAtomic module checks whether std::atomic -requires libatomic, which is not strictly the same as checking the atomic -builtins, but should have the same results as far as I know. If this is -problematic, a custom version of CheckAtomic could be used to specifically test -the builtins. ---- - compiler-rt/lib/scudo/standalone/CMakeLists.txt | 7 +++++++ - compiler-rt/lib/scudo/standalone/tests/CMakeLists.txt | 4 +--- - 2 files changed, 8 insertions(+), 3 deletions(-) - -diff --git a/lib/scudo/standalone/CMakeLists.txt b/lib/scudo/standalone/CMakeLists.txt -index ae5c354768c8..eb27374ca520 100644 ---- a/lib/scudo/standalone/CMakeLists.txt -+++ b/lib/scudo/standalone/CMakeLists.txt -@@ -1,5 +1,8 @@ - add_compiler_rt_component(scudo_standalone) - -+include(DetermineGCCCompatible) -+include(CheckAtomic) -+ - include_directories(../.. include) - - set(SCUDO_CFLAGS) -@@ -34,6 +37,10 @@ list(APPEND SCUDO_LINK_FLAGS -Wl,-z,defs,-z,now,-z,relro) - - list(APPEND SCUDO_LINK_FLAGS -ffunction-sections -fdata-sections -Wl,--gc-sections) - -+if(HAVE_CXX_ATOMICS_WITH_LIB OR HAVE_CXX_ATOMICS64_WITH_LIB) -+ list(APPEND SCUDO_LINK_FLAGS -latomic) -+endif() -+ - # We don't use the C++ standard library, so avoid including it by mistake. - append_list_if(COMPILER_RT_HAS_NOSTDLIBXX_FLAG -nostdlib++ SCUDO_LINK_FLAGS) - -diff --git a/lib/scudo/standalone/tests/CMakeLists.txt b/lib/scudo/standalone/tests/CMakeLists.txt -index 6d0936cbb5c1..70a5a7e959c1 100644 ---- a/lib/scudo/standalone/tests/CMakeLists.txt -+++ b/lib/scudo/standalone/tests/CMakeLists.txt -@@ -38,9 +38,7 @@ set(LINK_FLAGS - ${SANITIZER_TEST_CXX_LIBRARIES} - ) - list(APPEND LINK_FLAGS -pthread) --# Linking against libatomic is required with some compilers --check_library_exists(atomic __atomic_load_8 "" COMPILER_RT_HAS_LIBATOMIC) --if (COMPILER_RT_HAS_LIBATOMIC) -+if(HAVE_CXX_ATOMICS_WITH_LIB OR HAVE_CXX_ATOMICS64_WITH_LIB) - list(APPEND LINK_FLAGS -latomic) - endif() - --- -2.38.1 - diff --git a/pkgs/development/compilers/llvm/14/compiler-rt/armv7l.patch b/pkgs/development/compilers/llvm/14/compiler-rt/armv7l.patch deleted file mode 100644 index 6818684e6a71..000000000000 --- a/pkgs/development/compilers/llvm/14/compiler-rt/armv7l.patch +++ /dev/null @@ -1,31 +0,0 @@ -diff -ur compiler-rt-10.0.0.src/cmake/builtin-config-ix.cmake compiler-rt-10.0.0.src-patched/cmake/builtin-config-ix.cmake ---- compiler-rt-10.0.0.src/cmake/builtin-config-ix.cmake 2020-03-24 00:01:02.000000000 +0900 -+++ compiler-rt-10.0.0.src-patched/cmake/builtin-config-ix.cmake 2020-05-10 03:42:00.883450706 +0900 -@@ -37,6 +37,6 @@ - - set(ARM64 aarch64) --set(ARM32 arm armhf armv6m armv7m armv7em armv7 armv7s armv7k armv8m.main armv8.1m.main) -+set(ARM32 arm armhf armv6m armv7m armv7em armv7 armv7s armv7k armv7l armv8m.main armv8.1m.main) - set(HEXAGON hexagon) - set(X86 i386) - set(X86_64 x86_64) -diff -ur compiler-rt-10.0.0.src/lib/builtins/CMakeLists.txt compiler-rt-10.0.0.src-patched/lib/builtins/CMakeLists.txt ---- compiler-rt-10.0.0.src/lib/builtins/CMakeLists.txt 2020-03-24 00:01:02.000000000 +0900 -+++ compiler-rt-10.0.0.src-patched/lib/builtins/CMakeLists.txt 2020-05-10 03:44:49.468579650 +0900 -@@ -555,6 +555,7 @@ - set(armv7_SOURCES ${arm_SOURCES}) - set(armv7s_SOURCES ${arm_SOURCES}) - set(armv7k_SOURCES ${arm_SOURCES}) -+set(armv7l_SOURCES ${arm_SOURCES}) - set(arm64_SOURCES ${aarch64_SOURCES}) - - # macho_embedded archs -@@ -705,7 +705,7 @@ - foreach (arch ${BUILTIN_SUPPORTED_ARCH}) - if (CAN_TARGET_${arch}) - # For ARM archs, exclude any VFP builtins if VFP is not supported -- if (${arch} MATCHES "^(arm|armhf|armv7|armv7s|armv7k|armv7m|armv7em|armv8m.main|armv8.1m.main)$") -+ if (${arch} MATCHES "^(arm|armhf|armv7|armv7s|armv7k|armv7l|armv7m|armv7em|armv8m.main|armv8.1m.main)$") - string(REPLACE ";" " " _TARGET_${arch}_CFLAGS "${TARGET_${arch}_CFLAGS}") - check_compile_definition(__VFP_FP__ "${CMAKE_C_FLAGS} ${_TARGET_${arch}_CFLAGS}" COMPILER_RT_HAS_${arch}_VFP) - if(NOT COMPILER_RT_HAS_${arch}_VFP) diff --git a/pkgs/development/compilers/llvm/14/compiler-rt/codesign.patch b/pkgs/development/compilers/llvm/14/compiler-rt/codesign.patch deleted file mode 100644 index 065959d14d46..000000000000 --- a/pkgs/development/compilers/llvm/14/compiler-rt/codesign.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 3dec5f3475a26aeb4678627795c4b67c6b7b4785 Mon Sep 17 00:00:00 2001 -From: Will Dietz -Date: Tue, 19 Sep 2017 13:13:06 -0500 -Subject: [PATCH] remove codesign use on Apple, disable ios sim testing that - needs it - ---- - cmake/Modules/AddCompilerRT.cmake | 8 ------ - test/asan/CMakeLists.txt | 52 --------------------------------------- - test/tsan/CMakeLists.txt | 47 ----------------------------------- - 3 files changed, 107 deletions(-) - -diff --git a/cmake/Modules/AddCompilerRT.cmake b/cmake/Modules/AddCompilerRT.cmake -index bc69ec95c419..9f100fdcec2f 100644 ---- a/cmake/Modules/AddCompilerRT.cmake -+++ b/cmake/Modules/AddCompilerRT.cmake -@@ -366,14 +366,6 @@ function(add_compiler_rt_runtime name type) - set_target_properties(${libname} PROPERTIES IMPORT_PREFIX "") - set_target_properties(${libname} PROPERTIES IMPORT_SUFFIX ".lib") - endif() -- if(APPLE) -- # Ad-hoc sign the dylibs -- add_custom_command(TARGET ${libname} -- POST_BUILD -- COMMAND codesign --sign - $ -- WORKING_DIRECTORY ${COMPILER_RT_OUTPUT_LIBRARY_DIR} -- ) -- endif() - endif() - - set(parent_target_arg) -2.14.1 - diff --git a/pkgs/development/compilers/llvm/14/compiler-rt/gnu-install-dirs.patch b/pkgs/development/compilers/llvm/14/compiler-rt/gnu-install-dirs.patch deleted file mode 100644 index 55837bd8e45b..000000000000 --- a/pkgs/development/compilers/llvm/14/compiler-rt/gnu-install-dirs.patch +++ /dev/null @@ -1,42 +0,0 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 3a41aa43e406..f000cee6eae0 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -5,6 +5,8 @@ - - cmake_minimum_required(VERSION 3.13.4) - -+include(GNUInstallDirs) -+ - # Check if compiler-rt is built as a standalone project. - if (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR OR COMPILER_RT_STANDALONE_BUILD) - project(CompilerRT C CXX ASM) -diff --git a/cmake/base-config-ix.cmake b/cmake/base-config-ix.cmake -index d7b0124f3546..3e111146df4d 100644 ---- a/cmake/base-config-ix.cmake -+++ b/cmake/base-config-ix.cmake -@@ -67,7 +67,7 @@ if (LLVM_TREE_AVAILABLE) - else() - # Take output dir and install path from the user. - set(COMPILER_RT_OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR} CACHE PATH -- "Path where built compiler-rt libraries should be stored.") -+ "Path where built compiler-rt build artifacts should be stored.") - set(COMPILER_RT_EXEC_OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR}/bin CACHE PATH - "Path where built compiler-rt executables should be stored.") - set(COMPILER_RT_INSTALL_PATH "" CACHE PATH -@@ -99,13 +99,13 @@ endif() - if(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR AND NOT APPLE) - set(COMPILER_RT_OUTPUT_LIBRARY_DIR - ${COMPILER_RT_OUTPUT_DIR}/lib) -- extend_path(default_install_path "${COMPILER_RT_INSTALL_PATH}" lib) -+ extend_path(default_install_path "${COMPILER_RT_INSTALL_PATH}" "${CMAKE_INSTALL_LIBDIR}") - set(COMPILER_RT_INSTALL_LIBRARY_DIR "${default_install_path}" CACHE PATH - "Path where built compiler-rt libraries should be installed.") - else(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR AND NOT APPLE) - set(COMPILER_RT_OUTPUT_LIBRARY_DIR - ${COMPILER_RT_OUTPUT_DIR}/lib/${COMPILER_RT_OS_DIR}) -- extend_path(default_install_path "${COMPILER_RT_INSTALL_PATH}" "lib/${COMPILER_RT_OS_DIR}") -+ extend_path(default_install_path "${COMPILER_RT_INSTALL_PATH}" "${CMAKE_INSTALL_LIBDIR}/${COMPILER_RT_OS_DIR}") - set(COMPILER_RT_INSTALL_LIBRARY_DIR "${default_install_path}" CACHE PATH - "Path where built compiler-rt libraries should be installed.") - endif() diff --git a/pkgs/development/compilers/llvm/14/libunwind/gnu-install-dirs.patch b/pkgs/development/compilers/llvm/14/libunwind/gnu-install-dirs.patch deleted file mode 100644 index 3fce8bf90343..000000000000 --- a/pkgs/development/compilers/llvm/14/libunwind/gnu-install-dirs.patch +++ /dev/null @@ -1,21 +0,0 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -147,7 +147,7 @@ set(LIBUNWIND_INSTALL_RUNTIME_DIR "${CMAKE_INSTALL_BINDIR}" CACHE PATH - - if(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR AND NOT APPLE) - set(LIBUNWIND_LIBRARY_DIR ${LLVM_LIBRARY_OUTPUT_INTDIR}/${LLVM_DEFAULT_TARGET_TRIPLE}) -- set(LIBUNWIND_INSTALL_LIBRARY_DIR lib${LLVM_LIBDIR_SUFFIX}/${LLVM_DEFAULT_TARGET_TRIPLE} CACHE PATH -+ set(LIBUNWIND_INSTALL_LIBRARY_DIR ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}/${LLVM_DEFAULT_TARGET_TRIPLE} CACHE PATH - "Path where built libunwind libraries should be installed.") - if(LIBCXX_LIBDIR_SUBDIR) - string(APPEND LIBUNWIND_LIBRARY_DIR /${LIBUNWIND_LIBDIR_SUBDIR}) -@@ -159,7 +159,7 @@ else() - else() - set(LIBUNWIND_LIBRARY_DIR ${CMAKE_BINARY_DIR}/lib${LIBUNWIND_LIBDIR_SUFFIX}) - endif() -- set(LIBUNWIND_INSTALL_LIBRARY_DIR lib${LIBUNWIND_LIBDIR_SUFFIX} CACHE PATH -+ set(LIBUNWIND_INSTALL_LIBRARY_DIR ${CMAKE_INSTALL_LIBDIR}${LIBUNWIND_LIBDIR_SUFFIX} CACHE PATH - "Path where built libunwind libraries should be installed.") - endif() - diff --git a/pkgs/development/compilers/llvm/14/lld/fix-root-src-dir.patch b/pkgs/development/compilers/llvm/14/lld/fix-root-src-dir.patch deleted file mode 100644 index 38fb965b472a..000000000000 --- a/pkgs/development/compilers/llvm/14/lld/fix-root-src-dir.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 9bcc135665d0..d38679ed41e9 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -74,7 +74,7 @@ if(LLD_BUILT_STANDALONE) - - set(LLVM_MAIN_INCLUDE_DIR "${MAIN_INCLUDE_DIR}" CACHE PATH "Path to llvm/include") - set(LLVM_BINARY_DIR "${LLVM_OBJ_ROOT}" CACHE PATH "Path to LLVM build tree") -- set(LLVM_MAIN_SRC_DIR "${MAIN_SRC_DIR}" CACHE PATH "Path to LLVM source tree") -+ set(LLVM_MAIN_SRC_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../llvm" CACHE PATH "Path to LLVM source tree") - - find_program(LLVM_TABLEGEN_EXE "llvm-tblgen" ${LLVM_TOOLS_BINARY_DIR} - NO_DEFAULT_PATH) diff --git a/pkgs/development/compilers/llvm/14/lld/gnu-install-dirs.patch b/pkgs/development/compilers/llvm/14/lld/gnu-install-dirs.patch deleted file mode 100644 index 89a5822df49c..000000000000 --- a/pkgs/development/compilers/llvm/14/lld/gnu-install-dirs.patch +++ /dev/null @@ -1,22 +0,0 @@ -diff --git a/cmake/modules/AddLLD.cmake b/cmake/modules/AddLLD.cmake -index dd2898ce6236..ebbea040ff54 100644 ---- a/cmake/modules/AddLLD.cmake -+++ b/cmake/modules/AddLLD.cmake -@@ -18,8 +18,8 @@ macro(add_lld_library name) - install(TARGETS ${name} - COMPONENT ${name} - ${export_to_lldtargets} -- LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX} -- ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX} -+ LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}" -+ ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}" - RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}") - - if (${ARG_SHARED} AND NOT CMAKE_CONFIGURATION_TYPES) -@@ -62,5 +62,5 @@ endmacro() - macro(add_lld_symlink name dest) - add_llvm_tool_symlink(${name} ${dest} ALWAYS_GENERATE) - # Always generate install targets -- llvm_install_symlink(${name} ${dest} ALWAYS_GENERATE) -+ llvm_install_symlink(${name} ${dest} ${CMAKE_INSTALL_FULL_BINDIR} ALWAYS_GENERATE) - endmacro() diff --git a/pkgs/development/compilers/llvm/14/lldb/procfs.patch b/pkgs/development/compilers/llvm/14/lldb/procfs.patch deleted file mode 100644 index b075dbaeee0a..000000000000 --- a/pkgs/development/compilers/llvm/14/lldb/procfs.patch +++ /dev/null @@ -1,31 +0,0 @@ ---- a/source/Plugins/Process/Linux/Procfs.h -+++ b/source/Plugins/Process/Linux/Procfs.h -@@ -11,21 +11,12 @@ - // sys/procfs.h on Android/Linux for all supported architectures. - - #include -+#include - --#ifdef __ANDROID__ --#if defined(__arm64__) || defined(__aarch64__) --typedef unsigned long elf_greg_t; --typedef elf_greg_t -- elf_gregset_t[(sizeof(struct user_pt_regs) / sizeof(elf_greg_t))]; --typedef struct user_fpsimd_state elf_fpregset_t; --#ifndef NT_FPREGSET --#define NT_FPREGSET NT_PRFPREG --#endif // NT_FPREGSET --#elif defined(__mips__) --#ifndef NT_FPREGSET --#define NT_FPREGSET NT_PRFPREG --#endif // NT_FPREGSET --#endif --#else // __ANDROID__ -+#if !defined(__GLIBC__) && defined(__powerpc__) -+#define pt_regs musl_pt_regs -+#include -+#undef pt_regs -+#else - #include --#endif // __ANDROID__ -+#endif diff --git a/pkgs/development/compilers/llvm/14/llvm/gnu-install-dirs.patch b/pkgs/development/compilers/llvm/14/llvm/gnu-install-dirs.patch deleted file mode 100644 index 55862ab39304..000000000000 --- a/pkgs/development/compilers/llvm/14/llvm/gnu-install-dirs.patch +++ /dev/null @@ -1,220 +0,0 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index fec956091cd5..5a766f5c5d7c 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -303,6 +303,9 @@ set(LLVM_EXAMPLES_INSTALL_DIR "examples" CACHE STRING - "Path for examples subdirectory (enabled by LLVM_BUILD_EXAMPLES=ON) (defaults to 'examples')") - mark_as_advanced(LLVM_EXAMPLES_INSTALL_DIR) - -+set(LLVM_INSTALL_CMAKE_DIR "${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}/cmake/llvm" CACHE STRING -+ "Path for CMake subdirectory (defaults to lib/cmake/llvm)" ) -+ - # They are used as destination of target generators. - set(LLVM_RUNTIME_OUTPUT_INTDIR ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/bin) - set(LLVM_LIBRARY_OUTPUT_INTDIR ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/lib${LLVM_LIBDIR_SUFFIX}) -diff --git a/cmake/modules/AddLLVM.cmake b/cmake/modules/AddLLVM.cmake -index fed1fec7d72e..4baed19b9e98 100644 ---- a/cmake/modules/AddLLVM.cmake -+++ b/cmake/modules/AddLLVM.cmake -@@ -838,8 +838,8 @@ macro(add_llvm_library name) - get_target_export_arg(${name} LLVM export_to_llvmexports ${umbrella}) - install(TARGETS ${name} - ${export_to_llvmexports} -- LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX} COMPONENT ${name} -- ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX} COMPONENT ${name} -+ LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}" COMPONENT ${name} -+ ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}" COMPONENT ${name} - RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT ${name}) - - if (NOT LLVM_ENABLE_IDE) -@@ -1056,7 +1056,7 @@ function(process_llvm_pass_plugins) - "set(LLVM_STATIC_EXTENSIONS ${LLVM_STATIC_EXTENSIONS})") - install(FILES - ${llvm_cmake_builddir}/LLVMConfigExtensions.cmake -- DESTINATION ${LLVM_INSTALL_PACKAGE_DIR} -+ DESTINATION ${LLVM_INSTALL_CMAKE_DIR} - COMPONENT cmake-exports) - - set(ExtensionDef "${LLVM_BINARY_DIR}/include/llvm/Support/Extension.def") -@@ -1902,7 +1902,7 @@ function(llvm_install_library_symlink name dest type) - set(full_name ${CMAKE_${type}_LIBRARY_PREFIX}${name}${CMAKE_${type}_LIBRARY_SUFFIX}) - set(full_dest ${CMAKE_${type}_LIBRARY_PREFIX}${dest}${CMAKE_${type}_LIBRARY_SUFFIX}) - -- set(output_dir lib${LLVM_LIBDIR_SUFFIX}) -+ set(output_dir ${CMAKE_INSTALL_FULL_LIBDIR}${LLVM_LIBDIR_SUFFIX}) - if(WIN32 AND "${type}" STREQUAL "SHARED") - set(output_dir bin) - endif() -@@ -1913,7 +1913,7 @@ function(llvm_install_library_symlink name dest type) - - endfunction() - --function(llvm_install_symlink name dest) -+function(llvm_install_symlink name dest output_dir) - cmake_parse_arguments(ARG "ALWAYS_GENERATE" "COMPONENT" "" ${ARGN}) - foreach(path ${CMAKE_MODULE_PATH}) - if(EXISTS ${path}/LLVMInstallSymlink.cmake) -@@ -1936,7 +1936,7 @@ function(llvm_install_symlink name dest) - set(full_dest ${dest}${CMAKE_EXECUTABLE_SUFFIX}) - - install(SCRIPT ${INSTALL_SYMLINK} -- CODE "install_symlink(${full_name} ${full_dest} ${LLVM_TOOLS_INSTALL_DIR})" -+ CODE "install_symlink(${full_name} ${full_dest} ${output_dir})" - COMPONENT ${component}) - - if (NOT LLVM_ENABLE_IDE AND NOT ARG_ALWAYS_GENERATE) -@@ -2019,7 +2019,8 @@ function(add_llvm_tool_symlink link_name target) - endif() - - if ((TOOL_IS_TOOLCHAIN OR NOT LLVM_INSTALL_TOOLCHAIN_ONLY) AND LLVM_BUILD_TOOLS) -- llvm_install_symlink(${link_name} ${target}) -+ GNUInstallDirs_get_absolute_install_dir(output_dir LLVM_TOOLS_INSTALL_DIR) -+ llvm_install_symlink(${link_name} ${target} ${output_dir}) - endif() - endif() - endfunction() -@@ -2148,9 +2149,9 @@ function(llvm_setup_rpath name) - # Since BUILD_SHARED_LIBS is only recommended for use by developers, - # hardcode the rpath to build/install lib dir first in this mode. - # FIXME: update this when there is better solution. -- set(_install_rpath "${LLVM_LIBRARY_OUTPUT_INTDIR}" "${CMAKE_INSTALL_PREFIX}/lib${LLVM_LIBDIR_SUFFIX}" ${extra_libdir}) -+ set(_install_rpath "${LLVM_LIBRARY_OUTPUT_INTDIR}" "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}" ${extra_libdir}) - elseif(UNIX) -- set(_install_rpath "\$ORIGIN/../lib${LLVM_LIBDIR_SUFFIX}" ${extra_libdir}) -+ set(_install_rpath "\$ORIGIN/../${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}" ${extra_libdir}) - if(${CMAKE_SYSTEM_NAME} MATCHES "(FreeBSD|DragonFly)") - set_property(TARGET ${name} APPEND_STRING PROPERTY - LINK_FLAGS " -Wl,-z,origin ") -diff --git a/cmake/modules/AddOCaml.cmake b/cmake/modules/AddOCaml.cmake -index 891c9e6d618c..8d963f3b0069 100644 ---- a/cmake/modules/AddOCaml.cmake -+++ b/cmake/modules/AddOCaml.cmake -@@ -147,9 +147,9 @@ function(add_ocaml_library name) - endforeach() - - if( APPLE ) -- set(ocaml_rpath "@executable_path/../../../lib${LLVM_LIBDIR_SUFFIX}") -+ set(ocaml_rpath "@executable_path/../../../${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}") - elseif( UNIX ) -- set(ocaml_rpath "\\$ORIGIN/../../../lib${LLVM_LIBDIR_SUFFIX}") -+ set(ocaml_rpath "\\$ORIGIN/../../../${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}") - endif() - list(APPEND ocaml_flags "-ldopt" "-Wl,-rpath,${ocaml_rpath}") - -diff --git a/cmake/modules/CMakeLists.txt b/cmake/modules/CMakeLists.txt -index cea0c1df0a14..eedcd9450312 100644 ---- a/cmake/modules/CMakeLists.txt -+++ b/cmake/modules/CMakeLists.txt -@@ -2,7 +2,7 @@ include(ExtendPath) - include(LLVMDistributionSupport) - include(FindPrefixFromConfig) - --set(LLVM_INSTALL_PACKAGE_DIR lib${LLVM_LIBDIR_SUFFIX}/cmake/llvm) -+set(LLVM_INSTALL_PACKAGE_DIR ${LLVM_INSTALL_CMAKE_DIR} CACHE STRING "Path for CMake subdirectory (defaults to 'cmake/llvm')") - set(llvm_cmake_builddir "${LLVM_BINARY_DIR}/${LLVM_INSTALL_PACKAGE_DIR}") - - # First for users who use an installed LLVM, create the LLVMExports.cmake file. -@@ -122,7 +122,7 @@ set(LLVM_CONFIG_INCLUDE_DIRS - ) - list(REMOVE_DUPLICATES LLVM_CONFIG_INCLUDE_DIRS) - --extend_path(LLVM_CONFIG_LIBRARY_DIR "\${LLVM_INSTALL_PREFIX}" "lib\${LLVM_LIBDIR_SUFFIX}") -+extend_path(LLVM_CONFIG_LIBRARY_DIR "\${LLVM_INSTALL_PREFIX}" "${CMAKE_INSTALL_LIBDIR}\${LLVM_LIBDIR_SUFFIX}") - set(LLVM_CONFIG_LIBRARY_DIRS - "${LLVM_CONFIG_LIBRARY_DIR}" - # FIXME: Should there be other entries here? -diff --git a/cmake/modules/LLVMInstallSymlink.cmake b/cmake/modules/LLVMInstallSymlink.cmake -index b5c35f706cb7..9261ab797de6 100644 ---- a/cmake/modules/LLVMInstallSymlink.cmake -+++ b/cmake/modules/LLVMInstallSymlink.cmake -@@ -6,7 +6,7 @@ include(GNUInstallDirs) - - function(install_symlink name target outdir) - set(DESTDIR $ENV{DESTDIR}) -- set(bindir "${DESTDIR}${CMAKE_INSTALL_PREFIX}/${outdir}") -+ set(bindir "${DESTDIR}${outdir}/") - - message(STATUS "Creating ${name}") - -diff --git a/docs/CMake.rst b/docs/CMake.rst -index 044ec8a4d39d..504d0eac3ade 100644 ---- a/docs/CMake.rst -+++ b/docs/CMake.rst -@@ -224,7 +224,7 @@ description is in `LLVM-related variables`_ below. - **LLVM_LIBDIR_SUFFIX**:STRING - Extra suffix to append to the directory where libraries are to be - installed. On a 64-bit architecture, one could use ``-DLLVM_LIBDIR_SUFFIX=64`` -- to install libraries to ``/usr/lib64``. -+ to install libraries to ``/usr/lib64``. See also ``CMAKE_INSTALL_LIBDIR``. - - **LLVM_PARALLEL_{COMPILE,LINK}_JOBS**:STRING - Building the llvm toolchain can use a lot of resources, particularly -@@ -910,9 +910,11 @@ the ``cmake`` command or by setting it directly in ``ccmake`` or ``cmake-gui``). - - This file is available in two different locations. - --* ``/lib/cmake/llvm/LLVMConfig.cmake`` where -- ```` is the install prefix of an installed version of LLVM. -- On Linux typically this is ``/usr/lib/cmake/llvm/LLVMConfig.cmake``. -+* ``LLVMConfig.cmake`` where -+ ```` is the location where LLVM CMake modules are -+ installed as part of an installed version of LLVM. This is typically -+ ``cmake/llvm/`` within the lib directory. On Linux, this is typically -+ ``/usr/lib/cmake/llvm/LLVMConfig.cmake``. - - * ``/lib/cmake/llvm/LLVMConfig.cmake`` where - ```` is the root of the LLVM build tree. **Note: this is only -diff --git a/include/llvm/CMakeLists.txt b/include/llvm/CMakeLists.txt -index b46319f24fc8..2feabd1954e4 100644 ---- a/include/llvm/CMakeLists.txt -+++ b/include/llvm/CMakeLists.txt -@@ -5,5 +5,5 @@ add_subdirectory(Frontend) - # If we're doing an out-of-tree build, copy a module map for generated - # header files into the build area. - if (NOT "${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_BINARY_DIR}") -- configure_file(module.modulemap.build module.modulemap COPYONLY) -+ configure_file(module.modulemap.build ${LLVM_INCLUDE_DIR}/module.modulemap COPYONLY) - endif (NOT "${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_BINARY_DIR}") -diff --git a/tools/llvm-config/BuildVariables.inc.in b/tools/llvm-config/BuildVariables.inc.in -index abbb8a450da6..70c497be12f5 100644 ---- a/tools/llvm-config/BuildVariables.inc.in -+++ b/tools/llvm-config/BuildVariables.inc.in -@@ -23,7 +23,10 @@ - #define LLVM_CXXFLAGS "@LLVM_CXXFLAGS@" - #define LLVM_BUILDMODE "@LLVM_BUILDMODE@" - #define LLVM_LIBDIR_SUFFIX "@LLVM_LIBDIR_SUFFIX@" -+#define LLVM_INSTALL_BINDIR "@CMAKE_INSTALL_BINDIR@" -+#define LLVM_INSTALL_LIBDIR "@CMAKE_INSTALL_LIBDIR@" - #define LLVM_INSTALL_INCLUDEDIR "@CMAKE_INSTALL_INCLUDEDIR@" -+#define LLVM_INSTALL_CMAKEDIR "@LLVM_INSTALL_CMAKE_DIR@" - #define LLVM_TARGETS_BUILT "@LLVM_TARGETS_BUILT@" - #define LLVM_SYSTEM_LIBS "@LLVM_SYSTEM_LIBS@" - #define LLVM_BUILD_SYSTEM "@LLVM_BUILD_SYSTEM@" -diff --git a/tools/llvm-config/llvm-config.cpp b/tools/llvm-config/llvm-config.cpp -index 8ed88f33ead4..5e7184bab90d 100644 ---- a/tools/llvm-config/llvm-config.cpp -+++ b/tools/llvm-config/llvm-config.cpp -@@ -363,12 +363,20 @@ int main(int argc, char **argv) { - ActiveIncludeDir = std::string(Path.str()); - } - { -- SmallString<256> Path(LLVM_TOOLS_INSTALL_DIR); -+ SmallString<256> Path(LLVM_INSTALL_BINDIR); - sys::fs::make_absolute(ActivePrefix, Path); - ActiveBinDir = std::string(Path.str()); - } -- ActiveLibDir = ActivePrefix + "/lib" + LLVM_LIBDIR_SUFFIX; -- ActiveCMakeDir = ActiveLibDir + "/cmake/llvm"; -+ { -+ SmallString<256> Path(LLVM_INSTALL_LIBDIR LLVM_LIBDIR_SUFFIX); -+ sys::fs::make_absolute(ActivePrefix, Path); -+ ActiveLibDir = std::string(Path.str()); -+ } -+ { -+ SmallString<256> Path(LLVM_INSTALL_CMAKEDIR); -+ sys::fs::make_absolute(ActivePrefix, Path); -+ ActiveCMakeDir = std::string(Path.str()); -+ } - ActiveIncludeOption = "-I" + ActiveIncludeDir; - } - diff --git a/pkgs/development/compilers/llvm/14/openmp/gnu-install-dirs.patch b/pkgs/development/compilers/llvm/14/openmp/gnu-install-dirs.patch deleted file mode 100644 index e85fde46ca3f..000000000000 --- a/pkgs/development/compilers/llvm/14/openmp/gnu-install-dirs.patch +++ /dev/null @@ -1,45 +0,0 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -24,7 +24,7 @@ if (OPENMP_STANDALONE_BUILD) - set(OPENMP_LIBDIR_SUFFIX "" CACHE STRING - "Suffix of lib installation directory, e.g. 64 => lib64") - # Do not use OPENMP_LIBDIR_SUFFIX directly, use OPENMP_INSTALL_LIBDIR. -- set(OPENMP_INSTALL_LIBDIR "lib${OPENMP_LIBDIR_SUFFIX}") -+ set(OPENMP_INSTALL_LIBDIR "${CMAKE_INSTALL_LIBDIR}${OPENMP_LIBDIR_SUFFIX}") - - # Group test settings. - set(OPENMP_TEST_C_COMPILER ${CMAKE_C_COMPILER} CACHE STRING -@@ -35,7 +35,7 @@ if (OPENMP_STANDALONE_BUILD) - else() - set(OPENMP_ENABLE_WERROR ${LLVM_ENABLE_WERROR}) - # If building in tree, we honor the same install suffix LLVM uses. -- set(OPENMP_INSTALL_LIBDIR "lib${LLVM_LIBDIR_SUFFIX}") -+ set(OPENMP_INSTALL_LIBDIR "${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}") - - if (NOT MSVC) - set(OPENMP_TEST_C_COMPILER ${LLVM_RUNTIME_OUTPUT_INTDIR}/clang) -diff --git a/libomptarget/plugins/amdgpu/CMakeLists.txt b/libomptarget/plugins/amdgpu/CMakeLists.txt ---- a/libomptarget/plugins/amdgpu/CMakeLists.txt -+++ b/libomptarget/plugins/amdgpu/CMakeLists.txt -@@ -74,7 +74,7 @@ add_library(omptarget.rtl.amdgpu SHARED - - # Install plugin under the lib destination folder. - # When we build for debug, OPENMP_LIBDIR_SUFFIX get set to -debug --install(TARGETS omptarget.rtl.amdgpu LIBRARY DESTINATION "lib${OPENMP_LIBDIR_SUFFIX}") -+install(TARGETS omptarget.rtl.amdgpu LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}${OPENMP_LIBDIR_SUFFIX}") - set_property(TARGET omptarget.rtl.amdgpu PROPERTY INSTALL_RPATH_USE_LINK_PATH ON) - - if(CMAKE_SYSTEM_NAME MATCHES "FreeBSD") -diff --git a/libomptarget/plugins/ve/CMakeLists.txt b/libomptarget/plugins/ve/CMakeLists.txt ---- a/libomptarget/plugins/ve/CMakeLists.txt -+++ b/libomptarget/plugins/ve/CMakeLists.txt -@@ -32,7 +32,7 @@ if(${LIBOMPTARGET_DEP_VEO_FOUND}) - - # Install plugin under the lib destination folder. - install(TARGETS "omptarget.rtl.${tmachine_libname}" -- LIBRARY DESTINATION lib${OPENMP_LIBDIR_SUFFIX}) -+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}${OPENMP_LIBDIR_SUFFIX}) - - target_link_libraries( - "omptarget.rtl.${tmachine_libname}" diff --git a/pkgs/development/compilers/llvm/14/compiler-rt/darwin-targetconditionals.patch b/pkgs/development/compilers/llvm/15/compiler-rt/darwin-targetconditionals.patch similarity index 100% rename from pkgs/development/compilers/llvm/14/compiler-rt/darwin-targetconditionals.patch rename to pkgs/development/compilers/llvm/15/compiler-rt/darwin-targetconditionals.patch diff --git a/pkgs/development/compilers/llvm/14/compiler-rt/normalize-var.patch b/pkgs/development/compilers/llvm/15/compiler-rt/normalize-var.patch similarity index 100% rename from pkgs/development/compilers/llvm/14/compiler-rt/normalize-var.patch rename to pkgs/development/compilers/llvm/15/compiler-rt/normalize-var.patch diff --git a/pkgs/development/compilers/llvm/14/lldb/resource-dir.patch b/pkgs/development/compilers/llvm/15/lldb/resource-dir.patch similarity index 100% rename from pkgs/development/compilers/llvm/14/lldb/resource-dir.patch rename to pkgs/development/compilers/llvm/15/lldb/resource-dir.patch diff --git a/pkgs/development/compilers/llvm/14/llvm/gnu-install-dirs-polly.patch b/pkgs/development/compilers/llvm/15/llvm/gnu-install-dirs-polly.patch similarity index 100% rename from pkgs/development/compilers/llvm/14/llvm/gnu-install-dirs-polly.patch rename to pkgs/development/compilers/llvm/15/llvm/gnu-install-dirs-polly.patch diff --git a/pkgs/development/compilers/llvm/14/llvm/no-pipes.patch b/pkgs/development/compilers/llvm/15/llvm/no-pipes.patch similarity index 100% rename from pkgs/development/compilers/llvm/14/llvm/no-pipes.patch rename to pkgs/development/compilers/llvm/15/llvm/no-pipes.patch diff --git a/pkgs/development/compilers/llvm/14/openmp/run-lit-directly.patch b/pkgs/development/compilers/llvm/15/openmp/run-lit-directly.patch similarity index 100% rename from pkgs/development/compilers/llvm/14/openmp/run-lit-directly.patch rename to pkgs/development/compilers/llvm/15/openmp/run-lit-directly.patch diff --git a/pkgs/development/compilers/llvm/common/clang/default.nix b/pkgs/development/compilers/llvm/common/clang/default.nix index 2fa14c5101d0..bfbabb48d480 100644 --- a/pkgs/development/compilers/llvm/common/clang/default.nix +++ b/pkgs/development/compilers/llvm/common/clang/default.nix @@ -82,19 +82,13 @@ stdenv.mkDerivation ( }) # Backport `__ENVIRONMENT_OS_VERSION_MIN_REQUIRED__` support from Clang 17. # This is needed by newer SDKs (14+). - ++ - lib.optional - ( - lib.versionAtLeast (lib.versions.major release_version) "15" - && lib.versionOlder (lib.versions.major release_version) "17" - ) - (fetchpatch { - name = "clang-darwin-An-OS-version-preprocessor-define.patch"; - url = "https://github.com/llvm/llvm-project/commit/c8e2dd8c6f490b68e41fe663b44535a8a21dfeab.patch?full_index=1"; - includes = [ "lib/Basic/Targets/OSTargets.cpp" ]; - stripLen = 1; - hash = "sha256-Vs32kql7N6qtLqc12FtZHURcbenA7+N3E/nRRX3jdig="; - }) + ++ lib.optional (lib.versionOlder (lib.versions.major release_version) "17") (fetchpatch { + name = "clang-darwin-An-OS-version-preprocessor-define.patch"; + url = "https://github.com/llvm/llvm-project/commit/c8e2dd8c6f490b68e41fe663b44535a8a21dfeab.patch?full_index=1"; + includes = [ "lib/Basic/Targets/OSTargets.cpp" ]; + stripLen = 1; + hash = "sha256-Vs32kql7N6qtLqc12FtZHURcbenA7+N3E/nRRX3jdig="; + }) # Fixes a bunch of lambda-related crashes # https://github.com/llvm/llvm-project/pull/93206 ++ lib.optional (lib.versions.major release_version == "18") (fetchpatch { @@ -117,8 +111,8 @@ stdenv.mkDerivation ( nativeBuildInputs = [ cmake python3 + ninja ] - ++ (lib.optional (lib.versionAtLeast release_version "15") ninja) ++ lib.optional (lib.versionAtLeast version "18" && enableManpages) python3.pkgs.myst-parser ++ lib.optional enableManpages python3.pkgs.sphinx ++ lib.optional stdenv.hostPlatform.isDarwin fixDarwinDylibNames; @@ -128,43 +122,41 @@ stdenv.mkDerivation ( libllvm ]; - cmakeFlags = - (lib.optionals (lib.versionAtLeast release_version "15") [ - (lib.cmakeFeature "CLANG_INSTALL_PACKAGE_DIR" "${placeholder "dev"}/lib/cmake/clang") - ]) - ++ [ - (lib.cmakeBool "CLANGD_BUILD_XPC" false) - (lib.cmakeBool "LLVM_ENABLE_RTTI" true) - (lib.cmakeFeature "LLVM_TABLEGEN_EXE" "${buildLlvmTools.tblgen}/bin/llvm-tblgen") - (lib.cmakeFeature "CLANG_TABLEGEN" "${buildLlvmTools.tblgen}/bin/clang-tblgen") - ] - ++ lib.optionals (lib.versionAtLeast release_version "21") [ - (lib.cmakeFeature "CLANG_RESOURCE_DIR" "${placeholder "lib"}/lib/clang/${lib.versions.major release_version}") - ] - ++ lib.optionals (lib.versionAtLeast release_version "17") [ - (lib.cmakeBool "LLVM_INCLUDE_TESTS" false) - ] - ++ lib.optionals enableManpages [ - (lib.cmakeBool "CLANG_INCLUDE_DOCS" true) - (lib.cmakeBool "LLVM_ENABLE_SPHINX" true) - (lib.cmakeBool "SPHINX_OUTPUT_MAN" true) - (lib.cmakeBool "SPHINX_OUTPUT_HTML" false) - (lib.cmakeBool "SPHINX_WARNINGS_AS_ERRORS" false) - ] - ++ lib.optionals (lib.versionAtLeast release_version "15") [ - # Added in LLVM15: - # `clang-tidy-confusable-chars-gen`: https://github.com/llvm/llvm-project/commit/c3574ef739fbfcc59d405985a3a4fa6f4619ecdb - # `clang-pseudo-gen`: https://github.com/llvm/llvm-project/commit/cd2292ef824591cc34cc299910a3098545c840c7 - (lib.cmakeFeature "CLANG_TIDY_CONFUSABLE_CHARS_GEN" "${buildLlvmTools.tblgen}/bin/clang-tidy-confusable-chars-gen") - ] - ++ lib.optionals (lib.versionOlder release_version "20") [ - # clang-pseudo removed in LLVM20: https://github.com/llvm/llvm-project/commit/ed8f78827895050442f544edef2933a60d4a7935 - (lib.cmakeFeature "CLANG_PSEUDO_GEN" "${buildLlvmTools.tblgen}/bin/clang-pseudo-gen") - ] - ++ lib.optional (lib.versionAtLeast release_version "20") ( - lib.cmakeFeature "LLVM_DIR" "${libllvm.dev}/lib/cmake/llvm" - ) - ++ devExtraCmakeFlags; + cmakeFlags = [ + (lib.cmakeFeature "CLANG_INSTALL_PACKAGE_DIR" "${placeholder "dev"}/lib/cmake/clang") + (lib.cmakeBool "CLANGD_BUILD_XPC" false) + (lib.cmakeBool "LLVM_ENABLE_RTTI" true) + (lib.cmakeFeature "LLVM_TABLEGEN_EXE" "${buildLlvmTools.tblgen}/bin/llvm-tblgen") + (lib.cmakeFeature "CLANG_TABLEGEN" "${buildLlvmTools.tblgen}/bin/clang-tblgen") + ] + ++ lib.optionals (lib.versionAtLeast release_version "21") [ + (lib.cmakeFeature "CLANG_RESOURCE_DIR" "${placeholder "lib"}/lib/clang/${lib.versions.major release_version}") + ] + ++ lib.optionals (lib.versionAtLeast release_version "17") [ + (lib.cmakeBool "LLVM_INCLUDE_TESTS" false) + ] + ++ lib.optionals enableManpages [ + (lib.cmakeBool "CLANG_INCLUDE_DOCS" true) + (lib.cmakeBool "LLVM_ENABLE_SPHINX" true) + (lib.cmakeBool "SPHINX_OUTPUT_MAN" true) + (lib.cmakeBool "SPHINX_OUTPUT_HTML" false) + (lib.cmakeBool "SPHINX_WARNINGS_AS_ERRORS" false) + ] + # TODO: Clean up on `staging`. + ++ [ + # Added in LLVM15: + # `clang-tidy-confusable-chars-gen`: https://github.com/llvm/llvm-project/commit/c3574ef739fbfcc59d405985a3a4fa6f4619ecdb + # `clang-pseudo-gen`: https://github.com/llvm/llvm-project/commit/cd2292ef824591cc34cc299910a3098545c840c7 + (lib.cmakeFeature "CLANG_TIDY_CONFUSABLE_CHARS_GEN" "${buildLlvmTools.tblgen}/bin/clang-tidy-confusable-chars-gen") + ] + ++ lib.optionals (lib.versionOlder release_version "20") [ + # clang-pseudo removed in LLVM20: https://github.com/llvm/llvm-project/commit/ed8f78827895050442f544edef2933a60d4a7935 + (lib.cmakeFeature "CLANG_PSEUDO_GEN" "${buildLlvmTools.tblgen}/bin/clang-pseudo-gen") + ] + ++ lib.optional (lib.versionAtLeast release_version "20") ( + lib.cmakeFeature "LLVM_DIR" "${libllvm.dev}/lib/cmake/llvm" + ) + ++ devExtraCmakeFlags; postPatch = '' # Make sure clang passes the correct location of libLTO to ld64 @@ -203,39 +195,21 @@ stdenv.mkDerivation ( # Move libclang to 'lib' output moveToOutput "lib/libclang.*" "$lib" moveToOutput "lib/libclang-cpp.*" "$lib" + mkdir -p $python/bin $python/share/clang/ '' - + ( - if lib.versionOlder release_version "15" then - '' - mkdir -p $python/bin $python/share/{clang,scan-view} - '' - else - '' - mkdir -p $python/bin $python/share/clang/ - '' - ) + '' mv $out/bin/{git-clang-format,scan-view} $python/bin if [ -e $out/bin/set-xcode-analyzer ]; then mv $out/bin/set-xcode-analyzer $python/bin fi mv $out/share/clang/*.py $python/share/clang - '' - + (lib.optionalString (lib.versionOlder release_version "15") '' - mv $out/share/scan-view/*.py $python/share/scan-view - '') - + '' rm $out/bin/c-index-test patchShebangs $python/bin mkdir -p $dev/bin '' + ( - if lib.versionOlder release_version "15" then - '' - cp bin/clang-tblgen $dev/bin - '' - else if lib.versionOlder release_version "20" then + if lib.versionOlder release_version "20" then '' cp bin/{clang-tblgen,clang-tidy-confusable-chars-gen,clang-pseudo-gen} $dev/bin '' @@ -246,12 +220,7 @@ stdenv.mkDerivation ( ); env = - lib.optionalAttrs - ( - stdenv.buildPlatform != stdenv.hostPlatform - && !stdenv.hostPlatform.useLLVM - && lib.versionAtLeast release_version "15" - ) + lib.optionalAttrs (stdenv.buildPlatform != stdenv.hostPlatform && !stdenv.hostPlatform.useLLVM) { # The following warning is triggered with (at least) gcc >= # 12, but appears to occur only for cross compiles. @@ -268,7 +237,6 @@ stdenv.mkDerivation ( ++ lib.optional (!targetPlatform.isAarch64 || !targetPlatform.isLinux) "pacret" ++ lib.optional ( (targetPlatform.isAarch64 && (lib.versionOlder release_version "18.1")) - || (targetPlatform.isFreeBSD && (lib.versionOlder release_version "15")) || !(targetPlatform.isLinux || targetPlatform.isFreeBSD) || !( targetPlatform.isx86 @@ -277,10 +245,7 @@ stdenv.mkDerivation ( || targetPlatform.isAarch64 ) ) "stackclashprotection" - ++ lib.optional ( - (lib.versionOlder release_version "15") || !(targetPlatform.isx86_64 || targetPlatform.isAarch64) - ) "zerocallusedregs" - ++ lib.optional (lib.versionOlder release_version "15") "strictflexarrays1" + ++ lib.optional (!(targetPlatform.isx86_64 || targetPlatform.isAarch64)) "zerocallusedregs" ++ lib.optional (lib.versionOlder release_version "16") "strictflexarrays3" ++ (finalAttrs.passthru.hardeningUnsupportedFlags or [ ]); }; @@ -303,35 +268,23 @@ stdenv.mkDerivation ( mainProgram = "clang"; }; } - // lib.optionalAttrs enableManpages ( - { - pname = "clang-manpages"; + // lib.optionalAttrs enableManpages { + pname = "clang-manpages"; - installPhase = '' - mkdir -p $out/share/man/man1 - # Manually install clang manpage - cp docs/man/*.1 $out/share/man/man1/ - ''; + ninjaFlags = [ "docs-clang-man" ]; - outputs = [ "out" ]; + installPhase = '' + mkdir -p $out/share/man/man1 + # Manually install clang manpage + cp docs/man/*.1 $out/share/man/man1/ + ''; - doCheck = false; + outputs = [ "out" ]; - meta = llvm_meta // { - description = "man page for Clang ${version}"; - }; - } - // ( - if lib.versionOlder release_version "15" then - { - buildPhase = '' - make docs-clang-man - ''; - } - else - { - ninjaFlags = [ "docs-clang-man" ]; - } - ) - ) + doCheck = false; + + meta = llvm_meta // { + description = "man page for Clang ${version}"; + }; + } ) diff --git a/pkgs/development/compilers/llvm/common/compiler-rt/armv6-mcr-dmb.patch b/pkgs/development/compilers/llvm/common/compiler-rt/armv6-mcr-dmb.patch deleted file mode 100644 index acdcc9e983b8..000000000000 --- a/pkgs/development/compilers/llvm/common/compiler-rt/armv6-mcr-dmb.patch +++ /dev/null @@ -1,75 +0,0 @@ -From a11d1cc41c725ec6dee58f75e4a852a658dd7543 Mon Sep 17 00:00:00 2001 -From: Khem Raj -Date: Thu, 10 Mar 2022 19:30:00 -0800 -Subject: [PATCH] [builtins] Use mcr for dmb instruction on armv6 - -At present compiler-rt cross compiles for armv6 ( -march=armv6 ) but includes -dmb instructions which are only available in armv7+ this causes SIGILL on -clang+compiler-rt compiled components on rpi0w platforms. - -Reviewed By: MaskRay - -Differential Revision: https://reviews.llvm.org/D99282 ---- - compiler-rt/lib/builtins/arm/sync-ops.h | 8 ++++---- - compiler-rt/lib/builtins/assembly.h | 8 ++++++++ - 2 files changed, 12 insertions(+), 4 deletions(-) - -diff --git a/lib/builtins/arm/sync-ops.h b/lib/builtins/arm/sync-ops.h -index c9623249e5d20..7a26170741ad2 100644 ---- a/lib/builtins/arm/sync-ops.h -+++ b/lib/builtins/arm/sync-ops.h -@@ -19,14 +19,14 @@ - .thumb; \ - .syntax unified; \ - DEFINE_COMPILERRT_THUMB_FUNCTION(__sync_fetch_and_##op) \ -- dmb; \ -+ DMB; \ - mov r12, r0; \ - LOCAL_LABEL(tryatomic_##op) : ldrex r0, [r12]; \ - op(r2, r0, r1); \ - strex r3, r2, [r12]; \ - cmp r3, #0; \ - bne LOCAL_LABEL(tryatomic_##op); \ -- dmb; \ -+ DMB; \ - bx lr - - #define SYNC_OP_8(op) \ -@@ -35,14 +35,14 @@ - .syntax unified; \ - DEFINE_COMPILERRT_THUMB_FUNCTION(__sync_fetch_and_##op) \ - push {r4, r5, r6, lr}; \ -- dmb; \ -+ DMB; \ - mov r12, r0; \ - LOCAL_LABEL(tryatomic_##op) : ldrexd r0, r1, [r12]; \ - op(r4, r5, r0, r1, r2, r3); \ - strexd r6, r4, r5, [r12]; \ - cmp r6, #0; \ - bne LOCAL_LABEL(tryatomic_##op); \ -- dmb; \ -+ DMB; \ - pop { r4, r5, r6, pc } - - #define MINMAX_4(rD, rN, rM, cmp_kind) \ -diff --git a/lib/builtins/assembly.h b/lib/builtins/assembly.h -index 69a3d8620f924..06aa18162e3b4 100644 ---- a/lib/builtins/assembly.h -+++ b/lib/builtins/assembly.h -@@ -189,6 +189,14 @@ - JMP(ip) - #endif - -+#if __ARM_ARCH >= 7 -+#define DMB dmb -+#elif __ARM_ARCH >= 6 -+#define DMB mcr p15, #0, r0, c7, c10, #5 -+#else -+#error only supported on ARMv6+ -+#endif -+ - #if defined(USE_THUMB_2) - #define WIDE(op) op.w - #else - diff --git a/pkgs/development/compilers/llvm/common/compiler-rt/armv6-sync-ops-no-thumb.patch b/pkgs/development/compilers/llvm/common/compiler-rt/armv6-sync-ops-no-thumb.patch deleted file mode 100644 index 098a155d448c..000000000000 --- a/pkgs/development/compilers/llvm/common/compiler-rt/armv6-sync-ops-no-thumb.patch +++ /dev/null @@ -1,52 +0,0 @@ -From 5017de8ba4b1fe985169cf54590e858a9019a91f Mon Sep 17 00:00:00 2001 -From: Khem Raj -Date: Fri, 11 Mar 2022 16:25:49 -0800 -Subject: [PATCH] [builtins] Do not force thumb mode directive in - arm/sync-ops.h - -.thumb_func was not switching mode until [1] -so it did not show up but now that .thumb_func (without argument) is -switching mode, its causing build failures on armv6 ( rpi0 ) even when -build is explicitly asking for this file to be built with -marm (ARM -mode), therefore use DEFINE_COMPILERRT_FUNCTION macro to add function -header which considers arch and mode from compiler cmdline to decide if -the function is built using thumb mode or arm mode. - -[1] https://reviews.llvm.org/D101975 - -Note that it also needs https://reviews.llvm.org/D99282 - -Reviewed By: peter.smith, MaskRay - -Differential Revision: https://reviews.llvm.org/D104183 ---- - compiler-rt/lib/builtins/arm/sync-ops.h | 6 ++---- - 1 file changed, 2 insertions(+), 4 deletions(-) - -diff --git a/lib/builtins/arm/sync-ops.h b/lib/builtins/arm/sync-ops.h -index 7a26170741ad2..d914f9d3a1093 100644 ---- a/lib/builtins/arm/sync-ops.h -+++ b/lib/builtins/arm/sync-ops.h -@@ -16,9 +16,8 @@ - - #define SYNC_OP_4(op) \ - .p2align 2; \ -- .thumb; \ - .syntax unified; \ -- DEFINE_COMPILERRT_THUMB_FUNCTION(__sync_fetch_and_##op) \ -+ DEFINE_COMPILERRT_FUNCTION(__sync_fetch_and_##op) \ - DMB; \ - mov r12, r0; \ - LOCAL_LABEL(tryatomic_##op) : ldrex r0, [r12]; \ -@@ -31,9 +30,8 @@ - - #define SYNC_OP_8(op) \ - .p2align 2; \ -- .thumb; \ - .syntax unified; \ -- DEFINE_COMPILERRT_THUMB_FUNCTION(__sync_fetch_and_##op) \ -+ DEFINE_COMPILERRT_FUNCTION(__sync_fetch_and_##op) \ - push {r4, r5, r6, lr}; \ - DMB; \ - mov r12, r0; \ - diff --git a/pkgs/development/compilers/llvm/common/compiler-rt/default.nix b/pkgs/development/compilers/llvm/common/compiler-rt/default.nix index 6a9011db7cf2..31def30e04ca 100644 --- a/pkgs/development/compilers/llvm/common/compiler-rt/default.nix +++ b/pkgs/development/compilers/llvm/common/compiler-rt/default.nix @@ -72,64 +72,54 @@ stdenv.mkDerivation (finalAttrs: { sourceRoot = "${finalAttrs.src.name}/compiler-rt"; - patches = - lib.optional (lib.versionOlder release_version "15") (getVersionFile "compiler-rt/codesign.patch") # Revert compiler-rt commit that makes codesign mandatory - ++ [ - (getVersionFile "compiler-rt/X86-support-extension.patch") # Add support for i486 i586 i686 by reusing i386 config - # ld-wrapper dislikes `-rpath-link //nix/store`, so we normalize away the - # extra `/`. - (getVersionFile "compiler-rt/normalize-var.patch") - # Fix build on armv6l - ./armv6-no-ldrexd-strexd.patch - ] - ++ lib.optional (lib.versionOlder release_version "18") ( - getVersionFile "compiler-rt/gnu-install-dirs.patch" - ) - ++ lib.optional (lib.versionOlder release_version "18") (fetchpatch { - name = "cfi_startproc-after-label.patch"; - url = "https://github.com/llvm/llvm-project/commit/7939ce39dac0078fef7183d6198598b99c652c88.patch"; - stripLen = 1; - hash = "sha256-tGqXsYvUllFrPa/r/dsKVlwx5IrcJGccuR1WAtUg7/o="; - }) - ++ - lib.optional (lib.versionOlder release_version "18") - # Prevent a compilation error on darwin - (getVersionFile "compiler-rt/darwin-targetconditionals.patch") - # TODO: make unconditional and remove in <15 section below. Causes rebuilds. - ++ lib.optionals (lib.versionAtLeast release_version "15") [ - # See: https://github.com/NixOS/nixpkgs/pull/186575 - ./darwin-plistbuddy-workaround.patch - ] - ++ - lib.optional (lib.versions.major release_version == "15") - # See: https://github.com/NixOS/nixpkgs/pull/194634#discussion_r999829893 - ./armv7l-15.patch - ++ lib.optionals (lib.versionOlder release_version "15") [ - ./darwin-plistbuddy-workaround.patch - (getVersionFile "compiler-rt/armv7l.patch") - # Fix build on armv6l - ./armv6-mcr-dmb.patch - ./armv6-sync-ops-no-thumb.patch - ] - ++ lib.optionals (lib.versionOlder release_version "18") [ - # Fix build on armv6l - ./armv6-scudo-no-yield.patch - ] - ++ [ - (getVersionFile "compiler-rt/armv6-scudo-libatomic.patch") - ] - ++ lib.optional (lib.versions.major release_version == "19") (fetchpatch { - url = "https://github.com/llvm/llvm-project/pull/99837/commits/14ae0a660a38e1feb151928a14f35ff0f4487351.patch"; - hash = "sha256-JykABCaNNhYhZQxCvKiBn54DZ5ZguksgCHnpdwWF2no="; - relative = "compiler-rt"; - }); + patches = [ + (getVersionFile "compiler-rt/X86-support-extension.patch") # Add support for i486 i586 i686 by reusing i386 config + # ld-wrapper dislikes `-rpath-link //nix/store`, so we normalize away the + # extra `/`. + (getVersionFile "compiler-rt/normalize-var.patch") + # Fix build on armv6l + ./armv6-no-ldrexd-strexd.patch + ] + ++ lib.optional (lib.versionOlder release_version "18") ( + getVersionFile "compiler-rt/gnu-install-dirs.patch" + ) + ++ lib.optional (lib.versionOlder release_version "18") (fetchpatch { + name = "cfi_startproc-after-label.patch"; + url = "https://github.com/llvm/llvm-project/commit/7939ce39dac0078fef7183d6198598b99c652c88.patch"; + stripLen = 1; + hash = "sha256-tGqXsYvUllFrPa/r/dsKVlwx5IrcJGccuR1WAtUg7/o="; + }) + ++ + lib.optional (lib.versionOlder release_version "18") + # Prevent a compilation error on darwin + (getVersionFile "compiler-rt/darwin-targetconditionals.patch") + ++ [ + # See: https://github.com/NixOS/nixpkgs/pull/186575 + ./darwin-plistbuddy-workaround.patch + ] + ++ + lib.optional (lib.versions.major release_version == "15") + # See: https://github.com/NixOS/nixpkgs/pull/194634#discussion_r999829893 + ./armv7l-15.patch + ++ lib.optionals (lib.versionOlder release_version "18") [ + # Fix build on armv6l + ./armv6-scudo-no-yield.patch + ] + ++ [ + (getVersionFile "compiler-rt/armv6-scudo-libatomic.patch") + ] + ++ lib.optional (lib.versions.major release_version == "19") (fetchpatch { + url = "https://github.com/llvm/llvm-project/pull/99837/commits/14ae0a660a38e1feb151928a14f35ff0f4487351.patch"; + hash = "sha256-JykABCaNNhYhZQxCvKiBn54DZ5ZguksgCHnpdwWF2no="; + relative = "compiler-rt"; + }); nativeBuildInputs = [ cmake python3 libllvm.dev + ninja ] - ++ (lib.optional (lib.versionAtLeast release_version "15") ninja) ++ lib.optionals stdenv.hostPlatform.isDarwin [ jq ]; buildInputs = lib.optional (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isRiscV) linuxHeaders @@ -214,8 +204,6 @@ stdenv.mkDerivation (finalAttrs: { (lib.cmakeFeature "DARWIN_osx_ARCHS" stdenv.hostPlatform.darwinArch) (lib.cmakeFeature "DARWIN_osx_BUILTIN_ARCHS" stdenv.hostPlatform.darwinArch) (lib.cmakeFeature "SANITIZER_MIN_OSX_VERSION" stdenv.hostPlatform.darwinMinVersion) - ] - ++ lib.optionals (lib.versionAtLeast release_version "15") [ # `COMPILER_RT_DEFAULT_TARGET_ONLY` does not apply to Darwin: # https://github.com/llvm/llvm-project/blob/27ef42bec80b6c010b7b3729ed0528619521a690/compiler-rt/cmake/base-config-ix.cmake#L153 (lib.cmakeBool "COMPILER_RT_ENABLE_IOS" false) diff --git a/pkgs/development/compilers/llvm/common/default.nix b/pkgs/development/compilers/llvm/common/default.nix index 757ea9feb7a5..c431acde0c7b 100644 --- a/pkgs/development/compilers/llvm/common/default.nix +++ b/pkgs/development/compilers/llvm/common/default.nix @@ -257,6 +257,13 @@ let } ); + lldb-manpages = lowPrio ( + tools.lldb.override { + enableManpages = true; + python3 = pkgs.python3; # don't use python-boot + } + ); + # Below, is the LLVM bootstrapping logic. It handles building a # fully LLVM toolchain from scratch. No GCC toolchain should be # pulled in. As a consequence, it is very quick to build different @@ -349,9 +356,7 @@ let "-B${targetLlvmLibraries.compiler-rt-no-libc}/lib" "-nostdlib++" ] - ++ lib.optional ( - lib.versionAtLeast metadata.release_version "15" && stdenv.targetPlatform.isWasm - ) "-fno-exceptions"; + ++ lib.optional stdenv.targetPlatform.isWasm "-fno-exceptions"; }; clangNoLibcWithBasicRt = wrapCCWith rec { @@ -364,9 +369,7 @@ let "-rtlib=compiler-rt" "-B${targetLlvmLibraries.compiler-rt-no-libc}/lib" ] - ++ lib.optional ( - lib.versionAtLeast metadata.release_version "15" && stdenv.targetPlatform.isWasm - ) "-fno-exceptions"; + ++ lib.optional stdenv.targetPlatform.isWasm "-fno-exceptions"; }; clangNoLibcNoRt = wrapCCWith rec { @@ -376,9 +379,7 @@ let extraPackages = [ ]; # "-nostartfiles" used to be needed for pkgsLLVM, causes problems so don't include it. extraBuildCommands = mkExtraBuildCommands0 cc; - nixSupport.cc-cflags = lib.optional ( - lib.versionAtLeast metadata.release_version "15" && stdenv.targetPlatform.isWasm - ) "-fno-exceptions"; + nixSupport.cc-cflags = lib.optional stdenv.targetPlatform.isWasm "-fno-exceptions"; }; # This is an "oddly ordered" bootstrap just for Darwin. Probably @@ -392,24 +393,15 @@ let extraBuildCommands = mkExtraBuildCommands0 cc; } # FIXME: This should be inside the `wrapCCWith` call. - // lib.optionalAttrs ( - lib.versionAtLeast metadata.release_version "15" && stdenv.targetPlatform.isWasm - ) { nixSupport.cc-cflags = [ "-fno-exceptions" ]; }; + // lib.optionalAttrs stdenv.targetPlatform.isWasm { + nixSupport.cc-cflags = [ "-fno-exceptions" ]; + }; # Aliases clangNoCompilerRt = tools.clangNoLibcNoRt; clangNoLibc = tools.clangNoLibcWithBasicRt; clangNoLibcxx = tools.clangWithLibcAndBasicRt; } - // lib.optionalAttrs (lib.versionAtLeast metadata.release_version "15") { - # TODO: pre-15: lldb/docs/index.rst:155:toctree contains reference to nonexisting document 'design/structureddataplugins' - lldb-manpages = lowPrio ( - tools.lldb.override { - enableManpages = true; - python3 = pkgs.python3; # don't use python-boot - } - ); - } // lib.optionalAttrs (lib.versionAtLeast metadata.release_version "16") { mlir = callPackage ./mlir { }; } diff --git a/pkgs/development/compilers/llvm/common/libc/default.nix b/pkgs/development/compilers/llvm/common/libc/default.nix index 1942671a782b..d5f6b0b55e39 100644 --- a/pkgs/development/compilers/llvm/common/libc/default.nix +++ b/pkgs/development/compilers/llvm/common/libc/default.nix @@ -42,8 +42,8 @@ stdenv.mkDerivation (finalAttrs: { nativeBuildInputs = [ cmake python3 + ninja ] - ++ (lib.optional (lib.versionAtLeast release_version "15") ninja) ++ (lib.optional isFullBuild python3Packages.pyyaml); buildInputs = lib.optional isFullBuild linuxHeaders; diff --git a/pkgs/development/compilers/llvm/common/libcxx/default.nix b/pkgs/development/compilers/llvm/common/libcxx/default.nix index 96d879bfce37..3a5b777c0d64 100644 --- a/pkgs/development/compilers/llvm/common/libcxx/default.nix +++ b/pkgs/development/compilers/llvm/common/libcxx/default.nix @@ -266,16 +266,9 @@ stdenv.mkDerivation ( // ( if (lib.versionOlder release_version "16" || lib.versionAtLeast release_version "17") then { - postPatch = - (lib.optionalString (lib.versionOlder release_version "15") '' - # fix CMake error when static and LIBCXXABI_USE_LLVM_UNWINDER=ON. aren't - # building unwind so don't need to depend on it - substituteInPlace libcxx/src/CMakeLists.txt \ - --replace-fail "add_dependencies(cxx_static unwind)" "# add_dependencies(cxx_static unwind)" - '') - + '' - cd runtimes - ''; + postPatch = '' + cd runtimes + ''; } else { diff --git a/pkgs/development/compilers/llvm/common/libunwind/default.nix b/pkgs/development/compilers/llvm/common/libunwind/default.nix index 180090fbfede..6d4d9bb60e5c 100644 --- a/pkgs/development/compilers/llvm/common/libunwind/default.nix +++ b/pkgs/development/compilers/llvm/common/libunwind/default.nix @@ -32,30 +32,22 @@ stdenv.mkDerivation ( src = if monorepoSrc != null then - runCommand "libunwind-src-${version}" { inherit (monorepoSrc) passthru; } ( - '' - mkdir -p "$out" - cp -r ${monorepoSrc}/cmake "$out" - cp -r ${monorepoSrc}/libunwind "$out" - mkdir -p "$out/libcxx" - cp -r ${monorepoSrc}/libcxx/cmake "$out/libcxx" - cp -r ${monorepoSrc}/libcxx/utils "$out/libcxx" - mkdir -p "$out/llvm" - cp -r ${monorepoSrc}/llvm/cmake "$out/llvm" - '' - + lib.optionalString (lib.versionAtLeast release_version "15") '' - cp -r ${monorepoSrc}/llvm/utils "$out/llvm" - cp -r ${monorepoSrc}/runtimes "$out" - '' - ) + runCommand "libunwind-src-${version}" { inherit (monorepoSrc) passthru; } '' + mkdir -p "$out" + cp -r ${monorepoSrc}/cmake "$out" + cp -r ${monorepoSrc}/libunwind "$out" + mkdir -p "$out/libcxx" + cp -r ${monorepoSrc}/libcxx/cmake "$out/libcxx" + cp -r ${monorepoSrc}/libcxx/utils "$out/libcxx" + mkdir -p "$out/llvm" + cp -r ${monorepoSrc}/llvm/cmake "$out/llvm" + cp -r ${monorepoSrc}/llvm/utils "$out/llvm" + cp -r ${monorepoSrc}/runtimes "$out" + '' else src; - sourceRoot = - if lib.versionAtLeast release_version "15" then - "${finalAttrs.src.name}/runtimes" - else - "${finalAttrs.src.name}/libunwind"; + sourceRoot = "${finalAttrs.src.name}/runtimes"; outputs = [ "out" @@ -64,34 +56,24 @@ stdenv.mkDerivation ( nativeBuildInputs = [ cmake - ] - ++ lib.optionals (lib.versionAtLeast release_version "15") [ ninja python3 ]; cmakeFlags = [ (lib.cmakeBool "LIBUNWIND_ENABLE_SHARED" enableShared) + (lib.cmakeFeature "LLVM_ENABLE_RUNTIMES" "libunwind") ] - ++ lib.optional (lib.versionAtLeast release_version "15") ( - lib.cmakeFeature "LLVM_ENABLE_RUNTIMES" "libunwind" - ) ++ devExtraCmakeFlags; - prePatch = - lib.optionalString - (lib.versionAtLeast release_version "15" && (hasPatches || lib.versionOlder release_version "18")) - '' - cd ../libunwind - chmod -R u+w . - ''; + prePatch = lib.optionalString (hasPatches || lib.versionOlder release_version "18") '' + cd ../libunwind + chmod -R u+w . + ''; - postPatch = - lib.optionalString - (lib.versionAtLeast release_version "15" && (hasPatches || lib.versionOlder release_version "18")) - '' - cd ../runtimes - ''; + postPatch = lib.optionalString (hasPatches || lib.versionOlder release_version "18") '' + cd ../runtimes + ''; postInstall = lib.optionalString (enableShared && !stdenv.hostPlatform.isDarwin && !stdenv.hostPlatform.isWindows) diff --git a/pkgs/development/compilers/llvm/common/lld/default.nix b/pkgs/development/compilers/llvm/common/lld/default.nix index 32a938fdc21b..da9a59944761 100644 --- a/pkgs/development/compilers/llvm/common/lld/default.nix +++ b/pkgs/development/compilers/llvm/common/lld/default.nix @@ -38,9 +38,6 @@ stdenv.mkDerivation (finalAttrs: { patches = [ (getVersionFile "lld/gnu-install-dirs.patch") ] - ++ lib.optional (lib.versions.major release_version == "14") ( - getVersionFile "lld/fix-root-src-dir.patch" - ) ++ lib.optional (lib.versionAtLeast release_version "16" && lib.versionOlder release_version "18") ( getVersionFile "lld/add-table-base.patch" ) @@ -54,20 +51,20 @@ stdenv.mkDerivation (finalAttrs: { } ); - nativeBuildInputs = [ cmake ] ++ lib.optional (lib.versionAtLeast release_version "15") ninja; + nativeBuildInputs = [ + cmake + ninja + ]; buildInputs = [ libllvm libxml2 ]; - cmakeFlags = - lib.optionals (lib.versionAtLeast release_version "15") [ - (lib.cmakeFeature "LLD_INSTALL_PACKAGE_DIR" "${placeholder "dev"}/lib/cmake/lld") - ] - ++ [ - (lib.cmakeFeature "LLVM_TABLEGEN_EXE" "${buildLlvmTools.tblgen}/bin/llvm-tblgen") - ] - ++ devExtraCmakeFlags; + cmakeFlags = [ + (lib.cmakeFeature "LLD_INSTALL_PACKAGE_DIR" "${placeholder "dev"}/lib/cmake/lld") + (lib.cmakeFeature "LLVM_TABLEGEN_EXE" "${buildLlvmTools.tblgen}/bin/llvm-tblgen") + ] + ++ devExtraCmakeFlags; # TODO: Remove on `staging`. postPatch = ""; diff --git a/pkgs/development/compilers/llvm/common/lldb/default.nix b/pkgs/development/compilers/llvm/common/lldb/default.nix index 5e4c5f34ecb8..24404d97de90 100644 --- a/pkgs/development/compilers/llvm/common/lldb/default.nix +++ b/pkgs/development/compilers/llvm/common/lldb/default.nix @@ -78,20 +78,7 @@ stdenv.mkDerivation ( }).overrideAttrs (_: _: { name = "resource-dir.patch"; }); in - lib.optionals (lib.versionOlder release_version "15") [ - # Fixes for SWIG 4 - (fetchpatch2 { - url = "https://github.com/llvm/llvm-project/commit/81fc5f7909a4ef5a8d4b5da2a10f77f7cb01ba63.patch?full_index=1"; - stripLen = 1; - hash = "sha256-Znw+C0uEw7lGETQLKPBZV/Ymo2UigZS+Hv/j1mUo7p0="; - }) - (fetchpatch2 { - url = "https://github.com/llvm/llvm-project/commit/f0a25fe0b746f56295d5c02116ba28d2f965c175.patch?full_index=1"; - stripLen = 1; - hash = "sha256-QzVeZzmc99xIMiO7n//b+RNAvmxghISKQD93U2zOgFI="; - }) - ] - ++ lib.optionals (lib.versionOlder release_version "16") [ + lib.optionals (lib.versionOlder release_version "16") [ # Fixes for SWIG 4 (fetchpatch2 { url = "https://github.com/llvm/llvm-project/commit/ba35c27ec9aa9807f5b4be2a0c33ca9b045accc7.patch?full_index=1"; @@ -181,21 +168,17 @@ stdenv.mkDerivation ( ++ lib.optionals (lib.versionAtLeast release_version "17") [ (lib.cmakeFeature "CLANG_RESOURCE_DIR" "../../../../${lib.getLib libclang}") ] - ++ lib.optionals enableManpages ( - [ - (lib.cmakeBool "LLVM_ENABLE_SPHINX" true) - (lib.cmakeBool "SPHINX_OUTPUT_MAN" true) - (lib.cmakeBool "SPHINX_OUTPUT_HTML" false) - ] - ++ lib.optionals (lib.versionAtLeast release_version "15") [ - # docs reference `automodapi` but it's not added to the extensions list when - # only building the manpages: - # https://github.com/llvm/llvm-project/blob/af6ec9200b09039573d85e349496c4f5b17c3d7f/lldb/docs/conf.py#L54 - # - # so, we just ignore the resulting errors - (lib.cmakeBool "SPHINX_WARNINGS_AS_ERRORS" false) - ] - ) + ++ lib.optionals enableManpages [ + (lib.cmakeBool "LLVM_ENABLE_SPHINX" true) + (lib.cmakeBool "SPHINX_OUTPUT_MAN" true) + (lib.cmakeBool "SPHINX_OUTPUT_HTML" false) + # docs reference `automodapi` but it's not added to the extensions list when + # only building the manpages: + # https://github.com/llvm/llvm-project/blob/af6ec9200b09039573d85e349496c4f5b17c3d7f/lldb/docs/conf.py#L54 + # + # so, we just ignore the resulting errors + (lib.cmakeBool "SPHINX_WARNINGS_AS_ERRORS" false) + ] ++ lib.optionals finalAttrs.finalPackage.doCheck [ (lib.cmakeFeature "LLDB_TEST_C_COMPILER" "${stdenv.cc}/bin/${stdenv.cc.targetPrefix}cc") (lib.cmakeFeature "-DLLDB_TEST_CXX_COMPILER" "${stdenv.cc}/bin/${stdenv.cc.targetPrefix}c++") @@ -203,7 +186,7 @@ stdenv.mkDerivation ( ++ devExtraCmakeFlags; doCheck = false; - doInstallCheck = lib.versionOlder release_version "15"; + doInstallCheck = false; # TODO: cleanup with mass-rebuild installCheckPhase = '' @@ -248,11 +231,10 @@ stdenv.mkDerivation ( // lib.optionalAttrs enableManpages { pname = "lldb-manpages"; - buildPhase = lib.optionalString (lib.versionOlder release_version "15") '' - make docs-lldb-man - ''; + # TODO: Remove on `staging`. + buildPhase = ""; - ninjaFlags = lib.optionals (lib.versionAtLeast release_version "15") [ "docs-lldb-man" ]; + ninjaFlags = [ "docs-lldb-man" ]; propagatedBuildInputs = [ ]; diff --git a/pkgs/development/compilers/llvm/common/llvm/default.nix b/pkgs/development/compilers/llvm/common/llvm/default.nix index d92398a7e818..903202cdc813 100644 --- a/pkgs/development/compilers/llvm/common/llvm/default.nix +++ b/pkgs/development/compilers/llvm/common/llvm/default.nix @@ -125,7 +125,7 @@ stdenv.mkDerivation ( # Originally based off https://reviews.llvm.org/D99484 # Latest state: https://github.com/llvm/llvm-project/pull/125376 [ (getVersionFile "llvm/gnu-install-dirs.patch") ] - ++ lib.optionals (lib.versionAtLeast release_version "15") [ + ++ [ # Running the tests involves invoking binaries (like `opt`) that depend on # the LLVM dylibs and reference them by absolute install path (i.e. their # nix store path). @@ -240,10 +240,10 @@ stdenv.mkDerivation ( # Just like the `gnu-install-dirs` patch, but for `polly`. (getVersionFile "llvm/gnu-install-dirs-polly.patch") ] - ++ - lib.optional (lib.versionAtLeast release_version "15") - # Just like the `llvm-lit-cfg` patch, but for `polly`. - (getVersionFile "llvm/polly-lit-cfg-add-libs-to-dylib-path.patch") + ++ [ + # Just like the `llvm-lit-cfg` patch, but for `polly`. + (getVersionFile "llvm/polly-lit-cfg-add-libs-to-dylib-path.patch") + ] ++ lib.optional (lib.versions.major release_version == "20") # Test failure on riscv64, fixed in llvm 21 @@ -262,8 +262,8 @@ stdenv.mkDerivation ( # this is needed until scripts are updated to not use /usr/bin/uname on FreeBSD native updateAutotoolsGnuConfigScriptsHook python + ninja ] - ++ (lib.optional (lib.versionAtLeast release_version "15") ninja) ++ optionals enableManpages [ # Note: we intentionally use `python3Packages` instead of `python3.pkgs`; # splicing does *not* work with the latter. (TODO: fix) @@ -290,7 +290,7 @@ stdenv.mkDerivation ( nativeCheckInputs = [ which ] - ++ lib.optional (stdenv.hostPlatform.isDarwin && lib.versionAtLeast release_version "15") sysctl; + ++ lib.optional stdenv.hostPlatform.isDarwin sysctl; postPatch = optionalString stdenv.hostPlatform.isDarwin ( @@ -301,119 +301,113 @@ stdenv.mkDerivation ( + # As of LLVM 15, marked as XFAIL on arm64 macOS but lit doesn't seem to pick # this up: https://github.com/llvm/llvm-project/blob/c344d97a125b18f8fed0a64aace73c49a870e079/llvm/test/MC/ELF/cfi-version.ll#L7 - (optionalString (lib.versionAtLeast release_version "15") ( - '' - rm test/MC/ELF/cfi-version.ll + '' + rm test/MC/ELF/cfi-version.ll - '' - + - # This test tries to call `sw_vers` by absolute path (`/usr/bin/sw_vers`) - # and thus fails under the sandbox: - ( - if lib.versionAtLeast release_version "16" then - '' - substituteInPlace unittests/TargetParser/Host.cpp \ - --replace-fail '/usr/bin/sw_vers' "${(builtins.toString darwin.DarwinTools) + "/bin/sw_vers"}" - '' - else - '' - substituteInPlace unittests/Support/Host.cpp \ - --replace-fail '/usr/bin/sw_vers' "${(builtins.toString darwin.DarwinTools) + "/bin/sw_vers"}" - '' - ) - + - # This test tries to call the intrinsics `@llvm.roundeven.f32` and - # `@llvm.roundeven.f64` which seem to (incorrectly?) lower to `roundevenf` - # and `roundeven` on macOS and FreeBSD. - # - # However these functions are glibc specific so the test fails: - # - https://www.gnu.org/software/gnulib/manual/html_node/roundevenf.html - # - https://www.gnu.org/software/gnulib/manual/html_node/roundeven.html - # - # TODO(@rrbutani): this seems to run fine on `aarch64-darwin`, why does it - # pass there? - optionalString (lib.versionAtLeast release_version "16") '' - substituteInPlace test/ExecutionEngine/Interpreter/intrinsics.ll \ - --replace-fail "%roundeven32 = call float @llvm.roundeven.f32(float 0.000000e+00)" "" \ - --replace-fail "%roundeven64 = call double @llvm.roundeven.f64(double 0.000000e+00)" "" + '' + + + # This test tries to call `sw_vers` by absolute path (`/usr/bin/sw_vers`) + # and thus fails under the sandbox: + ( + if lib.versionAtLeast release_version "16" then '' - + - # fails when run in sandbox - optionalString (!stdenv.hostPlatform.isx86 && lib.versionAtLeast release_version "18") '' - substituteInPlace unittests/Support/VirtualFileSystemTest.cpp \ - --replace-fail "PhysicalFileSystemWorkingDirFailure" "DISABLED_PhysicalFileSystemWorkingDirFailure" + substituteInPlace unittests/TargetParser/Host.cpp \ + --replace-fail '/usr/bin/sw_vers' "${(builtins.toString darwin.DarwinTools) + "/bin/sw_vers"}" '' - )) + else + '' + substituteInPlace unittests/Support/Host.cpp \ + --replace-fail '/usr/bin/sw_vers' "${(builtins.toString darwin.DarwinTools) + "/bin/sw_vers"}" + '' + ) + + + # This test tries to call the intrinsics `@llvm.roundeven.f32` and + # `@llvm.roundeven.f64` which seem to (incorrectly?) lower to `roundevenf` + # and `roundeven` on macOS and FreeBSD. + # + # However these functions are glibc specific so the test fails: + # - https://www.gnu.org/software/gnulib/manual/html_node/roundevenf.html + # - https://www.gnu.org/software/gnulib/manual/html_node/roundeven.html + # + # TODO(@rrbutani): this seems to run fine on `aarch64-darwin`, why does it + # pass there? + optionalString (lib.versionAtLeast release_version "16") '' + substituteInPlace test/ExecutionEngine/Interpreter/intrinsics.ll \ + --replace-fail "%roundeven32 = call float @llvm.roundeven.f32(float 0.000000e+00)" "" \ + --replace-fail "%roundeven64 = call double @llvm.roundeven.f64(double 0.000000e+00)" "" + '' + + + # fails when run in sandbox + optionalString (!stdenv.hostPlatform.isx86 && lib.versionAtLeast release_version "18") '' + substituteInPlace unittests/Support/VirtualFileSystemTest.cpp \ + --replace-fail "PhysicalFileSystemWorkingDirFailure" "DISABLED_PhysicalFileSystemWorkingDirFailure" + '' ) + # dup of above patch with different conditions - optionalString - ( - stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isx86 && lib.versionAtLeast release_version "15" - ) - ( - optionalString (lib.versionOlder release_version "16") '' - substituteInPlace test/ExecutionEngine/Interpreter/intrinsics.ll \ - --replace-fail "%roundeven32 = call float @llvm.roundeven.f32(float 0.000000e+00)" "" \ - --replace-fail "%roundeven64 = call double @llvm.roundeven.f64(double 0.000000e+00)" "" + optionalString (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isx86) ( + optionalString (lib.versionOlder release_version "16") '' + substituteInPlace test/ExecutionEngine/Interpreter/intrinsics.ll \ + --replace-fail "%roundeven32 = call float @llvm.roundeven.f32(float 0.000000e+00)" "" \ + --replace-fail "%roundeven64 = call double @llvm.roundeven.f64(double 0.000000e+00)" "" - '' - + - # fails when run in sandbox - ( - (optionalString (lib.versionAtLeast release_version "18") '' - substituteInPlace unittests/Support/VirtualFileSystemTest.cpp \ - --replace-fail "PhysicalFileSystemWorkingDirFailure" "DISABLED_PhysicalFileSystemWorkingDirFailure" - '') - + - # This test fails on darwin x86_64 because `sw_vers` reports a different - # macOS version than what LLVM finds by reading - # `/System/Library/CoreServices/SystemVersion.plist` (which is passed into - # the sandbox on macOS). - # - # The `sw_vers` provided by nixpkgs reports the macOS version associated - # with the `CoreFoundation` framework with which it was built. Because - # nixpkgs pins the SDK for `aarch64-darwin` and `x86_64-darwin` what - # `sw_vers` reports is not guaranteed to match the macOS version of the host - # that's building this derivation. - # - # Astute readers will note that we only _patch_ this test on aarch64-darwin - # (to use the nixpkgs provided `sw_vers`) instead of disabling it outright. - # So why does this test pass on aarch64? - # - # Well, it seems that `sw_vers` on aarch64 actually links against the _host_ - # CoreFoundation framework instead of the nixpkgs provided one. - # - # Not entirely sure what the right fix is here. I'm assuming aarch64 - # `sw_vers` doesn't intentionally link against the host `CoreFoundation` - # (still digging into how this ends up happening, will follow up) but that - # aside I think the more pertinent question is: should we be patching LLVM's - # macOS version detection logic to use `sw_vers` instead of reading host - # paths? This *is* a way in which details about builder machines can creep - # into the artifacts that are produced, affecting reproducibility, but it's - # not clear to me when/where/for what this even gets used in LLVM. - # - # TODO(@rrbutani): fix/follow-up - ( - if lib.versionAtLeast release_version "16" then - '' - substituteInPlace unittests/TargetParser/Host.cpp \ - --replace-fail "getMacOSHostVersion" "DISABLED_getMacOSHostVersion" - '' - else - '' - substituteInPlace unittests/Support/Host.cpp \ - --replace-fail "getMacOSHostVersion" "DISABLED_getMacOSHostVersion" - '' - ) - + - # This test fails with a `dysmutil` crash; have not yet dug into what's - # going on here (TODO(@rrbutani)). - lib.optionalString (lib.versionOlder release_version "19") '' - rm test/tools/dsymutil/ARM/obfuscated.test - '' - ) - ) + '' + + + # fails when run in sandbox + ( + (optionalString (lib.versionAtLeast release_version "18") '' + substituteInPlace unittests/Support/VirtualFileSystemTest.cpp \ + --replace-fail "PhysicalFileSystemWorkingDirFailure" "DISABLED_PhysicalFileSystemWorkingDirFailure" + '') + + + # This test fails on darwin x86_64 because `sw_vers` reports a different + # macOS version than what LLVM finds by reading + # `/System/Library/CoreServices/SystemVersion.plist` (which is passed into + # the sandbox on macOS). + # + # The `sw_vers` provided by nixpkgs reports the macOS version associated + # with the `CoreFoundation` framework with which it was built. Because + # nixpkgs pins the SDK for `aarch64-darwin` and `x86_64-darwin` what + # `sw_vers` reports is not guaranteed to match the macOS version of the host + # that's building this derivation. + # + # Astute readers will note that we only _patch_ this test on aarch64-darwin + # (to use the nixpkgs provided `sw_vers`) instead of disabling it outright. + # So why does this test pass on aarch64? + # + # Well, it seems that `sw_vers` on aarch64 actually links against the _host_ + # CoreFoundation framework instead of the nixpkgs provided one. + # + # Not entirely sure what the right fix is here. I'm assuming aarch64 + # `sw_vers` doesn't intentionally link against the host `CoreFoundation` + # (still digging into how this ends up happening, will follow up) but that + # aside I think the more pertinent question is: should we be patching LLVM's + # macOS version detection logic to use `sw_vers` instead of reading host + # paths? This *is* a way in which details about builder machines can creep + # into the artifacts that are produced, affecting reproducibility, but it's + # not clear to me when/where/for what this even gets used in LLVM. + # + # TODO(@rrbutani): fix/follow-up + ( + if lib.versionAtLeast release_version "16" then + '' + substituteInPlace unittests/TargetParser/Host.cpp \ + --replace-fail "getMacOSHostVersion" "DISABLED_getMacOSHostVersion" + '' + else + '' + substituteInPlace unittests/Support/Host.cpp \ + --replace-fail "getMacOSHostVersion" "DISABLED_getMacOSHostVersion" + '' + ) + + + # This test fails with a `dysmutil` crash; have not yet dug into what's + # going on here (TODO(@rrbutani)). + lib.optionalString (lib.versionOlder release_version "19") '' + rm test/tools/dsymutil/ARM/obfuscated.test + '' + ) + ) + # FileSystem permissions tests fail with various special bits '' @@ -438,11 +432,9 @@ stdenv.mkDerivation ( ) + # timing-based tests are trouble - lib.optionalString - (lib.versionAtLeast release_version "15" && lib.versionOlder release_version "17") - '' - rm utils/lit/tests/googletest-timeout.py - '' + lib.optionalString (lib.versionOlder release_version "17") '' + rm utils/lit/tests/googletest-timeout.py + '' + # valgrind unhappy with musl or glibc, but fails w/musl only optionalString stdenv.hostPlatform.isMusl '' @@ -496,6 +488,40 @@ stdenv.mkDerivation ( ) ''; + # Defensive check: some paths (that we make symlinks to) depend on the release + # version, for example: + # - https://github.com/llvm/llvm-project/blob/406bde9a15136254f2b10d9ef3a42033b3cb1b16/clang/lib/Headers/CMakeLists.txt#L185 + # + # So we want to sure that the version in the source matches the release + # version we were given. + # + # We do this check here, in the LLVM build, because it happens early. + postConfigure = + let + v = lib.versions; + major = v.major release_version; + minor = v.minor release_version; + patch = v.patch release_version; + in + '' + # $1: part, $2: expected + check_version() { + part="''${1^^}" + part="$(cat include/llvm/Config/llvm-config.h | grep "#define LLVM_VERSION_''${part} " | cut -d' ' -f3)" + + if [[ "$part" != "$2" ]]; then + echo >&2 \ + "mismatch in the $1 version! we have version ${release_version}" \ + "and expected the $1 version to be '$2'; the source has '$part' instead" + exit 3 + fi + } + + check_version major ${major} + check_version minor ${minor} + check_version patch ${patch} + ''; + # E.g. Mesa uses the build-id as a cache key (see #93946): LDFLAGS = optionalString ( enableSharedLibraries && !stdenv.hostPlatform.isDarwin @@ -512,22 +538,12 @@ stdenv.mkDerivation ( # # Some flags don't need to be repassed because LLVM already does so (like # CMAKE_BUILD_TYPE), others are irrelevant to the result. - flagsForLlvmConfig = - ( - if lib.versionOlder release_version "15" then - [ - (lib.cmakeFeature "LLVM_INSTALL_CMAKE_DIR" "${placeholder "dev"}/lib/cmake/llvm/") - ] - else - [ - (lib.cmakeFeature "LLVM_INSTALL_PACKAGE_DIR" "${placeholder "dev"}/lib/cmake/llvm") - ] - ) - ++ [ - (lib.cmakeBool "LLVM_ENABLE_RTTI" true) - (lib.cmakeBool "LLVM_LINK_LLVM_DYLIB" enableSharedLibraries) - (lib.cmakeFeature "LLVM_TABLEGEN" "${buildLlvmTools.tblgen}/bin/llvm-tblgen") - ]; + flagsForLlvmConfig = [ + (lib.cmakeFeature "LLVM_INSTALL_PACKAGE_DIR" "${placeholder "dev"}/lib/cmake/llvm") + (lib.cmakeBool "LLVM_ENABLE_RTTI" true) + (lib.cmakeBool "LLVM_LINK_LLVM_DYLIB" enableSharedLibraries) + (lib.cmakeFeature "LLVM_TABLEGEN" "${buildLlvmTools.tblgen}/bin/llvm-tblgen") + ]; in flagsForLlvmConfig ++ [ @@ -617,19 +633,9 @@ stdenv.mkDerivation ( moveToOutput "bin/llvm-config*" "$dev" substituteInPlace "$dev/lib/cmake/llvm/LLVMExports-${lib.toLower finalAttrs.finalPackage.cmakeBuildType}.cmake" \ --replace-fail "$out/bin/llvm-config" "$dev/bin/llvm-config" + substituteInPlace "$dev/lib/cmake/llvm/LLVMConfig.cmake" \ + --replace-fail 'set(LLVM_BINARY_DIR "''${LLVM_INSTALL_PREFIX}")' 'set(LLVM_BINARY_DIR "'"$lib"'")' '' - + ( - if lib.versionOlder release_version "15" then - '' - substituteInPlace "$dev/lib/cmake/llvm/LLVMConfig.cmake" \ - --replace-fail 'set(LLVM_BINARY_DIR "''${LLVM_INSTALL_PREFIX}")' 'set(LLVM_BINARY_DIR "''${LLVM_INSTALL_PREFIX}'"$lib"'")' - '' - else - '' - substituteInPlace "$dev/lib/cmake/llvm/LLVMConfig.cmake" \ - --replace-fail 'set(LLVM_BINARY_DIR "''${LLVM_INSTALL_PREFIX}")' 'set(LLVM_BINARY_DIR "'"$lib"'")' - '' - ) + optionalString (stdenv.hostPlatform.isDarwin && enableSharedLibraries) '' ln -s $lib/lib/libLLVM.dylib $lib/lib/libLLVM-${ if lib.versionOlder release_version "18" then "$shortVersion" else release_version @@ -649,7 +655,6 @@ stdenv.mkDerivation ( doCheck = !isDarwinBootstrap && !stdenv.hostPlatform.isAarch32 - && (if lib.versionOlder release_version "15" then stdenv.hostPlatform.isLinux else true) && ( !stdenv.hostPlatform.isx86_32 # TODO: why ) @@ -682,92 +687,23 @@ stdenv.mkDerivation ( ''; }; } - // lib.optionalAttrs enableManpages ( - { - pname = "llvm-manpages"; + // lib.optionalAttrs enableManpages { + pname = "llvm-manpages"; - propagatedBuildInputs = [ ]; + propagatedBuildInputs = [ ]; - postPatch = null; - postInstall = null; + ninjaFlags = [ "docs-llvm-man" ]; + installTargets = [ "install-docs-llvm-man" ]; - outputs = [ "out" ]; + doCheck = false; - doCheck = false; + postPatch = null; + postInstall = null; - meta = llvm_meta // { - description = "man pages for LLVM ${version}"; - }; - } - // ( - if lib.versionOlder release_version "15" then - { - buildPhase = '' - make docs-llvm-man - ''; + outputs = [ "out" ]; - installPhase = '' - make -C docs install - ''; - } - else - { - ninjaFlags = [ "docs-llvm-man" ]; - installTargets = [ "install-docs-llvm-man" ]; - - postPatch = null; - postInstall = null; - } - ) - ) - // lib.optionalAttrs (lib.versionOlder release_version "15") { - # hacky fix: created binaries need to be run before installation - preBuild = '' - mkdir -p $out/ - ln -sv $PWD/lib $out - ''; - - postBuild = '' - rm -fR $out - ''; - - preCheck = '' - export LD_LIBRARY_PATH=$LD_LIBRARY_PATH''${LD_LIBRARY_PATH:+:}$PWD/lib - ''; - } - // lib.optionalAttrs (lib.versionAtLeast release_version "15") { - # Defensive check: some paths (that we make symlinks to) depend on the release - # version, for example: - # - https://github.com/llvm/llvm-project/blob/406bde9a15136254f2b10d9ef3a42033b3cb1b16/clang/lib/Headers/CMakeLists.txt#L185 - # - # So we want to sure that the version in the source matches the release - # version we were given. - # - # We do this check here, in the LLVM build, because it happens early. - postConfigure = - let - v = lib.versions; - major = v.major release_version; - minor = v.minor release_version; - patch = v.patch release_version; - in - '' - # $1: part, $2: expected - check_version() { - part="''${1^^}" - part="$(cat include/llvm/Config/llvm-config.h | grep "#define LLVM_VERSION_''${part} " | cut -d' ' -f3)" - - if [[ "$part" != "$2" ]]; then - echo >&2 \ - "mismatch in the $1 version! we have version ${release_version}" \ - "and expected the $1 version to be '$2'; the source has '$part' instead" - exit 3 - fi - } - - check_version major ${major} - check_version minor ${minor} - check_version patch ${patch} - ''; + meta = llvm_meta // { + description = "man pages for LLVM ${version}"; + }; } ) diff --git a/pkgs/development/compilers/llvm/common/openmp/default.nix b/pkgs/development/compilers/llvm/common/openmp/default.nix index de79d15be76c..8482417436fb 100644 --- a/pkgs/development/compilers/llvm/common/openmp/default.nix +++ b/pkgs/development/compilers/llvm/common/openmp/default.nix @@ -50,9 +50,7 @@ stdenv.mkDerivation (finalAttrs: { patchFlags = null; patches = - lib.optional (lib.versionAtLeast release_version "15" && lib.versionOlder release_version "19") ( - getVersionFile "openmp/fix-find-tool.patch" - ) + lib.optional (lib.versionOlder release_version "19") (getVersionFile "openmp/fix-find-tool.patch") ++ lib.optional (lib.versionOlder release_version "18") ( getVersionFile "openmp/gnu-install-dirs.patch" ) @@ -64,11 +62,7 @@ stdenv.mkDerivation (finalAttrs: { cmake python3.pythonOnBuildForHost perl - ] - ++ lib.optionals (lib.versionAtLeast release_version "15") [ ninja - ] - ++ [ pkg-config lit ]; diff --git a/pkgs/development/compilers/llvm/common/patches.nix b/pkgs/development/compilers/llvm/common/patches.nix index fdfe16a862ae..ce241bf33184 100644 --- a/pkgs/development/compilers/llvm/common/patches.nix +++ b/pkgs/development/compilers/llvm/common/patches.nix @@ -12,13 +12,8 @@ } { before = "17"; - after = "15"; path = ../15; } - { - before = "16"; - path = ../14; - } ]; "clang/aarch64-tblgen.patch" = [ { @@ -72,13 +67,12 @@ } { before = "18"; - path = ../14; + path = ../15; } ]; "llvm/llvm-lit-cfg-add-libs-to-dylib-path.patch" = [ { before = "17"; - after = "15"; path = ../15; } { @@ -99,26 +93,19 @@ ]; "llvm/polly-lit-cfg-add-libs-to-dylib-path.patch" = [ { - after = "15"; path = ../15; } ]; "libunwind/gnu-install-dirs.patch" = [ { before = "17"; - after = "15"; path = ../15; } ]; "compiler-rt/X86-support-extension.patch" = [ { - after = "15"; path = ../15; } - { - before = "15"; - path = ../14; - } ]; "compiler-rt/armv6-scudo-libatomic.patch" = [ { @@ -126,28 +113,12 @@ path = ../19; } { - after = "15"; before = "19"; path = ../15; } - { - before = "15"; - path = ../14; - } - ]; - "compiler-rt/armv7l.patch" = [ - { - before = "15"; - path = ../14; - } ]; "compiler-rt/gnu-install-dirs.patch" = [ { - before = "15"; - path = ../14; - } - { - after = "15"; before = "17"; path = ../15; } @@ -158,12 +129,7 @@ ]; "compiler-rt/darwin-targetconditionals.patch" = [ { - path = ../14; - } - ]; - "compiler-rt/codesign.patch" = [ - { - path = ../14; + path = ../15; } ]; "compiler-rt/normalize-var.patch" = [ @@ -173,29 +139,24 @@ } { before = "16"; - path = ../14; + path = ../15; } ]; "lldb/procfs.patch" = [ { - after = "15"; path = ../15; } - { - before = "15"; - path = ../14; - } ]; "lldb/resource-dir.patch" = [ { before = "16"; - path = ../14; + path = ../15; } ]; "llvm/no-pipes.patch" = [ { before = "16"; - path = ../14; + path = ../15; } ]; "openmp/fix-find-tool.patch" = [ @@ -212,7 +173,7 @@ } { before = "16"; - path = ../14; + path = ../15; } ]; "libclc/use-default-paths.patch" = [ diff --git a/pkgs/development/compilers/llvm/common/tblgen.nix b/pkgs/development/compilers/llvm/common/tblgen.nix index cdf99dcca5c5..c1b725be279f 100644 --- a/pkgs/development/compilers/llvm/common/tblgen.nix +++ b/pkgs/development/compilers/llvm/common/tblgen.nix @@ -54,18 +54,14 @@ let targets = [ "clang-tblgen" "llvm-tblgen" - ] - ++ lib.optionals (lib.versionAtLeast release_version "15") [ "clang-tidy-confusable-chars-gen" ] ++ lib.optionals (lib.versionAtLeast release_version "16") [ "mlir-tblgen" ] - ++ - lib.optionals ((lib.versionAtLeast release_version "15") && (lib.versionOlder release_version "20")) - [ - "clang-pseudo-gen" # Removed in LLVM 20 @ ed8f78827895050442f544edef2933a60d4a7935. - ]; + ++ lib.optionals (lib.versionOlder release_version "20") [ + "clang-pseudo-gen" # Removed in LLVM 20 @ ed8f78827895050442f544edef2933a60d4a7935. + ]; self = stdenv.mkDerivation (finalAttrs: { inherit pname version patches; diff --git a/pkgs/development/compilers/llvm/default.nix b/pkgs/development/compilers/llvm/default.nix index e678cfd236f0..19f8901f2bdc 100644 --- a/pkgs/development/compilers/llvm/default.nix +++ b/pkgs/development/compilers/llvm/default.nix @@ -22,7 +22,6 @@ }@packageSetArgs: let versions = { - "14.0.6".officialRelease.sha256 = "sha256-vffu4HilvYwtzwgq+NlS26m65DGbp6OSSne2aje1yJE="; "15.0.7".officialRelease.sha256 = "sha256-wjuZQyXQ/jsmvy6y1aksCcEDXGBjuhpgngF3XQJ/T4s="; "16.0.6".officialRelease.sha256 = "sha256-fspqSReX+VD+Nl/Cfq+tDcdPtnQPV1IRopNDfd5VtUs="; "17.0.6".officialRelease.sha256 = "sha256-8MEDLLhocshmxoEBRSKlJ/GzJ8nfuzQ8qn0X/vLA+ag="; diff --git a/pkgs/test/default.nix b/pkgs/test/default.nix index 14fe49af40f4..25c23371c565 100644 --- a/pkgs/test/default.nix +++ b/pkgs/test/default.nix @@ -18,6 +18,7 @@ with pkgs; (filter (n: n != "llvmPackages_11")) (filter (n: n != "llvmPackages_12")) (filter (n: n != "llvmPackages_13")) + (filter (n: n != "llvmPackages_14")) ]; tests = lib.genAttrs pkgSets ( name: diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix index 005436eeaa74..75fd28c94099 100644 --- a/pkgs/top-level/aliases.nix +++ b/pkgs/top-level/aliases.nix @@ -698,14 +698,12 @@ mapAliases { cyber = throw "cyber has been removed, as it does not build with supported Zig versions"; # Added 2025-08-09 # these are for convenience, not for backward compat., and shouldn't expire until the package is deprecated. - clang14Stdenv = lowPrio llvmPackages_14.stdenv; # preserve, reason: see above clang15Stdenv = lowPrio llvmPackages_15.stdenv; # preserve, reason: see above clang16Stdenv = lowPrio llvmPackages_16.stdenv; # preserve, reason: see above clang17Stdenv = lowPrio llvmPackages_17.stdenv; # preserve, reason: see above clang18Stdenv = lowPrio llvmPackages_18.stdenv; # preserve, reason: see above clang19Stdenv = lowPrio llvmPackages_19.stdenv; # preserve, reason: see above - clang-tools_14 = llvmPackages_14.clang-tools; # Added 2024-04-22 clang-tools_15 = llvmPackages_15.clang-tools; # Added 2024-04-22 clang-tools_16 = llvmPackages_16.clang-tools; # Added 2024-04-22 clang-tools_17 = llvmPackages_17.clang-tools; # Added 2024-04-22 @@ -1501,6 +1499,14 @@ mapAliases { clang13Stdenv = throw "clang13Stdenv has been removed, as it is unmaintained and obsolete"; # Added 2025-08-10 clang-tools_13 = throw "clang-tools_13 has been removed, as it is unmaintained and obsolete"; # Added 2025-08-10 + llvmPackages_14 = throw "llvmPackages_14 has been removed, as it is unmaintained and obsolete"; # Added 2025-08-10 + llvm_14 = throw "llvm_14 has been removed, as it is unmaintained and obsolete"; # Added 2025-08-10 + lld_14 = throw "lld_14 has been removed, as it is unmaintained and obsolete"; # Added 2025-08-10 + lldb_14 = throw "lldb_14 has been removed, as it is unmaintained and obsolete"; # Added 2025-08-10 + clang_14 = throw "clang_14 has been removed, as it is unmaintained and obsolete"; # Added 2025-08-10 + clang14Stdenv = throw "clang14Stdenv has been removed, as it is unmaintained and obsolete"; # Added 2025-08-10 + clang-tools_14 = throw "clang-tools_14 has been removed, as it is unmaintained and obsolete"; # Added 2025-08-10 + lobster-two = throw "'lobster-two' has been renamed to/replaced by 'google-fonts'"; # Converted to throw 2024-10-17 loc = throw "'loc' has been removed due to lack of upstream maintenance. Consider 'tokei' as an alternative."; # Added 2025-01-25 loco-cli = loco; # Added 2025-02-24 diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 22b22ea3414e..31584910c6f6 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -4633,7 +4633,6 @@ with pkgs; clang-manpages = llvmPackages.clang-manpages; clang = llvmPackages.clang; - clang_14 = llvmPackages_14.clang; clang_15 = llvmPackages_15.clang; clang_16 = llvmPackages_16.clang; clang_17 = llvmPackages_17.clang; @@ -5363,19 +5362,16 @@ with pkgs; }; lld = llvmPackages.lld; - lld_14 = llvmPackages_14.lld; lld_15 = llvmPackages_15.lld; lld_16 = llvmPackages_16.lld; lld_17 = llvmPackages_17.lld; lldb = llvmPackages.lldb; - lldb_14 = llvmPackages_14.lldb; lldb_15 = llvmPackages_15.lldb; lldb_16 = llvmPackages_16.lldb; lldb_17 = llvmPackages_17.lldb; llvm = llvmPackages.llvm; - llvm_14 = llvmPackages_14.llvm; llvm_15 = llvmPackages_15.llvm; llvm_16 = llvmPackages_16.llvm; llvm_17 = llvmPackages_17.llvm; @@ -5394,7 +5390,6 @@ with pkgs; (rec { llvmPackagesSet = recurseIntoAttrs (callPackages ../development/compilers/llvm { }); - llvmPackages_14 = llvmPackagesSet."14"; llvmPackages_15 = llvmPackagesSet."15"; llvmPackages_16 = llvmPackagesSet."16"; llvmPackages_17 = llvmPackagesSet."17"; @@ -5430,7 +5425,6 @@ with pkgs; mkLLVMPackages = llvmPackagesSet.mkPackage; }) - llvmPackages_14 llvmPackages_15 llvmPackages_16 llvmPackages_17