add llvm-3.5
This commit is contained in:
parent
e01997e1ef
commit
2ca30151c2
22
pkgs/development/compilers/llvm/3.5/clang-purity.patch
Normal file
22
pkgs/development/compilers/llvm/3.5/clang-purity.patch
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp
|
||||||
|
index 198e82e..810d006 100644
|
||||||
|
--- a/lib/Driver/Tools.cpp
|
||||||
|
+++ b/lib/Driver/Tools.cpp
|
||||||
|
@@ -7355,17 +7355,6 @@ void gnutools::Link::ConstructJob(Compilation &C, const JobAction &JA,
|
||||||
|
CmdArgs.push_back("-shared");
|
||||||
|
}
|
||||||
|
|
||||||
|
- if (ToolChain.getArch() == llvm::Triple::arm ||
|
||||||
|
- ToolChain.getArch() == llvm::Triple::armeb ||
|
||||||
|
- ToolChain.getArch() == llvm::Triple::thumb ||
|
||||||
|
- ToolChain.getArch() == llvm::Triple::thumbeb ||
|
||||||
|
- (!Args.hasArg(options::OPT_static) &&
|
||||||
|
- !Args.hasArg(options::OPT_shared))) {
|
||||||
|
- CmdArgs.push_back("-dynamic-linker");
|
||||||
|
- CmdArgs.push_back(Args.MakeArgString(
|
||||||
|
- D.DyldPrefix + getLinuxDynamicLinker(Args, ToolChain)));
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
CmdArgs.push_back("-o");
|
||||||
|
CmdArgs.push_back(Output.getFilename());
|
||||||
|
|
@ -0,0 +1,8 @@
|
|||||||
|
diff -Naur clang-3.4-orig/tools/extra/CMakeLists.txt clang-3.4/tools/extra/CMakeLists.txt
|
||||||
|
--- clang-3.4-orig/tools/extra/CMakeLists.txt 2013-11-07 19:08:23.000000000 -0500
|
||||||
|
+++ clang-3.4/tools/extra/CMakeLists.txt 2014-01-20 11:47:22.678435223 -0500
|
||||||
|
@@ -1,3 +1,4 @@
|
||||||
|
+include(CheckLibraryExists)
|
||||||
|
check_library_exists(edit el_init "" HAVE_LIBEDIT)
|
||||||
|
|
||||||
|
add_subdirectory(clang-apply-replacements)
|
41
pkgs/development/compilers/llvm/3.5/clang.nix
Normal file
41
pkgs/development/compilers/llvm/3.5/clang.nix
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
{ stdenv, fetch, cmake, libxml2, libedit, llvm, version, clang-tools-extra_src }:
|
||||||
|
|
||||||
|
stdenv.mkDerivation {
|
||||||
|
name = "clang-${version}";
|
||||||
|
|
||||||
|
unpackPhase = ''
|
||||||
|
unpackFile ${fetch "cfe" "12yv3jwdjcbkrx7zjm8wh4jrvb59v8fdw4mnmz3zc1jb00p9k07w"}
|
||||||
|
mv cfe-${version}.src clang
|
||||||
|
sourceRoot=$PWD/clang
|
||||||
|
unpackFile ${clang-tools-extra_src}
|
||||||
|
mv clang-tools-extra-* $sourceRoot/tools/extra
|
||||||
|
'';
|
||||||
|
|
||||||
|
buildInputs = [ cmake libedit libxml2 llvm ];
|
||||||
|
|
||||||
|
cmakeFlags = [
|
||||||
|
"-DCMAKE_BUILD_TYPE=Release"
|
||||||
|
"-DCMAKE_CXX_FLAGS=-std=c++11"
|
||||||
|
] ++
|
||||||
|
(stdenv.lib.optional (stdenv.cc.libc != null) "-DC_INCLUDE_DIRS=${stdenv.cc.libc}/include");
|
||||||
|
|
||||||
|
patches = [ ./clang-purity.patch ];
|
||||||
|
|
||||||
|
# Clang expects to find LLVMgold in its own prefix
|
||||||
|
# Clang expects to find sanitizer libraries in its own prefix
|
||||||
|
postInstall = ''
|
||||||
|
ln -sv ${llvm}/lib/LLVMgold.so $out/lib
|
||||||
|
ln -sv ${llvm}/lib/clang/${version}/lib $out/lib/clang/${version}/
|
||||||
|
ln -sv $out/bin/clang $out/bin/cpp
|
||||||
|
'';
|
||||||
|
|
||||||
|
enableParallelBuilding = true;
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
description = "A c, c++, objective-c, and objective-c++ frontend for the llvm compiler";
|
||||||
|
homepage = http://llvm.org/;
|
||||||
|
license = stdenv.lib.licenses.bsd3;
|
||||||
|
maintainers = [ stdenv.lib.maintainers.shlevy ];
|
||||||
|
platforms = stdenv.lib.platforms.all;
|
||||||
|
};
|
||||||
|
}
|
37
pkgs/development/compilers/llvm/3.5/default.nix
Normal file
37
pkgs/development/compilers/llvm/3.5/default.nix
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
{ newScope, stdenv, isl, fetchurl }:
|
||||||
|
let
|
||||||
|
callPackage = newScope (self // { inherit stdenv isl version fetch; });
|
||||||
|
|
||||||
|
version = "3.5.0";
|
||||||
|
|
||||||
|
fetch = fetch_v version;
|
||||||
|
fetch_v = ver: name: sha256: fetchurl {
|
||||||
|
url = "http://llvm.org/releases/${ver}/${name}-${ver}.src.tar.xz";
|
||||||
|
inherit sha256;
|
||||||
|
};
|
||||||
|
|
||||||
|
compiler-rt_src = fetch "compiler-rt" "0dl1kbrhz96djsxqr61iw5h788s7ncfpfb7aayixky1bhdaydcx4";
|
||||||
|
clang-tools-extra_src = fetch "clang-tools-extra" "0s8zjgxg8bj15nnqcw1cj1zffcralhh7f0gda1famddgg2rvx099";
|
||||||
|
|
||||||
|
self = {
|
||||||
|
llvm = callPackage ./llvm.nix rec {
|
||||||
|
version = "3.5.0";
|
||||||
|
fetch = fetch_v version;
|
||||||
|
inherit compiler-rt_src;
|
||||||
|
};
|
||||||
|
|
||||||
|
clang = callPackage ./clang.nix rec {
|
||||||
|
version = "3.5.0";
|
||||||
|
fetch = fetch_v version;
|
||||||
|
inherit clang-tools-extra_src;
|
||||||
|
};
|
||||||
|
|
||||||
|
lld = callPackage ./lld.nix {};
|
||||||
|
|
||||||
|
lldb = callPackage ./lldb.nix {};
|
||||||
|
|
||||||
|
polly = callPackage ./polly.nix {};
|
||||||
|
|
||||||
|
dragonegg = callPackage ./dragonegg.nix {};
|
||||||
|
};
|
||||||
|
in self
|
34
pkgs/development/compilers/llvm/3.5/dragonegg.nix
Normal file
34
pkgs/development/compilers/llvm/3.5/dragonegg.nix
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
{stdenv, fetch, fetchpatch, llvm, gmp, mpfr, mpc, ncurses, zlib, version}:
|
||||||
|
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
name = "dragonegg-${version}";
|
||||||
|
|
||||||
|
src = fetch "dragonegg" "1733czbvby1ww3xkwcwmm0km0bpwhfyxvf56wb0zv5gksp3kbgrr";
|
||||||
|
|
||||||
|
patches = [(fetchpatch {
|
||||||
|
url = "https://llvm.org/viewvc/llvm-project/dragonegg/trunk/src/x86/ABIHack.inc"
|
||||||
|
+ "?r1=208730&r2=208729&view=patch";
|
||||||
|
sha256 = "1al82gqz90hzjx24p0wls029lw2bgnlgd209kgvxsp82p4z1v1c1";
|
||||||
|
name = "bug-18548.patch";
|
||||||
|
})];
|
||||||
|
patchFlags = "-p2";
|
||||||
|
|
||||||
|
# The gcc the plugin will be built for (the same used building dragonegg)
|
||||||
|
GCC = "gcc";
|
||||||
|
|
||||||
|
buildInputs = [ llvm gmp mpfr mpc ncurses zlib ];
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
mkdir -p $out/lib $out/share/doc/${name}
|
||||||
|
cp -d dragonegg.so $out/lib
|
||||||
|
cp README COPYING $out/share/doc/${name}
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
homepage = http://dragonegg.llvm.org/;
|
||||||
|
description = "gcc plugin that replaces gcc's optimizers and code generators by those in LLVM";
|
||||||
|
license = stdenv.lib.licenses.gpl2Plus;
|
||||||
|
maintainers = with stdenv.lib.maintainers; [viric shlevy];
|
||||||
|
platforms = with stdenv.lib.platforms; linux;
|
||||||
|
};
|
||||||
|
}
|
31
pkgs/development/compilers/llvm/3.5/lld.nix
Normal file
31
pkgs/development/compilers/llvm/3.5/lld.nix
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
{ stdenv, fetch, cmake, llvm, ncurses, zlib, python, version }:
|
||||||
|
|
||||||
|
stdenv.mkDerivation {
|
||||||
|
name = "lld-${version}";
|
||||||
|
|
||||||
|
src = fetch "lld" "1sd4scqynryfrmcc4h0ljgwn2dgjmbbmf38z50ya6l0janpd2nxx";
|
||||||
|
|
||||||
|
preUnpack = ''
|
||||||
|
# !!! Hopefully won't be needed for 3.5
|
||||||
|
unpackFile ${llvm.src}
|
||||||
|
export cmakeFlags="$cmakeFlags -DLLD_PATH_TO_LLVM_SOURCE="`ls -d $PWD/llvm-*`
|
||||||
|
'';
|
||||||
|
|
||||||
|
buildInputs = [ cmake ncurses zlib python ];
|
||||||
|
|
||||||
|
cmakeFlags = [
|
||||||
|
"-DCMAKE_BUILD_TYPE=Release"
|
||||||
|
"-DCMAKE_CXX_FLAGS=-std=c++11"
|
||||||
|
"-DLLD_PATH_TO_LLVM_BUILD=${llvm}"
|
||||||
|
];
|
||||||
|
|
||||||
|
enableParallelBuilding = true;
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
description = "A set of modular code for creating linker tools";
|
||||||
|
homepage = http://llvm.org/;
|
||||||
|
license = stdenv.lib.licenses.bsd3;
|
||||||
|
maintainers = [ stdenv.lib.maintainers.shlevy ];
|
||||||
|
platforms = stdenv.lib.platforms.all;
|
||||||
|
};
|
||||||
|
}
|
44
pkgs/development/compilers/llvm/3.5/lldb.nix
Normal file
44
pkgs/development/compilers/llvm/3.5/lldb.nix
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
{ stdenv
|
||||||
|
, fetch
|
||||||
|
, cmake
|
||||||
|
, zlib
|
||||||
|
, ncurses
|
||||||
|
, swig
|
||||||
|
, which
|
||||||
|
, libedit
|
||||||
|
, llvm
|
||||||
|
, clang
|
||||||
|
, python
|
||||||
|
, version
|
||||||
|
}:
|
||||||
|
|
||||||
|
stdenv.mkDerivation {
|
||||||
|
name = "lldb-${version}";
|
||||||
|
|
||||||
|
src = fetch "lldb" "0h8cmjrhjhigk7k2qll1pcf6jfgmbdzkzfz2i048pkfg851s0x44";
|
||||||
|
|
||||||
|
patchPhase = ''
|
||||||
|
sed -i 's|/usr/bin/env||' \
|
||||||
|
scripts/Python/finish-swig-Python-LLDB.sh \
|
||||||
|
scripts/Python/build-swig-Python.sh
|
||||||
|
'';
|
||||||
|
|
||||||
|
buildInputs = [ cmake python which swig ncurses zlib libedit ];
|
||||||
|
|
||||||
|
cmakeFlags = [
|
||||||
|
"-DCMAKE_BUILD_TYPE=Release"
|
||||||
|
"-DCMAKE_CXX_FLAGS=-std=c++11"
|
||||||
|
"-DLLDB_PATH_TO_LLVM_BUILD=${llvm}"
|
||||||
|
"-DLLDB_PATH_TO_CLANG_BUILD=${clang}"
|
||||||
|
];
|
||||||
|
|
||||||
|
enableParallelBuilding = true;
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
description = "A next-generation high-performance debugger";
|
||||||
|
homepage = http://llvm.org/;
|
||||||
|
license = stdenv.lib.licenses.bsd3;
|
||||||
|
maintainers = [ stdenv.lib.maintainers.shlevy ];
|
||||||
|
platforms = stdenv.lib.platforms.all;
|
||||||
|
};
|
||||||
|
}
|
@ -0,0 +1,12 @@
|
|||||||
|
diff -Naur llvm-3.4-orig/cmake/modules/TableGen.cmake llvm-3.4/cmake/modules/TableGen.cmake
|
||||||
|
--- llvm-3.4-orig/cmake/modules/TableGen.cmake 2013-10-06 21:00:07.000000000 -0400
|
||||||
|
+++ llvm-3.4/cmake/modules/TableGen.cmake 2014-01-20 13:06:55.273022149 -0500
|
||||||
|
@@ -78,8 +78,6 @@
|
||||||
|
endif()
|
||||||
|
|
||||||
|
macro(add_tablegen target project)
|
||||||
|
- set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${LLVM_TOOLS_BINARY_DIR})
|
||||||
|
-
|
||||||
|
set(${target}_OLD_LLVM_LINK_COMPONENTS ${LLVM_LINK_COMPONENTS})
|
||||||
|
set(LLVM_LINK_COMPONENTS ${LLVM_LINK_COMPONENTS} TableGen)
|
||||||
|
add_llvm_utility(${target} ${ARGN})
|
70
pkgs/development/compilers/llvm/3.5/llvm.nix
Normal file
70
pkgs/development/compilers/llvm/3.5/llvm.nix
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
{ stdenv
|
||||||
|
, fetch
|
||||||
|
, perl
|
||||||
|
, groff
|
||||||
|
, cmake
|
||||||
|
, python
|
||||||
|
, libffi
|
||||||
|
, binutils
|
||||||
|
, libxml2
|
||||||
|
, valgrind
|
||||||
|
, ncurses
|
||||||
|
, version
|
||||||
|
, zlib
|
||||||
|
, compiler-rt_src
|
||||||
|
}:
|
||||||
|
|
||||||
|
let
|
||||||
|
src = fetch "llvm" "00swb43mzlvda8306arlg2jw7g6k3acwfccgf1k4c2pgd3rrkq98";
|
||||||
|
in stdenv.mkDerivation rec {
|
||||||
|
name = "llvm-${version}";
|
||||||
|
|
||||||
|
unpackPhase = ''
|
||||||
|
unpackFile ${src}
|
||||||
|
mv llvm-${version}.src llvm
|
||||||
|
sourceRoot=$PWD/llvm
|
||||||
|
unpackFile ${compiler-rt_src}
|
||||||
|
mv compiler-rt-* $sourceRoot/projects/compiler-rt
|
||||||
|
'';
|
||||||
|
|
||||||
|
buildInputs = [ perl groff cmake libxml2 python libffi ] ++ stdenv.lib.optional stdenv.isLinux valgrind;
|
||||||
|
|
||||||
|
propagatedBuildInputs = [ ncurses zlib ];
|
||||||
|
|
||||||
|
# hacky fix: created binaries need to be run before installation
|
||||||
|
preBuild = ''
|
||||||
|
mkdir -p $out/
|
||||||
|
ln -sv $PWD/lib $out
|
||||||
|
'';
|
||||||
|
|
||||||
|
cmakeFlags = with stdenv; [
|
||||||
|
"-DCMAKE_BUILD_TYPE=Release"
|
||||||
|
"-DLLVM_BUILD_TESTS=ON"
|
||||||
|
"-DLLVM_ENABLE_FFI=ON"
|
||||||
|
"-DLLVM_BINUTILS_INCDIR=${binutils}/include"
|
||||||
|
"-DCMAKE_CXX_FLAGS=-stdlib=libc++"
|
||||||
|
] ++ stdenv.lib.optional (!isDarwin) "-DBUILD_SHARED_LIBS=ON"
|
||||||
|
++ stdenv.lib.optional ( isDarwin) "-DCAN_TARGET_i386=false";
|
||||||
|
|
||||||
|
postBuild = ''
|
||||||
|
rm -fR $out
|
||||||
|
|
||||||
|
paxmark m bin/{lli,llvm-rtdyld}
|
||||||
|
|
||||||
|
paxmark m unittests/ExecutionEngine/JIT/JITTests
|
||||||
|
paxmark m unittests/ExecutionEngine/MCJIT/MCJITTests
|
||||||
|
paxmark m unittests/Support/SupportTests
|
||||||
|
'';
|
||||||
|
|
||||||
|
enableParallelBuilding = true;
|
||||||
|
|
||||||
|
passthru.src = src;
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
description = "Collection of modular and reusable compiler and toolchain technologies";
|
||||||
|
homepage = http://llvm.org/;
|
||||||
|
license = stdenv.lib.licenses.bsd3;
|
||||||
|
maintainers = with stdenv.lib.maintainers; [ shlevy lovek323 raskin viric ];
|
||||||
|
platforms = stdenv.lib.platforms.all;
|
||||||
|
};
|
||||||
|
}
|
@ -0,0 +1,12 @@
|
|||||||
|
diff -Naur polly-3.4-orig/CMakeLists.txt polly-3.4/CMakeLists.txt
|
||||||
|
--- polly-3.4-orig/CMakeLists.txt 2013-11-21 06:51:46.000000000 -0500
|
||||||
|
+++ polly-3.4/CMakeLists.txt 2014-01-20 18:49:34.907919933 -0500
|
||||||
|
@@ -53,7 +53,7 @@
|
||||||
|
execute_process(COMMAND "${LLVM_INSTALL_ROOT}/bin/llvm-config" --cxxflags
|
||||||
|
OUTPUT_VARIABLE LLVM_CXX_FLAGS
|
||||||
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||||
|
- set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} ${LLVM_CXX_FLAGS})
|
||||||
|
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${LLVM_CXX_FLAGS}")
|
||||||
|
endif(NOT DEFINED LLVM_MAIN_SRC_DIR)
|
||||||
|
|
||||||
|
set(POLLY_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
|
27
pkgs/development/compilers/llvm/3.5/polly.nix
Normal file
27
pkgs/development/compilers/llvm/3.5/polly.nix
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
{ stdenv, fetch, cmake, isl, python, gmp, llvm, version }:
|
||||||
|
|
||||||
|
stdenv.mkDerivation {
|
||||||
|
name = "polly-${version}";
|
||||||
|
|
||||||
|
src = fetch "polly" "1rqflmgzg1vzjm0r32c5ck8x3q0qm3g0hh8ggbjazh6x7nvmy6ll";
|
||||||
|
|
||||||
|
patches = [ ./polly-separate-build.patch ];
|
||||||
|
|
||||||
|
buildInputs = [ cmake isl python gmp ];
|
||||||
|
|
||||||
|
cmakeFlags = [
|
||||||
|
"-DCMAKE_BUILD_TYPE=Release"
|
||||||
|
"-DCMAKE_CXX_FLAGS=-std=c++11"
|
||||||
|
"-DLLVM_INSTALL_ROOT=${llvm}"
|
||||||
|
];
|
||||||
|
|
||||||
|
enableParallelBuilding = true;
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
description = "A polyhedral optimizer for llvm";
|
||||||
|
homepage = http://llvm.org/;
|
||||||
|
license = stdenv.lib.licenses.bsd3;
|
||||||
|
maintainers = [ stdenv.lib.maintainers.shlevy ];
|
||||||
|
platforms = stdenv.lib.platforms.all;
|
||||||
|
};
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user