llvm+clang: maintenance update 3.4 -> 3.4.1

Slightly hacky for clang at some points, as directory names change strangely.
This commit is contained in:
Vladimír Čunát 2014-05-10 17:29:41 +02:00
parent 0c142b2a18
commit cf1dbbbf72
3 changed files with 30 additions and 17 deletions

View File

@ -1,18 +1,18 @@
{ stdenv, fetch, cmake, libxml2, libedit, llvm, version }: { stdenv, fetch, cmake, libxml2, libedit, llvm, version, clang-tools-extra_src }:
stdenv.mkDerivation { stdenv.mkDerivation {
name = "clang-${version}"; name = "clang-${version}";
unpackPhase = '' unpackPhase = ''
unpackFile ${fetch "clang" "06rb4j1ifbznl3gfhl98s7ilj0ns01p7y7zap4p7ynmqnc6pia92"} unpackFile ${fetch "cfe" "1dvbkld0a1aqj6wcn0ia1wa8lwha30yfgq16j1r7akdka44z70xb"}
mv clang-${version} clang mv cfe-${version}.src clang
sourceRoot=$PWD/clang sourceRoot=$PWD/clang
unpackFile ${fetch "clang-tools-extra" "1d1822mwxxl9agmyacqjw800kzz5x8xr0sdmi8fgx5xfa5sii1ds"} unpackFile ${clang-tools-extra_src}
mv clang-tools-extra-${version} $sourceRoot/tools/extra mv clang-tools-extra-* $sourceRoot/tools/extra
# !!! Hopefully won't be needed for 3.5 # !!! Hopefully won't be needed for 3.5
unpackFile ${llvm.src} unpackFile ${llvm.src}
export cmakeFlags="$cmakeFlags -DCLANG_PATH_TO_LLVM_SOURCE=$PWD/llvm-${version}" export cmakeFlags="$cmakeFlags -DCLANG_PATH_TO_LLVM_SOURCE="`ls -d $PWD/llvm-*`
(cd llvm-${version} && patch -Np1 -i ${./llvm-separate-build.patch}) (cd llvm-* && patch -Np1 -i ${./llvm-separate-build.patch})
''; '';
patches = [ ./clang-separate-build.patch ./clang-purity.patch ]; patches = [ ./clang-separate-build.patch ./clang-purity.patch ];
@ -31,7 +31,7 @@ stdenv.mkDerivation {
# Clang expects to find sanitizer libraries in its own prefix # Clang expects to find sanitizer libraries in its own prefix
postInstall = '' postInstall = ''
ln -sv ${llvm}/lib/LLVMgold.so $out/lib ln -sv ${llvm}/lib/LLVMgold.so $out/lib
ln -sv ${llvm}/lib/clang/3.4/lib $out/lib/clang/3.4/ ln -sv ${llvm}/lib/clang/${version}/lib $out/lib/clang/${version}/
''; '';
passthru.gcc = stdenv.gcc.gcc; passthru.gcc = stdenv.gcc.gcc;

View File

@ -4,15 +4,27 @@ let
version = "3.4"; version = "3.4";
fetch = name: sha256: fetchurl { fetch = fetch_v version;
url = "http://llvm.org/releases/${version}/${name}-${version}.src.tar.gz"; fetch_v = ver: name: sha256: fetchurl {
url = "http://llvm.org/releases/${ver}/${name}-${ver}.src.tar.gz";
inherit sha256; inherit sha256;
}; };
self = { compiler-rt_src = fetch "compiler-rt" "0p5b6varxdqn7q3n77xym63hhq4qqxd2981pfpa65r1w72qqjz7k";
llvm = callPackage ./llvm.nix {}; clang-tools-extra_src = fetch "clang-tools-extra" "1d1822mwxxl9agmyacqjw800kzz5x8xr0sdmi8fgx5xfa5sii1ds";
clang = callPackage ./clang.nix {}; self = {
llvm = callPackage ./llvm.nix rec {
version = "3.4.1";
fetch = fetch_v version;
inherit compiler-rt_src;
};
clang = callPackage ./clang.nix rec {
version = "3.4.1";
fetch = fetch_v version;
inherit clang-tools-extra_src;
};
lld = callPackage ./lld.nix {}; lld = callPackage ./lld.nix {};

View File

@ -11,19 +11,20 @@
, ncurses , ncurses
, version , version
, zlib , zlib
, compiler-rt_src
}: }:
let let
src = fetch "llvm" "0a169ba045r4apb9cv6ncrwl83l7yiajnzirkcdlhj1cd4nn3995"; src = fetch "llvm" "0fprxrilnlwk9qv7f0kplxc7kd8mp4x781asssv2nfi4r9pbna3x";
in stdenv.mkDerivation rec { in stdenv.mkDerivation rec {
name = "llvm-${version}"; name = "llvm-${version}";
unpackPhase = '' unpackPhase = ''
unpackFile ${src} unpackFile ${src}
mv llvm-${version} llvm mv llvm-${version}.src llvm
sourceRoot=$PWD/llvm sourceRoot=$PWD/llvm
unpackFile ${fetch "compiler-rt" "0p5b6varxdqn7q3n77xym63hhq4qqxd2981pfpa65r1w72qqjz7k"} unpackFile ${compiler-rt_src}
mv compiler-rt-${version} $sourceRoot/projects/compiler-rt mv compiler-rt-* $sourceRoot/projects/compiler-rt
''; '';
buildInputs = [ perl groff cmake libxml2 python libffi ] ++ stdenv.lib.optional stdenv.isLinux valgrind; buildInputs = [ perl groff cmake libxml2 python libffi ] ++ stdenv.lib.optional stdenv.isLinux valgrind;