From 45cd1ea620398d7981c9d7c7b8e50d15d99830fa Mon Sep 17 00:00:00 2001 From: Matthew Bauer Date: Thu, 1 Sep 2016 09:50:30 -0500 Subject: [PATCH 1/6] gcc: --enable-bootstrap on Darwin This seems to be working now. ISL needs to be disable for it to build completely though. --- pkgs/development/compilers/gcc/4.6/default.nix | 2 +- pkgs/development/compilers/gcc/4.8/default.nix | 2 +- pkgs/development/compilers/gcc/4.9/default.nix | 2 +- pkgs/development/compilers/gcc/5/default.nix | 2 +- pkgs/development/compilers/gcc/6/default.nix | 2 +- pkgs/top-level/all-packages.nix | 10 +++++----- 6 files changed, 10 insertions(+), 10 deletions(-) diff --git a/pkgs/development/compilers/gcc/4.6/default.nix b/pkgs/development/compilers/gcc/4.6/default.nix index 991d4fc883fbc..65b357d4c7a9a 100644 --- a/pkgs/development/compilers/gcc/4.6/default.nix +++ b/pkgs/development/compilers/gcc/4.6/default.nix @@ -170,7 +170,7 @@ let version = "4.6.4"; "-stage-final"; crossNameAddon = if cross != null then "-${cross.config}" + stageNameAddon else ""; - bootstrap = cross == null && !stdenv.isArm && !stdenv.isMips && !stdenv.isDarwin; + bootstrap = cross == null && !stdenv.isArm && !stdenv.isMips; in diff --git a/pkgs/development/compilers/gcc/4.8/default.nix b/pkgs/development/compilers/gcc/4.8/default.nix index e4e38022a6bfc..41b29400dd86a 100644 --- a/pkgs/development/compilers/gcc/4.8/default.nix +++ b/pkgs/development/compilers/gcc/4.8/default.nix @@ -198,7 +198,7 @@ let version = "4.8.5"; stageNameAddon = if crossStageStatic then "-stage-static" else "-stage-final"; crossNameAddon = if cross != null then "-${cross.config}" + stageNameAddon else ""; - bootstrap = cross == null && !stdenv.isArm && !stdenv.isMips && !stdenv.isDarwin; + bootstrap = cross == null && !stdenv.isArm && !stdenv.isMips; in diff --git a/pkgs/development/compilers/gcc/4.9/default.nix b/pkgs/development/compilers/gcc/4.9/default.nix index 01755a74e1ec2..f758a1e172eff 100644 --- a/pkgs/development/compilers/gcc/4.9/default.nix +++ b/pkgs/development/compilers/gcc/4.9/default.nix @@ -202,7 +202,7 @@ let version = "4.9.4"; stageNameAddon = if crossStageStatic then "-stage-static" else "-stage-final"; crossNameAddon = if cross != null then "-${cross.config}" + stageNameAddon else ""; - bootstrap = cross == null && !stdenv.isDarwin; + bootstrap = cross == null; in diff --git a/pkgs/development/compilers/gcc/5/default.nix b/pkgs/development/compilers/gcc/5/default.nix index f5c69d24d63ec..0f8a0bbf794a4 100644 --- a/pkgs/development/compilers/gcc/5/default.nix +++ b/pkgs/development/compilers/gcc/5/default.nix @@ -202,7 +202,7 @@ let version = "5.4.0"; stageNameAddon = if crossStageStatic then "-stage-static" else "-stage-final"; crossNameAddon = if cross != null then "-${cross.config}" + stageNameAddon else ""; - bootstrap = cross == null && !stdenv.isDarwin; + bootstrap = cross == null; in diff --git a/pkgs/development/compilers/gcc/6/default.nix b/pkgs/development/compilers/gcc/6/default.nix index 129bde908faf4..6a1616154cb16 100644 --- a/pkgs/development/compilers/gcc/6/default.nix +++ b/pkgs/development/compilers/gcc/6/default.nix @@ -201,7 +201,7 @@ let version = "6.2.0"; stageNameAddon = if crossStageStatic then "-stage-static" else "-stage-final"; crossNameAddon = if cross != null then "-${cross.config}" + stageNameAddon else ""; - bootstrap = cross == null && !stdenv.isDarwin; + bootstrap = cross == null; in diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 02f5abcb5f413..35bd07a59d2e5 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -4572,7 +4572,7 @@ in cross = null; libcCross = if crossSystem != null then libcCross else null; - isl = isl_0_14; + isl = if !stdenv.isDarwin then isl_0_14 else null; })); gcc49 = lowPrio (wrapCC (callPackage ../development/compilers/gcc/4.9 { @@ -4587,9 +4587,9 @@ in cross = null; libcCross = if crossSystem != null then libcCross else null; - isl = isl_0_11; + isl = if !stdenv.isDarwin then isl_0_11 else null; - cloog = cloog_0_18_0; + cloog = if !stdenv.isDarwin then cloog_0_18_0 else null; })); gcc5 = lowPrio (wrapCC (callPackage ../development/compilers/gcc/5 { @@ -4604,7 +4604,7 @@ in cross = null; libcCross = if crossSystem != null then libcCross else null; - isl = isl_0_14; + isl = if !stdenv.isDarwin then isl_0_14 else null; })); gcc6 = lowPrio (wrapCC (callPackage ../development/compilers/gcc/6 { @@ -4619,7 +4619,7 @@ in cross = null; libcCross = if crossSystem != null then libcCross else null; - isl = isl_0_14; + isl = if !stdenv.isDarwin then isl_0_14 else null; })); gfortran = if !stdenv.isDarwin then gfortran5 From f2e753a90c3f7a9e715216501b9b0f95e766701f Mon Sep 17 00:00:00 2001 From: Matthew Bauer Date: Mon, 5 Sep 2016 15:41:30 -0500 Subject: [PATCH 2/6] gcc: fix gmp, mpfr includes This should get gcc48, gcc5, and gcc6 working again. Also: use makeLibraryPath, and makeSearchPathOutput for LIBRARY_PATH and CPATH. This is a refactor but it also fixes an issue with zlib. --- .../development/compilers/gcc/4.5/default.nix | 42 ++++++++--------- .../development/compilers/gcc/4.8/default.nix | 46 +++++++++---------- .../development/compilers/gcc/4.9/default.nix | 40 ++++++++-------- pkgs/development/compilers/gcc/5/default.nix | 46 +++++++++---------- pkgs/development/compilers/gcc/6/default.nix | 46 +++++++++---------- pkgs/top-level/all-packages.nix | 1 + 6 files changed, 109 insertions(+), 112 deletions(-) diff --git a/pkgs/development/compilers/gcc/4.5/default.nix b/pkgs/development/compilers/gcc/4.5/default.nix index 5d05410a7fda0..12e7e23e90b6a 100644 --- a/pkgs/development/compilers/gcc/4.5/default.nix +++ b/pkgs/development/compilers/gcc/4.5/default.nix @@ -332,28 +332,26 @@ stdenv.mkDerivation ({ # # Likewise, the LTO code doesn't find zlib. - CPATH = concatStrings - (intersperse ":" (map (x: "${x.dev or x}/include") - (optionals (zlib != null) [ zlib ] - ++ optionals langJava [ boehmgc ] - ++ optionals javaAwtGtk xlibs - ++ optionals javaAwtGtk [ gmp mpfr ] - ++ optional (libpthread != null) libpthread - ++ optional (libpthreadCross != null) libpthreadCross - - # On GNU/Hurd glibc refers to Mach & Hurd - # headers. - ++ optionals (libcCross != null && - hasAttr "propagatedBuildInputs" libcCross) - libcCross.propagatedBuildInputs))); - - LIBRARY_PATH = concatStrings - (intersperse ":" (map (x: x + "/lib") - (optionals (zlib != null) [ zlib ] - ++ optionals langJava [ boehmgc ] - ++ optionals javaAwtGtk xlibs - ++ optionals javaAwtGtk [ gmp mpfr ] - ++ optional (libpthread != null) libpthread))); + CPATH = makeSearchPathOutput "dev" "include" ([] + ++ optional (zlib != null) zlib + ++ optional langJava boehmgc + ++ optionals javaAwtGtk xlibs + ++ optionals javaAwtGtk [ gmp mpfr ] + ++ optional (libpthread != null) libpthread + ++ optional (libpthreadCross != null) libpthreadCross + + # On GNU/Hurd glibc refers to Mach & Hurd + # headers. + ++ optionals (libcCross != null && + hasAttr "propagatedBuildInputs" libcCross) + libcCross.propagatedBuildInputs); + + LIBRARY_PATH = makeLibraryPath ([] + ++ optional (zlib != null) zlib + ++ optional langJava boehmgc + ++ optionals javaAwtGtk xlibs + ++ optionals javaAwtGtk [ gmp mpfr ] + ++ optional (libpthread != null) libpthread); EXTRA_TARGET_CFLAGS = if cross != null && libcCross != null then [ diff --git a/pkgs/development/compilers/gcc/4.8/default.nix b/pkgs/development/compilers/gcc/4.8/default.nix index 41b29400dd86a..cf06fe9567e65 100644 --- a/pkgs/development/compilers/gcc/4.8/default.nix +++ b/pkgs/development/compilers/gcc/4.8/default.nix @@ -332,8 +332,10 @@ stdenv.mkDerivation ({ else ""} ${if javaAwtGtk then "--enable-java-awt=gtk" else ""} ${if langJava && javaAntlr != null then "--with-antlr-jar=${javaAntlr}" else ""} - --with-gmp=${gmp.dev} - --with-mpfr=${mpfr.dev} + --with-gmp-include=${gmp.dev}/include + --with-gmp-lib=${gmp.out}/lib + --with-mpfr-include=${mpfr.dev}/include + --with-mpfr-lib=${mpfr.out}/lib --with-mpc=${libmpc} ${if libelf != null then "--with-libelf=${libelf}" else ""} --disable-libstdcxx-pch @@ -454,27 +456,25 @@ stdenv.mkDerivation ({ # # Likewise, the LTO code doesn't find zlib. - CPATH = concatStrings - (intersperse ":" (map (x: "${x.dev or x}/include") - (optionals (zlib != null) [ zlib ] - ++ optionals langJava [ boehmgc ] - ++ optionals javaAwtGtk xlibs - ++ optionals javaAwtGtk [ gmp mpfr ] - ++ optional (libpthread != null) libpthread - ++ optional (libpthreadCross != null) libpthreadCross - - # On GNU/Hurd glibc refers to Mach & Hurd - # headers. - ++ optionals (libcCross != null && libcCross ? "propagatedBuildInputs" ) - libcCross.propagatedBuildInputs))); - - LIBRARY_PATH = concatStrings - (intersperse ":" (map (x: x + "/lib") - (optionals (zlib != null) [ zlib ] - ++ optionals langJava [ boehmgc ] - ++ optionals javaAwtGtk xlibs - ++ optionals javaAwtGtk [ gmp mpfr ] - ++ optional (libpthread != null) libpthread))); + CPATH = makeSearchPathOutput "dev" "include" ([] + ++ optional (zlib != null) zlib + ++ optional langJava boehmgc + ++ optionals javaAwtGtk xlibs + ++ optionals javaAwtGtk [ gmp mpfr ] + ++ optional (libpthread != null) libpthread + ++ optional (libpthreadCross != null) libpthreadCross + + # On GNU/Hurd glibc refers to Mach & Hurd + # headers. + ++ optionals (libcCross != null && libcCross ? "propagatedBuildInputs" ) + libcCross.propagatedBuildInputs); + + LIBRARY_PATH = makeLibraryPath ([] + ++ optional (zlib != null) zlib + ++ optional langJava boehmgc + ++ optionals javaAwtGtk xlibs + ++ optionals javaAwtGtk [ gmp mpfr ] + ++ optional (libpthread != null) libpthread); EXTRA_TARGET_CFLAGS = if cross != null && libcCross != null then [ diff --git a/pkgs/development/compilers/gcc/4.9/default.nix b/pkgs/development/compilers/gcc/4.9/default.nix index f758a1e172eff..a746b7e12b33e 100644 --- a/pkgs/development/compilers/gcc/4.9/default.nix +++ b/pkgs/development/compilers/gcc/4.9/default.nix @@ -463,27 +463,25 @@ stdenv.mkDerivation ({ # # Likewise, the LTO code doesn't find zlib. - CPATH = concatStrings - (intersperse ":" (map (x: "${x.dev or x}/include") - (optionals (zlib != null) [ zlib ] - ++ optionals langJava [ boehmgc ] - ++ optionals javaAwtGtk xlibs - ++ optionals javaAwtGtk [ gmp mpfr ] - ++ optional (libpthread != null) libpthread - ++ optional (libpthreadCross != null) libpthreadCross - - # On GNU/Hurd glibc refers to Mach & Hurd - # headers. - ++ optionals (libcCross != null && libcCross ? "propagatedBuildInputs" ) - libcCross.propagatedBuildInputs))); - - LIBRARY_PATH = concatStrings - (intersperse ":" (map (x: x + "/lib") - (optionals (zlib != null) [ zlib ] - ++ optionals langJava [ boehmgc ] - ++ optionals javaAwtGtk xlibs - ++ optionals javaAwtGtk [ gmp mpfr ] - ++ optional (libpthread != null) libpthread))); + CPATH = makeSearchPathOutput "dev" "include" ([] + ++ optional (zlib != null) zlib + ++ optional langJava boehmgc + ++ optionals javaAwtGtk xlibs + ++ optionals javaAwtGtk [ gmp mpfr ] + ++ optional (libpthread != null) libpthread + ++ optional (libpthreadCross != null) libpthreadCross + + # On GNU/Hurd glibc refers to Mach & Hurd + # headers. + ++ optionals (libcCross != null && libcCross ? "propagatedBuildInputs" ) + libcCross.propagatedBuildInputs); + + LIBRARY_PATH = makeLibraryPath ([] + ++ optional (zlib != null) zlib + ++ optional langJava boehmgc + ++ optionals javaAwtGtk xlibs + ++ optionals javaAwtGtk [ gmp mpfr ] + ++ optional (libpthread != null) libpthread); EXTRA_TARGET_CFLAGS = if cross != null && libcCross != null then [ diff --git a/pkgs/development/compilers/gcc/5/default.nix b/pkgs/development/compilers/gcc/5/default.nix index 0f8a0bbf794a4..6f8a32a7bfc00 100644 --- a/pkgs/development/compilers/gcc/5/default.nix +++ b/pkgs/development/compilers/gcc/5/default.nix @@ -337,8 +337,10 @@ stdenv.mkDerivation ({ else ""} ${if javaAwtGtk then "--enable-java-awt=gtk" else ""} ${if langJava && javaAntlr != null then "--with-antlr-jar=${javaAntlr}" else ""} - --with-gmp=${gmp.dev} - --with-mpfr=${mpfr.dev} + --with-gmp-include=${gmp.dev}/include + --with-gmp-lib=${gmp.out}/lib + --with-mpfr-include=${mpfr.dev}/include + --with-mpfr-lib=${mpfr.out}/lib --with-mpc=${libmpc} ${if libelf != null then "--with-libelf=${libelf}" else ""} --disable-libstdcxx-pch @@ -458,27 +460,25 @@ stdenv.mkDerivation ({ # # Likewise, the LTO code doesn't find zlib. - CPATH = concatStrings - (intersperse ":" (map (x: "${x.dev or x}/include") - (optionals (zlib != null) [ zlib ] - ++ optionals langJava [ boehmgc ] - ++ optionals javaAwtGtk xlibs - ++ optionals javaAwtGtk [ gmp mpfr ] - ++ optional (libpthread != null) libpthread - ++ optional (libpthreadCross != null) libpthreadCross - - # On GNU/Hurd glibc refers to Mach & Hurd - # headers. - ++ optionals (libcCross != null && libcCross ? "propagatedBuildInputs" ) - libcCross.propagatedBuildInputs))); - - LIBRARY_PATH = concatStrings - (intersperse ":" (map (x: x + "/lib") - (optionals (zlib != null) [ zlib ] - ++ optionals langJava [ boehmgc ] - ++ optionals javaAwtGtk xlibs - ++ optionals javaAwtGtk [ gmp mpfr ] - ++ optional (libpthread != null) libpthread))); + CPATH = makeSearchPathOutput "dev" "include" ([] + ++ optional (zlib != null) zlib + ++ optionals langJava [ boehmgc ] + ++ optionals javaAwtGtk xlibs + ++ optionals javaAwtGtk [ gmp mpfr ] + ++ optional (libpthread != null) libpthread + ++ optional (libpthreadCross != null) libpthreadCross + + # On GNU/Hurd glibc refers to Mach & Hurd + # headers. + ++ optionals (libcCross != null && libcCross ? "propagatedBuildInputs" ) + libcCross.propagatedBuildInputs); + + LIBRARY_PATH = makeLibraryPath ([] + ++ optional (zlib != null) zlib + ++ optional langJava boehmgc + ++ optionals javaAwtGtk xlibs + ++ optionals javaAwtGtk [ gmp mpfr ] + ++ optional (libpthread != null) libpthread); EXTRA_TARGET_CFLAGS = if cross != null && libcCross != null then [ diff --git a/pkgs/development/compilers/gcc/6/default.nix b/pkgs/development/compilers/gcc/6/default.nix index 6a1616154cb16..57172a2d9db92 100644 --- a/pkgs/development/compilers/gcc/6/default.nix +++ b/pkgs/development/compilers/gcc/6/default.nix @@ -335,8 +335,10 @@ stdenv.mkDerivation ({ else ""} ${if javaAwtGtk then "--enable-java-awt=gtk" else ""} ${if langJava && javaAntlr != null then "--with-antlr-jar=${javaAntlr}" else ""} - --with-gmp=${gmp.dev} - --with-mpfr=${mpfr.dev} + --with-gmp-include=${gmp.dev}/include + --with-gmp-lib=${gmp.out}/lib + --with-mpfr-include=${mpfr.dev}/include + --with-mpfr-lib=${mpfr.out}/lib --with-mpc=${libmpc} ${if libelf != null then "--with-libelf=${libelf}" else ""} --disable-libstdcxx-pch @@ -456,27 +458,25 @@ stdenv.mkDerivation ({ # # Likewise, the LTO code doesn't find zlib. - CPATH = concatStrings - (intersperse ":" (map (x: "${x.dev or x}/include") - (optionals (zlib != null) [ zlib ] - ++ optionals langJava [ boehmgc ] - ++ optionals javaAwtGtk xlibs - ++ optionals javaAwtGtk [ gmp mpfr ] - ++ optional (libpthread != null) libpthread - ++ optional (libpthreadCross != null) libpthreadCross - - # On GNU/Hurd glibc refers to Mach & Hurd - # headers. - ++ optionals (libcCross != null && libcCross ? "propagatedBuildInputs" ) - libcCross.propagatedBuildInputs))); - - LIBRARY_PATH = concatStrings - (intersperse ":" (map (x: x + "/lib") - (optionals (zlib != null) [ zlib ] - ++ optionals langJava [ boehmgc ] - ++ optionals javaAwtGtk xlibs - ++ optionals javaAwtGtk [ gmp mpfr ] - ++ optional (libpthread != null) libpthread))); + CPATH = makeSearchPath "dev" "include" ([] + ++ optional (zlib != null) zlib + ++ optional langJava boehmgc + ++ optionals javaAwtGtk xlibs + ++ optionals javaAwtGtk [ gmp mpfr ] + ++ optional (libpthread != null) libpthread + ++ optional (libpthreadCross != null) libpthreadCross + + # On GNU/Hurd glibc refers to Mach & Hurd + # headers. + ++ optionals (libcCross != null && libcCross ? "propagatedBuildInputs") + libcCross.propagatedBuildInputs); + + LIBRARY_PATH = makeLibraryPath ([] + ++ optional (zlib != null) zlib + ++ optional langJava boehmgc + ++ optionals javaAwtGtk xlibs + ++ optionals javaAwtGtk [ gmp mpfr ] + ++ optional (libpthread != null) libpthread); EXTRA_TARGET_CFLAGS = if cross != null && libcCross != null then [ diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 35bd07a59d2e5..ad5f72d7d6042 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -4573,6 +4573,7 @@ in libcCross = if crossSystem != null then libcCross else null; isl = if !stdenv.isDarwin then isl_0_14 else null; + cloog = if !stdenv.isDarwin then cloog else null; })); gcc49 = lowPrio (wrapCC (callPackage ../development/compilers/gcc/4.9 { From cf004ae56ee8261c9e5070e83ee14fc21f8e58d6 Mon Sep 17 00:00:00 2001 From: Matthew Bauer Date: Tue, 6 Sep 2016 13:54:13 -0500 Subject: [PATCH 3/6] gcc: add --with-native-system-header-dir for clang gcc needs to be able find system headers. Without this, gcc fails to build because /usr/include is not available. Note: stdenv.libc should be available for all stdenv's, I think. --- pkgs/development/compilers/gcc/4.8/default.nix | 4 ++-- pkgs/development/compilers/gcc/4.9/default.nix | 4 ++-- pkgs/development/compilers/gcc/5/default.nix | 4 ++-- pkgs/development/compilers/gcc/6/default.nix | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/pkgs/development/compilers/gcc/4.8/default.nix b/pkgs/development/compilers/gcc/4.8/default.nix index cf06fe9567e65..1b9e4bf666cfd 100644 --- a/pkgs/development/compilers/gcc/4.8/default.nix +++ b/pkgs/development/compilers/gcc/4.8/default.nix @@ -357,8 +357,8 @@ stdenv.mkDerivation ({ ) ) } - ${if (stdenv ? glibc && cross == null) - then " --with-native-system-header-dir=${stdenv.glibc.dev}/include" + ${if cross == null + then " --with-native-system-header-dir=${getDev stdenv.libc}/include" else ""} ${if langAda then " --enable-libada" else ""} ${if cross == null && stdenv.isi686 then "--with-arch=i686" else ""} diff --git a/pkgs/development/compilers/gcc/4.9/default.nix b/pkgs/development/compilers/gcc/4.9/default.nix index a746b7e12b33e..71edda0937f8d 100644 --- a/pkgs/development/compilers/gcc/4.9/default.nix +++ b/pkgs/development/compilers/gcc/4.9/default.nix @@ -364,8 +364,8 @@ stdenv.mkDerivation ({ ) ) } - ${if (stdenv ? glibc && cross == null) - then " --with-native-system-header-dir=${stdenv.glibc.dev}/include" + ${if cross == null + then " --with-native-system-header-dir=${getDev stdenv.libc}/include" else ""} ${if langAda then " --enable-libada" else ""} ${if cross == null && stdenv.isi686 then "--with-arch=i686" else ""} diff --git a/pkgs/development/compilers/gcc/5/default.nix b/pkgs/development/compilers/gcc/5/default.nix index 6f8a32a7bfc00..e84c677408c33 100644 --- a/pkgs/development/compilers/gcc/5/default.nix +++ b/pkgs/development/compilers/gcc/5/default.nix @@ -362,8 +362,8 @@ stdenv.mkDerivation ({ ) ) } - ${if (stdenv ? glibc && cross == null) - then " --with-native-system-header-dir=${stdenv.glibc.dev}/include" + ${if cross == null + then " --with-native-system-header-dir=${getDev stdenv.libc}/include" else ""} ${if langAda then " --enable-libada" else ""} ${if cross == null && stdenv.isi686 then "--with-arch=i686" else ""} diff --git a/pkgs/development/compilers/gcc/6/default.nix b/pkgs/development/compilers/gcc/6/default.nix index 57172a2d9db92..b33437ee868ca 100644 --- a/pkgs/development/compilers/gcc/6/default.nix +++ b/pkgs/development/compilers/gcc/6/default.nix @@ -360,8 +360,8 @@ stdenv.mkDerivation ({ ) ) } - ${if (stdenv ? glibc && cross == null) - then " --with-native-system-header-dir=${stdenv.glibc.dev}/include" + ${if cross == null + then " --with-native-system-header-dir=${getDev stdenv.libc}/include" else ""} ${if langAda then " --enable-libada" else ""} ${if cross == null && stdenv.isi686 then "--with-arch=i686" else ""} From f760e980f0b682c71baaa3362b920f2a101988a3 Mon Sep 17 00:00:00 2001 From: Matthew Bauer Date: Wed, 14 Sep 2016 00:15:30 -0500 Subject: [PATCH 4/6] gcc4.5: allow empty libc-ldflags --- pkgs/development/compilers/gcc/4.6/builder.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/development/compilers/gcc/4.6/builder.sh b/pkgs/development/compilers/gcc/4.6/builder.sh index 6087bb30cfb2b..6a3d93820cf5a 100644 --- a/pkgs/development/compilers/gcc/4.6/builder.sh +++ b/pkgs/development/compilers/gcc/4.6/builder.sh @@ -25,7 +25,7 @@ if test "$noSysDirs" = "1"; then # Figure out what extra flags to pass to the gcc compilers # being generated to make sure that they use our glibc. extraFlags="$(cat $NIX_CC/nix-support/libc-cflags)" - extraLDFlags="$(cat $NIX_CC/nix-support/libc-ldflags) $(cat $NIX_CC/nix-support/libc-ldflags-before)" + extraLDFlags="$(cat $NIX_CC/nix-support/libc-ldflags || true) $(cat $NIX_CC/nix-support/libc-ldflags-before || true)" # Use *real* header files, otherwise a limits.h is generated # that does not include Glibc's limits.h (notably missing From c7e0fbcbc80c402ce53a9677b11a01d792b80c0d Mon Sep 17 00:00:00 2001 From: Matthew Bauer Date: Wed, 14 Sep 2016 00:17:46 -0500 Subject: [PATCH 5/6] gcc4.6: remove from tree This isn't available from all-packages, so I think it's okay to remove. It's unclear how to keep this updated with the changes. --- pkgs/development/compilers/gcc/4.6/builder.sh | 262 --------- .../development/compilers/gcc/4.6/default.nix | 530 ------------------ .../compilers/gcc/4.6/ghdl-ortho-cflags.patch | 111 ---- .../compilers/gcc/4.6/hurd-sigrtmin.patch | 14 - .../compilers/gcc/4.6/no-sys-dirs.patch | 54 -- .../development/compilers/gcc/4.6/sources.nix | 27 - 6 files changed, 998 deletions(-) delete mode 100644 pkgs/development/compilers/gcc/4.6/builder.sh delete mode 100644 pkgs/development/compilers/gcc/4.6/default.nix delete mode 100644 pkgs/development/compilers/gcc/4.6/ghdl-ortho-cflags.patch delete mode 100644 pkgs/development/compilers/gcc/4.6/hurd-sigrtmin.patch delete mode 100644 pkgs/development/compilers/gcc/4.6/no-sys-dirs.patch delete mode 100644 pkgs/development/compilers/gcc/4.6/sources.nix diff --git a/pkgs/development/compilers/gcc/4.6/builder.sh b/pkgs/development/compilers/gcc/4.6/builder.sh deleted file mode 100644 index 6a3d93820cf5a..0000000000000 --- a/pkgs/development/compilers/gcc/4.6/builder.sh +++ /dev/null @@ -1,262 +0,0 @@ -source $stdenv/setup - - -export NIX_FIXINC_DUMMY=$NIX_BUILD_TOP/dummy -mkdir $NIX_FIXINC_DUMMY - - -if test "$staticCompiler" = "1"; then - EXTRA_LDFLAGS="-static" -else - EXTRA_LDFLAGS="-Wl,-rpath,$lib/lib" -fi - - -# GCC interprets empty paths as ".", which we don't want. -if test -z "$CPATH"; then unset CPATH; fi -if test -z "$LIBRARY_PATH"; then unset LIBRARY_PATH; fi -echo "\$CPATH is \`$CPATH'" -echo "\$LIBRARY_PATH is \`$LIBRARY_PATH'" - -if test "$noSysDirs" = "1"; then - - if test -e $NIX_CC/nix-support/orig-libc; then - - # Figure out what extra flags to pass to the gcc compilers - # being generated to make sure that they use our glibc. - extraFlags="$(cat $NIX_CC/nix-support/libc-cflags)" - extraLDFlags="$(cat $NIX_CC/nix-support/libc-ldflags || true) $(cat $NIX_CC/nix-support/libc-ldflags-before || true)" - - # Use *real* header files, otherwise a limits.h is generated - # that does not include Glibc's limits.h (notably missing - # SSIZE_MAX, which breaks the build). - export NIX_FIXINC_DUMMY=$libc_dev/include - - # The path to the Glibc binaries such as `crti.o'. - glibc_libdir="$(cat $NIX_CC/nix-support/orig-libc)/lib" - - else - # Hack: support impure environments. - extraFlags="-isystem /usr/include" - extraLDFlags="-L/usr/lib64 -L/usr/lib" - glibc_libdir="/usr/lib" - export NIX_FIXINC_DUMMY=/usr/include - fi - - extraFlags="-I$NIX_FIXINC_DUMMY $extraFlags" - extraLDFlags="-L$glibc_libdir -rpath $glibc_libdir $extraLDFlags" - - # BOOT_CFLAGS defaults to `-g -O2'; since we override it below, - # make sure to explictly add them so that files compiled with the - # bootstrap compiler are optimized and (optionally) contain - # debugging information (info "(gccinstall) Building"). - if test -n "$dontStrip"; then - extraFlags="-O2 -g $extraFlags" - else - # Don't pass `-g' at all; this saves space while building. - extraFlags="-O2 $extraFlags" - fi - - EXTRA_FLAGS="$extraFlags" - for i in $extraLDFlags; do - EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,$i" - done - - if test -n "$targetConfig"; then - # Cross-compiling, we need gcc not to read ./specs in order to build - # the g++ compiler (after the specs for the cross-gcc are created). - # Having LIBRARY_PATH= makes gcc read the specs from ., and the build - # breaks. Having this variable comes from the default.nix code to bring - # gcj in. - unset LIBRARY_PATH - unset CPATH - if test -z "$crossStageStatic"; then - EXTRA_TARGET_CFLAGS="-B${libcCross}/lib -idirafter ${libcCross}/include" - EXTRA_TARGET_LDFLAGS="-Wl,-L${libcCross}/lib" - fi - else - if test -z "$NIX_CC_CROSS"; then - EXTRA_TARGET_CFLAGS="$EXTRA_FLAGS" - EXTRA_TARGET_LDFLAGS="$EXTRA_LDFLAGS" - else - # This the case of cross-building the gcc. - # We need special flags for the target, different than those of the build - # Assertion: - test -e $NIX_CC_CROSS/nix-support/orig-libc - - # Figure out what extra flags to pass to the gcc compilers - # being generated to make sure that they use our glibc. - extraFlags="$(cat $NIX_CC_CROSS/nix-support/libc-cflags)" - extraLDFlags="$(cat $NIX_CC_CROSS/nix-support/libc-ldflags) $(cat $NIX_CC_CROSS/nix-support/libc-ldflags-before)" - - # Use *real* header files, otherwise a limits.h is generated - # that does not include Glibc's limits.h (notably missing - # SSIZE_MAX, which breaks the build). - NIX_FIXINC_DUMMY_CROSS=$(cat $NIX_CC_CROSS/nix-support/orig-libc)/include - - # The path to the Glibc binaries such as `crti.o'. - glibc_libdir="$(cat $NIX_CC_CROSS/nix-support/orig-libc)/lib" - - extraFlags="-I$NIX_FIXINC_DUMMY_CROSS $extraFlags" - extraLDFlags="-L$glibc_libdir -rpath $glibc_libdir $extraLDFlags" - - EXTRA_TARGET_CFLAGS="$extraFlags" - for i in $extraLDFlags; do - EXTRA_TARGET_LDFLAGS="$EXTRA_TARGET_LDFLAGS -Wl,$i" - done - fi - fi - - - # CFLAGS_FOR_TARGET are needed for the libstdc++ configure script to find - # the startfiles. - # FLAGS_FOR_TARGET are needed for the target libraries to receive the -Bxxx - # for the startfiles. - makeFlagsArray=( \ - "${makeFlagsArray[@]}" \ - NATIVE_SYSTEM_HEADER_DIR="$NIX_FIXINC_DUMMY" \ - SYSTEM_HEADER_DIR="$NIX_FIXINC_DUMMY" \ - CFLAGS_FOR_BUILD="$EXTRA_FLAGS $EXTRA_LDFLAGS" \ - CFLAGS_FOR_TARGET="$EXTRA_TARGET_CFLAGS $EXTRA_TARGET_LDFLAGS" \ - FLAGS_FOR_TARGET="$EXTRA_TARGET_CFLAGS $EXTRA_TARGET_LDFLAGS" \ - LDFLAGS_FOR_BUILD="$EXTRA_FLAGS $EXTRA_LDFLAGS" \ - LDFLAGS_FOR_TARGET="$EXTRA_TARGET_LDFLAGS $EXTRA_TARGET_LDFLAGS" \ - ) - - if test -z "$targetConfig"; then - makeFlagsArray=( \ - "${makeFlagsArray[@]}" \ - BOOT_CFLAGS="$EXTRA_FLAGS $EXTRA_LDFLAGS" \ - BOOT_LDFLAGS="$EXTRA_TARGET_CFLAGS $EXTRA_TARGET_LDFLAGS" \ - ) - fi - - if test -n "$targetConfig" -a "$crossStageStatic" == 1; then - # We don't want the gcc build to assume there will be a libc providing - # limits.h in this stagae - makeFlagsArray=( \ - "${makeFlagsArray[@]}" \ - LIMITS_H_TEST=false \ - ) - else - makeFlagsArray=( \ - "${makeFlagsArray[@]}" \ - LIMITS_H_TEST=true \ - ) - fi -fi - -if test -n "$targetConfig"; then - # The host strip will destroy some important details of the objects - dontStrip=1 -fi - - -preConfigure() { - if test -n "$newlibSrc"; then - tar xvf "$newlibSrc" -C .. - ln -s ../newlib-*/newlib newlib - # Patch to get armvt5el working: - sed -i -e 's/ arm)/ arm*)/' newlib/configure.host - fi - # Bug - they packaged zlib - if test -d "zlib"; then - # This breaks the build without-headers, which should build only - # the target libgcc as target libraries. - # See 'configure:5370' - rm -Rf zlib - fi - - if test -f "$NIX_CC/nix-support/orig-libc"; then - # Patch the configure script so it finds glibc headers. It's - # important for example in order not to get libssp built, - # because its functionality is in glibc already. - sed -i \ - -e "s,glibc_header_dir=/usr/include,glibc_header_dir=$libc_dev/include", \ - gcc/configure - fi - - if test -n "$crossMingw" -a -n "$crossStageStatic"; then - mkdir -p ../mingw - # --with-build-sysroot expects that: - cp -R $libcCross/include ../mingw - configureFlags="$configureFlags --with-build-sysroot=`pwd`/.." - fi - - # Perform the build in a different directory. - mkdir ../build - cd ../build - configureScript=../$sourceRoot/configure -} - - -postConfigure() { - # Don't store the configure flags in the resulting executables. - sed -e '/TOPLEVEL_CONFIGURE_ARGUMENTS=/d' -i Makefile -} - - -preInstall() { - # Make ‘lib64’ a symlink to ‘lib’. - if [ -n "$is64bit" -a -z "$enableMultilib" ]; then - mkdir -p $out/lib - ln -s lib $out/lib64 - fi -} - - -postInstall() { - # Move runtime libraries to $lib. - mkdir -p $lib/lib - ln -s lib $lib/lib64 - moveToOutput "lib/lib*.so" "$lib" - moveToOutput "lib/lib*.so.*[0-9]" "$lib" - moveToOutput "lib/*.la" "$lib" - for i in $lib/lib/*.la; do - substituteInPlace $i --replace $out $lib - done - - # Remove precompiled headers for now. They are very big and - # probably not very useful yet. - find $out/include -name "*.gch" -exec rm -rf {} \; -prune - - # Remove `fixincl' to prevent a retained dependency on the - # previous gcc. - rm -rf $out/libexec/gcc/*/*/install-tools - rm -rf $out/lib/gcc/*/*/install-tools - - # More dependencies with the previous gcc or some libs (gccbug stores the build command line) - rm -rf $out/bin/gccbug - - # Take out the bootstrap-tools from the rpath, as it's not needed at all having $out - for i in $out/libexec/gcc/*/*/*; do - if PREV_RPATH=`patchelf --print-rpath $i`; then - patchelf --set-rpath `echo $PREV_RPATH | sed 's,:[^:]*bootstrap-tools/lib,,'` $i - fi - done - - # Get rid of some "fixed" header files - rm -rfv $out/lib/gcc/*/*/include-fixed/{root,linux} - - # Replace hard links for i686-pc-linux-gnu-gcc etc. with symlinks. - for i in $out/bin/*-gcc*; do - if cmp -s $out/bin/gcc $i; then - ln -sfn gcc $i - fi - done - - for i in $out/bin/c++ $out/bin/*-c++* $out/bin/*-g++*; do - if cmp -s $out/bin/g++ $i; then - ln -sfn g++ $i - fi - done - - # Disable RANDMMAP on grsec, which causes segfaults when using - # precompiled headers. - # See https://bugs.gentoo.org/show_bug.cgi?id=301299#c31 - paxmark r $out/libexec/gcc/*/*/{cc1,cc1plus} - - eval "$postInstallGhdl" -} - -genericBuild diff --git a/pkgs/development/compilers/gcc/4.6/default.nix b/pkgs/development/compilers/gcc/4.6/default.nix deleted file mode 100644 index 65b357d4c7a9a..0000000000000 --- a/pkgs/development/compilers/gcc/4.6/default.nix +++ /dev/null @@ -1,530 +0,0 @@ -{ stdenv, fetchurl, noSysDirs -, langC ? true, langCC ? true, langFortran ? false -, langJava ? false -, langAda ? false -, langVhdl ? false -, langGo ? false -, profiledCompiler ? false -, staticCompiler ? false -, enableShared ? true -, texinfo ? null -, perl ? null # optional, for texi2pod (then pod2man); required for Java -, gmp, mpfr, libmpc, gettext, which -, libelf # optional, for link-time optimizations (LTO) -, ppl ? null, cloog ? null # optional, for the Graphite optimization framework. -, zlib ? null, boehmgc ? null -, zip ? null, unzip ? null, pkgconfig ? null, gtk2 ? null, libart_lgpl ? null -, libX11 ? null, libXt ? null, libSM ? null, libICE ? null, libXtst ? null -, libXrender ? null, xproto ? null, renderproto ? null, xextproto ? null -, libXrandr ? null, libXi ? null, inputproto ? null, randrproto ? null -, gnatboot ? null -, enableMultilib ? false -, enablePlugin ? true # whether to support user-supplied plug-ins -, name ? "gcc" -, cross ? null -, binutilsCross ? null -, libcCross ? null -, crossStageStatic ? true -, gnat ? null -, libpthread ? null, libpthreadCross ? null # required for GNU/Hurd -, stripped ? true -, gnused ? null -}: - -assert langJava -> zip != null && unzip != null - && zlib != null && boehmgc != null - && perl != null; # for `--enable-java-home' -assert langAda -> gnatboot != null; -assert langVhdl -> gnat != null; - -# LTO needs libelf and zlib. -assert libelf != null -> zlib != null; - -# Make sure we get GNU sed. -assert stdenv.isDarwin -> gnused != null; - -with stdenv.lib; -with builtins; - -let version = "4.6.4"; - - # Whether building a cross-compiler for GNU/Hurd. - crossGNU = cross != null && cross.config == "i586-pc-gnu"; - - patches = [ ] - ++ optional (cross != null) ../libstdc++-target.patch - ++ optional noSysDirs ./no-sys-dirs.patch - # The GNAT Makefiles did not pay attention to CFLAGS_FOR_TARGET for its - # target libraries and tools. - ++ optional langAda ../gnat-cflags.patch - ++ optional langVhdl ./ghdl-ortho-cflags.patch - ++ optional langFortran ../gfortran-driving.patch - ++ optional (stdenv.isGNU || crossGNU) ./hurd-sigrtmin.patch; - - javaEcj = fetchurl { - # The `$(top_srcdir)/ecj.jar' file is automatically picked up at - # `configure' time. - - # XXX: Eventually we might want to take it from upstream. - url = "ftp://sourceware.org/pub/java/ecj-4.3.jar"; - sha256 = "0jz7hvc0s6iydmhgh5h2m15yza7p2rlss2vkif30vm9y77m97qcx"; - }; - - # Antlr (optional) allows the Java `gjdoc' tool to be built. We want a - # binary distribution here to allow the whole chain to be bootstrapped. - javaAntlr = fetchurl { - url = http://www.antlr.org/download/antlr-3.1.3.jar; - sha256 = "1f41j0y4kjydl71lqlvr73yagrs2jsg1fjymzjz66mjy7al5lh09"; - }; - - xlibs = [ - libX11 libXt libSM libICE libXtst libXrender libXrandr libXi - xproto renderproto xextproto inputproto randrproto - ]; - - javaAwtGtk = langJava && gtk2 != null; - - /* Platform flags */ - platformFlags = let - gccArch = stdenv.lib.attrByPath [ "platform" "gcc" "arch" ] null stdenv; - gccCpu = stdenv.lib.attrByPath [ "platform" "gcc" "cpu" ] null stdenv; - gccAbi = stdenv.lib.attrByPath [ "platform" "gcc" "abi" ] null stdenv; - gccFpu = stdenv.lib.attrByPath [ "platform" "gcc" "fpu" ] null stdenv; - gccFloat = stdenv.lib.attrByPath [ "platform" "gcc" "float" ] null stdenv; - withArch = if gccArch != null then " --with-arch=${gccArch}" else ""; - withCpu = if gccCpu != null then " --with-cpu=${gccCpu}" else ""; - withAbi = if gccAbi != null then " --with-abi=${gccAbi}" else ""; - withFpu = if gccFpu != null then " --with-fpu=${gccFpu}" else ""; - withFloat = if gccFloat != null then " --with-float=${gccFloat}" else ""; - in - (withArch + - withCpu + - withAbi + - withFpu + - withFloat); - - /* Cross-gcc settings */ - crossMingw = (cross != null && cross.libc == "msvcrt"); - crossConfigureFlags = let - gccArch = stdenv.lib.attrByPath [ "gcc" "arch" ] null cross; - gccCpu = stdenv.lib.attrByPath [ "gcc" "cpu" ] null cross; - gccAbi = stdenv.lib.attrByPath [ "gcc" "abi" ] null cross; - gccFpu = stdenv.lib.attrByPath [ "gcc" "fpu" ] null cross; - withArch = if gccArch != null then " --with-arch=${gccArch}" else ""; - withCpu = if gccCpu != null then " --with-cpu=${gccCpu}" else ""; - withAbi = if gccAbi != null then " --with-abi=${gccAbi}" else ""; - withFpu = if gccFpu != null then " --with-fpu=${gccFpu}" else ""; - in - "--target=${cross.config}" + - withArch + - withCpu + - withAbi + - withFpu + - (if crossMingw && crossStageStatic then - " --with-headers=${libcCross}/include" + - " --with-gcc" + - " --with-gnu-as" + - " --with-gnu-ld" + - " --with-gnu-ld" + - " --disable-shared" + - " --disable-nls" + - " --disable-debug" + - " --enable-sjlj-exceptions" + - " --enable-threads=win32" + - " --disable-win32-registry" - else if crossStageStatic then - " --disable-libssp --disable-nls" + - " --without-headers" + - " --disable-threads " + - " --disable-libmudflap " + - " --disable-libgomp " + - " --disable-libquadmath" + - " --disable-shared" + - " --disable-decimal-float" # libdecnumber requires libc - else - " --with-headers=${libcCross}/include" + - " --enable-__cxa_atexit" + - " --enable-long-long" + - (if crossMingw then - " --enable-threads=win32" + - " --enable-sjlj-exceptions" + - " --enable-hash-synchronization" + - " --disable-libssp" + - " --disable-nls" + - " --with-dwarf2" + - # I think noone uses shared gcc libs in mingw, so we better do the same. - # In any case, mingw32 g++ linking is broken by default with shared libs, - # unless adding "-lsupc++" to any linking command. I don't know why. - " --disable-shared" + - # To keep ABI compatibility with upstream mingw-w64 - " --enable-fully-dynamic-string" - else (if cross.libc == "uclibc" then - # In uclibc cases, libgomp needs an additional '-ldl' - # and as I don't know how to pass it, I disable libgomp. - " --disable-libgomp" else "") + - " --enable-threads=posix" + - " --enable-nls" + - " --disable-decimal-float") # No final libdecnumber (it may work only in 386) - ); - stageNameAddon = if crossStageStatic then "-stage-static" else - "-stage-final"; - crossNameAddon = if cross != null then "-${cross.config}" + stageNameAddon else ""; - - bootstrap = cross == null && !stdenv.isArm && !stdenv.isMips; - -in - -# We need all these X libraries when building AWT with GTK+. -assert gtk2 != null -> (filter (x: x == null) xlibs) == []; - -stdenv.mkDerivation ({ - name = "${name}${if stripped then "" else "-debug"}-${version}" + crossNameAddon; - - builder = ./builder.sh; - - srcs = (import ./sources.nix) { - inherit fetchurl optional version; - inherit langC langCC langFortran langJava langAda langGo; - }; - - outputs = [ "out" "lib" ]; - - setOutputFlags = false; - - inherit patches enableMultilib; - - hardeningDisable = [ "format" ]; - - libc_dev = stdenv.cc.libc_dev; - - postPatch = - if (stdenv.isGNU - || (libcCross != null # e.g., building `gcc.crossDrv' - && libcCross ? crossConfig - && libcCross.crossConfig == "i586-pc-gnu") - || (crossGNU && libcCross != null)) - then - # On GNU/Hurd glibc refers to Hurd & Mach headers and libpthread is not - # in glibc, so add the right `-I' flags to the default spec string. - assert libcCross != null -> libpthreadCross != null; - let - libc = if libcCross != null then libcCross else stdenv.glibc; - gnu_h = "gcc/config/gnu.h"; - i386_gnu_h = "gcc/config/i386/gnu.h"; - extraCPPDeps = - libc.propagatedBuildInputs - ++ stdenv.lib.optional (libpthreadCross != null) libpthreadCross - ++ stdenv.lib.optional (libpthread != null) libpthread; - extraCPPSpec = - concatStrings (intersperse " " - (map (x: "-I${x.dev or x}/include") extraCPPDeps)); - extraLibSpec = - if libpthreadCross != null - then "-L${libpthreadCross}/lib ${libpthreadCross.TARGET_LDFLAGS}" - else "-L${libpthread}/lib"; - in - '' echo "augmenting \`CPP_SPEC' in \`${i386_gnu_h}' with \`${extraCPPSpec}'..." - sed -i "${i386_gnu_h}" \ - -es'|CPP_SPEC *"\(.*\)$|CPP_SPEC "${extraCPPSpec} \1|g' - - echo "augmenting \`LIB_SPEC' in \`${gnu_h}' with \`${extraLibSpec}'..." - sed -i "${gnu_h}" \ - -es'|LIB_SPEC *"\(.*\)$|LIB_SPEC "${extraLibSpec} \1|g' - - echo "setting \`NATIVE_SYSTEM_HEADER_DIR' and \`STANDARD_INCLUDE_DIR' to \`${libc.dev}/include'..." - sed -i "${gnu_h}" \ - -es'|#define STANDARD_INCLUDE_DIR.*$|#define STANDARD_INCLUDE_DIR "${libc.dev}/include"|g' - sed -i gcc/config/t-gnu \ - -es'|NATIVE_SYSTEM_HEADER_DIR.*$|NATIVE_SYSTEM_HEADER_DIR = ${libc.dev}/include|g' - '' - else if cross != null || stdenv.cc.libc != null then - # On NixOS, use the right path to the dynamic linker instead of - # `/lib/ld*.so'. - let - libc = if libcCross != null then libcCross else stdenv.cc.libc; - in - '' echo "fixing the \`GLIBC_DYNAMIC_LINKER' and \`UCLIBC_DYNAMIC_LINKER' macros..." - for header in "gcc/config/"*-gnu.h "gcc/config/"*"/"*.h - do - grep -q LIBC_DYNAMIC_LINKER "$header" || continue - echo " fixing \`$header'..." - sed -i "$header" \ - -e 's|define[[:blank:]]*\([UCG]\+\)LIBC_DYNAMIC_LINKER\([0-9]*\)[[:blank:]]"\([^\"]\+\)"$|define \1LIBC_DYNAMIC_LINKER\2 "${libc.out}\3"|g' - done - '' - else null; - - inherit noSysDirs staticCompiler langJava crossStageStatic - libcCross crossMingw; - - nativeBuildInputs = [ texinfo which gettext ] - ++ (optional (perl != null) perl) - ++ (optional javaAwtGtk pkgconfig); - - buildInputs = [ gmp mpfr libmpc libelf ] - ++ (optional (ppl != null) ppl) - ++ (optional (cloog != null) cloog) - ++ (optional (zlib != null) zlib) - ++ (optionals langJava [ boehmgc zip unzip ]) - ++ (optionals javaAwtGtk ([ gtk2 libart_lgpl ] ++ xlibs)) - ++ (optionals (cross != null) [binutilsCross]) - ++ (optionals langAda [gnatboot]) - ++ (optionals langVhdl [gnat]) - - # The builder relies on GNU sed (for instance, Darwin's `sed' fails with - # "-i may not be used with stdin"), and `stdenvNative' doesn't provide it. - ++ (optional stdenv.isDarwin gnused) - ; - - configureFlagsArray = stdenv.lib.optionals - (ppl != null && ppl ? dontDisableStatic && ppl.dontDisableStatic) - [ "--with-host-libstdcxx=-lstdc++ -lgcc_s" ]; - - configureFlags = " - ${if enableMultilib then "--disable-libquadmath" else "--disable-multilib"} - ${if enableShared then "" else "--disable-shared"} - ${if enablePlugin then "--enable-plugin" else ""} - ${if ppl != null then "--with-ppl=${ppl}" else ""} - ${if cloog != null then - "--with-cloog=${cloog} --enable-cloog-backend=isl" - else ""} - ${if langJava then - "--with-ecj-jar=${javaEcj} " + - - # Follow Sun's layout for the convenience of IcedTea/OpenJDK. See - # . - "--enable-java-home --with-java-home=\${prefix}/lib/jvm/jre " - else ""} - ${if javaAwtGtk then "--enable-java-awt=gtk" else ""} - ${if langJava && javaAntlr != null then "--with-antlr-jar=${javaAntlr}" else ""} - --with-gmp=${gmp.dev} - --with-mpfr=${mpfr.dev} - --with-mpc=${libmpc} - ${if libelf != null then "--with-libelf=${libelf}" else ""} - --disable-libstdcxx-pch - --without-included-gettext - --with-system-zlib - --enable-languages=${ - concatStrings (intersperse "," - ( optional langC "c" - ++ optional langCC "c++" - ++ optional langFortran "fortran" - ++ optional langJava "java" - ++ optional langAda "ada" - ++ optional langVhdl "vhdl" - ++ optional langGo "go" - ) - ) - } - ${if langAda then " --enable-libada" else ""} - ${if cross == null && stdenv.isi686 then "--with-arch=i686" else ""} - ${if cross != null then crossConfigureFlags else ""} - ${if !bootstrap then "--disable-bootstrap" else ""} - ${if cross == null then platformFlags else ""} - "; - - targetConfig = if cross != null then cross.config else null; - - buildFlags = if bootstrap then - (if profiledCompiler then "profiledbootstrap" else "bootstrap") - else ""; - - installTargets = - if stripped - then "install-strip" - else "install"; - - crossAttrs = { - patches = patches ++ [ ./hurd-sigrtmin.patch ]; - postPatch = ""; - AR = "${stdenv.cross.config}-ar"; - LD = "${stdenv.cross.config}-ld"; - CC = "${stdenv.cross.config}-gcc"; - CXX = "${stdenv.cross.config}-gcc"; - AR_FOR_TARGET = "${stdenv.cross.config}-ar"; - LD_FOR_TARGET = "${stdenv.cross.config}-ld"; - CC_FOR_TARGET = "${stdenv.cross.config}-gcc"; - NM_FOR_TARGET = "${stdenv.cross.config}-nm"; - CXX_FOR_TARGET = "${stdenv.cross.config}-g++"; - # If we are making a cross compiler, cross != null - NIX_CC_CROSS = if cross == null then "${stdenv.ccCross}" else ""; - dontStrip = true; - configureFlags = '' - ${if enableMultilib then "" else "--disable-multilib"} - ${if enableShared then "" else "--disable-shared"} - ${if ppl != null then "--with-ppl=${ppl.crossDrv}" else ""} - ${if cloog != null then "--with-cloog=${cloog.crossDrv} --enable-cloog-backend=isl" else ""} - ${if langJava then "--with-ecj-jar=${javaEcj.crossDrv}" else ""} - ${if javaAwtGtk then "--enable-java-awt=gtk" else ""} - ${if langJava && javaAntlr != null then "--with-antlr-jar=${javaAntlr.crossDrv}" else ""} - --with-gmp=${gmp.crossDrv} - --with-mpfr=${mpfr.crossDrv} - --with-mpc=${libmpc.crossDrv} - --disable-libstdcxx-pch - --without-included-gettext - --with-system-zlib - --enable-languages=${ - concatStrings (intersperse "," - ( optional langC "c" - ++ optional langCC "c++" - ++ optional langFortran "fortran" - ++ optional langJava "java" - ++ optional langAda "ada" - ++ optional langVhdl "vhdl" - ++ optional langGo "go" - ) - ) - } - ${if langAda then " --enable-libada" else ""} - ${if cross == null && stdenv.isi686 then "--with-arch=i686" else ""} - ${if cross != null then crossConfigureFlags else ""} - --target=${stdenv.cross.config} - ''; - buildFlags = ""; - }; - - - # Needed for the cross compilation to work - AR = "ar"; - LD = "ld"; - CC = "gcc"; - - # Setting $CPATH and $LIBRARY_PATH to make sure both `gcc' and `xgcc' find - # the library headers and binaries, regarless of the language being - # compiled. - - # Note: When building the Java AWT GTK+ peer, the build system doesn't - # honor `--with-gmp' et al., e.g., when building - # `libjava/classpath/native/jni/java-math/gnu_java_math_GMP.c', so we just - # add them to $CPATH and $LIBRARY_PATH in this case. - # - # Likewise, the LTO code doesn't find zlib. - - CPATH = concatStrings - (intersperse ":" (map (x: "${x.dev or x}/include") - (optionals (zlib != null) [ zlib ] - ++ optionals langJava [ boehmgc ] - ++ optionals javaAwtGtk xlibs - ++ optionals javaAwtGtk [ gmp mpfr ] - ++ optional (libpthread != null) libpthread - ++ optional (libpthreadCross != null) libpthreadCross - - # On GNU/Hurd glibc refers to Mach & Hurd - # headers. - ++ optionals (libcCross != null && - hasAttr "propagatedBuildInputs" libcCross) - libcCross.propagatedBuildInputs))); - - LIBRARY_PATH = concatStrings - (intersperse ":" (map (x: x + "/lib") - (optionals (zlib != null) [ zlib ] - ++ optionals langJava [ boehmgc ] - ++ optionals javaAwtGtk xlibs - ++ optionals javaAwtGtk [ gmp mpfr ] - ++ optional (libpthread != null) libpthread))); - - EXTRA_TARGET_CFLAGS = - if cross != null && libcCross != null then [ - "-idirafter ${libcCross.dev}/include" - ] - ++ optionals (! crossStageStatic) [ - "-B${libcCross.out}/lib" - ] - else null; - - EXTRA_TARGET_LDFLAGS = - if cross != null && libcCross != null then [ - "-Wl,-L${libcCross.out}/lib" - ] - ++ (if crossStageStatic then [ - "-B${libcCross.out}/lib" - ] else [ - "-Wl,-rpath,${libcCross.out}/lib" - "-Wl,-rpath-link,${libcCross.out}/lib" - ]) - ++ optionals (libpthreadCross != null) [ - "-L${libpthreadCross}/lib" - "-Wl,${libpthreadCross.TARGET_LDFLAGS}" - ] - else null; - - passthru = { inherit langC langCC langAda langFortran langVhdl - langGo version; isGNU = true; }; - - enableParallelBuilding = false; - - inherit (stdenv) is64bit; - - meta = { - homepage = http://gcc.gnu.org/; - license = stdenv.lib.licenses.gpl3Plus; # runtime support libraries are typically LGPLv3+ - description = "GNU Compiler Collection, version ${version}" - + (if stripped then "" else " (with debugging info)"); - - longDescription = '' - The GNU Compiler Collection includes compiler front ends for C, C++, - Objective-C, Fortran, OpenMP for C/C++/Fortran, Java, and Ada, as well - as libraries for these languages (libstdc++, libgcj, libgomp,...). - - GCC development is a part of the GNU Project, aiming to improve the - compiler used in the GNU system including the GNU/Linux variant. - ''; - - maintainers = [ - stdenv.lib.maintainers.viric - ]; - - # Volunteers needed for the {Cyg,Dar}win ports of *PPL. - # gnatboot is not available out of linux platforms, so we disable the darwin build - # for the gnat (ada compiler). - platforms = - stdenv.lib.platforms.linux ++ - stdenv.lib.platforms.freebsd ++ - optionals (langAda == false) stdenv.lib.platforms.darwin; - }; -} - -// optionalAttrs (cross != null && cross.libc == "msvcrt" && crossStageStatic) { - makeFlags = [ "all-gcc" "all-target-libgcc" ]; - installTargets = "install-gcc install-target-libgcc"; -} - -# Strip kills static libs of other archs (hence cross != null) -// optionalAttrs (!stripped || cross != null) { dontStrip = true; NIX_STRIP_DEBUG = 0; } - -// optionalAttrs (enableMultilib) { dontMoveLib64 = true; } - -// optionalAttrs langVhdl rec { - name = "ghdl-0.29"; - - ghdlSrc = fetchurl { - url = "http://ghdl.free.fr/ghdl-0.29.tar.bz2"; - sha256 = "15mlinr1lwljwll9ampzcfcrk9bk0qpdks1kxlvb70xf9zhh2jva"; - }; - - # Ghdl has some timestamps checks, storing file timestamps in '.cf' files. - # As we will change the timestamps to 1970-01-01 00:00:01, we also set the - # content of that .cf to that value. This way ghdl does not complain on - # the installed object files from the basic libraries (ieee, ...) - postInstallGhdl = '' - pushd $out - find . -name "*.cf" -exec \ - sed 's/[0-9]*\.000" /19700101000001.000" /g' -i {} \; - popd - ''; - - postUnpack = '' - tar xvf ${ghdlSrc} - mv ghdl-*/vhdl gcc*/gcc - rm -Rf ghdl-* - ''; - - meta = { - homepage = "http://ghdl.free.fr/"; - license = stdenv.lib.licenses.gpl2Plus; - description = "Complete VHDL simulator, using the GCC technology (gcc ${version})"; - maintainers = with stdenv.lib.maintainers; [viric]; - platforms = with stdenv.lib.platforms; linux; - }; - -}) diff --git a/pkgs/development/compilers/gcc/4.6/ghdl-ortho-cflags.patch b/pkgs/development/compilers/gcc/4.6/ghdl-ortho-cflags.patch deleted file mode 100644 index 901534591c8f1..0000000000000 --- a/pkgs/development/compilers/gcc/4.6/ghdl-ortho-cflags.patch +++ /dev/null @@ -1,111 +0,0 @@ -diff --git a/gcc/vhdl/Make-lang.in b/gcc/vhdl/Make-lang.in -index 8f481df..681ac59 100644 ---- a/gcc/vhdl/Make-lang.in -+++ b/gcc/vhdl/Make-lang.in -@@ -96,7 +96,7 @@ AGCC_GCCOBJ_DIR=../ - AGCC_INC_FLAGS=-I$(AGCC_GCCOBJ_DIR)/gcc -I$(AGCC_GCCSRC_DIR)/include \ - -I$(AGCC_GCCSRC_DIR)/gcc -I$(AGCC_GCCSRC_DIR)/gcc/config \ - -I$(AGCC_GCCSRC_DIR)/libcpp/include --AGCC_CFLAGS=-g -Wall -DIN_GCC $(AGCC_INC_FLAGS) -+AGCC_CFLAGS=-g -Wall -DIN_GCC $(AGCC_INC_FLAGS) $(CFLAGS) $(INCLUDES) - - AGCC_LOCAL_OBJS=ortho-lang.o - -@@ -140,7 +140,7 @@ ghdl$(exeext): force - - # Ghdl libraries. - ghdllib: ghdl$(exeext) $(GCC_PASSES) force -- $(MAKE_IN_VHDL) GRT_FLAGS="-O -g" ghdllib -+ $(MAKE_IN_VHDL) GRT_FLAGS="-O -g $(CFLAGS)" ghdllib - - # Build hooks: - -diff --git a/gcc/vhdl/Makefile.in b/gcc/vhdl/Makefile.in -index d754c6c..07abc4a 100644 ---- a/gcc/vhdl/Makefile.in -+++ b/gcc/vhdl/Makefile.in -@@ -80,7 +80,8 @@ T_CPPFLAGS = - X_ADAFLAGS = - T_ADAFLAGS = - --ADAC = $(CC) -+# Never use the bootstrapped compiler, as it may not be built for ada -+ADAC = gcc - - ECHO = echo - CHMOD = chmod -diff --git a/gcc/vhdl/ortho-lang.c b/gcc/vhdl/ortho-lang.c -index 84aeb92..8eddd42 100644 ---- a/gcc/vhdl/ortho-lang.c -+++ b/gcc/vhdl/ortho-lang.c -@@ -16,6 +16,7 @@ - #include "options.h" - #include "real.h" --#include "tree-gimple.h" -+#include "gimple.h" -+#include "tree.h" - #include "function.h" - #include "cgraph.h" - #include "target.h" -@@ -680,38 +681,10 @@ type_for_mode (enum machine_mode mode, int unsignedp) - - const struct lang_hooks lang_hooks = LANG_HOOKS_INITIALIZER; - --/* Tree code classes. */ -- --#define DEFTREECODE(SYM, NAME, TYPE, LENGTH) TYPE, -- --const enum tree_code_class tree_code_type[] = { --#include "tree.def" -- 'x' --}; --#undef DEFTREECODE -- --/* Table indexed by tree code giving number of expression -- operands beyond the fixed part of the node structure. -- Not used for types or decls. */ -- --#define DEFTREECODE(SYM, NAME, TYPE, LENGTH) LENGTH, -- --const unsigned char tree_code_length[] = { --#include "tree.def" -- 0 --}; --#undef DEFTREECODE -- --#define DEFTREECODE(SYM, NAME, TYPE, LENGTH) NAME, --const char * const tree_code_name[] = { --#include "tree.def" -- "@@dummy" --}; --#undef DEFTREECODE - - union lang_tree_node - GTY((desc ("0"), -- chain_next ("(union lang_tree_node *) GENERIC_NEXT (&%h.generic)"))) -+ chain_next ("(union lang_tree_node *) TREE_CHAIN (&%h.generic)"))) - { - union tree_node GTY ((tag ("0"))) generic; - }; -@@ -1162,7 +1135,7 @@ new_access_type (tree dtype) - res = make_node (POINTER_TYPE); - TREE_TYPE (res) = NULL_TREE; - /* Seems necessary. */ -- TYPE_MODE (res) = Pmode; -+ SET_TYPE_MODE (res, Pmode); - layout_type (res); - return res; - } -diff --git a/gcc/vhdl/Make-lang.in b/gcc/vhdl/Make-lang.in -index e201f64..f36fb97 100644 ---- a/gcc/vhdl/Make-lang.in -+++ b/gcc/vhdl/Make-lang.in -@@ -132,7 +132,7 @@ ghdl1$(exeext): $(AGCC_OBJS) $(AGCC_DEPS) force - -cargs $(CFLAGS) $(GHDL_ADAFLAGS) - $(GNATMAKE) -o $@ -aI$(srcdir)/vhdl -aOvhdl ortho_gcc-main \ - -bargs -E -cargs $(CFLAGS) $(GHDL_ADAFLAGS) \ -- -largs $(AGCC_OBJS) $(LIBS) $(GMPLIBS) -+ -largs $(AGCC_OBJS) $(LIBS) $(GMPLIBS) $(CLOOGLIBS) $(PPLLIBS) - - # The driver for ghdl. - ghdl$(exeext): force diff --git a/pkgs/development/compilers/gcc/4.6/hurd-sigrtmin.patch b/pkgs/development/compilers/gcc/4.6/hurd-sigrtmin.patch deleted file mode 100644 index dc8236d2b99fe..0000000000000 --- a/pkgs/development/compilers/gcc/4.6/hurd-sigrtmin.patch +++ /dev/null @@ -1,14 +0,0 @@ -GNU libc on GNU/Hurd doesn't define `__SIGRTMIN'. -From . - ---- a/libgcc/generic-morestack.c 2011-12-19 21:14:52.000000000 +0100 -+++ b/libgcc/generic-morestack.c 2011-12-19 21:15:35.000000000 +0100 -@@ -507,7 +507,7 @@ - sigemptyset (&__morestack_initial_sp.mask); - - sigfillset (&__morestack_fullmask); --#ifdef __GLIBC__ -+#if defined(__GLIBC__) && defined(__SIGRTMIN) - /* In glibc, the first two real time signals are used by the NPTL - threading library. By taking them out of the set of signals, we - avoiding copying the signal mask in pthread_sigmask. More diff --git a/pkgs/development/compilers/gcc/4.6/no-sys-dirs.patch b/pkgs/development/compilers/gcc/4.6/no-sys-dirs.patch deleted file mode 100644 index 8128fa87da5fd..0000000000000 --- a/pkgs/development/compilers/gcc/4.6/no-sys-dirs.patch +++ /dev/null @@ -1,54 +0,0 @@ -diff -ru gcc-4.3.1-orig/gcc/cppdefault.c gcc-4.3.1/gcc/cppdefault.c ---- gcc-4.3.1-orig/gcc/cppdefault.c 2007-07-26 10:37:01.000000000 +0200 -+++ gcc-4.3.1/gcc/cppdefault.c 2008-06-25 17:48:23.000000000 +0200 -@@ -41,6 +41,10 @@ - # undef CROSS_INCLUDE_DIR - #endif - -+#undef LOCAL_INCLUDE_DIR -+#undef SYSTEM_INCLUDE_DIR -+#undef STANDARD_INCLUDE_DIR -+ - const struct default_include cpp_include_defaults[] - #ifdef INCLUDE_DEFAULTS - = INCLUDE_DEFAULTS; -diff -ru gcc-4.3.1-orig/gcc/gcc.c gcc-4.3.1/gcc/gcc.c ---- gcc-4.3.1-orig/gcc/gcc.c 2008-03-02 23:55:19.000000000 +0100 -+++ gcc-4.3.1/gcc/gcc.c 2008-06-25 17:52:53.000000000 +0200 -@@ -1478,10 +1478,10 @@ - /* Default prefixes to attach to command names. */ - - #ifndef STANDARD_STARTFILE_PREFIX_1 --#define STANDARD_STARTFILE_PREFIX_1 "/lib/" -+#define STANDARD_STARTFILE_PREFIX_1 "" - #endif - #ifndef STANDARD_STARTFILE_PREFIX_2 --#define STANDARD_STARTFILE_PREFIX_2 "/usr/lib/" -+#define STANDARD_STARTFILE_PREFIX_2 "" - #endif - - #ifdef CROSS_DIRECTORY_STRUCTURE /* Don't use these prefixes for a cross compiler. */ ---- gcc-4.3.1-orig/gcc/Makefile.in 2008-05-11 20:54:15.000000000 +0200 -+++ gcc-4.3.1/gcc/Makefile.in 2008-06-25 17:48:23.000000000 +0200 -@@ -378,7 +378,11 @@ - MD5_H = $(srcdir)/../include/md5.h - - # Default native SYSTEM_HEADER_DIR, to be overridden by targets. --NATIVE_SYSTEM_HEADER_DIR = /usr/include -+# Nix: we override NATIVE_SYSTEM_HEADER_DIR in order to prevent -+# `fixinc' from fixing header files in /usr/include. However, -+# NATIVE_SYSTEM_HEADER_DIR must point to an existing directory, so set -+# it to some dummy directory. -+NATIVE_SYSTEM_HEADER_DIR = $(NIX_FIXINC_DUMMY) - # Default cross SYSTEM_HEADER_DIR, to be overridden by targets. - CROSS_SYSTEM_HEADER_DIR = @CROSS_SYSTEM_HEADER_DIR@ - -@@ -3277,7 +3281,7 @@ - -DGPLUSPLUS_INCLUDE_DIR=\"$(gcc_gxx_include_dir)\" \ - -DGPLUSPLUS_TOOL_INCLUDE_DIR=\"$(gcc_gxx_include_dir)/$(target_noncanonical)\" \ - -DGPLUSPLUS_BACKWARD_INCLUDE_DIR=\"$(gcc_gxx_include_dir)/backward\" \ -- -DLOCAL_INCLUDE_DIR=\"$(local_includedir)\" \ -+ -DLOCAL_INCLUDE_DIR=\"/no-such-dir\" \ - -DCROSS_INCLUDE_DIR=\"$(CROSS_SYSTEM_HEADER_DIR)\" \ - -DTOOL_INCLUDE_DIR=\"$(gcc_tooldir)/include\" \ - -DPREFIX=\"$(prefix)/\" \ diff --git a/pkgs/development/compilers/gcc/4.6/sources.nix b/pkgs/development/compilers/gcc/4.6/sources.nix deleted file mode 100644 index ca50160def46a..0000000000000 --- a/pkgs/development/compilers/gcc/4.6/sources.nix +++ /dev/null @@ -1,27 +0,0 @@ -/* Automatically generated by `update-gcc.sh', do not edit. - For GCC 4.6.4. */ -{ fetchurl, optional, version, langC, langCC, langFortran, langJava, langAda, - langGo }: - -assert version == "4.6.4"; -optional /* langC */ true (fetchurl { - url = "mirror://gcc/releases/gcc-${version}/gcc-core-${version}.tar.bz2"; - sha256 = "48b566f1288f099dff8fba868499a320f83586245ec69b8c82a9042566a5bf62"; -}) ++ -optional langCC (fetchurl { - url = "mirror://gcc/releases/gcc-${version}/gcc-g++-${version}.tar.bz2"; - sha256 = "4eaa347f9cd3ab7d5e14efbb9c5c03009229cd714b558fc55fa56e8996b74d42"; -}) ++ -optional langFortran (fetchurl { - url = "mirror://gcc/releases/gcc-${version}/gcc-fortran-${version}.tar.bz2"; - sha256 = "4f402e0d27995a02354570f0a63047f27463c72c62f1ba3c08ef5a7c6c9c3d1c"; -}) ++ -optional langJava (fetchurl { - url = "mirror://gcc/releases/gcc-${version}/gcc-java-${version}.tar.bz2"; - sha256 = "4441d0c3cc04f2162f981c6b4bf29cdd9f6c16d294ce24c6bc4a05d8277abf28"; -}) ++ -optional langAda (fetchurl { - url = "mirror://gcc/releases/gcc-${version}/gcc-ada-${version}.tar.bz2"; - sha256 = "2a09bbf942b2557839722d4807e67559123037356f5cb1a3b12f44539968d0ad"; -}) ++ -[] From 8610a344740776639f7161e5a47196418695d6fe Mon Sep 17 00:00:00 2001 From: Matthew Bauer Date: Wed, 14 Sep 2016 22:19:28 -0500 Subject: [PATCH 6/6] gcc: use special native system headers for darwin Darwin systems need to be able to find CoreFoundation headers as well as libc headers. Somehow, gcc doesn't accept any "framework" parameters that would normally be used to include CoreFoundation in this situation. HACK: Instead, this adds a derivation that combines the two. The result works but probably not a good long term solution. ALTERNATIVES: Maybe sending patches in to GCC to allow "native-system-framework" configure flag to get this found. --- .../development/compilers/gcc/4.8/default.nix | 5 ++++- .../development/compilers/gcc/4.9/default.nix | 5 ++++- pkgs/development/compilers/gcc/5/default.nix | 5 ++++- pkgs/development/compilers/gcc/6/default.nix | 5 ++++- .../darwin/usr-include/default.nix | 21 +++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 ++ 6 files changed, 39 insertions(+), 4 deletions(-) create mode 100644 pkgs/os-specific/darwin/usr-include/default.nix diff --git a/pkgs/development/compilers/gcc/4.8/default.nix b/pkgs/development/compilers/gcc/4.8/default.nix index 1b9e4bf666cfd..088e06835720d 100644 --- a/pkgs/development/compilers/gcc/4.8/default.nix +++ b/pkgs/development/compilers/gcc/4.8/default.nix @@ -33,6 +33,7 @@ , libpthread ? null, libpthreadCross ? null # required for GNU/Hurd , stripped ? true , gnused ? null +, darwin ? null }: assert langJava -> zip != null && unzip != null @@ -358,7 +359,9 @@ stdenv.mkDerivation ({ ) } ${if cross == null - then " --with-native-system-header-dir=${getDev stdenv.libc}/include" + then if stdenv.isDarwin + then " --with-native-system-header-dir=${darwin.usr-include}" + else " --with-native-system-header-dir=${getDev stdenv.libc}/include" else ""} ${if langAda then " --enable-libada" else ""} ${if cross == null && stdenv.isi686 then "--with-arch=i686" else ""} diff --git a/pkgs/development/compilers/gcc/4.9/default.nix b/pkgs/development/compilers/gcc/4.9/default.nix index 71edda0937f8d..1db7dadb1e3f2 100644 --- a/pkgs/development/compilers/gcc/4.9/default.nix +++ b/pkgs/development/compilers/gcc/4.9/default.nix @@ -33,6 +33,7 @@ , libpthread ? null, libpthreadCross ? null # required for GNU/Hurd , stripped ? true , gnused ? null +, darwin ? null }: assert langJava -> zip != null && unzip != null @@ -365,7 +366,9 @@ stdenv.mkDerivation ({ ) } ${if cross == null - then " --with-native-system-header-dir=${getDev stdenv.libc}/include" + then if stdenv.isDarwin + then " --with-native-system-header-dir=${darwin.usr-include}" + else " --with-native-system-header-dir=${getDev stdenv.libc}/include" else ""} ${if langAda then " --enable-libada" else ""} ${if cross == null && stdenv.isi686 then "--with-arch=i686" else ""} diff --git a/pkgs/development/compilers/gcc/5/default.nix b/pkgs/development/compilers/gcc/5/default.nix index e84c677408c33..c1db89d7c384e 100644 --- a/pkgs/development/compilers/gcc/5/default.nix +++ b/pkgs/development/compilers/gcc/5/default.nix @@ -35,6 +35,7 @@ , gnused ? null , binutils ? null , cloog # unused; just for compat with gcc4, as we override the parameter on some places +, darwin ? null }: assert langJava -> zip != null && unzip != null @@ -363,7 +364,9 @@ stdenv.mkDerivation ({ ) } ${if cross == null - then " --with-native-system-header-dir=${getDev stdenv.libc}/include" + then if stdenv.isDarwin + then " --with-native-system-header-dir=${darwin.usr-include}" + else " --with-native-system-header-dir=${getDev stdenv.libc}/include" else ""} ${if langAda then " --enable-libada" else ""} ${if cross == null && stdenv.isi686 then "--with-arch=i686" else ""} diff --git a/pkgs/development/compilers/gcc/6/default.nix b/pkgs/development/compilers/gcc/6/default.nix index b33437ee868ca..530d835620afb 100644 --- a/pkgs/development/compilers/gcc/6/default.nix +++ b/pkgs/development/compilers/gcc/6/default.nix @@ -35,6 +35,7 @@ , gnused ? null , binutils ? null , cloog # unused; just for compat with gcc4, as we override the parameter on some places +, darwin ? null }: assert langJava -> zip != null && unzip != null @@ -361,7 +362,9 @@ stdenv.mkDerivation ({ ) } ${if cross == null - then " --with-native-system-header-dir=${getDev stdenv.libc}/include" + then if stdenv.isDarwin + then " --with-native-system-header-dir=${darwin.usr-include}" + else " --with-native-system-header-dir=${getDev stdenv.libc}/include" else ""} ${if langAda then " --enable-libada" else ""} ${if cross == null && stdenv.isi686 then "--with-arch=i686" else ""} diff --git a/pkgs/os-specific/darwin/usr-include/default.nix b/pkgs/os-specific/darwin/usr-include/default.nix new file mode 100644 index 0000000000000..c5f7e3acce7ea --- /dev/null +++ b/pkgs/os-specific/darwin/usr-include/default.nix @@ -0,0 +1,21 @@ +{stdenv, darwin}: + +/* + * This is needed to build GCC on Darwin. + * + * These are the collection of headers that would normally be available under + * /usr/include in OS X machines with command line tools installed. They need + * to be in one folder for gcc to use them correctly. + */ + +stdenv.mkDerivation { + name = "darwin-usr-include"; + buildInputs = [ darwin.CF stdenv.libc ]; + buildCommand = '' + mkdir -p $out + cd $out + ln -sf ${stdenv.libc}/include/* . + mkdir CoreFoundation + ln -sf ${darwin.CF}/Library/Frameworks/CoreFoundation.framework/Headers/* CoreFoundation + ''; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index ad5f72d7d6042..26ea7b3ca056c 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -10958,6 +10958,8 @@ in libobjc = apple-source-releases.objc4; stubs = callPackages ../os-specific/darwin/stubs {}; + + usr-include = callPackage ../os-specific/darwin/macheaders.nix {}; }; devicemapper = lvm2;