[Optimizations+Lib] Improve optimizations for Go and Clang.

Add mergeAttrsRecursive to lib.
This commit is contained in:
Antoine Viallon 2022-10-08 20:41:01 +02:00
parent 3167a6b678
commit 3dc95db22e
Signed by: aviallon
GPG key ID: 186FC35EDEB25716

View file

@ -5,29 +5,40 @@ let
desktopCfg = config.aviallon.desktop; desktopCfg = config.aviallon.desktop;
generalCfg = config.aviallon.general; generalCfg = config.aviallon.general;
_optimizeAttrs = { lto ? false , ... }@attrs: _optimizeAttrs = { lto ? false , go ? false, ... }@attrs:
traceValSeq ((myLib.optimizations.makeOptimizationFlags ({ traceValSeq (
inherit lto; (myLib.optimizations.makeOptimizationFlags ({
inherit lto go;
cpuArch = generalCfg.cpuArch; cpuArch = generalCfg.cpuArch;
cpuTune = generalCfg.cpuTune;
extraCFlags = cfg.extraCompileFlags; extraCFlags = cfg.extraCompileFlags;
} // attrs)) // { } // attrs))
preConfigure = '' // {
cmakeFlagsArray+=( preConfigure = ''
"-DCMAKE_CXX_FLAGS=$CXXFLAGS" cmakeFlagsArray+=(
"-DCMAKE_C_FLAGS=$CFLAGS" "-DCMAKE_CXX_FLAGS=$CXXFLAGS"
) "-DCMAKE_C_FLAGS=$CFLAGS"
''; )
doCheck = false; '';
doInstallCheck = false; }
}); // (optionalAttrs go {
optimizedStdenv = pkgs.addAttrsToDerivation _optimizeAttrs pkgs.fastStdenv; buildInputs = [ pkgs.gccgo ];
})
);
addAttrs = pkg: attrs: pkg.overrideAttrs (old: traceValSeqN 2 (myLib.attrsets.mergeAttrsRecursive old attrs) );
optimizePkg = {level ? "normal", parallelize ? null, ... }@attrs: pkg: optimizePkg = {level ? "normal", ... }@attrs: pkg:
( let
optimizedAttrs = _optimizeAttrs (attrs // {inherit level; go = (hasAttr "GOARCH" pkg); });
optStdenv = pkgs.addAttrsToDerivation optimizedAttrs pkgs.fastStdenv;
in (
if (hasAttr "stdenv" pkg.override.__functionArgs) then if (hasAttr "stdenv" pkg.override.__functionArgs) then
trace "Optimized ${getName pkg} with stdenv at level ${level} (parallelize: ${toString parallelize})" pkg.override { trace "Optimized ${getName pkg} with stdenv at level '${level}'" pkg.override {
stdenv = pkgs.addAttrsToDerivation (_optimizeAttrs (attrs // {inherit level parallelize; })) pkgs.fastStdenv; stdenv = optStdenv;
} }
else if (hasAttr "overrideAttrs" pkg) then
trace "Optimized ${getName pkg} with overrideAttrs at level '${level}'" (addAttrs pkg optimizedAttrs)
else else
warn "Can't optimize ${getName pkg}" pkg warn "Can't optimize ${getName pkg}" pkg
); );