superenv: find Homebrew's gcc-4.2
If we're using a homebrewed gcc-4.2, xcrun may fail to find it (or, worse, find superenv's shim instead). Explicitly add it to the PATH and search all path elements for the requested tool. Also make sure to specify 'gcc-4.2' as the compiler name, not plain 'gcc'. That can resolve to llvm-gcc and to gcc-4.0 on various Xcodes.
This commit is contained in:
parent
347c905a7f
commit
63b9031159
@ -21,7 +21,11 @@ try `/usr/bin/xcrun --find #{arg0}`.chomp
|
|||||||
# Nuts, Xcode is not setup properly or something. Try to find the tools anyway!
|
# Nuts, Xcode is not setup properly or something. Try to find the tools anyway!
|
||||||
try "#{ENV['DEVELOPER_DIR']}/usr/bin/#{arg0}"
|
try "#{ENV['DEVELOPER_DIR']}/usr/bin/#{arg0}"
|
||||||
try "#{ENV['DEVELOPER_DIR']}/Toolchains/XcodeDefault.xctoolchain/usr/bin/#{arg0}"
|
try "#{ENV['DEVELOPER_DIR']}/Toolchains/XcodeDefault.xctoolchain/usr/bin/#{arg0}"
|
||||||
try "/usr/bin/#{arg0}"
|
# xcrun won't always be able to find Homebrew's apple-gcc42,
|
||||||
|
# even when it's in the PATH
|
||||||
|
ENV['PATH'].split(':').each do |p|
|
||||||
|
try "#{p}/#{arg0}"
|
||||||
|
end
|
||||||
|
|
||||||
abort <<-EOS
|
abort <<-EOS
|
||||||
Your Xcode and or CLT are mis-configured. Try some or all of the following:
|
Your Xcode and or CLT are mis-configured. Try some or all of the following:
|
||||||
|
|||||||
@ -61,6 +61,13 @@ class << ENV
|
|||||||
ENV['CMAKE_INCLUDE_PATH'] = determine_cmake_include_path
|
ENV['CMAKE_INCLUDE_PATH'] = determine_cmake_include_path
|
||||||
ENV['CMAKE_LIBRARY_PATH'] = determine_cmake_library_path
|
ENV['CMAKE_LIBRARY_PATH'] = determine_cmake_library_path
|
||||||
ENV['ACLOCAL_PATH'] = determine_aclocal_path
|
ENV['ACLOCAL_PATH'] = determine_aclocal_path
|
||||||
|
|
||||||
|
# Homebrew's apple-gcc42 will be outside the PATH in superenv,
|
||||||
|
# so xcrun may not be able to find it
|
||||||
|
if ENV['HOMEBREW_CC'] == 'gcc-4.2' && !MacOS.locate('gcc-4.2')
|
||||||
|
apple_gcc42 = Formula.factory('apple-gcc42') rescue nil
|
||||||
|
ENV.append('PATH', apple_gcc42.opt_prefix/'bin', ':') if apple_gcc42
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def universal_binary
|
def universal_binary
|
||||||
@ -76,8 +83,13 @@ class << ENV
|
|||||||
|
|
||||||
def determine_cc
|
def determine_cc
|
||||||
if ARGV.include? '--use-gcc'
|
if ARGV.include? '--use-gcc'
|
||||||
|
gcc_installed = Formula.factory('apple-gcc42').installed? rescue false
|
||||||
# fall back to something else on systems without Apple gcc
|
# fall back to something else on systems without Apple gcc
|
||||||
MacOS.locate('gcc-4.2') ? "gcc-4.2" : raise("gcc-4.2 not found!")
|
if MacOS.locate('gcc-4.2') || gcc_installed
|
||||||
|
"gcc-4.2"
|
||||||
|
else
|
||||||
|
raise("gcc-4.2 not found!")
|
||||||
|
end
|
||||||
elsif ARGV.include? '--use-llvm'
|
elsif ARGV.include? '--use-llvm'
|
||||||
"llvm-gcc"
|
"llvm-gcc"
|
||||||
elsif ARGV.include? '--use-clang'
|
elsif ARGV.include? '--use-clang'
|
||||||
@ -93,7 +105,10 @@ class << ENV
|
|||||||
"gcc"
|
"gcc"
|
||||||
elsif ENV['HOMEBREW_CC']
|
elsif ENV['HOMEBREW_CC']
|
||||||
case ENV['HOMEBREW_CC']
|
case ENV['HOMEBREW_CC']
|
||||||
when 'clang', 'gcc', 'gcc-4.0' then ENV['HOMEBREW_CC']
|
when 'clang', 'gcc-4.0' then ENV['HOMEBREW_CC']
|
||||||
|
# depending on Xcode version plain 'gcc' could actually be
|
||||||
|
# gcc-4.0 or llvm-gcc
|
||||||
|
when 'gcc' then 'gcc-4.2'
|
||||||
when 'llvm', 'llvm-gcc' then 'llvm-gcc'
|
when 'llvm', 'llvm-gcc' then 'llvm-gcc'
|
||||||
else
|
else
|
||||||
opoo "Invalid value for HOMEBREW_CC: #{ENV['HOMEBREW_CC']}"
|
opoo "Invalid value for HOMEBREW_CC: #{ENV['HOMEBREW_CC']}"
|
||||||
@ -106,7 +121,7 @@ class << ENV
|
|||||||
case MacOS.default_compiler
|
case MacOS.default_compiler
|
||||||
when :clang then 'clang'
|
when :clang then 'clang'
|
||||||
when :llvm then 'llvm-gcc'
|
when :llvm then 'llvm-gcc'
|
||||||
when :gcc then 'gcc'
|
when :gcc then 'gcc-4.2'
|
||||||
when :gcc_4_0 then 'gcc-4.0'
|
when :gcc_4_0 then 'gcc-4.0'
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user