Unverified Commit 8d4db5e0 authored by Artturi's avatar Artturi Committed by GitHub
Browse files

Merge pull request #215751 from Artturin/gccaddcallfile

parents 85bba005 69867175
Loading
Loading
Loading
Loading
+77 −79
Original line number Diff line number Diff line
@@ -24,7 +24,7 @@
, threadsCross ? null # for MinGW
, crossStageStatic ? false
, gnused ? null
, cloog # unused; just for compat with gcc4, as we override the parameter on some places
, cloog ? null # unused; just for compat with gcc4, as we override the parameter on some places
, buildPackages
, libxcrypt
}:
@@ -83,6 +83,67 @@ let majorVersion = "10";
    stageNameAddon = if crossStageStatic then "stage-static" else "stage-final";
    crossNameAddon = optionalString (targetPlatform != hostPlatform) "${targetPlatform.config}-${stageNameAddon}-";

    callFile = lib.callPackageWith {
      # lets
      inherit
        majorVersion
        version
        buildPlatform
        hostPlatform
        targetPlatform
        patches
        crossMingw
        stageNameAddon
        crossNameAddon
      ;
      # inherit generated with 'nix eval --json --impure --expr "with import ./. {}; lib.attrNames (lib.functionArgs gcc10.cc.override)" | jq '.[]' --raw-output'
      inherit
        binutils
        buildPackages
        cloog
        crossStageStatic
        enableLTO
        enableMultilib
        enablePlugin
        enableShared
        fetchpatch
        fetchurl
        gettext
        gmp
        gnatboot
        gnused
        isl
        langAda
        langC
        langCC
        langD
        langFortran
        langGo
        langJit
        langObjC
        langObjCpp
        lib
        libcCross
        libmpc
        libxcrypt
        mpfr
        name
        noSysDirs
        patchelf
        perl
        profiledCompiler
        reproducibleBuild
        staticCompiler
        stdenv
        targetPackages
        texinfo
        threadsCross
        which
        zip
        zlib
      ;
    };

in

stdenv.mkDerivation ({
@@ -158,39 +219,12 @@ stdenv.mkDerivation ({
  inherit noSysDirs staticCompiler crossStageStatic
    libcCross crossMingw;

  inherit (import ../common/dependencies.nix {
    inherit
      lib
      stdenv
      buildPackages
      targetPackages
      crossStageStatic
      threadsCross
      langAda
      libxcrypt
      gnatboot
      version
      texinfo
      which
      gettext
      gnused
      patchelf
      gmp
      mpfr
      libmpc
      isl
      zlib
      zip
      perl
    ;
  }) depsBuildBuild nativeBuildInputs depsBuildTarget buildInputs depsTargetTarget;
  inherit (callFile ../common/dependencies.nix { })
    depsBuildBuild nativeBuildInputs depsBuildTarget buildInputs depsTargetTarget;

  NIX_LDFLAGS = lib.optionalString  hostPlatform.isSunOS "-lm -ldl";

  preConfigure = (import ../common/pre-configure.nix {
    inherit lib;
    inherit version targetPlatform hostPlatform buildPlatform gnatboot langAda langGo langJit crossStageStatic enableMultilib;
  }) + ''
  preConfigure = (callFile ../common/pre-configure.nix { }) + ''
    ln -sf ${libxcrypt}/include/crypt.h libsanitizer/sanitizer_common/crypt.h
  '';

@@ -198,32 +232,7 @@ stdenv.mkDerivation ({

  configurePlatforms = [ "build" "host" "target" ];

  configureFlags = import ../common/configure-flags.nix {
    inherit
      lib
      stdenv
      targetPackages
      crossStageStatic libcCross threadsCross
      version

      binutils gmp mpfr libmpc isl

      enableLTO
      enableMultilib
      enablePlugin
      enableShared

      langC
      langD
      langCC
      langFortran
      langAda
      langGo
      langObjC
      langObjCpp
      langJit
      ;
  };
  configureFlags = callFile ../common/configure-flags.nix { };

  targetConfig = if targetPlatform != hostPlatform then targetPlatform.config else null;
  targetPlatformConfig = targetPlatform.config;
@@ -232,8 +241,7 @@ stdenv.mkDerivation ({
    (targetPlatform == hostPlatform && hostPlatform == buildPlatform)
    (if profiledCompiler then "profiledbootstrap" else "bootstrap");

  inherit
    (import ../common/strip-attributes.nix { inherit lib stdenv langJit; })
  inherit (callFile ../common/strip-attributes.nix { })
    stripDebugList
    stripDebugListTarget
    preFixup;
@@ -256,10 +264,7 @@ stdenv.mkDerivation ({

  LIBRARY_PATH = optionals (targetPlatform == hostPlatform) (makeLibraryPath (optional (zlib != null) zlib));

  inherit
    (import ../common/extra-target-flags.nix {
      inherit lib stdenv crossStageStatic langD libcCross threadsCross;
    })
  inherit (callFile ../common/extra-target-flags.nix { })
    EXTRA_FLAGS_FOR_TARGET
    EXTRA_LDFLAGS_FOR_TARGET
    ;
@@ -273,24 +278,17 @@ stdenv.mkDerivation ({
  inherit enableMultilib enableShared;

  meta = {
    homepage = "https://gcc.gnu.org/";
    license = lib.licenses.gpl3Plus;  # runtime support libraries are typically LGPLv3+
    description = "GNU Compiler Collection, version ${version}";

    longDescription = ''
      The GNU Compiler Collection includes compiler front ends for C, C++,
      Objective-C, Fortran, OpenMP for C/C++/Fortran, and Ada, as well as
      libraries for these languages (libstdc++, 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 = lib.teams.gcc.members;

    platforms = lib.platforms.unix;
    inherit (callFile ../common/meta.nix { })
      homepage
      license
      description
      longDescription
      platforms
      maintainers
    ;
    badPlatforms = [ "aarch64-darwin" ];
  };

}

// optionalAttrs (targetPlatform != hostPlatform && targetPlatform.libc == "msvcrt" && crossStageStatic) {
+75 −78
Original line number Diff line number Diff line
@@ -89,6 +89,67 @@ let majorVersion = "11";
    stageNameAddon = if crossStageStatic then "stage-static" else "stage-final";
    crossNameAddon = optionalString (targetPlatform != hostPlatform) "${targetPlatform.config}-${stageNameAddon}-";

    callFile = lib.callPackageWith {
      # lets
      inherit
        majorVersion
        version
        buildPlatform
        hostPlatform
        targetPlatform
        patches
        crossMingw
        stageNameAddon
        crossNameAddon
      ;
      # inherit generated with 'nix eval --json --impure --expr "with import ./. {}; lib.attrNames (lib.functionArgs gcc11.cc.override)" | jq '.[]' --raw-output'
      inherit
        binutils
        buildPackages
        cloog
        crossStageStatic
        enableLTO
        enableMultilib
        enablePlugin
        enableShared
        fetchpatch
        fetchurl
        gettext
        gmp
        gnatboot
        gnused
        isl
        langAda
        langC
        langCC
        langD
        langFortran
        langGo
        langJit
        langObjC
        langObjCpp
        lib
        libcCross
        libmpc
        libxcrypt
        mpfr
        name
        noSysDirs
        patchelf
        perl
        profiledCompiler
        reproducibleBuild
        staticCompiler
        stdenv
        targetPackages
        texinfo
        threadsCross
        which
        zip
        zlib
      ;
    };

in

stdenv.mkDerivation ({
@@ -164,39 +225,12 @@ stdenv.mkDerivation ({
  inherit noSysDirs staticCompiler crossStageStatic
    libcCross crossMingw;

  inherit (import ../common/dependencies.nix {
    inherit
      lib
      stdenv
      buildPackages
      targetPackages
      crossStageStatic
      threadsCross
      langAda
      libxcrypt
      gnatboot
      version
      texinfo
      which
      gettext
      gnused
      patchelf
      gmp
      mpfr
      libmpc
      isl
      zlib
      zip
      perl
    ;
  }) depsBuildBuild nativeBuildInputs depsBuildTarget buildInputs depsTargetTarget;
  inherit (callFile ../common/dependencies.nix { })
    depsBuildBuild nativeBuildInputs depsBuildTarget buildInputs depsTargetTarget;

  NIX_LDFLAGS = lib.optionalString  hostPlatform.isSunOS "-lm -ldl";

  preConfigure = (import ../common/pre-configure.nix {
    inherit lib;
    inherit version targetPlatform hostPlatform buildPlatform gnatboot langAda langGo langJit crossStageStatic enableMultilib;
  }) + ''
  preConfigure = (callFile ../common/pre-configure.nix { }) + ''
    ln -sf ${libxcrypt}/include/crypt.h libsanitizer/sanitizer_common/crypt.h
  '';

@@ -204,32 +238,7 @@ stdenv.mkDerivation ({

  configurePlatforms = [ "build" "host" "target" ];

  configureFlags = import ../common/configure-flags.nix {
    inherit
      lib
      stdenv
      targetPackages
      crossStageStatic libcCross threadsCross
      version

      binutils gmp mpfr libmpc isl

      enableLTO
      enableMultilib
      enablePlugin
      enableShared

      langC
      langD
      langCC
      langFortran
      langAda
      langGo
      langObjC
      langObjCpp
      langJit
      ;
  };
  configureFlags = callFile ../common/configure-flags.nix { };

  targetConfig = if targetPlatform != hostPlatform then targetPlatform.config else null;
  targetPlatformConfig = targetPlatform.config;
@@ -238,8 +247,7 @@ stdenv.mkDerivation ({
    (targetPlatform == hostPlatform && hostPlatform == buildPlatform)
    (if profiledCompiler then "profiledbootstrap" else "bootstrap");

  inherit
    (import ../common/strip-attributes.nix { inherit lib stdenv langJit; })
  inherit (callFile ../common/strip-attributes.nix { })
    stripDebugList
    stripDebugListTarget
    preFixup;
@@ -262,10 +270,7 @@ stdenv.mkDerivation ({

  LIBRARY_PATH = optionals (targetPlatform == hostPlatform) (makeLibraryPath (optional (zlib != null) zlib));

  inherit
    (import ../common/extra-target-flags.nix {
      inherit lib stdenv crossStageStatic langD libcCross threadsCross;
    })
  inherit (callFile ../common/extra-target-flags.nix { })
    EXTRA_FLAGS_FOR_TARGET
    EXTRA_LDFLAGS_FOR_TARGET
    ;
@@ -279,22 +284,14 @@ stdenv.mkDerivation ({
  inherit enableShared enableMultilib;

  meta = {
    homepage = "https://gcc.gnu.org/";
    license = lib.licenses.gpl3Plus;  # runtime support libraries are typically LGPLv3+
    description = "GNU Compiler Collection, version ${version}";

    longDescription = ''
      The GNU Compiler Collection includes compiler front ends for C, C++,
      Objective-C, Fortran, OpenMP for C/C++/Fortran, and Ada, as well as
      libraries for these languages (libstdc++, 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 = lib.teams.gcc.members;

    platforms = lib.platforms.unix;
    inherit (callFile ../common/meta.nix { })
      homepage
      license
      description
      longDescription
      platforms
      maintainers
    ;
  };
}

+74 −80
Original line number Diff line number Diff line
@@ -123,6 +123,67 @@ let majorVersion = "12";
    stageNameAddon = if crossStageStatic then "stage-static" else "stage-final";
    crossNameAddon = optionalString (targetPlatform != hostPlatform) "${targetPlatform.config}-${stageNameAddon}-";

    callFile = lib.callPackageWith {
      # lets
      inherit
        majorVersion
        version
        buildPlatform
        hostPlatform
        targetPlatform
        patches
        crossMingw
        stageNameAddon
        crossNameAddon
      ;
      # inherit generated with 'nix eval --json --impure --expr "with import ./. {}; lib.attrNames (lib.functionArgs gcc12.cc.override)" | jq '.[]' --raw-output'
      inherit
        binutils
        buildPackages
        cloog
        crossStageStatic
        enableLTO
        enableMultilib
        enablePlugin
        enableShared
        fetchpatch
        fetchurl
        gettext
        gmp
        gnatboot
        gnused
        isl
        langAda
        langC
        langCC
        langD
        langFortran
        langGo
        langJit
        langObjC
        langObjCpp
        lib
        libcCross
        libmpc
        libxcrypt
        mpfr
        name
        noSysDirs
        patchelf
        perl
        profiledCompiler
        reproducibleBuild
        staticCompiler
        stdenv
        targetPackages
        texinfo
        threadsCross
        which
        zip
        zlib
      ;
    };

in

stdenv.mkDerivation ({
@@ -198,42 +259,12 @@ stdenv.mkDerivation ({
  inherit noSysDirs staticCompiler crossStageStatic
    libcCross crossMingw;

  inherit (import ../common/dependencies.nix {
    inherit
      lib
      stdenv
      buildPackages
      targetPackages
      crossStageStatic
      threadsCross
      langAda
      langGo
      libucontext
      libxcrypt
      gnatboot
      version
      texinfo
      which
      gettext
      gnused
      patchelf
      gmp
      mpfr
      libmpc
      isl
      zlib
      zip
      perl
    ;
  }) depsBuildBuild nativeBuildInputs depsBuildTarget buildInputs depsTargetTarget;
  inherit (callFile ../common/dependencies.nix { }) depsBuildBuild nativeBuildInputs depsBuildTarget buildInputs depsTargetTarget;

  NIX_LDFLAGS = lib.optionalString  hostPlatform.isSunOS "-lm -ldl";


  preConfigure = (import ../common/pre-configure.nix {
    inherit lib;
    inherit version targetPlatform hostPlatform buildPlatform gnatboot langAda langGo langJit crossStageStatic enableMultilib;
  }) + ''
  preConfigure = (callFile ../common/pre-configure.nix { }) + ''
    ln -sf ${libxcrypt}/include/crypt.h libsanitizer/sanitizer_common/crypt.h
  '';

@@ -241,32 +272,7 @@ stdenv.mkDerivation ({

  configurePlatforms = [ "build" "host" "target" ];

  configureFlags = import ../common/configure-flags.nix {
    inherit
      lib
      stdenv
      targetPackages
      crossStageStatic libcCross threadsCross
      version

      binutils gmp mpfr libmpc isl

      enableLTO
      enableMultilib
      enablePlugin
      enableShared

      langC
      langD
      langCC
      langFortran
      langAda
      langGo
      langObjC
      langObjCpp
      langJit
      ;
  };
  configureFlags = callFile ../common/configure-flags.nix { };

  targetConfig = if targetPlatform != hostPlatform then targetPlatform.config else null;
  targetPlatformConfig = targetPlatform.config;
@@ -275,8 +281,7 @@ stdenv.mkDerivation ({
    (targetPlatform == hostPlatform && hostPlatform == buildPlatform)
    (if profiledCompiler then "profiledbootstrap" else "bootstrap");

  inherit
    (import ../common/strip-attributes.nix { inherit lib stdenv langJit; })
  inherit (callFile ../common/strip-attributes.nix { })
    stripDebugList
    stripDebugListTarget
    preFixup;
@@ -299,10 +304,7 @@ stdenv.mkDerivation ({

  LIBRARY_PATH = optionals (targetPlatform == hostPlatform) (makeLibraryPath (optional (zlib != null) zlib));

  inherit
    (import ../common/extra-target-flags.nix {
      inherit lib stdenv crossStageStatic langD libcCross threadsCross;
    })
  inherit (callFile ../common/extra-target-flags.nix { })
    EXTRA_FLAGS_FOR_TARGET
    EXTRA_LDFLAGS_FOR_TARGET
    ;
@@ -316,22 +318,14 @@ stdenv.mkDerivation ({
  inherit enableShared enableMultilib;

  meta = {
    homepage = "https://gcc.gnu.org/";
    license = lib.licenses.gpl3Plus;  # runtime support libraries are typically LGPLv3+
    description = "GNU Compiler Collection, version ${version}";

    longDescription = ''
      The GNU Compiler Collection includes compiler front ends for C, C++,
      Objective-C, Fortran, OpenMP for C/C++/Fortran, and Ada, as well as
      libraries for these languages (libstdc++, 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 = lib.teams.gcc.members;

    platforms = lib.platforms.unix;
    inherit (callFile ../common/meta.nix { })
      homepage
      license
      description
      longDescription
      platforms
      maintainers
    ;
  };
}

+90 −84
Original line number Diff line number Diff line
@@ -111,6 +111,82 @@ let majorVersion = "4";
    stageNameAddon = if crossStageStatic then "stage-static" else "stage-final";
    crossNameAddon = optionalString (targetPlatform != hostPlatform) "${targetPlatform.config}-${stageNameAddon}-";

    callFile = lib.callPackageWith {
      # lets
      inherit
        majorVersion
        version
        buildPlatform
        hostPlatform
        targetPlatform
        patches
        javaEcj
        javaAntlr
        xlibs
        javaAwtGtk
        crossMingw
        stageNameAddon
        crossNameAddon
      ;
      # inherit generated with 'nix eval --json --impure --expr "with import ./. {}; lib.attrNames (lib.functionArgs gcc48.cc.override)" | jq '.[]' --raw-output'
      inherit
        binutils
        boehmgc
        buildPackages
        cloog
        crossStageStatic
        enableLTO
        enableMultilib
        enablePlugin
        enableShared
        fetchpatch
        fetchurl
        gettext
        gmp
        gnused
        gtk2
        isl
        langC
        langCC
        langFortran
        langGo
        langJava
        langJit
        langObjC
        langObjCpp
        lib
        libICE
        libSM
        libX11
        libXi
        libXrandr
        libXrender
        libXt
        libXtst
        libart_lgpl
        libcCross threadsCross
        libmpc
        mpfr
        name
        noSysDirs
        patchelf
        perl
        pkg-config
        profiledCompiler
        reproducibleBuild
        staticCompiler
        stdenv
        targetPackages
        texinfo
        unzip
        which
        x11Support
        xorgproto
        zip
        zlib
      ;
    };

in

# We need all these X libraries when building AWT with GTK.
@@ -158,74 +234,16 @@ stdenv.mkDerivation ({
  inherit noSysDirs staticCompiler langJava crossStageStatic
    libcCross crossMingw;

  inherit (import ../common/dependencies.nix {
    inherit
      lib
      stdenv
      buildPackages
      targetPackages
      crossStageStatic
      threadsCross
      version
      langJava
      javaAwtGtk
      texinfo
      which
      gettext
      pkg-config
      gnused
      patchelf
      gmp
      mpfr
      libmpc
      cloog
      isl
      zlib
      boehmgc
      zip
      unzip
      gtk2
      libart_lgpl
      perl
      xlibs
    ;
  }) depsBuildBuild nativeBuildInputs depsBuildTarget buildInputs depsTargetTarget;
  inherit (callFile ../common/dependencies.nix { })
    depsBuildBuild nativeBuildInputs depsBuildTarget buildInputs depsTargetTarget;

  preConfigure = import ../common/pre-configure.nix {
    inherit lib;
    inherit version targetPlatform hostPlatform buildPlatform langJava langGo crossStageStatic enableMultilib;
  };
  preConfigure = callFile ../common/pre-configure.nix { };

  dontDisableStatic = true;

  configurePlatforms = [ "build" "host" "target" ];

  configureFlags = import ../common/configure-flags.nix {
    inherit
      lib
      stdenv
      targetPackages
      crossStageStatic libcCross threadsCross
      version

      binutils gmp mpfr libmpc isl
      cloog

      enableLTO
      enableMultilib
      enablePlugin
      enableShared

      langC
      langCC
      langFortran
      langJava javaAwtGtk javaAntlr javaEcj
      langGo
      langObjC
      langObjCpp
      langJit
      ;
  };
  configureFlags = callFile ../common/configure-flags.nix { };

  targetConfig = if targetPlatform != hostPlatform then targetPlatform.config else null;
  targetPlatformConfig = targetPlatform.config;
@@ -234,8 +252,7 @@ stdenv.mkDerivation ({
    (targetPlatform == hostPlatform && hostPlatform == buildPlatform)
    (if profiledCompiler then "profiledbootstrap" else "bootstrap");

  inherit
    (import ../common/strip-attributes.nix { inherit lib stdenv langJit; })
  inherit (callFile ../common/strip-attributes.nix { })
    stripDebugList
    stripDebugListTarget
    preFixup;
@@ -273,10 +290,7 @@ stdenv.mkDerivation ({
    ++ optionals javaAwtGtk [ gmp mpfr ]
  ));

  inherit
    (import ../common/extra-target-flags.nix {
      inherit lib stdenv crossStageStatic libcCross threadsCross;
    })
  inherit (callFile ../common/extra-target-flags.nix { })
    EXTRA_FLAGS_FOR_TARGET
    EXTRA_LDFLAGS_FOR_TARGET
    ;
@@ -291,22 +305,14 @@ stdenv.mkDerivation ({
  inherit enableShared enableMultilib;

  meta = {
    homepage = "https://gcc.gnu.org/";
    license = lib.licenses.gpl3Plus;  # runtime support libraries are typically LGPLv3+
    description = "GNU Compiler Collection, version ${version}";

    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 = with lib.maintainers; [ veprbl ];

    platforms = lib.platforms.unix;
    inherit (callFile ../common/meta.nix { })
      homepage
      license
      description
      longDescription
      platforms
      maintainers
    ;
    badPlatforms = lib.platforms.darwin;
  };
}
+90 −84

File changed.

Preview size limit exceeded, changes collapsed.

Loading