67 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			67 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| require "set"
 | |
| 
 | |
| class BuildEnvironment
 | |
|   def initialize(*settings)
 | |
|     @settings = Set.new(*settings)
 | |
|   end
 | |
| 
 | |
|   def merge(*args)
 | |
|     @settings.merge(*args)
 | |
|     self
 | |
|   end
 | |
| 
 | |
|   def <<(o)
 | |
|     @settings << o
 | |
|     self
 | |
|   end
 | |
| 
 | |
|   def std?
 | |
|     @settings.include? :std
 | |
|   end
 | |
| 
 | |
|   def userpaths?
 | |
|     @settings.include? :userpaths
 | |
|   end
 | |
| 
 | |
|   module DSL
 | |
|     def env(*settings)
 | |
|       @env ||= BuildEnvironment.new
 | |
|       @env.merge(settings)
 | |
|     end
 | |
|   end
 | |
| end
 | |
| 
 | |
| module Homebrew
 | |
|   module_function
 | |
| 
 | |
|   def build_env_keys(env)
 | |
|     %w[
 | |
|       CC CXX LD OBJC OBJCXX
 | |
|       HOMEBREW_CC HOMEBREW_CXX
 | |
|       CFLAGS CXXFLAGS CPPFLAGS LDFLAGS SDKROOT MAKEFLAGS
 | |
|       CMAKE_PREFIX_PATH CMAKE_INCLUDE_PATH CMAKE_LIBRARY_PATH CMAKE_FRAMEWORK_PATH
 | |
|       MACOSX_DEPLOYMENT_TARGET PKG_CONFIG_PATH PKG_CONFIG_LIBDIR
 | |
|       HOMEBREW_DEBUG HOMEBREW_MAKE_JOBS HOMEBREW_VERBOSE
 | |
|       HOMEBREW_SVN HOMEBREW_GIT
 | |
|       HOMEBREW_SDKROOT HOMEBREW_BUILD_FROM_SOURCE
 | |
|       MAKE GIT CPP
 | |
|       ACLOCAL_PATH PATH CPATH
 | |
|     ].select { |key| env.key?(key) }
 | |
|   end
 | |
| 
 | |
|   def dump_build_env(env, f = $stdout)
 | |
|     keys = build_env_keys(env)
 | |
|     keys -= %w[CC CXX OBJC OBJCXX] if env["CC"] == env["HOMEBREW_CC"]
 | |
| 
 | |
|     keys.each do |key|
 | |
|       value = env[key]
 | |
|       s = "#{key}: #{value}"
 | |
|       case key
 | |
|       when "CC", "CXX", "LD"
 | |
|         s << " => #{Pathname.new(value).realpath}" if File.symlink?(value)
 | |
|       end
 | |
|       f.puts s
 | |
|     end
 | |
|   end
 | |
| end
 | 
