diff options
Diffstat (limited to 'pkgs/development/compilers/llvm/16')
3 files changed, 57 insertions, 27 deletions
diff --git a/pkgs/development/compilers/llvm/16/compiler-rt/asan-offset.patch b/pkgs/development/compilers/llvm/16/compiler-rt/asan-offset.patch new file mode 100644 index 0000000000000..46afe5c007347 --- /dev/null +++ b/pkgs/development/compilers/llvm/16/compiler-rt/asan-offset.patch @@ -0,0 +1,11 @@ +--- a/lib/asan/CMakeLists.txt 2022-06-22 16:46:24.000000000 +0000 ++++ b/lib/asan/CMakeLists.txt +@@ -46,7 +46,7 @@ set(ASAN_STATIC_SOURCES + asan_rtl_static.cpp + ) + +-if (NOT WIN32 AND NOT APPLE) ++if (LINUX) + list(APPEND ASAN_STATIC_SOURCES + asan_rtl_x86_64.S + ) diff --git a/pkgs/development/compilers/llvm/16/compiler-rt/freebsd-i386.patch b/pkgs/development/compilers/llvm/16/compiler-rt/freebsd-i386.patch new file mode 100644 index 0000000000000..0a221750552a0 --- /dev/null +++ b/pkgs/development/compilers/llvm/16/compiler-rt/freebsd-i386.patch @@ -0,0 +1,21 @@ +--- a/lib/builtins/fp_lib.h 1969-12-31 16:00:01.000000000 -0800 ++++ b/lib/builtins/fp_lib.h 2023-12-21 23:39:36.066927293 -0800 +@@ -26,18 +26,6 @@ + #include <stdbool.h> + #include <stdint.h> + +-// x86_64 FreeBSD prior v9.3 define fixed-width types incorrectly in +-// 32-bit mode. +-#if defined(__FreeBSD__) && defined(__i386__) +-#include <sys/param.h> +-#if __FreeBSD_version < 903000 // v9.3 +-#define uint64_t unsigned long long +-#define int64_t long long +-#undef UINT64_C +-#define UINT64_C(c) (c##ULL) +-#endif +-#endif +- + #if defined SINGLE_PRECISION + + typedef uint16_t half_rep_t; diff --git a/pkgs/development/compilers/llvm/16/default.nix b/pkgs/development/compilers/llvm/16/default.nix index 79d5f8589044c..80b2424b14cc0 100644 --- a/pkgs/development/compilers/llvm/16/default.nix +++ b/pkgs/development/compilers/llvm/16/default.nix @@ -1,6 +1,7 @@ -{ lowPrio, newScope, pkgs, lib, stdenv, cmake, ninja +{ lowPrio, newScope, pkgs, lib, stdenv , preLibcCrossHeaders -, libxml2, python3, fetchFromGitHub, substituteAll, overrideCC, wrapCCWith, wrapBintoolsWith +, substitute, substituteAll, fetchFromGitHub +, overrideCC, wrapCCWith, wrapBintoolsWith , buildLlvmTools # tools, but from the previous stage, for cross , targetLlvmLibraries # libraries, but from the next stage, for cross , targetLlvm @@ -39,7 +40,11 @@ # to you to make sure that the LLVM repo given matches the release configuration # specified. , monorepoSrc ? null -}: +# Allows passthrough to packages via newScope. This makes it possible to +# do `(llvmPackages.override { <someLlvmDependency> = bar; }).clang` and get +# an llvmPackages whose packages are overridden in an internally consistent way. +, ... +}@args: assert lib.assertMsg @@ -51,10 +56,13 @@ assert let monorepoSrc' = monorepoSrc; in let - # Import releaseInfo separately to avoid infinite recursion - inherit (import ../common/common-let.nix { inherit lib gitRelease officialRelease; }) releaseInfo; - inherit (releaseInfo) release_version version; - inherit (import ../common/common-let.nix { inherit lib fetchFromGitHub release_version gitRelease officialRelease monorepoSrc'; }) llvm_meta monorepoSrc; + + metadata = rec { + # Import releaseInfo separately to avoid infinite recursion + inherit (import ../common/common-let.nix { inherit lib gitRelease officialRelease; }) releaseInfo; + inherit (releaseInfo) release_version version; + inherit (import ../common/common-let.nix { inherit lib fetchFromGitHub release_version gitRelease officialRelease monorepoSrc'; }) llvm_meta monorepoSrc; + }; lldbPlugins = lib.makeExtensible (lldbPlugins: let callPackage = newScope (lldbPlugins // { inherit stdenv; inherit (tools) lldb; }); @@ -63,8 +71,8 @@ in let }); tools = lib.makeExtensible (tools: let - callPackage = newScope (tools // { inherit stdenv cmake ninja libxml2 python3 release_version version monorepoSrc buildLlvmTools; }); - major = lib.versions.major release_version; + callPackage = newScope (tools // args // metadata); + major = lib.versions.major metadata.release_version; mkExtraBuildCommands0 = cc: '' rsrc="$out/resource-root" mkdir "$rsrc" @@ -138,7 +146,6 @@ in let # Just like the `llvm-lit-cfg` patch, but for `polly`. ./llvm/polly-lit-cfg-add-libs-to-dylib-path.patch ]; - inherit llvm_meta; }; # `llvm` historically had the binaries. When choosing an output explicitly, @@ -156,7 +163,6 @@ in let libllvmLibdir = "${tools.libllvm.lib}/lib"; }) ]; - inherit llvm_meta; }; clang-unwrapped = tools.libclang; @@ -176,6 +182,9 @@ in let python3 = pkgs.python3; # don't use python-boot }); + # Wrapper for standalone command line utilities + clang-tools = callPackage ../common/clang-tools { }; + # pick clang appropriate for package set we are targeting clang = /**/ if stdenv.targetPlatform.useLLVM or false then tools.clangUseLLVM @@ -206,15 +215,12 @@ in let ./lld/gnu-install-dirs.patch ./lld/add-table-base.patch ]; - inherit llvm_meta; }; - mlir = callPackage ../common/mlir { - inherit llvm_meta; - }; + mlir = callPackage ../common/mlir {}; lldb = callPackage ../common/lldb.nix { - src = callPackage ({ runCommand }: runCommand "lldb-src-${version}" {} '' + src = callPackage ({ runCommand }: runCommand "lldb-src-${metadata.version}" {} '' mkdir -p "$out" cp -r ${monorepoSrc}/cmake "$out" cp -r ${monorepoSrc}/lldb "$out" @@ -248,7 +254,6 @@ in let && !stdenv.targetPlatform.isAarch64 && (lib.versionOlder darwin.apple_sdk.sdk.version "11.0") ) ./lldb/cpu_subtype_arm64e_replacement.patch; - inherit llvm_meta; }; # Below, is the LLVM bootstrapping logic. It handles building a @@ -351,13 +356,11 @@ in let # Has to be in tools despite mostly being a library, # because we use a native helper executable from a # non-cross build in cross builds. - libclc = callPackage ../common/libclc.nix { - inherit buildLlvmTools; - }; + libclc = callPackage ../common/libclc.nix {}; }); libraries = lib.makeExtensible (libraries: let - callPackage = newScope (libraries // buildLlvmTools // { inherit stdenv cmake ninja libxml2 python3 release_version version monorepoSrc; }); + callPackage = newScope (libraries // buildLlvmTools // args // metadata); in { compiler-rt-libc = callPackage ../common/compiler-rt { @@ -374,7 +377,6 @@ in let # See: https://github.com/NixOS/nixpkgs/pull/194634#discussion_r999829893 # ../common/compiler-rt/armv7l-15.patch ]; - inherit llvm_meta; stdenv = if stdenv.hostPlatform.useLLVM or false || (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isStatic) then overrideCC stdenv buildLlvmTools.clangNoCompilerRtWithLibc else stdenv; @@ -394,7 +396,6 @@ in let # See: https://github.com/NixOS/nixpkgs/pull/194634#discussion_r999829893 # ../common/compiler-rt/armv7l-15.patch ]; - inherit llvm_meta; stdenv = if stdenv.hostPlatform.useLLVM or false then overrideCC stdenv buildLlvmTools.clangNoCompilerRt else stdenv; @@ -413,7 +414,6 @@ in let # so: we use the clang from this LLVM package set instead of the regular # stdenv's compiler. libcxx = callPackage ../common/libcxx { - inherit llvm_meta; stdenv = overrideCC stdenv buildLlvmTools.clangNoLibcxx; }; @@ -421,7 +421,6 @@ in let patches = [ ./libunwind/gnu-install-dirs.patch ]; - inherit llvm_meta; stdenv = overrideCC stdenv buildLlvmTools.clangNoLibcxx; }; @@ -431,9 +430,8 @@ in let ./openmp/gnu-install-dirs.patch ./openmp/run-lit-directly.patch ]; - inherit llvm_meta targetLlvm; }; }); noExtend = extensible: lib.attrsets.removeAttrs extensible [ "extend" ]; -in { inherit tools libraries release_version lldbPlugins; } // (noExtend libraries) // (noExtend tools) +in { inherit tools libraries lldbPlugins; inherit (metadata) release_version; } // (noExtend libraries) // (noExtend tools) |