Merge branch 'mono-3.2' of git://github.com/thoughtpolice/nixpkgs

upgrade Mono -> 3.2.8 + LLVM support

[ Shea: I'm merging thoughtpolice's commits without further testing
beyond code inspection, as I believe their work has proven itself ]
This commit is contained in:
Shea Levy 2014-03-20 20:05:04 -04:00
commit 1150fa67eb
3 changed files with 88 additions and 8 deletions

View File

@ -0,0 +1,12 @@
diff --git a/lib/CodeGen/AsmPrinter/CMakeLists.txt.old b/lib/CodeGen/AsmPrinter/CMakeLists.txt
index be484a6..c92ff46 100644
--- a/lib/CodeGen/AsmPrinter/CMakeLists.txt.old
+++ b/lib/CodeGen/AsmPrinter/CMakeLists.txt
@@ -10,6 +10,7 @@ add_llvm_library(LLVMAsmPrinter
DwarfCompileUnit.cpp
DwarfDebug.cpp
DwarfException.cpp
+ DwarfMonoException.cpp
ErlangGCPrinter.cpp
OcamlGCPrinter.cpp
Win64Exception.cpp

View File

@ -1,13 +1,18 @@
{stdenv, fetchurl, bison, pkgconfig, glib, gettext, perl, libgdiplus, libX11}:
{ stdenv, fetchurl, bison, pkgconfig, glib, gettext, perl, libgdiplus, libX11, callPackage, ncurses, zlib, withLLVM ? true }:
let
llvm = callPackage ./llvm.nix { };
llvmOpts = stdenv.lib.optionalString withLLVM "--enable-llvm --enable-llvmloaded --with-llvm=${llvm}";
in
stdenv.mkDerivation rec {
name = "mono-2.11.4";
name = "mono-${version}";
version = "3.2.8";
src = fetchurl {
url = "http://download.mono-project.com/sources/mono/${name}.tar.bz2";
sha256 = "0wv8pnj02mq012sihx2scx0avyw51b5wb976wn7x86zda0vfcsnr";
sha256 = "0h0s42pmgrhwqaym0b1401h70dcpr179ngcsp7f8i4hl4snqrd7x";
};
buildInputs = [bison pkgconfig glib gettext perl libgdiplus libX11];
buildInputs = [bison pkgconfig glib gettext perl libgdiplus libX11 ncurses zlib];
propagatedBuildInputs = [glib];
NIX_LDFLAGS = "-lgcc_s" ;
@ -17,7 +22,7 @@ stdenv.mkDerivation rec {
# In fact I think this line does not help at all to what I
# wanted to achieve: have mono to find libgdiplus automatically
configureFlags = "--x-includes=${libX11}/include --x-libraries=${libX11}/lib --with-libgdiplus=${libgdiplus}/lib/libgdiplus.so";
configureFlags = "--x-includes=${libX11}/include --x-libraries=${libX11}/lib --with-libgdiplus=${libgdiplus}/lib/libgdiplus.so ${llvmOpts}";
# Attempt to fix this error when running "mcs --version":
# The file /nix/store/xxx-mono-2.4.2.1/lib/mscorlib.dll is an invalid CIL image
@ -26,10 +31,14 @@ stdenv.mkDerivation rec {
# Parallel building doesn't work, as shows http://hydra.nixos.org/build/2983601
enableParallelBuilding = false;
preBuild = "
# Patch all the necessary scripts. Also, if we're using LLVM, we fix the default
# LLVM path to point into the Mono LLVM build, since it's private anyway.
preBuild = ''
makeFlagsArray=(INSTALL=`type -tp install`)
patchShebangs ./
";
'' + stdenv.lib.optionalString withLLVM ''
substituteInPlace mono/mini/aot-compiler.c --replace "llvm_path = g_strdup (\"\")" "llvm_path = g_strdup (\"${llvm}/bin/\")"
'';
#Fix mono DLLMap so it can find libX11 and gdiplus to run winforms apps
#Other items in the DLLMap may need to be pointed to their store locations, I don't think this is exhaustive
@ -46,7 +55,7 @@ stdenv.mkDerivation rec {
homepage = http://mono-project.com/;
description = "Cross platform, open source .NET development framework";
platforms = with stdenv.lib.platforms; linux;
maintainers = with stdenv.lib.maintainers; [viric];
maintainers = with stdenv.lib.maintainers; [ viric thoughtpolice ];
license = "free"; # Combination of LGPL/X11/GPL ?
};
}

View File

@ -0,0 +1,59 @@
{ stdenv
, fetchurl
, perl
, groff
, cmake
, python
, libffi
, binutils
, libxml2
, valgrind
, ncurses
, zlib
}:
stdenv.mkDerivation rec {
name = "llvm-${version}";
version = "3.4svn-mono-f9b1a74368";
src = fetchurl {
# from the HEAD of the 'mono3' branch
url = "https://github.com/mono/llvm/archive/f9b1a74368ec299fc04c4cfef4b5aa0992b7b806.tar.gz";
name = "${name}.tar.gz";
sha256 = "1bbkx4p5zdnk3nbdd5jxvbwqx8cdq8z1n1nhf639i98mggs0zhdg";
};
patches = [ ./build-fix-llvm.patch ];
unpackPhase = ''
unpackFile ${src}
mv llvm-* llvm
sourceRoot=$PWD/llvm
'';
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
'';
postBuild = "rm -fR $out";
cmakeFlags = with stdenv; [
"-DCMAKE_BUILD_TYPE=Release"
"-DLLVM_ENABLE_FFI=ON"
"-DLLVM_BINUTILS_INCDIR=${binutils}/include"
"-DCMAKE_CXX_FLAGS=-std=c++11"
] ++ stdenv.lib.optional (!isDarwin) "-DBUILD_SHARED_LIBS=ON";
enableParallelBuilding = true;
meta = {
description = "Collection of modular and reusable compiler and toolchain technologies - Mono build";
homepage = http://llvm.org/;
license = stdenv.lib.licenses.bsd3;
maintainers = with stdenv.lib.maintainers; [ thoughtpolice ];
platforms = stdenv.lib.platforms.all;
};
}