diff options
author | Nicolas "Pixel" Noble <pixel@nobis-crew.org> | 2016-01-28 07:46:08 +0100 |
---|---|---|
committer | Nicolas "Pixel" Noble <pixel@nobis-crew.org> | 2016-01-28 09:35:46 +0100 |
commit | e7a91a2f57e8eb663102d1b50e0da007102bdc49 (patch) | |
tree | 5e6e627a027aba176f57e41a0febe10ba7090a66 /src/ruby/ext/grpc/extconf.rb | |
parent | cb287a11df153a6a572826ba21b3fab9c6d2797c (diff) |
Properly building the gem file under mingw using rake-compiler-dock.
Diffstat (limited to 'src/ruby/ext/grpc/extconf.rb')
-rw-r--r-- | src/ruby/ext/grpc/extconf.rb | 59 |
1 files changed, 49 insertions, 10 deletions
diff --git a/src/ruby/ext/grpc/extconf.rb b/src/ruby/ext/grpc/extconf.rb index 018353ce5d..08833e72ac 100644 --- a/src/ruby/ext/grpc/extconf.rb +++ b/src/ruby/ext/grpc/extconf.rb @@ -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') |