diff options
Diffstat (limited to 'nixpkgs/pkgs/development/compilers/gcc/common/extra-target-flags.nix')
-rw-r--r-- | nixpkgs/pkgs/development/compilers/gcc/common/extra-target-flags.nix | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/compilers/gcc/common/extra-target-flags.nix b/nixpkgs/pkgs/development/compilers/gcc/common/extra-target-flags.nix new file mode 100644 index 000000000000..0a5a7a1bc1cb --- /dev/null +++ b/nixpkgs/pkgs/development/compilers/gcc/common/extra-target-flags.nix @@ -0,0 +1,33 @@ +{ stdenv, crossStageStatic, langD ? false, libcCross, threadsCross }: + +let + inherit (stdenv) lib hostPlatform targetPlatform; +in + +{ + # For non-cross builds these flags are currently assigned in builder.sh. + # It would be good to consolidate the generation of makeFlags + # ({C,CXX,LD}FLAGS_FOR_{BUILD,TARGET}, etc...) at some point. + EXTRA_FLAGS_FOR_TARGET = let + mkFlags = dep: langD: lib.optionals (targetPlatform != hostPlatform && dep != null && !langD) ([ + "-O2 -idirafter ${lib.getDev dep}${dep.incdir or "/include"}" + ] ++ stdenv.lib.optionals (! crossStageStatic) [ + "-B${lib.getLib dep}${dep.libdir or "/lib"}" + ]); + in mkFlags libcCross langD + ++ lib.optionals (!crossStageStatic) (mkFlags threadsCross langD) + ; + + EXTRA_LDFLAGS_FOR_TARGET = let + mkFlags = dep: lib.optionals (targetPlatform != hostPlatform && dep != null) ([ + "-Wl,-L${lib.getLib dep}${dep.libdir or "/lib"}" + ] ++ (if crossStageStatic then [ + "-B${lib.getLib dep}${dep.libdir or "/lib"}" + ] else [ + "-Wl,-rpath,${lib.getLib dep}${dep.libdir or "/lib"}" + "-Wl,-rpath-link,${lib.getLib dep}${dep.libdir or "/lib"}" + ])); + in mkFlags libcCross + ++ lib.optionals (!crossStageStatic) (mkFlags threadsCross) + ; +} |