|  | @@ -54,9 +54,6 @@ LIB_DIRS = [
 | 
	
		
			
				|  |  |    LIBDIR
 | 
	
		
			
				|  |  |  ]
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -fail 'libdl not found' unless have_library('dl', 'dlopen')
 | 
	
		
			
				|  |  | -fail 'zlib not found' unless have_library('z', 'inflate')
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |  grpc_root = File.expand_path(File.join(File.dirname(__FILE__), '../../../..'))
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  grpc_config = ENV['GRPC_CONFIG'] || 'opt'
 | 
	
	
		
			
				|  | @@ -64,12 +61,37 @@ grpc_config = ENV['GRPC_CONFIG'] || 'opt'
 | 
	
		
			
				|  |  |  if ENV.key?('GRPC_LIB_DIR')
 | 
	
		
			
				|  |  |    grpc_lib_dir = File.join(grpc_root, ENV['GRPC_LIB_DIR'])
 | 
	
		
			
				|  |  |  else
 | 
	
		
			
				|  |  | -  grpc_lib_dir = File.join(File.join(grpc_root, 'libs'), grpc_config)
 | 
	
		
			
				|  |  | +  grpc_lib_dir = File.join(grpc_root, 'libs', grpc_config)
 | 
	
		
			
				|  |  |  end
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  unless File.exist?(File.join(grpc_lib_dir, 'libgrpc.a'))
 | 
	
		
			
				|  |  | -  print "Building internal gRPC\n"
 | 
	
		
			
				|  |  | -  system("make -C #{grpc_root} static_c CONFIG=#{grpc_config}")
 | 
	
		
			
				|  |  | +  for var in %w( CC AR ) do
 | 
	
		
			
				|  |  | +    ENV[var] = RbConfig::CONFIG[var]
 | 
	
		
			
				|  |  | +  end
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  ENV['LD'] = ENV['CC']
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  if RUBY_PLATFORM =~ /mingw|mswin/
 | 
	
		
			
				|  |  | +    ENV['SYSTEM'] = 'MINGW32'
 | 
	
		
			
				|  |  | +  end
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  ENV['EMBED_OPENSSL'] = 'true'
 | 
	
		
			
				|  |  | +  ENV['EMBED_ZLIB'] = 'true'
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  grpc_cppflags = ''
 | 
	
		
			
				|  |  | +  grpc_cppflags << ' -D_WIN32_WINNT=0x600 '
 | 
	
		
			
				|  |  | +  grpc_cppflags << ' -DUNICODE '
 | 
	
		
			
				|  |  | +  grpc_cppflags << ' -D_UNICODE '
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  ENV['CPPFLAGS'] = grpc_cppflags
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  output_dir = File.expand_path(RbConfig::CONFIG['topdir'])
 | 
	
		
			
				|  |  | +  grpc_lib_dir = File.join(output_dir, 'libs', grpc_config)
 | 
	
		
			
				|  |  | +  ENV['BUILDDIR'] = output_dir
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  puts 'Building internal gRPC into ' + grpc_lib_dir
 | 
	
		
			
				|  |  | +  system("make -j -C #{grpc_root} static_c CONFIG=#{grpc_config}")
 | 
	
		
			
				|  |  | +  exit 1 unless $? == 0
 | 
	
		
			
				|  |  |  end
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  $CFLAGS << ' -I' + File.join(grpc_root, 'include')
 | 
	
	
		
			
				|  | @@ -85,8 +107,25 @@ $CFLAGS << ' -Wall '
 | 
	
		
			
				|  |  |  $CFLAGS << ' -Wextra '
 | 
	
		
			
				|  |  |  $CFLAGS << ' -pedantic '
 | 
	
		
			
				|  |  |  $CFLAGS << ' -Werror '
 | 
	
		
			
				|  |  | +$CFLAGS << ' -Wno-format '
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +subdir = RUBY_VERSION.sub(/\.\d$/,'')
 | 
	
		
			
				|  |  | +output = File.join('grpc', 'grpc')
 | 
	
		
			
				|  |  | +puts 'Generating Makefile for ' + output
 | 
	
		
			
				|  |  | +create_makefile(output)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +strip_tool = RbConfig::CONFIG['STRIP']
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +File.open('Makefile.new', 'w') do |o|
 | 
	
		
			
				|  |  | +  o.puts 'hijack: all strip'
 | 
	
		
			
				|  |  | +  o.puts
 | 
	
		
			
				|  |  | +  File.foreach('Makefile') do |i|
 | 
	
		
			
				|  |  | +    o.puts i
 | 
	
		
			
				|  |  | +  end
 | 
	
		
			
				|  |  | +  o.puts
 | 
	
		
			
				|  |  | +  o.puts 'strip:'
 | 
	
		
			
				|  |  | +  o.puts "\t$(ECHO) Stripping $(DLLIB)"
 | 
	
		
			
				|  |  | +  o.puts "\t$(Q) #{strip_tool} $(DLLIB)"
 | 
	
		
			
				|  |  | +end
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -$LDFLAGS << ' -lssl '
 | 
	
		
			
				|  |  | -$LDFLAGS << ' -lcrypto '
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -create_makefile('grpc/grpc')
 | 
	
		
			
				|  |  | +File.rename('Makefile.new', 'Makefile')
 |