ENV: add cc and cxx setters
This commit is contained in:
		
							parent
							
								
									4bee5db66d
								
							
						
					
					
						commit
						aa79e21ba4
					
				@ -60,6 +60,14 @@ module SharedEnvExtension
 | 
				
			|||||||
    end if value
 | 
					    end if value
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  def cc= val
 | 
				
			||||||
 | 
					    self['CC'] = self['OBJC'] = val
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  def cxx= val
 | 
				
			||||||
 | 
					    self['CXX'] = self['OBJCXX'] = val
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  def cc;       self['CC'];           end
 | 
					  def cc;       self['CC'];           end
 | 
				
			||||||
  def cxx;      self['CXX'];          end
 | 
					  def cxx;      self['CXX'];          end
 | 
				
			||||||
  def cflags;   self['CFLAGS'];       end
 | 
					  def cflags;   self['CFLAGS'];       end
 | 
				
			||||||
 | 
				
			|||||||
@ -64,8 +64,8 @@ module Stdenv
 | 
				
			|||||||
    unless self['CC']
 | 
					    unless self['CC']
 | 
				
			||||||
      @compiler = MacOS.default_compiler
 | 
					      @compiler = MacOS.default_compiler
 | 
				
			||||||
      self.send @compiler
 | 
					      self.send @compiler
 | 
				
			||||||
      self['CC'] = self['OBJC'] = MacOS.locate("cc")
 | 
					      self.cc  = MacOS.locate("cc")
 | 
				
			||||||
      self['CXX'] = self['OBJCXX'] = MacOS.locate("c++")
 | 
					      self.cxx = MacOS.locate("c++")
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # Add lib and include etc. from the current macosxsdk to compiler flags:
 | 
					    # Add lib and include etc. from the current macosxsdk to compiler flags:
 | 
				
			||||||
@ -131,8 +131,8 @@ module Stdenv
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  def gcc_4_0_1
 | 
					  def gcc_4_0_1
 | 
				
			||||||
    # we don't use locate because gcc 4.0 has not been provided since Xcode 4
 | 
					    # we don't use locate because gcc 4.0 has not been provided since Xcode 4
 | 
				
			||||||
    self['CC'] = self['OBJC'] = "#{MacOS.dev_tools_path}/gcc-4.0"
 | 
					    self.cc  = "#{MacOS.dev_tools_path}/gcc-4.0"
 | 
				
			||||||
    self['CXX'] = self['OBJCXX'] = "#{MacOS.dev_tools_path}/g++-4.0"
 | 
					    self.cxx = "#{MacOS.dev_tools_path}/g++-4.0"
 | 
				
			||||||
    replace_in_cflags '-O4', '-O3'
 | 
					    replace_in_cflags '-O4', '-O3'
 | 
				
			||||||
    set_cpu_cflags '-march=nocona -mssse3'
 | 
					    set_cpu_cflags '-march=nocona -mssse3'
 | 
				
			||||||
    @compiler = :gcc
 | 
					    @compiler = :gcc
 | 
				
			||||||
@ -144,12 +144,12 @@ module Stdenv
 | 
				
			|||||||
    # However they still provide a gcc symlink to llvm
 | 
					    # However they still provide a gcc symlink to llvm
 | 
				
			||||||
    # But we don't want LLVM of course.
 | 
					    # But we don't want LLVM of course.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    self['CC'] = self['OBJC'] = MacOS.locate("gcc-4.2")
 | 
					    self.cc  = MacOS.locate("gcc-4.2")
 | 
				
			||||||
    self['CXX'] = self['OBJCXX'] = MacOS.locate("g++-4.2")
 | 
					    self.cxx = MacOS.locate("g++-4.2")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    unless self['CC']
 | 
					    unless self['CC']
 | 
				
			||||||
      self['CC'] = self['OBJC'] = "#{HOMEBREW_PREFIX}/bin/gcc-4.2"
 | 
					      self.cc  = "#{HOMEBREW_PREFIX}/bin/gcc-4.2"
 | 
				
			||||||
      self['CXX'] = self['OBJCXX'] = "#{HOMEBREW_PREFIX}/bin/g++-4.2"
 | 
					      self.cxx = "#{HOMEBREW_PREFIX}/bin/g++-4.2"
 | 
				
			||||||
      raise "GCC could not be found" unless File.exist? self['CC']
 | 
					      raise "GCC could not be found" unless File.exist? self['CC']
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -164,15 +164,15 @@ module Stdenv
 | 
				
			|||||||
  alias_method :gcc_4_2, :gcc
 | 
					  alias_method :gcc_4_2, :gcc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  def llvm
 | 
					  def llvm
 | 
				
			||||||
    self['CC'] = self['OBJC'] = MacOS.locate("llvm-gcc")
 | 
					    self.cc  = MacOS.locate("llvm-gcc")
 | 
				
			||||||
    self['CXX'] = self['OBJCXX'] = MacOS.locate("llvm-g++")
 | 
					    self.cxx = MacOS.locate("llvm-g++")
 | 
				
			||||||
    set_cpu_cflags
 | 
					    set_cpu_cflags
 | 
				
			||||||
    @compiler = :llvm
 | 
					    @compiler = :llvm
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  def clang
 | 
					  def clang
 | 
				
			||||||
    self['CC'] = self['OBJC'] = MacOS.locate("clang")
 | 
					    self.cc  = MacOS.locate("clang")
 | 
				
			||||||
    self['CXX'] = self['OBJCXX'] = MacOS.locate("clang++")
 | 
					    self.cxx = MacOS.locate("clang++")
 | 
				
			||||||
    replace_in_cflags(/-Xarch_#{Hardware::CPU.arch_32_bit} (-march=\S*)/, '\1')
 | 
					    replace_in_cflags(/-Xarch_#{Hardware::CPU.arch_32_bit} (-march=\S*)/, '\1')
 | 
				
			||||||
    # Clang mistakenly enables AES-NI on plain Nehalem
 | 
					    # Clang mistakenly enables AES-NI on plain Nehalem
 | 
				
			||||||
    set_cpu_cflags '-march=native', :nehalem => '-march=native -Xclang -target-feature -Xclang -aes'
 | 
					    set_cpu_cflags '-march=native', :nehalem => '-march=native -Xclang -target-feature -Xclang -aes'
 | 
				
			||||||
 | 
				
			|||||||
@ -56,10 +56,8 @@ module Superenv
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  def setup_build_environment
 | 
					  def setup_build_environment
 | 
				
			||||||
    reset
 | 
					    reset
 | 
				
			||||||
    self['CC'] = 'cc'
 | 
					    self.cc  = 'cc'
 | 
				
			||||||
    self['CXX'] = 'c++'
 | 
					    self.cxx = 'c++'
 | 
				
			||||||
    self['OBJC'] = 'cc'
 | 
					 | 
				
			||||||
    self['OBJCXX'] = 'c++'
 | 
					 | 
				
			||||||
    self['DEVELOPER_DIR'] = determine_developer_dir
 | 
					    self['DEVELOPER_DIR'] = determine_developer_dir
 | 
				
			||||||
    self['MAKEFLAGS'] ||= "-j#{determine_make_jobs}"
 | 
					    self['MAKEFLAGS'] ||= "-j#{determine_make_jobs}"
 | 
				
			||||||
    self['PATH'] = determine_path
 | 
					    self['PATH'] = determine_path
 | 
				
			||||||
@ -249,16 +247,16 @@ module Superenv
 | 
				
			|||||||
  end
 | 
					  end
 | 
				
			||||||
  alias_method :j1, :deparallelize
 | 
					  alias_method :j1, :deparallelize
 | 
				
			||||||
  def gcc
 | 
					  def gcc
 | 
				
			||||||
    self['CC'] = self['OBJC'] = self['HOMEBREW_CC'] = "gcc-4.2"
 | 
					    self.cc  = self['HOMEBREW_CC'] = "gcc-4.2"
 | 
				
			||||||
    self['CXX'] = self['OBJCXX'] = "g++-4.2"
 | 
					    self.cxx = "g++-4.2"
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
  def llvm
 | 
					  def llvm
 | 
				
			||||||
    self['CC'] = self['OBJC'] = self['HOMEBREW_CC'] = "llvm-gcc"
 | 
					    self.cc  = self['HOMEBREW_CC'] = "llvm-gcc"
 | 
				
			||||||
    self['CXX'] = self['OBJCXX'] = "llvm-g++-4.2"
 | 
					    self.cxx = "llvm-g++-4.2"
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
  def clang
 | 
					  def clang
 | 
				
			||||||
    self['CC'] = self['OBJC'] = self['HOMEBREW_CC'] = "clang"
 | 
					    self.cc  = self['HOMEBREW_CC'] = "clang"
 | 
				
			||||||
    self['CXX'] = self['OBJCXX'] = "clang++"
 | 
					    self.cxx = "clang++"
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
  def make_jobs
 | 
					  def make_jobs
 | 
				
			||||||
    self['MAKEFLAGS'] =~ /-\w*j(\d)+/
 | 
					    self['MAKEFLAGS'] =~ /-\w*j(\d)+/
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user