From 414935fb391117f7449adc8b78fc6758c5a3e5b1 Mon Sep 17 00:00:00 2001 From: Bo Anderson Date: Thu, 2 Sep 2021 16:31:12 +0100 Subject: [PATCH 1/2] shims: enforce usage of Swift-bundled Clang on Linux Co-authored-by: Mike McQuaid --- Library/Homebrew/shims/linux/super/swift | 1 + Library/Homebrew/shims/super/cc | 4 ++++ Library/Homebrew/shims/super/swift | 15 +++++++++++++++ 3 files changed, 20 insertions(+) create mode 120000 Library/Homebrew/shims/linux/super/swift create mode 100755 Library/Homebrew/shims/super/swift diff --git a/Library/Homebrew/shims/linux/super/swift b/Library/Homebrew/shims/linux/super/swift new file mode 120000 index 0000000000..cdc038de8a --- /dev/null +++ b/Library/Homebrew/shims/linux/super/swift @@ -0,0 +1 @@ +../../super/swift \ No newline at end of file diff --git a/Library/Homebrew/shims/super/cc b/Library/Homebrew/shims/super/cc index fbe556f8b0..af5bd8c7f8 100755 --- a/Library/Homebrew/shims/super/cc +++ b/Library/Homebrew/shims/super/cc @@ -79,6 +79,8 @@ class Cmd "#{ENV["HOMEBREW_PREFIX"]}/opt/llvm/bin/#{Regexp.last_match(1)}" when /\w\+\+(-\d+(\.\d)?)?$/ case ENV["HOMEBREW_CC"] + when "swift_clang" + "#{ENV["HOMEBREW_PREFIX"]}/opt/swift/libexec/bin/clang++" when /clang/ "clang++" when /llvm-gcc/ @@ -91,6 +93,8 @@ class Cmd # HOMEBREW_CC regardless of what name under which the tool was invoked. if ENV["HOMEBREW_CC"] == "llvm_clang" "#{ENV["HOMEBREW_PREFIX"]}/opt/llvm/bin/clang" + elsif ENV["HOMEBREW_CC"] == "swift_clang" + "#{ENV["HOMEBREW_PREFIX"]}/opt/swift/libexec/bin/clang" else ENV["HOMEBREW_CC"] end diff --git a/Library/Homebrew/shims/super/swift b/Library/Homebrew/shims/super/swift new file mode 100755 index 0000000000..8d46e5174d --- /dev/null +++ b/Library/Homebrew/shims/super/swift @@ -0,0 +1,15 @@ +#!/bin/bash + +# Ensure we use Swift's clang when performing Swift builds. + +export CC="clang" +export CXX="clang++" + +# swift_clang isn't a shim but is used to ensure the cc shim +# points to the compiler inside the swift keg +export HOMEBREW_CC="swift_clang" +export HOMEBREW_CXX="swift_clang++" + +# HOMEBREW_OPT is set by extend/ENV/super.rb +# shellcheck disable=SC2154 +exec "${HOMEBREW_OPT}/swift/bin/swift" "$@" From 0eba5b29e9966d2b131c50bc57f9af89790be51c Mon Sep 17 00:00:00 2001 From: Bo Anderson Date: Wed, 15 Sep 2021 03:27:05 +0100 Subject: [PATCH 2/2] shims/super: shim swiftc --- Library/Homebrew/shims/linux/super/swiftc | 1 + Library/Homebrew/shims/mac/super/swift | 4 ++-- Library/Homebrew/shims/mac/super/swiftc | 1 + Library/Homebrew/shims/super/swift | 2 +- Library/Homebrew/shims/super/swiftc | 1 + 5 files changed, 6 insertions(+), 3 deletions(-) create mode 120000 Library/Homebrew/shims/linux/super/swiftc create mode 120000 Library/Homebrew/shims/mac/super/swiftc create mode 120000 Library/Homebrew/shims/super/swiftc diff --git a/Library/Homebrew/shims/linux/super/swiftc b/Library/Homebrew/shims/linux/super/swiftc new file mode 120000 index 0000000000..7e5f6f29f7 --- /dev/null +++ b/Library/Homebrew/shims/linux/super/swiftc @@ -0,0 +1 @@ +swift \ No newline at end of file diff --git a/Library/Homebrew/shims/mac/super/swift b/Library/Homebrew/shims/mac/super/swift index 3b8949f31d..0573e95853 100755 --- a/Library/Homebrew/shims/mac/super/swift +++ b/Library/Homebrew/shims/mac/super/swift @@ -11,5 +11,5 @@ if [[ -z "${SDKROOT}" && -n "${HOMEBREW_SDKROOT}" ]]; then export SDKROOT=${HOMEBREW_SDKROOT} fi -try_exec_non_system "swift" "$@" -safe_exec "/usr/bin/swift" "$@" +try_exec_non_system "${SHIM_FILE}" "$@" +safe_exec "/usr/bin/${SHIM_FILE}" "$@" diff --git a/Library/Homebrew/shims/mac/super/swiftc b/Library/Homebrew/shims/mac/super/swiftc new file mode 120000 index 0000000000..7e5f6f29f7 --- /dev/null +++ b/Library/Homebrew/shims/mac/super/swiftc @@ -0,0 +1 @@ +swift \ No newline at end of file diff --git a/Library/Homebrew/shims/super/swift b/Library/Homebrew/shims/super/swift index 8d46e5174d..a659de25e6 100755 --- a/Library/Homebrew/shims/super/swift +++ b/Library/Homebrew/shims/super/swift @@ -12,4 +12,4 @@ export HOMEBREW_CXX="swift_clang++" # HOMEBREW_OPT is set by extend/ENV/super.rb # shellcheck disable=SC2154 -exec "${HOMEBREW_OPT}/swift/bin/swift" "$@" +exec "${HOMEBREW_OPT}/swift/bin/${0##*/}" "$@" diff --git a/Library/Homebrew/shims/super/swiftc b/Library/Homebrew/shims/super/swiftc new file mode 120000 index 0000000000..7e5f6f29f7 --- /dev/null +++ b/Library/Homebrew/shims/super/swiftc @@ -0,0 +1 @@ +swift \ No newline at end of file