diff options
Diffstat (limited to 'src/ruby/ext/grpc/extconf.rb')
-rw-r--r-- | src/ruby/ext/grpc/extconf.rb | 68 |
1 files changed, 24 insertions, 44 deletions
diff --git a/src/ruby/ext/grpc/extconf.rb b/src/ruby/ext/grpc/extconf.rb index db9385e961..018353ce5d 100644 --- a/src/ruby/ext/grpc/extconf.rb +++ b/src/ruby/ext/grpc/extconf.rb @@ -54,53 +54,30 @@ LIB_DIRS = [ LIBDIR ] -def check_grpc_root - grpc_root = ENV['GRPC_ROOT'] - if grpc_root.nil? - r = File.expand_path(File.join(File.dirname(__FILE__), '../../../..')) - grpc_root = r if File.exist?(File.join(r, 'include/grpc/grpc.h')) - end - grpc_root -end +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_pkg_config = system('pkg-config --exists grpc') +grpc_config = ENV['GRPC_CONFIG'] || 'opt' -if grpc_pkg_config - $CFLAGS << ' ' + `pkg-config --static --cflags grpc`.strip + ' ' - $LDFLAGS << ' ' + `pkg-config --static --libs grpc`.strip + ' ' +if ENV.key?('GRPC_LIB_DIR') + grpc_lib_dir = File.join(grpc_root, ENV['GRPC_LIB_DIR']) else - dir_config('grpc', HEADER_DIRS, LIB_DIRS) - fail 'libdl not found' unless have_library('dl', 'dlopen') - fail 'zlib not found' unless have_library('z', 'inflate') - begin - fail 'Fail' unless have_library('gpr', 'gpr_now') - fail 'Fail' unless have_library('grpc', 'grpc_channel_destroy') - rescue - # Check to see if GRPC_ROOT is defined or available - grpc_root = check_grpc_root - - # Stop if there is still no grpc_root - exit 1 if grpc_root.nil? - - 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) - 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}") - end - $CFLAGS << ' -I' + File.join(grpc_root, 'include') - $LDFLAGS << ' -L' + grpc_lib_dir - if grpc_config == 'gcov' - $CFLAGS << ' -O0 -fprofile-arcs -ftest-coverage' - $LDFLAGS << ' -fprofile-arcs -ftest-coverage -rdynamic' - end - raise 'gpr not found' unless have_library('gpr', 'gpr_now') - raise 'grpc not found' unless have_library('grpc', 'grpc_channel_destroy') - end + grpc_lib_dir = File.join(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}") +end + +$CFLAGS << ' -I' + File.join(grpc_root, 'include') +$LDFLAGS << ' ' + File.join(grpc_lib_dir, 'libgrpc.a') +$LDFLAGS << ' ' + File.join(grpc_lib_dir, 'libgpr.a') +if grpc_config == 'gcov' + $CFLAGS << ' -O0 -fprofile-arcs -ftest-coverage' + $LDFLAGS << ' -fprofile-arcs -ftest-coverage -rdynamic' end $CFLAGS << ' -std=c99 ' @@ -109,4 +86,7 @@ $CFLAGS << ' -Wextra ' $CFLAGS << ' -pedantic ' $CFLAGS << ' -Werror ' +$LDFLAGS << ' -lssl ' +$LDFLAGS << ' -lcrypto ' + create_makefile('grpc/grpc') |