Unverified Commit befc8390 authored by Vladimír Čunát's avatar Vladimír Čunát
Browse files

Merge #209423: gnat12: add for x86_64-darwin

parents 9b896aca c7ce0c86
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -28,6 +28,7 @@
, buildPackages ? {}
, targetPackages ? {}
, useMacosReexportHack ? false
, wrapGas ? false

# Darwin code signing support utilities
, postLinkSignHook ? null, signingUtils ? null
@@ -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 \
+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
+12 −3
Original line number Diff line number Diff line
@@ -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
@@ -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
+29 −14
Original line number Diff line number Diff line
@@ -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.
@@ -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
+1 −1
Original line number Diff line number Diff line
@@ -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