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:
commit
1150fa67eb
|
@ -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
|
|
@ -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 {
|
stdenv.mkDerivation rec {
|
||||||
name = "mono-2.11.4";
|
name = "mono-${version}";
|
||||||
|
version = "3.2.8";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "http://download.mono-project.com/sources/mono/${name}.tar.bz2";
|
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];
|
propagatedBuildInputs = [glib];
|
||||||
|
|
||||||
NIX_LDFLAGS = "-lgcc_s" ;
|
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
|
# In fact I think this line does not help at all to what I
|
||||||
# wanted to achieve: have mono to find libgdiplus automatically
|
# 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":
|
# 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
|
# 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
|
# Parallel building doesn't work, as shows http://hydra.nixos.org/build/2983601
|
||||||
enableParallelBuilding = false;
|
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`)
|
makeFlagsArray=(INSTALL=`type -tp install`)
|
||||||
patchShebangs ./
|
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
|
#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
|
#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/;
|
homepage = http://mono-project.com/;
|
||||||
description = "Cross platform, open source .NET development framework";
|
description = "Cross platform, open source .NET development framework";
|
||||||
platforms = with stdenv.lib.platforms; linux;
|
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 ?
|
license = "free"; # Combination of LGPL/X11/GPL ?
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
|
};
|
||||||
|
}
|
Loading…
Reference in New Issue