43 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			43 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| require "os/mac/xcode"
 | |
| 
 | |
| # @private
 | |
| class DevelopmentTools
 | |
|   class << self
 | |
|     alias_method :original_locate, :locate
 | |
|     def locate(tool)
 | |
|       (@locate ||= {}).fetch(tool) do |key|
 | |
|         @locate[key] = if (located_tool = original_locate(tool))
 | |
|           located_tool
 | |
|         elsif MacOS.version > :tiger
 | |
|           path = Utils.popen_read("/usr/bin/xcrun", "-no-cache", "-find", tool).chomp
 | |
|           Pathname.new(path) if File.executable?(path)
 | |
|         end
 | |
|       end
 | |
|     end
 | |
| 
 | |
|     # Checks if the user has any developer tools installed, either via Xcode
 | |
|     # or the CLT. Convenient for guarding against formula builds when building
 | |
|     # is impossible.
 | |
|     def installed?
 | |
|       MacOS::Xcode.installed? || MacOS::CLT.installed?
 | |
|     end
 | |
| 
 | |
|     def default_compiler
 | |
|       case default_cc
 | |
|       # if GCC 4.2 is installed, e.g. via Tigerbrew, prefer it
 | |
|       # over the system's GCC 4.0
 | |
|       when /^gcc-4.0/ then gcc_42_build_version ? :gcc : :gcc_4_0
 | |
|       when /^gcc/ then :gcc
 | |
|       when "clang" then :clang
 | |
|       else
 | |
|         # guess :(
 | |
|         if MacOS::Xcode.version >= "4.3"
 | |
|           :clang
 | |
|         else
 | |
|           :gcc
 | |
|         end
 | |
|       end
 | |
|     end
 | |
|   end
 | |
| end
 | 
