diff options
Diffstat (limited to 'pkgs/development/compilers/ghc/head.nix')
-rw-r--r-- | pkgs/development/compilers/ghc/head.nix | 60 |
1 files changed, 40 insertions, 20 deletions
diff --git a/pkgs/development/compilers/ghc/head.nix b/pkgs/development/compilers/ghc/head.nix index d57b6e575da5..21f0eecc87f7 100644 --- a/pkgs/development/compilers/ghc/head.nix +++ b/pkgs/development/compilers/ghc/head.nix @@ -1,27 +1,35 @@ { stdenv, fetchgit, bootPkgs, perl, gmp, ncurses, libiconv, binutils, coreutils -, autoconf, automake, happy, alex +, autoconf, automake, happy, alex, cross ? null }: let inherit (bootPkgs) ghc; -in stdenv.mkDerivation rec { - version = "8.1.20161109"; + commonBuildInputs = [ ghc perl autoconf automake happy alex ]; + + version = "8.1.20161115"; + + commonPreConfigure = '' + sed -i -e 's|-isysroot /Developer/SDKs/MacOSX10.5.sdk||' configure + '' + stdenv.lib.optionalString (!stdenv.isDarwin) '' + export NIX_LDFLAGS="$NIX_LDFLAGS -rpath $out/lib/ghc-${version}" + '' + stdenv.lib.optionalString stdenv.isDarwin '' + export NIX_LDFLAGS+=" -no_dtrace_dof" + ''; +in stdenv.mkDerivation (rec { + inherit version; name = "ghc-${version}"; - rev = "2e8463b232054b788b73e6551947a9434aa76009"; + rev = "017d11e0a36866b05ace32ece1af11adf652a619"; src = fetchgit { url = "git://git.haskell.org/ghc.git"; inherit rev; - sha256 = "12nxai5qqnw42syhd0vzl2f9f8z28rc0fsa7g771dyzpqglak90l"; + sha256 = "091zpb9vqqy4jqh4q7sz04dh1yfdczaaikbxi5ppim01gzbxwn65"; }; - patches = [ - ./ghc-HEAD-dont-pass-linker-flags-via-response-files.patch # https://github.com/NixOS/nixpkgs/issues/10752 - ]; - postUnpack = '' - pushd ghc-${builtins.substring 0 7 rev} + chmod -R +w ghc + pushd ghc echo ${version} >VERSION echo ${rev} >GIT_COMMIT_ID patchShebangs . @@ -29,20 +37,14 @@ in stdenv.mkDerivation rec { popd ''; - buildInputs = [ ghc perl autoconf automake happy alex ]; + buildInputs = commonBuildInputs; enableParallelBuilding = true; - preConfigure = '' - sed -i -e 's|-isysroot /Developer/SDKs/MacOSX10.5.sdk||' configure - '' + stdenv.lib.optionalString (!stdenv.isDarwin) '' - export NIX_LDFLAGS="$NIX_LDFLAGS -rpath $out/lib/ghc-${version}" - '' + stdenv.lib.optionalString stdenv.isDarwin '' - export NIX_LDFLAGS+=" -no_dtrace_dof" - ''; + preConfigure = commonPreConfigure; configureFlags = [ - "--with-cc=${stdenv.cc}/bin/cc" + "CC=cc" "--with-gmp-includes=${gmp.dev}/include" "--with-gmp-libraries=${gmp.out}/lib" "--with-curses-includes=${ncurses.dev}/include" "--with-curses-libraries=${ncurses.out}/lib" ] ++ stdenv.lib.optional stdenv.isDarwin [ @@ -76,4 +78,22 @@ in stdenv.mkDerivation rec { inherit (ghc.meta) license platforms; }; -} +} // stdenv.lib.optionalAttrs (cross != null) { + name = "${cross.config}-ghc-${version}"; + + # Some fixes for cross-compilation to iOS. See https://phabricator.haskell.org/D2710 (D2711,D2712,D2713) + patches = [ ./D2710.patch ./D2711.patch ./D2712.patch ./D2713.patch ]; + + preConfigure = commonPreConfigure + '' + sed 's|#BuildFlavour = quick-cross|BuildFlavour = perf-cross|' mk/build.mk.sample > mk/build.mk + ''; + + configureFlags = [ + "CC=${cross.config}-cc" + "--target=${cross.config}" + ]; + + buildInputs = commonBuildInputs ++ [ stdenv.ccCross stdenv.binutilsCross ]; + + dontSetConfigureCross = true; +}) |