diff options
author | John Ericson <Ericson2314@yahoo.com> | 2018-05-23 09:15:00 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-05-23 09:15:00 -0400 |
commit | 5f1ec8e6d91483c9360de1ce341c09946417f317 (patch) | |
tree | e2bded49c0e5f9e4f3f7e5273ba0c2d78dd70f45 /pkgs | |
parent | c9d18a235c6297b99e750b85138cc9c06e27d458 (diff) | |
parent | acc9843691c936bb807fb6c5c88e0b41782d6c29 (diff) |
Merge pull request #40961 from obsidiansystems/hash-preserving-llvm-cleanup
llvm, top-level: Baby steps towards cross support
Diffstat (limited to 'pkgs')
-rw-r--r-- | pkgs/development/compilers/ispc/default.nix | 2 | ||||
-rw-r--r-- | pkgs/development/compilers/llvm/3.7/default.nix | 16 | ||||
-rw-r--r-- | pkgs/development/compilers/llvm/3.8/default.nix | 18 | ||||
-rw-r--r-- | pkgs/development/compilers/llvm/3.9/default.nix | 18 | ||||
-rw-r--r-- | pkgs/development/compilers/llvm/4/default.nix | 16 | ||||
-rw-r--r-- | pkgs/development/compilers/llvm/5/default.nix | 16 | ||||
-rw-r--r-- | pkgs/development/compilers/llvm/6/default.nix | 16 | ||||
-rw-r--r-- | pkgs/top-level/all-packages.nix | 72 |
8 files changed, 82 insertions, 92 deletions
diff --git a/pkgs/development/compilers/ispc/default.nix b/pkgs/development/compilers/ispc/default.nix index 62fa578cef683..0fe9c8d3765f7 100644 --- a/pkgs/development/compilers/ispc/default.nix +++ b/pkgs/development/compilers/ispc/default.nix @@ -1,4 +1,4 @@ -{stdenv, fetchFromGitHub, bash, which, m4, python, bison, flex, llvmPackages, clangWrapSelf, +{stdenv, fetchFromGitHub, bash, which, m4, python, bison, flex, llvmPackages, testedTargets ? ["sse2" "host"] # the default test target is sse4, but that is not supported by all Hydra agents }: diff --git a/pkgs/development/compilers/llvm/3.7/default.nix b/pkgs/development/compilers/llvm/3.7/default.nix index 5cac04c044de6..8f73645afc06f 100644 --- a/pkgs/development/compilers/llvm/3.7/default.nix +++ b/pkgs/development/compilers/llvm/3.7/default.nix @@ -1,5 +1,7 @@ { newScope, stdenv, libstdcxxHook, cmake, libxml2, python2, isl, fetchurl -, overrideCC, wrapCC, ccWrapperFun, darwin +, overrideCC, wrapCCWith, darwin +, buildLlvmPackages # ourself, but from the previous stage, for cross +, targetLlvmPackages # ourself, but from the next stage, for cross }: let @@ -27,18 +29,14 @@ let clang = if stdenv.cc.isGNU then self.libstdcxxClang else self.libcxxClang; - libstdcxxClang = ccWrapperFun { + libstdcxxClang = wrapCCWith { cc = self.clang-unwrapped; - /* FIXME is this right? */ - inherit (stdenv.cc) bintools libc nativeTools nativeLibc; extraPackages = [ libstdcxxHook ]; }; - libcxxClang = ccWrapperFun { + libcxxClang = wrapCCWith { cc = self.clang-unwrapped; - /* FIXME is this right? */ - inherit (stdenv.cc) bintools libc nativeTools nativeLibc; - extraPackages = [ self.libcxx self.libcxxabi ]; + extraPackages = [ targetLlvmPackages.libcxx targetLlvmPackages.libcxxabi ]; }; stdenv = stdenv.override (drv: { @@ -48,7 +46,7 @@ let libcxxStdenv = stdenv.override (drv: { allowedRequisites = null; - cc = self.libcxxClang; + cc = buildLlvmPackages.libcxxClang; }); lldb = callPackage ./lldb.nix {}; diff --git a/pkgs/development/compilers/llvm/3.8/default.nix b/pkgs/development/compilers/llvm/3.8/default.nix index 9e37f93dbddc4..a5f3b77595172 100644 --- a/pkgs/development/compilers/llvm/3.8/default.nix +++ b/pkgs/development/compilers/llvm/3.8/default.nix @@ -1,4 +1,8 @@ -{ newScope, stdenv, libstdcxxHook, isl, fetchurl, overrideCC, wrapCC, ccWrapperFun, darwin }: +{ newScope, stdenv, libstdcxxHook, isl, fetchurl, overrideCC, wrapCCWith, darwin +, buildLlvmPackages # ourself, but from the previous stage, for cross +, targetLlvmPackages # ourself, but from the next stage, for cross +}: + let callPackage = newScope (self // { inherit stdenv isl version fetch; }); @@ -26,18 +30,14 @@ let clang = if stdenv.cc.isGNU then self.libstdcxxClang else self.libcxxClang; - libstdcxxClang = ccWrapperFun { + libstdcxxClang = wrapCCWith { cc = self.clang-unwrapped; - /* FIXME is this right? */ - inherit (stdenv.cc) bintools libc nativeTools nativeLibc; extraPackages = [ libstdcxxHook ]; }; - libcxxClang = ccWrapperFun { + libcxxClang = wrapCCWith { cc = self.clang-unwrapped; - /* FIXME is this right? */ - inherit (stdenv.cc) bintools libc nativeTools nativeLibc; - extraPackages = [ self.libcxx self.libcxxabi ]; + extraPackages = [ targetLlvmPackages.libcxx targetLlvmPackages.libcxxabi ]; }; stdenv = stdenv.override (drv: { @@ -47,7 +47,7 @@ let libcxxStdenv = stdenv.override (drv: { allowedRequisites = null; - cc = self.libcxxClang; + cc = buildLlvmPackages.libcxxClang; }); lldb = callPackage ./lldb.nix {}; diff --git a/pkgs/development/compilers/llvm/3.9/default.nix b/pkgs/development/compilers/llvm/3.9/default.nix index a675bcceb1c98..4b69996473d40 100644 --- a/pkgs/development/compilers/llvm/3.9/default.nix +++ b/pkgs/development/compilers/llvm/3.9/default.nix @@ -1,4 +1,8 @@ -{ newScope, stdenv, libstdcxxHook, isl, fetchurl, overrideCC, wrapCC, ccWrapperFun, darwin }: +{ newScope, stdenv, libstdcxxHook, isl, fetchurl, overrideCC, wrapCCWith, darwin +, buildLlvmPackages # ourself, but from the previous stage, for cross +, targetLlvmPackages # ourself, but from the next stage, for cross +}: + let callPackage = newScope (self // { inherit stdenv isl version fetch; }); @@ -26,18 +30,14 @@ let clang = if stdenv.cc.isGNU then self.libstdcxxClang else self.libcxxClang; - libstdcxxClang = ccWrapperFun { + libstdcxxClang = wrapCCWith { cc = self.clang-unwrapped; - /* FIXME is this right? */ - inherit (stdenv.cc) bintools libc nativeTools nativeLibc; extraPackages = [ libstdcxxHook ]; }; - libcxxClang = ccWrapperFun { + libcxxClang = wrapCCWith { cc = self.clang-unwrapped; - /* FIXME is this right? */ - inherit (stdenv.cc) bintools libc nativeTools nativeLibc; - extraPackages = [ self.libcxx self.libcxxabi ]; + extraPackages = [ targetLlvmPackages.libcxx targetLlvmPackages.libcxxabi ]; }; stdenv = stdenv.override (drv: { @@ -47,7 +47,7 @@ let libcxxStdenv = stdenv.override (drv: { allowedRequisites = null; - cc = self.libcxxClang; + cc = buildLlvmPackages.libcxxClang; }); lldb = callPackage ./lldb.nix {}; diff --git a/pkgs/development/compilers/llvm/4/default.nix b/pkgs/development/compilers/llvm/4/default.nix index 562f9e3457dd4..594397bdbbc0d 100644 --- a/pkgs/development/compilers/llvm/4/default.nix +++ b/pkgs/development/compilers/llvm/4/default.nix @@ -1,6 +1,8 @@ { lowPrio, newScope, stdenv, targetPlatform, cmake, libstdcxxHook -, libxml2, python2, isl, fetchurl, overrideCC, wrapCC, ccWrapperFun +, libxml2, python2, isl, fetchurl, overrideCC, wrapCCWith , darwin +, buildLlvmPackages # ourself, but from the previous stage, for cross +, targetLlvmPackages # ourself, but from the next stage, for cross }: let @@ -40,18 +42,14 @@ let clang = if stdenv.cc.isGNU then self.libstdcxxClang else self.libcxxClang; - libstdcxxClang = ccWrapperFun { + libstdcxxClang = wrapCCWith { cc = self.clang-unwrapped; - /* FIXME is this right? */ - inherit (stdenv.cc) bintools libc nativeTools nativeLibc; extraPackages = [ libstdcxxHook ]; }; - libcxxClang = ccWrapperFun { + libcxxClang = wrapCCWith { cc = self.clang-unwrapped; - /* FIXME is this right? */ - inherit (stdenv.cc) bintools libc nativeTools nativeLibc; - extraPackages = [ self.libcxx self.libcxxabi ]; + extraPackages = [ targetLlvmPackages.libcxx targetLlvmPackages.libcxxabi ]; }; stdenv = stdenv.override (drv: { @@ -61,7 +59,7 @@ let libcxxStdenv = stdenv.override (drv: { allowedRequisites = null; - cc = self.libcxxClang; + cc = buildLlvmPackages.libcxxClang; }); lld = callPackage ./lld.nix {}; diff --git a/pkgs/development/compilers/llvm/5/default.nix b/pkgs/development/compilers/llvm/5/default.nix index 13e1d2308f8c6..1f7619f7a371c 100644 --- a/pkgs/development/compilers/llvm/5/default.nix +++ b/pkgs/development/compilers/llvm/5/default.nix @@ -1,6 +1,8 @@ { lowPrio, newScope, stdenv, targetPlatform, cmake, libstdcxxHook -, libxml2, python2, isl, fetchurl, overrideCC, wrapCC, ccWrapperFun +, libxml2, python2, isl, fetchurl, overrideCC, wrapCCWith , darwin +, buildLlvmPackages # ourself, but from the previous stage, for cross +, targetLlvmPackages # ourself, but from the next stage, for cross }: let @@ -40,18 +42,14 @@ let clang = if stdenv.cc.isGNU then self.libstdcxxClang else self.libcxxClang; - libstdcxxClang = ccWrapperFun { + libstdcxxClang = wrapCCWith { cc = self.clang-unwrapped; - /* FIXME is this right? */ - inherit (stdenv.cc) bintools libc nativeTools nativeLibc; extraPackages = [ libstdcxxHook ]; }; - libcxxClang = ccWrapperFun { + libcxxClang = wrapCCWith { cc = self.clang-unwrapped; - /* FIXME is this right? */ - inherit (stdenv.cc) bintools libc nativeTools nativeLibc; - extraPackages = [ self.libcxx self.libcxxabi ]; + extraPackages = [ targetLlvmPackages.libcxx targetLlvmPackages.libcxxabi ]; }; stdenv = stdenv.override (drv: { @@ -61,7 +59,7 @@ let libcxxStdenv = stdenv.override (drv: { allowedRequisites = null; - cc = self.libcxxClang; + cc = buildLlvmPackages.libcxxClang; }); lld = callPackage ./lld.nix {}; diff --git a/pkgs/development/compilers/llvm/6/default.nix b/pkgs/development/compilers/llvm/6/default.nix index cfa9e9e15fcf1..be26a38e32ecd 100644 --- a/pkgs/development/compilers/llvm/6/default.nix +++ b/pkgs/development/compilers/llvm/6/default.nix @@ -1,6 +1,8 @@ { lowPrio, newScope, stdenv, targetPlatform, cmake, libstdcxxHook -, libxml2, python2, isl, fetchurl, overrideCC, wrapCC, ccWrapperFun +, libxml2, python2, isl, fetchurl, overrideCC, wrapCCWith , darwin +, buildLlvmPackages # ourself, but from the previous stage, for cross +, targetLlvmPackages # ourself, but from the next stage, for cross }: let @@ -40,18 +42,14 @@ let clang = if stdenv.cc.isGNU then self.libstdcxxClang else self.libcxxClang; - libstdcxxClang = ccWrapperFun { + libstdcxxClang = wrapCCWith { cc = self.clang-unwrapped; - /* FIXME is this right? */ - inherit (stdenv.cc) bintools libc nativeTools nativeLibc; extraPackages = [ libstdcxxHook ]; }; - libcxxClang = ccWrapperFun { + libcxxClang = wrapCCWith { cc = self.clang-unwrapped; - /* FIXME is this right? */ - inherit (stdenv.cc) bintools libc nativeTools nativeLibc; - extraPackages = [ self.libcxx self.libcxxabi ]; + extraPackages = [ targetLlvmPackages.libcxx targetLlvmPackages.libcxxabi ]; }; stdenv = stdenv.override (drv: { @@ -61,7 +59,7 @@ let libcxxStdenv = stdenv.override (drv: { allowedRequisites = null; - cc = self.libcxxClang; + cc = buildLlvmPackages.libcxxClang; }); lld = callPackage ./lld.nix {}; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index c4c1f03ed5f11..8764741b21b61 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -6061,18 +6061,6 @@ with pkgs; clang-analyzer = callPackage ../development/tools/analysis/clang-analyzer { }; - clangSelf = clangWrapSelf llvmPackagesSelf.clang; - - clangWrapSelf = build: ccWrapperFun { - cc = build; - isClang = true; - inherit stdenvNoCC; - inherit (targetPackages.stdenv.cc) bintools libc; - extraPackages = [ libcxx libcxxabi ]; - nativeTools = false; - nativeLibc = false; - }; - #Use this instead of stdenv to build with clang clangStdenv = if stdenv.cc.isClang then stdenv else lowPrio llvmPackages.stdenv; clang-sierraHack-stdenv = overrideCC stdenv clang-sierraHack; @@ -6709,10 +6697,6 @@ with pkgs; llvmPackages = recurseIntoAttrs llvmPackages_5; - llvmPackagesSelf = llvmPackages_34.override { - stdenv = libcxxStdenv; - }; - llvmPackages_34 = callPackage ../development/compilers/llvm/3.4 ({ isl = isl_0_12; } // stdenv.lib.optionalAttrs (stdenv.cc.isGNU && stdenv.hostPlatform.isi686) { @@ -6727,30 +6711,40 @@ with pkgs; llvmPackages_37 = callPackage ../development/compilers/llvm/3.7 ({ inherit (stdenvAdapters) overrideCC; + buildLlvmPackages = buildPackages.llvmPackages_37; + targetLlvmPackages = targetPackages.llvmPackages_37; } // stdenv.lib.optionalAttrs (stdenv.cc.isGNU && stdenv.hostPlatform.isi686) { stdenv = overrideCC stdenv gcc6; }); llvmPackages_38 = callPackage ../development/compilers/llvm/3.8 ({ inherit (stdenvAdapters) overrideCC; + buildLlvmPackages = buildPackages.llvmPackages_38; + targetLlvmPackages = targetPackages.llvmPackages_38; } // stdenv.lib.optionalAttrs (stdenv.cc.isGNU && stdenv.hostPlatform.isi686) { stdenv = overrideCC stdenv gcc6; }); llvmPackages_39 = callPackage ../development/compilers/llvm/3.9 ({ inherit (stdenvAdapters) overrideCC; + buildLlvmPackages = buildPackages.llvmPackages_39; + targetLlvmPackages = targetPackages.llvmPackages_39; } // stdenv.lib.optionalAttrs (stdenv.cc.isGNU && stdenv.hostPlatform.isi686) { stdenv = overrideCC stdenv gcc6; }); llvmPackages_4 = callPackage ../development/compilers/llvm/4 ({ inherit (stdenvAdapters) overrideCC; + buildLlvmPackages = buildPackages.llvmPackages_4; + targetLlvmPackages = targetPackages.llvmPackages_4; } // stdenv.lib.optionalAttrs (stdenv.cc.isGNU && stdenv.hostPlatform.isi686) { stdenv = overrideCC stdenv gcc6; }); llvmPackages_5 = callPackage ../development/compilers/llvm/5 ({ inherit (stdenvAdapters) overrideCC; + buildLlvmPackages = buildPackages.llvmPackages_5; + targetLlvmPackages = targetPackages.llvmPackages_5; } // stdenv.lib.optionalAttrs stdenv.isDarwin { cmake = cmake.override { isBootstrap = true; @@ -6764,6 +6758,8 @@ with pkgs; llvmPackages_6 = callPackage ../development/compilers/llvm/6 ({ inherit (stdenvAdapters) overrideCC; + buildLlvmPackages = buildPackages.llvmPackages_6; + targetLlvmPackages = targetPackages.llvmPackages_6; } // stdenv.lib.optionalAttrs (stdenv.cc.isGNU && stdenv.hostPlatform.isi686) { stdenv = overrideCC stdenv gcc6; # with gcc-7: undefined reference to `__divmoddi4' }); @@ -7017,42 +7013,46 @@ with pkgs; wla-dx = callPackage ../development/compilers/wla-dx { }; - wrapCCWith = { name ? "", cc, bintools, libc, extraBuildCommands ? "" }: - ccWrapperFun rec { + wrapCCWith = + { cc + , # This should be the only bintools runtime dep with this sort of logic. The + # Others should instead delegate to the next stage's choice with + # `targetPackages.stdenv.cc.bintools`. This one is different just to + # provide the default choice, avoiding infinite recursion. + bintools ? if targetPlatform.isDarwin then darwin.binutils else binutils + , libc ? bintools.libc + , ... + } @ extraArgs: + callPackage ../build-support/cc-wrapper (let self = { nativeTools = targetPlatform == hostPlatform && stdenv.cc.nativeTools or false; nativeLibc = targetPlatform == hostPlatform && stdenv.cc.nativeLibc or false; nativePrefix = stdenv.cc.nativePrefix or ""; - noLibc = !nativeLibc && (libc == null); + noLibc = !self.nativeLibc && (self.libc == null); isGNU = cc.isGNU or false; isClang = cc.isClang or false; - inherit name cc bintools libc extraBuildCommands; - }; - - ccWrapperFun = callPackage ../build-support/cc-wrapper; - bintoolsWrapperFun = callPackage ../build-support/bintools-wrapper; + inherit cc bintools libc; + } // extraArgs; in self); wrapCC = cc: wrapCCWith { - name = lib.optionalString (targetPlatform != hostPlatform) "gcc-cross-wrapper"; inherit cc; - # This should be the only bintools runtime dep with this sort of logic. The - # Others should instead delegate to the next stage's choice with - # `targetPackages.stdenv.cc.bintools`. This one is different just to - # provide the default choice, avoiding infinite recursion. - bintools = if targetPlatform.isDarwin then darwin.binutils else binutils; - libc = if targetPlatform != hostPlatform then libcCross else stdenv.cc.libc; }; - wrapBintoolsWith = { bintools, libc, extraBuildCommands ? "" }: bintoolsWrapperFun { + wrapBintoolsWith = + { bintools + , libc ? if targetPlatform != hostPlatform then libcCross else stdenv.cc.libc + , ... + } @ extraArgs: + callPackage ../build-support/bintools-wrapper (let self = { nativeTools = targetPlatform == hostPlatform && stdenv.cc.nativeTools or false; nativeLibc = targetPlatform == hostPlatform && stdenv.cc.nativeLibc or false; nativePrefix = stdenv.cc.nativePrefix or ""; - noLibc = (libc == null); + noLibc = (self.libc == null); - inherit bintools libc extraBuildCommands; - }; + inherit bintools libc; + } // extraArgs; in self); # prolog yap = callPackage ../development/compilers/yap { }; @@ -7658,11 +7658,9 @@ with pkgs; noSysDirs = (targetPlatform != buildPlatform) || noSysDirs; }; binutils = wrapBintoolsWith { - libc = if targetPlatform != hostPlatform then libcCross else stdenv.cc.libc; bintools = binutils-unwrapped; }; binutils_nogold = lowPrio (wrapBintoolsWith { - libc = if targetPlatform != hostPlatform then libcCross else stdenv.cc.libc; bintools = binutils-unwrapped.override { gold = false; }; |