aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew
diff options
context:
space:
mode:
Diffstat (limited to 'Library/Homebrew')
-rw-r--r--Library/Homebrew/compilers.rb9
-rw-r--r--Library/Homebrew/development_tools.rb7
-rwxr-xr-xLibrary/Homebrew/shims/super/cc6
l---------Library/Homebrew/shims/super/llvm_clang1
l---------Library/Homebrew/shims/super/llvm_clang++1
5 files changed, 19 insertions, 5 deletions
diff --git a/Library/Homebrew/compilers.rb b/Library/Homebrew/compilers.rb
index fdfcab817..9ee847db0 100644
--- a/Library/Homebrew/compilers.rb
+++ b/Library/Homebrew/compilers.rb
@@ -3,9 +3,10 @@ module CompilerConstants
GNU_GCC_VERSIONS = %w[4.3 4.4 4.5 4.6 4.7 4.8 4.9 5 6 7].freeze
GNU_GCC_REGEXP = /^gcc-(4\.[3-9]|[5-7])$/
COMPILER_SYMBOL_MAP = {
- "gcc-4.0" => :gcc_4_0,
- "gcc-4.2" => :gcc,
- "clang" => :clang,
+ "gcc-4.0" => :gcc_4_0,
+ "gcc-4.2" => :gcc,
+ "clang" => :clang,
+ "llvm_clang" => :llvm_clang,
}.freeze
COMPILERS = COMPILER_SYMBOL_MAP.values +
@@ -86,7 +87,7 @@ class CompilerSelector
Compiler = Struct.new(:name, :version)
COMPILER_PRIORITY = {
- clang: [:clang, :gcc, :gnu, :gcc_4_0],
+ clang: [:clang, :gcc, :gnu, :gcc_4_0, :llvm_clang],
gcc: [:gcc, :gnu, :clang, :gcc_4_0],
gcc_4_0: [:gcc_4_0, :gcc, :gnu, :clang],
}.freeze
diff --git a/Library/Homebrew/development_tools.rb b/Library/Homebrew/development_tools.rb
index 62f9b3d71..d081067a8 100644
--- a/Library/Homebrew/development_tools.rb
+++ b/Library/Homebrew/development_tools.rb
@@ -86,6 +86,13 @@ class DevelopmentTools
end
end
+ def llvm_clang_build_version
+ @llvm_clang_build_version ||= if Tab.for_name "llvm"
+ path = Formulary.factory("llvm").opt_prefix/"bin/clang"
+ `#{path} --version`[/clang version (\d\.\d\.\d)/, 1]
+ end
+ end
+
def non_apple_gcc_version(cc)
(@non_apple_gcc_version ||= {}).fetch(cc) do
path = HOMEBREW_PREFIX.join("opt", "gcc", "bin", cc)
diff --git a/Library/Homebrew/shims/super/cc b/Library/Homebrew/shims/super/cc
index 1552f412d..167fe8c21 100755
--- a/Library/Homebrew/shims/super/cc
+++ b/Library/Homebrew/shims/super/cc
@@ -58,6 +58,8 @@ class Cmd
@tool ||= case @arg0
when "ld" then "ld"
when "cpp" then "cpp"
+ when /llvm_(clang(\+\+)?)/
+ "#{ENV["HOMEBREW_PREFIX"]}/opt/llvm/bin/#{$1}"
when /\w\+\+(-\d(\.\d)?)?$/
case ENV["HOMEBREW_CC"]
when /clang/
@@ -154,7 +156,7 @@ class Cmd
/^-O[0-9zs]?$/, "-fast", "-no-cpp-precomp",
"-pedantic", "-pedantic-errors", "-Wno-long-double",
"-Wno-unused-but-set-variable"
- when "-fopenmp", "-lgomp", "-mno-fused-madd", "-fforce-addr", "-fno-defer-pop",
+ when "-mno-fused-madd", "-fforce-addr", "-fno-defer-pop",
"-mno-dynamic-no-pic", "-fearly-inlining", /^-f(?:no-)?inline-functions-called-once/,
/^-finline-limit/, /^-f(?:no-)?check-new/, "-fno-delete-null-pointer-checks",
"-fcaller-saves", "-fthread-jumps", "-fno-reorder-blocks", "-fcse-skip-blocks",
@@ -163,6 +165,8 @@ class Cmd
"-fuse-linker-plugin", "-frounding-math"
# clang doesn't support these flags
args << arg unless tool =~ /^clang/
+ when "-fopenmp", "-lgomp"
+ args << arg if tool =~ /^llvm_clang/
when "--fast-math"
arg = "-ffast-math" if tool =~ /^clang/
args << arg
diff --git a/Library/Homebrew/shims/super/llvm_clang b/Library/Homebrew/shims/super/llvm_clang
new file mode 120000
index 000000000..2652f5f42
--- /dev/null
+++ b/Library/Homebrew/shims/super/llvm_clang
@@ -0,0 +1 @@
+cc \ No newline at end of file
diff --git a/Library/Homebrew/shims/super/llvm_clang++ b/Library/Homebrew/shims/super/llvm_clang++
new file mode 120000
index 000000000..2652f5f42
--- /dev/null
+++ b/Library/Homebrew/shims/super/llvm_clang++
@@ -0,0 +1 @@
+cc \ No newline at end of file