Loading pkgs/build-support/bintools-wrapper/default.nix +13 −0 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ , buildPackages ? {} , targetPackages ? {} , useMacosReexportHack ? false , wrapGas ? false # Darwin code signing support utilities , postLinkSignHook ? null, signingUtils ? null Loading Loading @@ -165,6 +166,18 @@ stdenv.mkDerivation { wrap ld-solaris ${./ld-solaris-wrapper.sh} '') # If we are asked to wrap `gas` and this bintools has it, # then symlink it (`as` will be symlinked next). # This is mainly for the wrapped gnatboot on x86-64 Darwin, # as it must have both the GNU assembler from cctools (installed as `gas`) # and the Clang integrated assembler (installed as `as`). # See pkgs/os-specific/darwin/binutils/default.nix for details. + lib.optionalString wrapGas '' if [ -e $ldPath/${targetPrefix}gas ]; then ln -s $ldPath/${targetPrefix}gas $out/bin/${targetPrefix}gas fi '' # Create symlinks for rest of the binaries. + '' for binary in objdump objcopy size strings as ar nm gprof dwp c++filt addr2line \ Loading pkgs/build-support/cc-wrapper/add-gnat-extra-flags.sh 0 → 100644 +23 −0 Original line number Diff line number Diff line # See add-flags.sh in cc-wrapper for comments. var_templates_list=( NIX_GNATMAKE_CARGS ) accumulateRoles for var in "${var_templates_list[@]}"; do mangleVarList "$var" ${role_suffixes[@]+"${role_suffixes[@]}"} done # `-B@out@/bin' forces cc to use wrapped as instead of the system one. NIX_GNATMAKE_CARGS_@suffixSalt@="$NIX_GNATMAKE_CARGS_@suffixSalt@ -B@out@/bin/" # Only add darwin min version flag if a default darwin min version is set, # which is a signal that we're targetting darwin. if [ "@darwinMinVersion@" ]; then mangleVarSingle @darwinMinVersionVariable@ ${role_suffixes[@]+"${role_suffixes[@]}"} NIX_GNATMAKE_CARGS_@suffixSalt@="-m@darwinPlatformForCC@-version-min=${@darwinMinVersionVariable@_@suffixSalt@:-@darwinMinVersion@} $NIX_GNATMAKE_CARGS_@suffixSalt@" fi export NIX_GNAT_WRAPPER_EXTRA_FLAGS_SET_@suffixSalt@=1 pkgs/build-support/cc-wrapper/default.nix +12 −3 Original line number Diff line number Diff line Loading @@ -237,10 +237,15 @@ stdenv.mkDerivation { fi '' # No need to wrap gnat, gnatkr, gnatname or gnatprep; we can just symlink them in + optionalString cc.langAda or false '' wrap ${targetPrefix}gnatmake ${./gnat-wrapper.sh} $ccPath/${targetPrefix}gnatmake wrap ${targetPrefix}gnatbind ${./gnat-wrapper.sh} $ccPath/${targetPrefix}gnatbind wrap ${targetPrefix}gnatlink ${./gnat-wrapper.sh} $ccPath/${targetPrefix}gnatlink for cmd in gnatbind gnatchop gnatclean gnatlink gnatls gnatmake; do wrap ${targetPrefix}$cmd ${./gnat-wrapper.sh} $ccPath/${targetPrefix}$cmd done for cmd in gnat gnatkr gnatname gnatprep; do ln -s $ccPath/${targetPrefix}$cmd $out/bin/${targetPrefix}$cmd done # this symlink points to the unwrapped gnat's output "out". It is used by # our custom gprconfig compiler description to find GNAT's ada runtime. See Loading Loading @@ -521,6 +526,10 @@ stdenv.mkDerivation { substituteAll ${../wrapper-common/utils.bash} $out/nix-support/utils.bash '' + optionalString cc.langAda or false '' substituteAll ${./add-gnat-extra-flags.sh} $out/nix-support/add-gnat-extra-flags.sh '' ## ## General Clang support ## Needs to go after ^ because the for loop eats \n and makes this file an invalid script Loading pkgs/build-support/cc-wrapper/gnat-wrapper.sh +29 −14 Original line number Diff line number Diff line Loading @@ -29,6 +29,9 @@ if [ -z "${NIX_CC_WRAPPER_FLAGS_SET_@suffixSalt@:-}" ]; then source @out@/nix-support/add-flags.sh fi if [ -z "${NIX_GNAT_WRAPPER_EXTRA_FLAGS_SET_@suffixSalt@:-}" ]; then source @out@/nix-support/add-gnat-extra-flags.sh fi # Parse command line options and set several variables. # For instance, figure out if linker flags should be passed. Loading Loading @@ -124,20 +127,32 @@ if [ "$NIX_ENFORCE_NO_NATIVE_@suffixSalt@" = 1 ]; then params=(${rest+"${rest[@]}"}) fi if [ "$(basename $0)x" = "gnatmakex" ]; then extraBefore=("--GNATBIND=@out@/bin/gnatbind" "--GNATLINK=@out@/bin/gnatlink") extraAfter=($NIX_GNATFLAGS_COMPILE_@suffixSalt@) fi if [ "$(basename $0)x" = "gnatbindx" ]; then case "$(basename $0)x" in "gnatbindx") extraBefore=() extraAfter=($NIX_GNATFLAGS_COMPILE_@suffixSalt@) fi if [ "$(basename $0)x" = "gnatlinkx" ]; then ;; "gnatchopx") extraBefore=("--GCC=@out@/bin/gcc") extraAfter=() ;; "gnatcleanx") extraBefore=($NIX_GNATFLAGS_COMPILE_@suffixSalt@) extraAfter=() ;; "gnatlinkx") extraBefore=() extraAfter=("--GCC=@out@/bin/gcc") fi ;; "gnatlsx") extraBefore=() extraAfter=($NIX_GNATFLAGS_COMPILE_@suffixSalt@) ;; "gnatmakex") extraBefore=("--GNATBIND=@out@/bin/gnatbind" "--GNATLINK=@out@/bin/gnatlink") extraAfter=($NIX_GNATFLAGS_COMPILE_@suffixSalt@ -cargs $NIX_GNATMAKE_CARGS_@suffixSalt@) ;; esac # As a very special hack, if the arguments are just `-v', then don't # add anything. This is to prevent `gcc -v' (which normally prints Loading pkgs/development/compilers/gcc/10/default.nix +1 −1 Original line number Diff line number Diff line Loading @@ -185,7 +185,7 @@ stdenv.mkDerivation ({ preConfigure = (import ../common/pre-configure.nix { inherit lib; inherit version targetPlatform hostPlatform gnatboot langAda langGo langJit crossStageStatic enableMultilib; inherit version targetPlatform hostPlatform buildPlatform gnatboot langAda langGo langJit crossStageStatic enableMultilib; }) + '' ln -sf ${libxcrypt}/include/crypt.h libsanitizer/sanitizer_common/crypt.h ''; Loading Loading
pkgs/build-support/bintools-wrapper/default.nix +13 −0 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ , buildPackages ? {} , targetPackages ? {} , useMacosReexportHack ? false , wrapGas ? false # Darwin code signing support utilities , postLinkSignHook ? null, signingUtils ? null Loading Loading @@ -165,6 +166,18 @@ stdenv.mkDerivation { wrap ld-solaris ${./ld-solaris-wrapper.sh} '') # If we are asked to wrap `gas` and this bintools has it, # then symlink it (`as` will be symlinked next). # This is mainly for the wrapped gnatboot on x86-64 Darwin, # as it must have both the GNU assembler from cctools (installed as `gas`) # and the Clang integrated assembler (installed as `as`). # See pkgs/os-specific/darwin/binutils/default.nix for details. + lib.optionalString wrapGas '' if [ -e $ldPath/${targetPrefix}gas ]; then ln -s $ldPath/${targetPrefix}gas $out/bin/${targetPrefix}gas fi '' # Create symlinks for rest of the binaries. + '' for binary in objdump objcopy size strings as ar nm gprof dwp c++filt addr2line \ Loading
pkgs/build-support/cc-wrapper/add-gnat-extra-flags.sh 0 → 100644 +23 −0 Original line number Diff line number Diff line # See add-flags.sh in cc-wrapper for comments. var_templates_list=( NIX_GNATMAKE_CARGS ) accumulateRoles for var in "${var_templates_list[@]}"; do mangleVarList "$var" ${role_suffixes[@]+"${role_suffixes[@]}"} done # `-B@out@/bin' forces cc to use wrapped as instead of the system one. NIX_GNATMAKE_CARGS_@suffixSalt@="$NIX_GNATMAKE_CARGS_@suffixSalt@ -B@out@/bin/" # Only add darwin min version flag if a default darwin min version is set, # which is a signal that we're targetting darwin. if [ "@darwinMinVersion@" ]; then mangleVarSingle @darwinMinVersionVariable@ ${role_suffixes[@]+"${role_suffixes[@]}"} NIX_GNATMAKE_CARGS_@suffixSalt@="-m@darwinPlatformForCC@-version-min=${@darwinMinVersionVariable@_@suffixSalt@:-@darwinMinVersion@} $NIX_GNATMAKE_CARGS_@suffixSalt@" fi export NIX_GNAT_WRAPPER_EXTRA_FLAGS_SET_@suffixSalt@=1
pkgs/build-support/cc-wrapper/default.nix +12 −3 Original line number Diff line number Diff line Loading @@ -237,10 +237,15 @@ stdenv.mkDerivation { fi '' # No need to wrap gnat, gnatkr, gnatname or gnatprep; we can just symlink them in + optionalString cc.langAda or false '' wrap ${targetPrefix}gnatmake ${./gnat-wrapper.sh} $ccPath/${targetPrefix}gnatmake wrap ${targetPrefix}gnatbind ${./gnat-wrapper.sh} $ccPath/${targetPrefix}gnatbind wrap ${targetPrefix}gnatlink ${./gnat-wrapper.sh} $ccPath/${targetPrefix}gnatlink for cmd in gnatbind gnatchop gnatclean gnatlink gnatls gnatmake; do wrap ${targetPrefix}$cmd ${./gnat-wrapper.sh} $ccPath/${targetPrefix}$cmd done for cmd in gnat gnatkr gnatname gnatprep; do ln -s $ccPath/${targetPrefix}$cmd $out/bin/${targetPrefix}$cmd done # this symlink points to the unwrapped gnat's output "out". It is used by # our custom gprconfig compiler description to find GNAT's ada runtime. See Loading Loading @@ -521,6 +526,10 @@ stdenv.mkDerivation { substituteAll ${../wrapper-common/utils.bash} $out/nix-support/utils.bash '' + optionalString cc.langAda or false '' substituteAll ${./add-gnat-extra-flags.sh} $out/nix-support/add-gnat-extra-flags.sh '' ## ## General Clang support ## Needs to go after ^ because the for loop eats \n and makes this file an invalid script Loading
pkgs/build-support/cc-wrapper/gnat-wrapper.sh +29 −14 Original line number Diff line number Diff line Loading @@ -29,6 +29,9 @@ if [ -z "${NIX_CC_WRAPPER_FLAGS_SET_@suffixSalt@:-}" ]; then source @out@/nix-support/add-flags.sh fi if [ -z "${NIX_GNAT_WRAPPER_EXTRA_FLAGS_SET_@suffixSalt@:-}" ]; then source @out@/nix-support/add-gnat-extra-flags.sh fi # Parse command line options and set several variables. # For instance, figure out if linker flags should be passed. Loading Loading @@ -124,20 +127,32 @@ if [ "$NIX_ENFORCE_NO_NATIVE_@suffixSalt@" = 1 ]; then params=(${rest+"${rest[@]}"}) fi if [ "$(basename $0)x" = "gnatmakex" ]; then extraBefore=("--GNATBIND=@out@/bin/gnatbind" "--GNATLINK=@out@/bin/gnatlink") extraAfter=($NIX_GNATFLAGS_COMPILE_@suffixSalt@) fi if [ "$(basename $0)x" = "gnatbindx" ]; then case "$(basename $0)x" in "gnatbindx") extraBefore=() extraAfter=($NIX_GNATFLAGS_COMPILE_@suffixSalt@) fi if [ "$(basename $0)x" = "gnatlinkx" ]; then ;; "gnatchopx") extraBefore=("--GCC=@out@/bin/gcc") extraAfter=() ;; "gnatcleanx") extraBefore=($NIX_GNATFLAGS_COMPILE_@suffixSalt@) extraAfter=() ;; "gnatlinkx") extraBefore=() extraAfter=("--GCC=@out@/bin/gcc") fi ;; "gnatlsx") extraBefore=() extraAfter=($NIX_GNATFLAGS_COMPILE_@suffixSalt@) ;; "gnatmakex") extraBefore=("--GNATBIND=@out@/bin/gnatbind" "--GNATLINK=@out@/bin/gnatlink") extraAfter=($NIX_GNATFLAGS_COMPILE_@suffixSalt@ -cargs $NIX_GNATMAKE_CARGS_@suffixSalt@) ;; esac # As a very special hack, if the arguments are just `-v', then don't # add anything. This is to prevent `gcc -v' (which normally prints Loading
pkgs/development/compilers/gcc/10/default.nix +1 −1 Original line number Diff line number Diff line Loading @@ -185,7 +185,7 @@ stdenv.mkDerivation ({ preConfigure = (import ../common/pre-configure.nix { inherit lib; inherit version targetPlatform hostPlatform gnatboot langAda langGo langJit crossStageStatic enableMultilib; inherit version targetPlatform hostPlatform buildPlatform gnatboot langAda langGo langJit crossStageStatic enableMultilib; }) + '' ln -sf ${libxcrypt}/include/crypt.h libsanitizer/sanitizer_common/crypt.h ''; Loading