diff options
author | Frederik Rietdijk <fridh@fridh.nl> | 2020-05-24 10:03:22 +0200 |
---|---|---|
committer | Frederik Rietdijk <fridh@fridh.nl> | 2020-05-24 10:03:22 +0200 |
commit | c778596f56c687318543e5b13af2864fdf79408d (patch) | |
tree | cf158807a522f345506b89370923bb5a7db157bd /pkgs/development/compilers/gcc | |
parent | b34551384a0b96ee59ddf5b9290da59ad8987473 (diff) | |
parent | bcb05f050e902265bd4b26566cb9b3f26b7b2b02 (diff) | |
download | nixlib-c778596f56c687318543e5b13af2864fdf79408d.tar nixlib-c778596f56c687318543e5b13af2864fdf79408d.tar.gz nixlib-c778596f56c687318543e5b13af2864fdf79408d.tar.bz2 nixlib-c778596f56c687318543e5b13af2864fdf79408d.tar.lz nixlib-c778596f56c687318543e5b13af2864fdf79408d.tar.xz nixlib-c778596f56c687318543e5b13af2864fdf79408d.tar.zst nixlib-c778596f56c687318543e5b13af2864fdf79408d.zip |
Merge master into staging-next
Diffstat (limited to 'pkgs/development/compilers/gcc')
4 files changed, 141 insertions, 11 deletions
diff --git a/pkgs/development/compilers/gcc/9/default.nix b/pkgs/development/compilers/gcc/9/default.nix index 7a5535e2a89a..fadfdfa47a89 100644 --- a/pkgs/development/compilers/gcc/9/default.nix +++ b/pkgs/development/compilers/gcc/9/default.nix @@ -3,6 +3,7 @@ , langAda ? false , langObjC ? stdenv.targetPlatform.isDarwin , langObjCpp ? stdenv.targetPlatform.isDarwin +, langD ? false , langGo ? false , profiledCompiler ? false , langJit ? false @@ -59,6 +60,7 @@ let majorVersion = "9"; sha256 = ""; # TODO: uncomment and check hash when available. }) */ ++ optional langAda ../gnat-cflags.patch + ++ optional langD ../libphobos.patch ++ optional langFortran ../gfortran-driving.patch ++ optional (targetPlatform.libc == "musl" && targetPlatform.isPower) ../ppc-musl.patch ++ optional (!crossStageStatic && targetPlatform.isMinGW) (fetchpatch { @@ -137,10 +139,10 @@ stdenv.mkDerivation ({ ) else "") + stdenv.lib.optionalString targetPlatform.isAvr '' - makeFlagsArray+=( - 'LIMITS_H_TEST=false' - ) - ''; + makeFlagsArray+=( + 'LIMITS_H_TEST=false' + ) + ''; inherit noSysDirs staticCompiler crossStageStatic libcCross crossMingw; @@ -197,6 +199,7 @@ stdenv.mkDerivation ({ enableShared langC + langD langCC langFortran langAda @@ -237,14 +240,14 @@ stdenv.mkDerivation ({ inherit (import ../common/extra-target-flags.nix { - inherit stdenv crossStageStatic libcCross threadsCross; + inherit stdenv crossStageStatic langD libcCross threadsCross; }) EXTRA_TARGET_FLAGS EXTRA_TARGET_LDFLAGS ; passthru = { - inherit langC langCC langObjC langObjCpp langAda langFortran langGo version; + inherit langC langCC langObjC langObjCpp langAda langFortran langGo langD version; isGNU = true; }; diff --git a/pkgs/development/compilers/gcc/common/configure-flags.nix b/pkgs/development/compilers/gcc/common/configure-flags.nix index fd2c8c4c6849..be7f3df42de9 100644 --- a/pkgs/development/compilers/gcc/common/configure-flags.nix +++ b/pkgs/development/compilers/gcc/common/configure-flags.nix @@ -14,6 +14,7 @@ , langC , langCC +, langD ? false , langFortran , langJava ? false, javaAwtGtk ? false, javaAntlr ? null, javaEcj ? null , langAda ? false @@ -115,6 +116,7 @@ let lib.concatStrings (lib.intersperse "," ( lib.optional langC "c" ++ lib.optional langCC "c++" + ++ lib.optional langD "d" ++ lib.optional langFortran "fortran" ++ lib.optional langJava "java" ++ lib.optional langAda "ada" @@ -175,7 +177,13 @@ let "--disable-symvers" "libat_cv_have_ifunc=no" "--disable-gnu-indirect-function" - ] ++ lib.optional langJit "--enable-host-shared" + ] + ++ lib.optionals langJit [ + "--enable-host-shared" + ] + ++ lib.optionals (langD) [ + "--with-target-system-zlib=yes" + ] ; in configureFlags diff --git a/pkgs/development/compilers/gcc/common/extra-target-flags.nix b/pkgs/development/compilers/gcc/common/extra-target-flags.nix index bce9a8d47381..f1696f182c04 100644 --- a/pkgs/development/compilers/gcc/common/extra-target-flags.nix +++ b/pkgs/development/compilers/gcc/common/extra-target-flags.nix @@ -1,4 +1,4 @@ -{ stdenv, crossStageStatic, libcCross, threadsCross }: +{ stdenv, crossStageStatic, langD ? false, libcCross, threadsCross }: let inherit (stdenv) lib hostPlatform targetPlatform; @@ -6,13 +6,13 @@ in { EXTRA_TARGET_FLAGS = let - mkFlags = dep: lib.optionals (targetPlatform != hostPlatform && dep != null) ([ + mkFlags = dep: langD: lib.optionals (targetPlatform != hostPlatform && dep != null && !langD) ([ "-idirafter ${lib.getDev dep}${dep.incdir or "/include"}" ] ++ stdenv.lib.optionals (! crossStageStatic) [ "-B${lib.getLib dep}${dep.libdir or "/lib"}" ]); - in mkFlags libcCross - ++ lib.optionals (!crossStageStatic) (mkFlags threadsCross) + in mkFlags libcCross langD + ++ lib.optionals (!crossStageStatic) (mkFlags threadsCross langD) ; EXTRA_TARGET_LDFLAGS = let diff --git a/pkgs/development/compilers/gcc/libphobos.patch b/pkgs/development/compilers/gcc/libphobos.patch new file mode 100644 index 000000000000..a16ea5416ffb --- /dev/null +++ b/pkgs/development/compilers/gcc/libphobos.patch @@ -0,0 +1,119 @@ +diff --git a/Makefile.in b/Makefile.in +index a375471..83c5ecb 100644 +--- a/Makefile.in ++++ b/Makefile.in +@@ -804,7 +804,7 @@ BASE_FLAGS_TO_PASS = \ + "STAGE1_LANGUAGES=$(STAGE1_LANGUAGES)" \ + "GNATBIND=$(GNATBIND)" \ + "GNATMAKE=$(GNATMAKE)" \ +- "GDC=$(GDC)" \ ++ "`echo 'GDC=$(GDC)' | sed -e 's/-idirafter [^ ]*//g'`" \ + "GDCFLAGS=$(GDCFLAGS)" \ + "AR_FOR_TARGET=$(AR_FOR_TARGET)" \ + "AS_FOR_TARGET=$(AS_FOR_TARGET)" \ +@@ -817,7 +817,7 @@ BASE_FLAGS_TO_PASS = \ + "GFORTRAN_FOR_TARGET=$(GFORTRAN_FOR_TARGET)" \ + "GOC_FOR_TARGET=$(GOC_FOR_TARGET)" \ + "GOCFLAGS_FOR_TARGET=$(GOCFLAGS_FOR_TARGET)" \ +- "GDC_FOR_TARGET=$(GDC_FOR_TARGET)" \ ++ "`echo 'GDC_FOR_TARGET=$(GDC_FOR_TARGET)' | sed -e 's/-idirafter [^ ]*//g'`" \ + "GDCFLAGS_FOR_TARGET=$(GDCFLAGS_FOR_TARGET)" \ + "LD_FOR_TARGET=$(LD_FOR_TARGET)" \ + "LIPO_FOR_TARGET=$(LIPO_FOR_TARGET)" \ +@@ -890,7 +890,7 @@ EXTRA_HOST_FLAGS = \ + 'DLLTOOL=$(DLLTOOL)' \ + 'GFORTRAN=$(GFORTRAN)' \ + 'GOC=$(GOC)' \ +- 'GDC=$(GDC)' \ ++ "`echo 'GDC=$(GDC)' | sed -e 's/-idirafter [^ ]*//g'`" \ + 'LD=$(LD)' \ + 'LIPO=$(LIPO)' \ + 'NM=$(NM)' \ +@@ -966,8 +966,11 @@ EXTRA_TARGET_FLAGS = \ + 'STAGE1_LDFLAGS=$$(POSTSTAGE1_LDFLAGS)' \ + 'STAGE1_LIBS=$$(POSTSTAGE1_LIBS)' \ + "TFLAGS=$$TFLAGS" ++EXTRA_TARGET_FLAGS_D = \ ++ "`echo $(EXTRA_TARGET_FLAGS) | sed -e 's/-idirafter [^ ]*//g'`" + + TARGET_FLAGS_TO_PASS = $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) ++TARGET_FLAGS_TO_PASS_D = $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS_D) + + # Flags to pass down to gcc. gcc builds a library, libgcc.a, so it + # unfortunately needs the native compiler and the target ar and +@@ -47285,7 +47288,7 @@ check-target-libphobos: + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + (cd $(TARGET_SUBDIR)/libphobos && \ +- $(MAKE) $(TARGET_FLAGS_TO_PASS) check) ++ $(MAKE) $(TARGET_FLAGS_TO_PASS_D) check) + + @endif target-libphobos + +@@ -47300,7 +47303,7 @@ install-target-libphobos: installdirs + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + (cd $(TARGET_SUBDIR)/libphobos && \ +- $(MAKE) $(TARGET_FLAGS_TO_PASS) install) ++ $(MAKE) $(TARGET_FLAGS_TO_PASS_D) install) + + @endif target-libphobos + +@@ -47315,7 +47318,7 @@ install-strip-target-libphobos: installdirs + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + (cd $(TARGET_SUBDIR)/libphobos && \ +- $(MAKE) $(TARGET_FLAGS_TO_PASS) install-strip) ++ $(MAKE) $(TARGET_FLAGS_TO_PASS_D) install-strip) + + @endif target-libphobos + +diff --git a/Makefile.tpl b/Makefile.tpl +index 41cae58..b3d32e7 100644 +--- a/Makefile.tpl ++++ b/Makefile.tpl +@@ -721,8 +721,11 @@ EXTRA_TARGET_FLAGS = \ + 'STAGE1_LDFLAGS=$$(POSTSTAGE1_LDFLAGS)' \ + 'STAGE1_LIBS=$$(POSTSTAGE1_LIBS)' \ + "TFLAGS=$$TFLAGS" ++EXTRA_TARGET_FLAGS_D = \ ++ "`echo $(EXTRA_TARGET_FLAGS) | sed -e 's/-idirafter [^ ]*//g'`" + + TARGET_FLAGS_TO_PASS = $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) ++TARGET_FLAGS_TO_PASS_D = $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS_D) + + # Flags to pass down to gcc. gcc builds a library, libgcc.a, so it + # unfortunately needs the native compiler and the target ar and +diff --git a/libphobos/Makefile.in b/libphobos/Makefile.in +index e894417..2d18dcb 100644 +--- a/libphobos/Makefile.in ++++ b/libphobos/Makefile.in +@@ -365,6 +365,7 @@ AM_MAKEFLAGS = \ + "LIBCFLAGS=$(LIBCFLAGS)" \ + "LIBCFLAGS_FOR_TARGET=$(LIBCFLAGS_FOR_TARGET)" \ + "MAKE=$(MAKE)" \ ++ "`echo 'MAKEFLAGS=$(MAKEFLAGS)' | sed -e 's/-j[0-9]+/-j1/'`" \ + "MAKEINFO=$(MAKEINFO) $(MAKEINFOFLAGS)" \ + "PICFLAG=$(PICFLAG)" \ + "PICFLAG_FOR_TARGET=$(PICFLAG_FOR_TARGET)" \ +@@ -694,6 +695,8 @@ uninstall-am: + + .PRECIOUS: Makefile + ++.NOTPARALLEL: ++ + # GNU Make needs to see an explicit $(MAKE) variable in the command it + # runs to enable its job server during parallel builds. Hence the + # comments below. +diff --git a/libphobos/configure b/libphobos/configure +index b3cb5f3..25adf2b 100755 +--- a/libphobos/configure ++++ b/libphobos/configure +@@ -5122,6 +5122,7 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' + ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' + ac_compiler_gnu=$ac_cv_c_compiler_gnu + ++GDC=`$as_echo "$GDC" | sed -e 's/-idirafter [^ ]*//g'` + + ac_ext=d + ac_compile='$GDC -c $GDCFLAGS conftest.$ac_ext >&5' |