diff --git a/pkgs/development/compilers/swift/swiftpm/default.nix b/pkgs/development/compilers/swift/swiftpm/default.nix index 9d8e414b72c9..2d5db28d68c7 100644 --- a/pkgs/development/compilers/swift/swiftpm/default.nix +++ b/pkgs/development/compilers/swift/swiftpm/default.nix @@ -135,6 +135,11 @@ let # so we don't have to account for that scenario. "-DCMAKE_BUILD_WITH_INSTALL_NAME_DIR=ON" ]; + + # TODO: Clean up on `staging`. + env = lib.optionalAttrs stdenv.hostPlatform.isDarwin { + NIX_LDFLAGS = "-headerpad_max_install_names"; + }; } ); diff --git a/pkgs/development/compilers/swift/wrapper/default.nix b/pkgs/development/compilers/swift/wrapper/default.nix index e446bec66868..0bd4a818da6d 100644 --- a/pkgs/development/compilers/swift/wrapper/default.nix +++ b/pkgs/development/compilers/swift/wrapper/default.nix @@ -5,6 +5,10 @@ useSwiftDriver ? true, swift-driver, clang, + + # TODO: Clean up on `staging`. + llvmPackages, + writeShellScriptBin, }: stdenv.mkDerivation ( @@ -90,6 +94,15 @@ stdenv.mkDerivation ( cp "$input" "$out/nix-support/$(basename "$input")" done fi + '' + # TODO: Clean up on `staging`. + + lib.optionalString stdenv.targetPlatform.isDarwin '' + printf "NIX_SWIFTFLAGS_COMPILE+=' -use-ld=lld -tools-directory %s'\n" \ + ${writeShellScriptBin "ld" '' + exec ${lib.getExe' llvmPackages.lld "ld64.lld"} "$@" + ''}/bin \ + >> $out/nix-support/setup-hook + printf '%s\n' ${lib.getBin llvmPackages.lld} >> $out/nix-support/propagated-build-inputs ''; passthru = {