aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--.gitignore2
-rw-r--r--Makefile152
-rwxr-xr-xRakefile27
-rw-r--r--build.yaml11
-rwxr-xr-xgrpc.gemspec448
-rw-r--r--src/ruby/ext/grpc/extconf.rb64
-rw-r--r--src/ruby/ext/grpc/rb_grpc.c2
-rw-r--r--src/ruby/lib/grpc/grpc.rb34
-rw-r--r--templates/grpc.gemspec.template25
-rw-r--r--third_party/rake-compiler-dock/Dockerfile112
-rw-r--r--third_party/rake-compiler-dock/LICENSE.txt22
-rw-r--r--third_party/rake-compiler-dock/README.md1
-rw-r--r--third_party/rake-compiler-dock/build/patches/rake-compiler-0.9.5/without-exts.diff14
-rw-r--r--third_party/rake-compiler-dock/build/patches/ruby-1.8.7-p374/nop.patch2
-rw-r--r--third_party/rake-compiler-dock/build/patches/ruby-1.9.3/no_sendfile.patch13
-rw-r--r--third_party/rake-compiler-dock/build/patches/ruby-1.9.3/nop.patch2
-rw-r--r--third_party/rake-compiler-dock/build/patches/ruby-2.3.0/no_sendfile.patch12
-rwxr-xr-xthird_party/rake-compiler-dock/build/runas12
-rw-r--r--third_party/rake-compiler-dock/build/sigfw.c43
-rwxr-xr-xthird_party/rake-compiler-dock/build/strip_wrapper30
-rw-r--r--third_party/rake-compiler-dock/build/sudoers1
21 files changed, 916 insertions, 113 deletions
diff --git a/.gitignore b/.gitignore
index 66c546eb58..3294edb49a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -57,7 +57,7 @@ out
.ycm_extra_conf.py
# XCode
-build/
+^build/
*.pbxuser
!default.pbxuser
*.mode1v3
diff --git a/Makefile b/Makefile
index 31559d5c65..3c980600b7 100644
--- a/Makefile
+++ b/Makefile
@@ -4197,8 +4197,8 @@ LIBBORINGSSL_SRC = \
LIBBORINGSSL_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_SRC))))
-$(LIBBORINGSSL_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE
-$(LIBBORINGSSL_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value
+$(LIBBORINGSSL_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
+$(LIBBORINGSSL_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare
$(LIBDIR)/$(CONFIG)/libboringssl.a: $(ZLIB_DEP) $(LIBBORINGSSL_OBJS)
$(E) "[AR] Creating $@"
@@ -4225,8 +4225,8 @@ LIBBORINGSSL_TEST_UTIL_SRC = \
LIBBORINGSSL_TEST_UTIL_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_TEST_UTIL_SRC))))
-$(LIBBORINGSSL_TEST_UTIL_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE
-$(LIBBORINGSSL_TEST_UTIL_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value
+$(LIBBORINGSSL_TEST_UTIL_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
+$(LIBBORINGSSL_TEST_UTIL_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare
ifeq ($(NO_PROTOBUF),true)
@@ -4262,8 +4262,8 @@ LIBBORINGSSL_AES_TEST_LIB_SRC = \
LIBBORINGSSL_AES_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_AES_TEST_LIB_SRC))))
-$(LIBBORINGSSL_AES_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE
-$(LIBBORINGSSL_AES_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value
+$(LIBBORINGSSL_AES_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
+$(LIBBORINGSSL_AES_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare
ifeq ($(NO_PROTOBUF),true)
@@ -4299,8 +4299,8 @@ LIBBORINGSSL_BASE64_TEST_LIB_SRC = \
LIBBORINGSSL_BASE64_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_BASE64_TEST_LIB_SRC))))
-$(LIBBORINGSSL_BASE64_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE
-$(LIBBORINGSSL_BASE64_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value
+$(LIBBORINGSSL_BASE64_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
+$(LIBBORINGSSL_BASE64_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare
ifeq ($(NO_PROTOBUF),true)
@@ -4336,8 +4336,8 @@ LIBBORINGSSL_BIO_TEST_LIB_SRC = \
LIBBORINGSSL_BIO_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_BIO_TEST_LIB_SRC))))
-$(LIBBORINGSSL_BIO_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE
-$(LIBBORINGSSL_BIO_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value
+$(LIBBORINGSSL_BIO_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
+$(LIBBORINGSSL_BIO_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare
ifeq ($(NO_PROTOBUF),true)
@@ -4373,8 +4373,8 @@ LIBBORINGSSL_BN_TEST_LIB_SRC = \
LIBBORINGSSL_BN_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_BN_TEST_LIB_SRC))))
-$(LIBBORINGSSL_BN_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE
-$(LIBBORINGSSL_BN_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value
+$(LIBBORINGSSL_BN_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
+$(LIBBORINGSSL_BN_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare
ifeq ($(NO_PROTOBUF),true)
@@ -4410,8 +4410,8 @@ LIBBORINGSSL_BYTESTRING_TEST_LIB_SRC = \
LIBBORINGSSL_BYTESTRING_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_BYTESTRING_TEST_LIB_SRC))))
-$(LIBBORINGSSL_BYTESTRING_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE
-$(LIBBORINGSSL_BYTESTRING_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value
+$(LIBBORINGSSL_BYTESTRING_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
+$(LIBBORINGSSL_BYTESTRING_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare
ifeq ($(NO_PROTOBUF),true)
@@ -4447,8 +4447,8 @@ LIBBORINGSSL_AEAD_TEST_LIB_SRC = \
LIBBORINGSSL_AEAD_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_AEAD_TEST_LIB_SRC))))
-$(LIBBORINGSSL_AEAD_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE
-$(LIBBORINGSSL_AEAD_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value
+$(LIBBORINGSSL_AEAD_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
+$(LIBBORINGSSL_AEAD_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare
ifeq ($(NO_PROTOBUF),true)
@@ -4484,8 +4484,8 @@ LIBBORINGSSL_CIPHER_TEST_LIB_SRC = \
LIBBORINGSSL_CIPHER_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_CIPHER_TEST_LIB_SRC))))
-$(LIBBORINGSSL_CIPHER_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE
-$(LIBBORINGSSL_CIPHER_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value
+$(LIBBORINGSSL_CIPHER_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
+$(LIBBORINGSSL_CIPHER_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare
ifeq ($(NO_PROTOBUF),true)
@@ -4521,8 +4521,8 @@ LIBBORINGSSL_CMAC_TEST_LIB_SRC = \
LIBBORINGSSL_CMAC_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_CMAC_TEST_LIB_SRC))))
-$(LIBBORINGSSL_CMAC_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE
-$(LIBBORINGSSL_CMAC_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value
+$(LIBBORINGSSL_CMAC_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
+$(LIBBORINGSSL_CMAC_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare
ifeq ($(NO_PROTOBUF),true)
@@ -4558,8 +4558,8 @@ LIBBORINGSSL_CONSTANT_TIME_TEST_LIB_SRC = \
LIBBORINGSSL_CONSTANT_TIME_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_CONSTANT_TIME_TEST_LIB_SRC))))
-$(LIBBORINGSSL_CONSTANT_TIME_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE
-$(LIBBORINGSSL_CONSTANT_TIME_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value
+$(LIBBORINGSSL_CONSTANT_TIME_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
+$(LIBBORINGSSL_CONSTANT_TIME_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare
$(LIBDIR)/$(CONFIG)/libboringssl_constant_time_test_lib.a: $(ZLIB_DEP) $(LIBBORINGSSL_CONSTANT_TIME_TEST_LIB_OBJS)
$(E) "[AR] Creating $@"
@@ -4584,8 +4584,8 @@ LIBBORINGSSL_ED25519_TEST_LIB_SRC = \
LIBBORINGSSL_ED25519_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_ED25519_TEST_LIB_SRC))))
-$(LIBBORINGSSL_ED25519_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE
-$(LIBBORINGSSL_ED25519_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value
+$(LIBBORINGSSL_ED25519_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
+$(LIBBORINGSSL_ED25519_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare
ifeq ($(NO_PROTOBUF),true)
@@ -4621,8 +4621,8 @@ LIBBORINGSSL_X25519_TEST_LIB_SRC = \
LIBBORINGSSL_X25519_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_X25519_TEST_LIB_SRC))))
-$(LIBBORINGSSL_X25519_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE
-$(LIBBORINGSSL_X25519_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value
+$(LIBBORINGSSL_X25519_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
+$(LIBBORINGSSL_X25519_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare
ifeq ($(NO_PROTOBUF),true)
@@ -4658,8 +4658,8 @@ LIBBORINGSSL_DH_TEST_LIB_SRC = \
LIBBORINGSSL_DH_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_DH_TEST_LIB_SRC))))
-$(LIBBORINGSSL_DH_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE
-$(LIBBORINGSSL_DH_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value
+$(LIBBORINGSSL_DH_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
+$(LIBBORINGSSL_DH_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare
ifeq ($(NO_PROTOBUF),true)
@@ -4695,8 +4695,8 @@ LIBBORINGSSL_DIGEST_TEST_LIB_SRC = \
LIBBORINGSSL_DIGEST_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_DIGEST_TEST_LIB_SRC))))
-$(LIBBORINGSSL_DIGEST_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE
-$(LIBBORINGSSL_DIGEST_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value
+$(LIBBORINGSSL_DIGEST_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
+$(LIBBORINGSSL_DIGEST_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare
ifeq ($(NO_PROTOBUF),true)
@@ -4732,8 +4732,8 @@ LIBBORINGSSL_DSA_TEST_LIB_SRC = \
LIBBORINGSSL_DSA_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_DSA_TEST_LIB_SRC))))
-$(LIBBORINGSSL_DSA_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE
-$(LIBBORINGSSL_DSA_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value
+$(LIBBORINGSSL_DSA_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
+$(LIBBORINGSSL_DSA_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare
$(LIBDIR)/$(CONFIG)/libboringssl_dsa_test_lib.a: $(ZLIB_DEP) $(LIBBORINGSSL_DSA_TEST_LIB_OBJS)
$(E) "[AR] Creating $@"
@@ -4758,8 +4758,8 @@ LIBBORINGSSL_EC_TEST_LIB_SRC = \
LIBBORINGSSL_EC_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_EC_TEST_LIB_SRC))))
-$(LIBBORINGSSL_EC_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE
-$(LIBBORINGSSL_EC_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value
+$(LIBBORINGSSL_EC_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
+$(LIBBORINGSSL_EC_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare
ifeq ($(NO_PROTOBUF),true)
@@ -4795,8 +4795,8 @@ LIBBORINGSSL_EXAMPLE_MUL_LIB_SRC = \
LIBBORINGSSL_EXAMPLE_MUL_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_EXAMPLE_MUL_LIB_SRC))))
-$(LIBBORINGSSL_EXAMPLE_MUL_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE
-$(LIBBORINGSSL_EXAMPLE_MUL_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value
+$(LIBBORINGSSL_EXAMPLE_MUL_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
+$(LIBBORINGSSL_EXAMPLE_MUL_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare
$(LIBDIR)/$(CONFIG)/libboringssl_example_mul_lib.a: $(ZLIB_DEP) $(LIBBORINGSSL_EXAMPLE_MUL_LIB_OBJS)
$(E) "[AR] Creating $@"
@@ -4821,8 +4821,8 @@ LIBBORINGSSL_ECDSA_TEST_LIB_SRC = \
LIBBORINGSSL_ECDSA_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_ECDSA_TEST_LIB_SRC))))
-$(LIBBORINGSSL_ECDSA_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE
-$(LIBBORINGSSL_ECDSA_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value
+$(LIBBORINGSSL_ECDSA_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
+$(LIBBORINGSSL_ECDSA_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare
ifeq ($(NO_PROTOBUF),true)
@@ -4858,8 +4858,8 @@ LIBBORINGSSL_ERR_TEST_LIB_SRC = \
LIBBORINGSSL_ERR_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_ERR_TEST_LIB_SRC))))
-$(LIBBORINGSSL_ERR_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE
-$(LIBBORINGSSL_ERR_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value
+$(LIBBORINGSSL_ERR_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
+$(LIBBORINGSSL_ERR_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare
ifeq ($(NO_PROTOBUF),true)
@@ -4895,8 +4895,8 @@ LIBBORINGSSL_EVP_EXTRA_TEST_LIB_SRC = \
LIBBORINGSSL_EVP_EXTRA_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_EVP_EXTRA_TEST_LIB_SRC))))
-$(LIBBORINGSSL_EVP_EXTRA_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE
-$(LIBBORINGSSL_EVP_EXTRA_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value
+$(LIBBORINGSSL_EVP_EXTRA_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
+$(LIBBORINGSSL_EVP_EXTRA_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare
ifeq ($(NO_PROTOBUF),true)
@@ -4932,8 +4932,8 @@ LIBBORINGSSL_EVP_TEST_LIB_SRC = \
LIBBORINGSSL_EVP_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_EVP_TEST_LIB_SRC))))
-$(LIBBORINGSSL_EVP_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE
-$(LIBBORINGSSL_EVP_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value
+$(LIBBORINGSSL_EVP_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
+$(LIBBORINGSSL_EVP_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare
ifeq ($(NO_PROTOBUF),true)
@@ -4969,8 +4969,8 @@ LIBBORINGSSL_PBKDF_TEST_LIB_SRC = \
LIBBORINGSSL_PBKDF_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_PBKDF_TEST_LIB_SRC))))
-$(LIBBORINGSSL_PBKDF_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE
-$(LIBBORINGSSL_PBKDF_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value
+$(LIBBORINGSSL_PBKDF_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
+$(LIBBORINGSSL_PBKDF_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare
ifeq ($(NO_PROTOBUF),true)
@@ -5006,8 +5006,8 @@ LIBBORINGSSL_HKDF_TEST_LIB_SRC = \
LIBBORINGSSL_HKDF_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_HKDF_TEST_LIB_SRC))))
-$(LIBBORINGSSL_HKDF_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE
-$(LIBBORINGSSL_HKDF_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value
+$(LIBBORINGSSL_HKDF_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
+$(LIBBORINGSSL_HKDF_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare
$(LIBDIR)/$(CONFIG)/libboringssl_hkdf_test_lib.a: $(ZLIB_DEP) $(LIBBORINGSSL_HKDF_TEST_LIB_OBJS)
$(E) "[AR] Creating $@"
@@ -5032,8 +5032,8 @@ LIBBORINGSSL_HMAC_TEST_LIB_SRC = \
LIBBORINGSSL_HMAC_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_HMAC_TEST_LIB_SRC))))
-$(LIBBORINGSSL_HMAC_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE
-$(LIBBORINGSSL_HMAC_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value
+$(LIBBORINGSSL_HMAC_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
+$(LIBBORINGSSL_HMAC_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare
ifeq ($(NO_PROTOBUF),true)
@@ -5069,8 +5069,8 @@ LIBBORINGSSL_LHASH_TEST_LIB_SRC = \
LIBBORINGSSL_LHASH_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_LHASH_TEST_LIB_SRC))))
-$(LIBBORINGSSL_LHASH_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE
-$(LIBBORINGSSL_LHASH_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value
+$(LIBBORINGSSL_LHASH_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
+$(LIBBORINGSSL_LHASH_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare
$(LIBDIR)/$(CONFIG)/libboringssl_lhash_test_lib.a: $(ZLIB_DEP) $(LIBBORINGSSL_LHASH_TEST_LIB_OBJS)
$(E) "[AR] Creating $@"
@@ -5095,8 +5095,8 @@ LIBBORINGSSL_GCM_TEST_LIB_SRC = \
LIBBORINGSSL_GCM_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_GCM_TEST_LIB_SRC))))
-$(LIBBORINGSSL_GCM_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE
-$(LIBBORINGSSL_GCM_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value
+$(LIBBORINGSSL_GCM_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
+$(LIBBORINGSSL_GCM_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare
$(LIBDIR)/$(CONFIG)/libboringssl_gcm_test_lib.a: $(ZLIB_DEP) $(LIBBORINGSSL_GCM_TEST_LIB_OBJS)
$(E) "[AR] Creating $@"
@@ -5121,8 +5121,8 @@ LIBBORINGSSL_PKCS12_TEST_LIB_SRC = \
LIBBORINGSSL_PKCS12_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_PKCS12_TEST_LIB_SRC))))
-$(LIBBORINGSSL_PKCS12_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE
-$(LIBBORINGSSL_PKCS12_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value
+$(LIBBORINGSSL_PKCS12_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
+$(LIBBORINGSSL_PKCS12_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare
ifeq ($(NO_PROTOBUF),true)
@@ -5158,8 +5158,8 @@ LIBBORINGSSL_PKCS8_TEST_LIB_SRC = \
LIBBORINGSSL_PKCS8_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_PKCS8_TEST_LIB_SRC))))
-$(LIBBORINGSSL_PKCS8_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE
-$(LIBBORINGSSL_PKCS8_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value
+$(LIBBORINGSSL_PKCS8_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
+$(LIBBORINGSSL_PKCS8_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare
ifeq ($(NO_PROTOBUF),true)
@@ -5195,8 +5195,8 @@ LIBBORINGSSL_POLY1305_TEST_LIB_SRC = \
LIBBORINGSSL_POLY1305_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_POLY1305_TEST_LIB_SRC))))
-$(LIBBORINGSSL_POLY1305_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE
-$(LIBBORINGSSL_POLY1305_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value
+$(LIBBORINGSSL_POLY1305_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
+$(LIBBORINGSSL_POLY1305_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare
ifeq ($(NO_PROTOBUF),true)
@@ -5232,8 +5232,8 @@ LIBBORINGSSL_REFCOUNT_TEST_LIB_SRC = \
LIBBORINGSSL_REFCOUNT_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_REFCOUNT_TEST_LIB_SRC))))
-$(LIBBORINGSSL_REFCOUNT_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE
-$(LIBBORINGSSL_REFCOUNT_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value
+$(LIBBORINGSSL_REFCOUNT_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
+$(LIBBORINGSSL_REFCOUNT_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare
$(LIBDIR)/$(CONFIG)/libboringssl_refcount_test_lib.a: $(ZLIB_DEP) $(LIBBORINGSSL_REFCOUNT_TEST_LIB_OBJS)
$(E) "[AR] Creating $@"
@@ -5258,8 +5258,8 @@ LIBBORINGSSL_RSA_TEST_LIB_SRC = \
LIBBORINGSSL_RSA_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_RSA_TEST_LIB_SRC))))
-$(LIBBORINGSSL_RSA_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE
-$(LIBBORINGSSL_RSA_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value
+$(LIBBORINGSSL_RSA_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
+$(LIBBORINGSSL_RSA_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare
ifeq ($(NO_PROTOBUF),true)
@@ -5295,8 +5295,8 @@ LIBBORINGSSL_THREAD_TEST_LIB_SRC = \
LIBBORINGSSL_THREAD_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_THREAD_TEST_LIB_SRC))))
-$(LIBBORINGSSL_THREAD_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE
-$(LIBBORINGSSL_THREAD_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value
+$(LIBBORINGSSL_THREAD_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
+$(LIBBORINGSSL_THREAD_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare
$(LIBDIR)/$(CONFIG)/libboringssl_thread_test_lib.a: $(ZLIB_DEP) $(LIBBORINGSSL_THREAD_TEST_LIB_OBJS)
$(E) "[AR] Creating $@"
@@ -5321,8 +5321,8 @@ LIBBORINGSSL_PKCS7_TEST_LIB_SRC = \
LIBBORINGSSL_PKCS7_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_PKCS7_TEST_LIB_SRC))))
-$(LIBBORINGSSL_PKCS7_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE
-$(LIBBORINGSSL_PKCS7_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value
+$(LIBBORINGSSL_PKCS7_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
+$(LIBBORINGSSL_PKCS7_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare
$(LIBDIR)/$(CONFIG)/libboringssl_pkcs7_test_lib.a: $(ZLIB_DEP) $(LIBBORINGSSL_PKCS7_TEST_LIB_OBJS)
$(E) "[AR] Creating $@"
@@ -5347,8 +5347,8 @@ LIBBORINGSSL_TAB_TEST_LIB_SRC = \
LIBBORINGSSL_TAB_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_TAB_TEST_LIB_SRC))))
-$(LIBBORINGSSL_TAB_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE
-$(LIBBORINGSSL_TAB_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value
+$(LIBBORINGSSL_TAB_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
+$(LIBBORINGSSL_TAB_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare
$(LIBDIR)/$(CONFIG)/libboringssl_tab_test_lib.a: $(ZLIB_DEP) $(LIBBORINGSSL_TAB_TEST_LIB_OBJS)
$(E) "[AR] Creating $@"
@@ -5373,8 +5373,8 @@ LIBBORINGSSL_V3NAME_TEST_LIB_SRC = \
LIBBORINGSSL_V3NAME_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_V3NAME_TEST_LIB_SRC))))
-$(LIBBORINGSSL_V3NAME_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE
-$(LIBBORINGSSL_V3NAME_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value
+$(LIBBORINGSSL_V3NAME_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
+$(LIBBORINGSSL_V3NAME_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare
$(LIBDIR)/$(CONFIG)/libboringssl_v3name_test_lib.a: $(ZLIB_DEP) $(LIBBORINGSSL_V3NAME_TEST_LIB_OBJS)
$(E) "[AR] Creating $@"
@@ -5399,8 +5399,8 @@ LIBBORINGSSL_PQUEUE_TEST_LIB_SRC = \
LIBBORINGSSL_PQUEUE_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_PQUEUE_TEST_LIB_SRC))))
-$(LIBBORINGSSL_PQUEUE_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE
-$(LIBBORINGSSL_PQUEUE_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value
+$(LIBBORINGSSL_PQUEUE_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
+$(LIBBORINGSSL_PQUEUE_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare
$(LIBDIR)/$(CONFIG)/libboringssl_pqueue_test_lib.a: $(ZLIB_DEP) $(LIBBORINGSSL_PQUEUE_TEST_LIB_OBJS)
$(E) "[AR] Creating $@"
@@ -5425,8 +5425,8 @@ LIBBORINGSSL_SSL_TEST_LIB_SRC = \
LIBBORINGSSL_SSL_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_SSL_TEST_LIB_SRC))))
-$(LIBBORINGSSL_SSL_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE
-$(LIBBORINGSSL_SSL_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value
+$(LIBBORINGSSL_SSL_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
+$(LIBBORINGSSL_SSL_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare
ifeq ($(NO_PROTOBUF),true)
diff --git a/Rakefile b/Rakefile
index 079df67996..ef4c7524e4 100755
--- a/Rakefile
+++ b/Rakefile
@@ -10,11 +10,18 @@ RuboCop::RakeTask.new(:rubocop) do |task|
task.patterns = ['src/ruby/{lib,spec}/**/*.rb']
end
+spec = Gem::Specification.load('grpc.gemspec')
+
+Gem::PackageTask.new(spec) do |pkg|
+end
+
# Add the extension compiler task
-Rake::ExtensionTask.new 'grpc' do |ext|
+Rake::ExtensionTask.new('grpc_c', spec) do |ext|
ext.source_pattern = '**/*.{c,h}'
ext.ext_dir = File.join('src', 'ruby', 'ext', 'grpc')
ext.lib_dir = File.join('src', 'ruby', 'lib', 'grpc')
+ ext.cross_compile = true
+ ext.cross_platform = ['x86-mingw32', 'x64-mingw32']
end
# Define the test suites
@@ -51,6 +58,24 @@ namespace :suite do
end
end
+desc 'Build the gem file under rake_compiler_dock'
+task 'gem:windows' do
+ require 'digest'
+ require 'rake_compiler_dock'
+
+ grpc_config = ENV['GRPC_CONFIG'] || 'opt'
+ V = ENV['V'] || '0'
+
+ version = Digest::SHA1.file('third_party/rake-compiler-dock/Dockerfile').hexdigest
+ image_name = 'grpc/rake-compiler-dock:' + version
+ cmd = "docker build -t #{image_name} third_party/rake-compiler-dock"
+ puts cmd
+ system cmd
+ exit 1 unless $? == 0
+ ENV['RAKE_COMPILER_DOCK_IMAGE'] = image_name
+ RakeCompilerDock.sh "bundle && rake cross native gem RUBY_CC_VERSION=2.3.0:2.2.2:2.1.6:2.0.0 GRPC_CONFIG=#{grpc_config} V=#{V}"
+end
+
# Define dependencies between the suites.
task 'suite:wrapper' => [:compile, :rubocop]
task 'suite:idiomatic' => 'suite:wrapper'
diff --git a/build.yaml b/build.yaml
index 1b3cb79202..9df5cc8f01 100644
--- a/build.yaml
+++ b/build.yaml
@@ -2671,9 +2671,10 @@ configs:
timeout_multiplier: 1.5
defaults:
boringssl:
- CFLAGS: -Wno-sign-conversion -Wno-conversion -Wno-unused-value
+ CFLAGS: -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas
+ -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare
CPPFLAGS: -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM
- -D_GNU_SOURCE
+ -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
global:
CPPFLAGS: -g -Wall -Wextra -Werror -Wno-long-long -Wno-unused-parameter
LDFLAGS: -g
@@ -2721,3 +2722,9 @@ python_dependencies:
- gpr
- boringssl
- z
+ruby_gem:
+ deps:
+ - grpc
+ - gpr
+ - boringssl
+ - z
diff --git a/grpc.gemspec b/grpc.gemspec
index 7f11ec778a..b3b3347842 100755
--- a/grpc.gemspec
+++ b/grpc.gemspec
@@ -16,7 +16,7 @@ Gem::Specification.new do |s|
s.required_ruby_version = '>= 2.0.0'
s.requirements << 'libgrpc ~> 0.11.0 needs to be installed'
- s.files = %w( Rakefile Makefile )
+ s.files = %w( Makefile )
s.files += %w( etc/roots.pem )
s.files += Dir.glob('src/ruby/bin/**/*')
s.files += Dir.glob('src/ruby/ext/**/*')
@@ -33,16 +33,17 @@ Gem::Specification.new do |s|
s.platform = Gem::Platform::RUBY
s.add_dependency 'google-protobuf', '~> 3.0.0alpha.1.1'
- s.add_dependency 'googleauth', '~> 0.5.1'
+ s.add_dependency 'googleauth', '~> 0.5.1'
- s.add_development_dependency 'bundler', '~> 1.9'
- s.add_development_dependency 'logging', '~> 2.0'
- s.add_development_dependency 'simplecov', '~> 0.9'
- s.add_development_dependency 'rake', '~> 10.4'
- s.add_development_dependency 'rake-compiler', '~> 0.9'
- s.add_development_dependency 'rspec', '~> 3.2'
- s.add_development_dependency 'rubocop', '~> 0.30.0'
- s.add_development_dependency 'signet', '~>0.7.0'
+ s.add_development_dependency 'bundler', '~> 1.9'
+ s.add_development_dependency 'logging', '~> 2.0'
+ s.add_development_dependency 'simplecov', '~> 0.9'
+ s.add_development_dependency 'rake', '~> 10.4'
+ s.add_development_dependency 'rake-compiler', '~> 0.9'
+ s.add_development_dependency 'rake-compiler-dock', '~> 0.5'
+ s.add_development_dependency 'rspec', '~> 3.2'
+ s.add_development_dependency 'rubocop', '~> 0.30.0'
+ s.add_development_dependency 'signet', '~> 0.7.0'
s.extensions = %w(src/ruby/ext/grpc/extconf.rb)
@@ -434,4 +435,431 @@ Gem::Specification.new do |s|
s.files += %w( src/core/census/operation.c )
s.files += %w( src/core/census/tag_set.c )
s.files += %w( src/core/census/tracing.c )
+ s.files += %w( third_party/boringssl/crypto/aes/internal.h )
+ s.files += %w( third_party/boringssl/crypto/asn1/asn1_locl.h )
+ s.files += %w( third_party/boringssl/crypto/bio/internal.h )
+ s.files += %w( third_party/boringssl/crypto/bn/internal.h )
+ s.files += %w( third_party/boringssl/crypto/bn/rsaz_exp.h )
+ s.files += %w( third_party/boringssl/crypto/bytestring/internal.h )
+ s.files += %w( third_party/boringssl/crypto/cipher/internal.h )
+ s.files += %w( third_party/boringssl/crypto/conf/conf_def.h )
+ s.files += %w( third_party/boringssl/crypto/conf/internal.h )
+ s.files += %w( third_party/boringssl/crypto/des/internal.h )
+ s.files += %w( third_party/boringssl/crypto/dh/internal.h )
+ s.files += %w( third_party/boringssl/crypto/digest/internal.h )
+ s.files += %w( third_party/boringssl/crypto/digest/md32_common.h )
+ s.files += %w( third_party/boringssl/crypto/directory.h )
+ s.files += %w( third_party/boringssl/crypto/dsa/internal.h )
+ s.files += %w( third_party/boringssl/crypto/ec/internal.h )
+ s.files += %w( third_party/boringssl/crypto/ec/p256-x86_64-table.h )
+ s.files += %w( third_party/boringssl/crypto/evp/internal.h )
+ s.files += %w( third_party/boringssl/crypto/internal.h )
+ s.files += %w( third_party/boringssl/crypto/modes/internal.h )
+ s.files += %w( third_party/boringssl/crypto/obj/obj_dat.h )
+ s.files += %w( third_party/boringssl/crypto/obj/obj_xref.h )
+ s.files += %w( third_party/boringssl/crypto/pkcs8/internal.h )
+ s.files += %w( third_party/boringssl/crypto/rand/internal.h )
+ s.files += %w( third_party/boringssl/crypto/rsa/internal.h )
+ s.files += %w( third_party/boringssl/crypto/test/scoped_types.h )
+ s.files += %w( third_party/boringssl/crypto/test/test_util.h )
+ s.files += %w( third_party/boringssl/crypto/x509/charmap.h )
+ s.files += %w( third_party/boringssl/crypto/x509/vpm_int.h )
+ s.files += %w( third_party/boringssl/crypto/x509v3/ext_dat.h )
+ s.files += %w( third_party/boringssl/crypto/x509v3/pcy_int.h )
+ s.files += %w( third_party/boringssl/include/openssl/aead.h )
+ s.files += %w( third_party/boringssl/include/openssl/aes.h )
+ s.files += %w( third_party/boringssl/include/openssl/arm_arch.h )
+ s.files += %w( third_party/boringssl/include/openssl/asn1.h )
+ s.files += %w( third_party/boringssl/include/openssl/asn1_mac.h )
+ s.files += %w( third_party/boringssl/include/openssl/asn1t.h )
+ s.files += %w( third_party/boringssl/include/openssl/base.h )
+ s.files += %w( third_party/boringssl/include/openssl/base64.h )
+ s.files += %w( third_party/boringssl/include/openssl/bio.h )
+ s.files += %w( third_party/boringssl/include/openssl/blowfish.h )
+ s.files += %w( third_party/boringssl/include/openssl/bn.h )
+ s.files += %w( third_party/boringssl/include/openssl/buf.h )
+ s.files += %w( third_party/boringssl/include/openssl/buffer.h )
+ s.files += %w( third_party/boringssl/include/openssl/bytestring.h )
+ s.files += %w( third_party/boringssl/include/openssl/cast.h )
+ s.files += %w( third_party/boringssl/include/openssl/chacha.h )
+ s.files += %w( third_party/boringssl/include/openssl/cipher.h )
+ s.files += %w( third_party/boringssl/include/openssl/cmac.h )
+ s.files += %w( third_party/boringssl/include/openssl/conf.h )
+ s.files += %w( third_party/boringssl/include/openssl/cpu.h )
+ s.files += %w( third_party/boringssl/include/openssl/crypto.h )
+ s.files += %w( third_party/boringssl/include/openssl/curve25519.h )
+ s.files += %w( third_party/boringssl/include/openssl/des.h )
+ s.files += %w( third_party/boringssl/include/openssl/dh.h )
+ s.files += %w( third_party/boringssl/include/openssl/digest.h )
+ s.files += %w( third_party/boringssl/include/openssl/dsa.h )
+ s.files += %w( third_party/boringssl/include/openssl/dtls1.h )
+ s.files += %w( third_party/boringssl/include/openssl/ec.h )
+ s.files += %w( third_party/boringssl/include/openssl/ec_key.h )
+ s.files += %w( third_party/boringssl/include/openssl/ecdh.h )
+ s.files += %w( third_party/boringssl/include/openssl/ecdsa.h )
+ s.files += %w( third_party/boringssl/include/openssl/engine.h )
+ s.files += %w( third_party/boringssl/include/openssl/err.h )
+ s.files += %w( third_party/boringssl/include/openssl/evp.h )
+ s.files += %w( third_party/boringssl/include/openssl/ex_data.h )
+ s.files += %w( third_party/boringssl/include/openssl/hkdf.h )
+ s.files += %w( third_party/boringssl/include/openssl/hmac.h )
+ s.files += %w( third_party/boringssl/include/openssl/lhash.h )
+ s.files += %w( third_party/boringssl/include/openssl/lhash_macros.h )
+ s.files += %w( third_party/boringssl/include/openssl/md4.h )
+ s.files += %w( third_party/boringssl/include/openssl/md5.h )
+ s.files += %w( third_party/boringssl/include/openssl/mem.h )
+ s.files += %w( third_party/boringssl/include/openssl/obj.h )
+ s.files += %w( third_party/boringssl/include/openssl/obj_mac.h )
+ s.files += %w( third_party/boringssl/include/openssl/objects.h )
+ s.files += %w( third_party/boringssl/include/openssl/opensslfeatures.h )
+ s.files += %w( third_party/boringssl/include/openssl/opensslv.h )
+ s.files += %w( third_party/boringssl/include/openssl/ossl_typ.h )
+ s.files += %w( third_party/boringssl/include/openssl/pem.h )
+ s.files += %w( third_party/boringssl/include/openssl/pkcs12.h )
+ s.files += %w( third_party/boringssl/include/openssl/pkcs7.h )
+ s.files += %w( third_party/boringssl/include/openssl/pkcs8.h )
+ s.files += %w( third_party/boringssl/include/openssl/poly1305.h )
+ s.files += %w( third_party/boringssl/include/openssl/pqueue.h )
+ s.files += %w( third_party/boringssl/include/openssl/rand.h )
+ s.files += %w( third_party/boringssl/include/openssl/rc4.h )
+ s.files += %w( third_party/boringssl/include/openssl/rsa.h )
+ s.files += %w( third_party/boringssl/include/openssl/safestack.h )
+ s.files += %w( third_party/boringssl/include/openssl/sha.h )
+ s.files += %w( third_party/boringssl/include/openssl/srtp.h )
+ s.files += %w( third_party/boringssl/include/openssl/ssl.h )
+ s.files += %w( third_party/boringssl/include/openssl/ssl3.h )
+ s.files += %w( third_party/boringssl/include/openssl/stack.h )
+ s.files += %w( third_party/boringssl/include/openssl/stack_macros.h )
+ s.files += %w( third_party/boringssl/include/openssl/thread.h )
+ s.files += %w( third_party/boringssl/include/openssl/time_support.h )
+ s.files += %w( third_party/boringssl/include/openssl/tls1.h )
+ s.files += %w( third_party/boringssl/include/openssl/type_check.h )
+ s.files += %w( third_party/boringssl/include/openssl/x509.h )
+ s.files += %w( third_party/boringssl/include/openssl/x509_vfy.h )
+ s.files += %w( third_party/boringssl/include/openssl/x509v3.h )
+ s.files += %w( third_party/boringssl/ssl/internal.h )
+ s.files += %w( third_party/boringssl/ssl/test/async_bio.h )
+ s.files += %w( third_party/boringssl/ssl/test/packeted_bio.h )
+ s.files += %w( third_party/boringssl/ssl/test/scoped_types.h )
+ s.files += %w( third_party/boringssl/ssl/test/test_config.h )
+ s.files += %w( src/boringssl/err_data.c )
+ s.files += %w( third_party/boringssl/crypto/aes/aes.c )
+ s.files += %w( third_party/boringssl/crypto/aes/mode_wrappers.c )
+ s.files += %w( third_party/boringssl/crypto/asn1/a_bitstr.c )
+ s.files += %w( third_party/boringssl/crypto/asn1/a_bool.c )
+ s.files += %w( third_party/boringssl/crypto/asn1/a_bytes.c )
+ s.files += %w( third_party/boringssl/crypto/asn1/a_d2i_fp.c )
+ s.files += %w( third_party/boringssl/crypto/asn1/a_dup.c )
+ s.files += %w( third_party/boringssl/crypto/asn1/a_enum.c )
+ s.files += %w( third_party/boringssl/crypto/asn1/a_gentm.c )
+ s.files += %w( third_party/boringssl/crypto/asn1/a_i2d_fp.c )
+ s.files += %w( third_party/boringssl/crypto/asn1/a_int.c )
+ s.files += %w( third_party/boringssl/crypto/asn1/a_mbstr.c )
+ s.files += %w( third_party/boringssl/crypto/asn1/a_object.c )
+ s.files += %w( third_party/boringssl/crypto/asn1/a_octet.c )
+ s.files += %w( third_party/boringssl/crypto/asn1/a_print.c )
+ s.files += %w( third_party/boringssl/crypto/asn1/a_strnid.c )
+ s.files += %w( third_party/boringssl/crypto/asn1/a_time.c )
+ s.files += %w( third_party/boringssl/crypto/asn1/a_type.c )
+ s.files += %w( third_party/boringssl/crypto/asn1/a_utctm.c )
+ s.files += %w( third_party/boringssl/crypto/asn1/a_utf8.c )
+ s.files += %w( third_party/boringssl/crypto/asn1/asn1_lib.c )
+ s.files += %w( third_party/boringssl/crypto/asn1/asn1_par.c )
+ s.files += %w( third_party/boringssl/crypto/asn1/asn_pack.c )
+ s.files += %w( third_party/boringssl/crypto/asn1/bio_asn1.c )
+ s.files += %w( third_party/boringssl/crypto/asn1/bio_ndef.c )
+ s.files += %w( third_party/boringssl/crypto/asn1/f_enum.c )
+ s.files += %w( third_party/boringssl/crypto/asn1/f_int.c )
+ s.files += %w( third_party/boringssl/crypto/asn1/f_string.c )
+ s.files += %w( third_party/boringssl/crypto/asn1/t_bitst.c )
+ s.files += %w( third_party/boringssl/crypto/asn1/t_pkey.c )
+ s.files += %w( third_party/boringssl/crypto/asn1/tasn_dec.c )
+ s.files += %w( third_party/boringssl/crypto/asn1/tasn_enc.c )
+ s.files += %w( third_party/boringssl/crypto/asn1/tasn_fre.c )
+ s.files += %w( third_party/boringssl/crypto/asn1/tasn_new.c )
+ s.files += %w( third_party/boringssl/crypto/asn1/tasn_prn.c )
+ s.files += %w( third_party/boringssl/crypto/asn1/tasn_typ.c )
+ s.files += %w( third_party/boringssl/crypto/asn1/tasn_utl.c )
+ s.files += %w( third_party/boringssl/crypto/asn1/x_bignum.c )
+ s.files += %w( third_party/boringssl/crypto/asn1/x_long.c )
+ s.files += %w( third_party/boringssl/crypto/base64/base64.c )
+ s.files += %w( third_party/boringssl/crypto/bio/bio.c )
+ s.files += %w( third_party/boringssl/crypto/bio/bio_mem.c )
+ s.files += %w( third_party/boringssl/crypto/bio/buffer.c )
+ s.files += %w( third_party/boringssl/crypto/bio/connect.c )
+ s.files += %w( third_party/boringssl/crypto/bio/fd.c )
+ s.files += %w( third_party/boringssl/crypto/bio/file.c )
+ s.files += %w( third_party/boringssl/crypto/bio/hexdump.c )
+ s.files += %w( third_party/boringssl/crypto/bio/pair.c )
+ s.files += %w( third_party/boringssl/crypto/bio/printf.c )
+ s.files += %w( third_party/boringssl/crypto/bio/socket.c )
+ s.files += %w( third_party/boringssl/crypto/bio/socket_helper.c )
+ s.files += %w( third_party/boringssl/crypto/bn/add.c )
+ s.files += %w( third_party/boringssl/crypto/bn/asm/x86_64-gcc.c )
+ s.files += %w( third_party/boringssl/crypto/bn/bn.c )
+ s.files += %w( third_party/boringssl/crypto/bn/bn_asn1.c )
+ s.files += %w( third_party/boringssl/crypto/bn/cmp.c )
+ s.files += %w( third_party/boringssl/crypto/bn/convert.c )
+ s.files += %w( third_party/boringssl/crypto/bn/ctx.c )
+ s.files += %w( third_party/boringssl/crypto/bn/div.c )
+ s.files += %w( third_party/boringssl/crypto/bn/exponentiation.c )
+ s.files += %w( third_party/boringssl/crypto/bn/gcd.c )
+ s.files += %w( third_party/boringssl/crypto/bn/generic.c )
+ s.files += %w( third_party/boringssl/crypto/bn/kronecker.c )
+ s.files += %w( third_party/boringssl/crypto/bn/montgomery.c )
+ s.files += %w( third_party/boringssl/crypto/bn/mul.c )
+ s.files += %w( third_party/boringssl/crypto/bn/prime.c )
+ s.files += %w( third_party/boringssl/crypto/bn/random.c )
+ s.files += %w( third_party/boringssl/crypto/bn/rsaz_exp.c )
+ s.files += %w( third_party/boringssl/crypto/bn/shift.c )
+ s.files += %w( third_party/boringssl/crypto/bn/sqrt.c )
+ s.files += %w( third_party/boringssl/crypto/buf/buf.c )
+ s.files += %w( third_party/boringssl/crypto/bytestring/ber.c )
+ s.files += %w( third_party/boringssl/crypto/bytestring/cbb.c )
+ s.files += %w( third_party/boringssl/crypto/bytestring/cbs.c )
+ s.files += %w( third_party/boringssl/crypto/chacha/chacha_generic.c )
+ s.files += %w( third_party/boringssl/crypto/chacha/chacha_vec.c )
+ s.files += %w( third_party/boringssl/crypto/cipher/aead.c )
+ s.files += %w( third_party/boringssl/crypto/cipher/cipher.c )
+ s.files += %w( third_party/boringssl/crypto/cipher/derive_key.c )
+ s.files += %w( third_party/boringssl/crypto/cipher/e_aes.c )
+ s.files += %w( third_party/boringssl/crypto/cipher/e_chacha20poly1305.c )
+ s.files += %w( third_party/boringssl/crypto/cipher/e_des.c )
+ s.files += %w( third_party/boringssl/crypto/cipher/e_null.c )
+ s.files += %w( third_party/boringssl/crypto/cipher/e_rc2.c )
+ s.files += %w( third_party/boringssl/crypto/cipher/e_rc4.c )
+ s.files += %w( third_party/boringssl/crypto/cipher/e_ssl3.c )
+ s.files += %w( third_party/boringssl/crypto/cipher/e_tls.c )
+ s.files += %w( third_party/boringssl/crypto/cipher/tls_cbc.c )
+ s.files += %w( third_party/boringssl/crypto/cmac/cmac.c )
+ s.files += %w( third_party/boringssl/crypto/conf/conf.c )
+ s.files += %w( third_party/boringssl/crypto/cpu-arm.c )
+ s.files += %w( third_party/boringssl/crypto/cpu-intel.c )
+ s.files += %w( third_party/boringssl/crypto/crypto.c )
+ s.files += %w( third_party/boringssl/crypto/curve25519/curve25519.c )
+ s.files += %w( third_party/boringssl/crypto/des/des.c )
+ s.files += %w( third_party/boringssl/crypto/dh/check.c )
+ s.files += %w( third_party/boringssl/crypto/dh/dh.c )
+ s.files += %w( third_party/boringssl/crypto/dh/dh_asn1.c )
+ s.files += %w( third_party/boringssl/crypto/dh/params.c )
+ s.files += %w( third_party/boringssl/crypto/digest/digest.c )
+ s.files += %w( third_party/boringssl/crypto/digest/digests.c )
+ s.files += %w( third_party/boringssl/crypto/directory_posix.c )
+ s.files += %w( third_party/boringssl/crypto/directory_win.c )
+ s.files += %w( third_party/boringssl/crypto/dsa/dsa.c )
+ s.files += %w( third_party/boringssl/crypto/dsa/dsa_asn1.c )
+ s.files += %w( third_party/boringssl/crypto/ec/ec.c )
+ s.files += %w( third_party/boringssl/crypto/ec/ec_asn1.c )
+ s.files += %w( third_party/boringssl/crypto/ec/ec_key.c )
+ s.files += %w( third_party/boringssl/crypto/ec/ec_montgomery.c )
+ s.files += %w( third_party/boringssl/crypto/ec/oct.c )
+ s.files += %w( third_party/boringssl/crypto/ec/p224-64.c )
+ s.files += %w( third_party/boringssl/crypto/ec/p256-64.c )
+ s.files += %w( third_party/boringssl/crypto/ec/p256-x86_64.c )
+ s.files += %w( third_party/boringssl/crypto/ec/simple.c )
+ s.files += %w( third_party/boringssl/crypto/ec/util-64.c )
+ s.files += %w( third_party/boringssl/crypto/ec/wnaf.c )
+ s.files += %w( third_party/boringssl/crypto/ecdh/ecdh.c )
+ s.files += %w( third_party/boringssl/crypto/ecdsa/ecdsa.c )
+ s.files += %w( third_party/boringssl/crypto/ecdsa/ecdsa_asn1.c )
+ s.files += %w( third_party/boringssl/crypto/engine/engine.c )
+ s.files += %w( third_party/boringssl/crypto/err/err.c )
+ s.files += %w( third_party/boringssl/crypto/evp/algorithm.c )
+ s.files += %w( third_party/boringssl/crypto/evp/digestsign.c )
+ s.files += %w( third_party/boringssl/crypto/evp/evp.c )
+ s.files += %w( third_party/boringssl/crypto/evp/evp_asn1.c )
+ s.files += %w( third_party/boringssl/crypto/evp/evp_ctx.c )
+ s.files += %w( third_party/boringssl/crypto/evp/p_dsa_asn1.c )
+ s.files += %w( third_party/boringssl/crypto/evp/p_ec.c )
+ s.files += %w( third_party/boringssl/crypto/evp/p_ec_asn1.c )
+ s.files += %w( third_party/boringssl/crypto/evp/p_rsa.c )
+ s.files += %w( third_party/boringssl/crypto/evp/p_rsa_asn1.c )
+ s.files += %w( third_party/boringssl/crypto/evp/pbkdf.c )
+ s.files += %w( third_party/boringssl/crypto/evp/sign.c )
+ s.files += %w( third_party/boringssl/crypto/ex_data.c )
+ s.files += %w( third_party/boringssl/crypto/hkdf/hkdf.c )
+ s.files += %w( third_party/boringssl/crypto/hmac/hmac.c )
+ s.files += %w( third_party/boringssl/crypto/lhash/lhash.c )
+ s.files += %w( third_party/boringssl/crypto/md4/md4.c )
+ s.files += %w( third_party/boringssl/crypto/md5/md5.c )
+ s.files += %w( third_party/boringssl/crypto/mem.c )
+ s.files += %w( third_party/boringssl/crypto/modes/cbc.c )
+ s.files += %w( third_party/boringssl/crypto/modes/cfb.c )
+ s.files += %w( third_party/boringssl/crypto/modes/ctr.c )
+ s.files += %w( third_party/boringssl/crypto/modes/gcm.c )
+ s.files += %w( third_party/boringssl/crypto/modes/ofb.c )
+ s.files += %w( third_party/boringssl/crypto/obj/obj.c )
+ s.files += %w( third_party/boringssl/crypto/obj/obj_xref.c )
+ s.files += %w( third_party/boringssl/crypto/pem/pem_all.c )
+ s.files += %w( third_party/boringssl/crypto/pem/pem_info.c )
+ s.files += %w( third_party/boringssl/crypto/pem/pem_lib.c )
+ s.files += %w( third_party/boringssl/crypto/pem/pem_oth.c )
+ s.files += %w( third_party/boringssl/crypto/pem/pem_pk8.c )
+ s.files += %w( third_party/boringssl/crypto/pem/pem_pkey.c )
+ s.files += %w( third_party/boringssl/crypto/pem/pem_x509.c )
+ s.files += %w( third_party/boringssl/crypto/pem/pem_xaux.c )
+ s.files += %w( third_party/boringssl/crypto/pkcs8/p5_pbe.c )
+ s.files += %w( third_party/boringssl/crypto/pkcs8/p5_pbev2.c )
+ s.files += %w( third_party/boringssl/crypto/pkcs8/p8_pkey.c )
+ s.files += %w( third_party/boringssl/crypto/pkcs8/pkcs8.c )
+ s.files += %w( third_party/boringssl/crypto/poly1305/poly1305.c )
+ s.files += %w( third_party/boringssl/crypto/poly1305/poly1305_arm.c )
+ s.files += %w( third_party/boringssl/crypto/poly1305/poly1305_vec.c )
+ s.files += %w( third_party/boringssl/crypto/rand/rand.c )
+ s.files += %w( third_party/boringssl/crypto/rand/urandom.c )
+ s.files += %w( third_party/boringssl/crypto/rand/windows.c )
+ s.files += %w( third_party/boringssl/crypto/rc4/rc4.c )
+ s.files += %w( third_party/boringssl/crypto/refcount_c11.c )
+ s.files += %w( third_party/boringssl/crypto/refcount_lock.c )
+ s.files += %w( third_party/boringssl/crypto/rsa/blinding.c )
+ s.files += %w( third_party/boringssl/crypto/rsa/padding.c )
+ s.files += %w( third_party/boringssl/crypto/rsa/rsa.c )
+ s.files += %w( third_party/boringssl/crypto/rsa/rsa_asn1.c )
+ s.files += %w( third_party/boringssl/crypto/rsa/rsa_impl.c )
+ s.files += %w( third_party/boringssl/crypto/sha/sha1.c )
+ s.files += %w( third_party/boringssl/crypto/sha/sha256.c )
+ s.files += %w( third_party/boringssl/crypto/sha/sha512.c )
+ s.files += %w( third_party/boringssl/crypto/stack/stack.c )
+ s.files += %w( third_party/boringssl/crypto/thread.c )
+ s.files += %w( third_party/boringssl/crypto/thread_none.c )
+ s.files += %w( third_party/boringssl/crypto/thread_pthread.c )
+ s.files += %w( third_party/boringssl/crypto/thread_win.c )
+ s.files += %w( third_party/boringssl/crypto/time_support.c )
+ s.files += %w( third_party/boringssl/crypto/x509/a_digest.c )
+ s.files += %w( third_party/boringssl/crypto/x509/a_sign.c )
+ s.files += %w( third_party/boringssl/crypto/x509/a_strex.c )
+ s.files += %w( third_party/boringssl/crypto/x509/a_verify.c )
+ s.files += %w( third_party/boringssl/crypto/x509/asn1_gen.c )
+ s.files += %w( third_party/boringssl/crypto/x509/by_dir.c )
+ s.files += %w( third_party/boringssl/crypto/x509/by_file.c )
+ s.files += %w( third_party/boringssl/crypto/x509/i2d_pr.c )
+ s.files += %w( third_party/boringssl/crypto/x509/pkcs7.c )
+ s.files += %w( third_party/boringssl/crypto/x509/t_crl.c )
+ s.files += %w( third_party/boringssl/crypto/x509/t_req.c )
+ s.files += %w( third_party/boringssl/crypto/x509/t_x509.c )
+ s.files += %w( third_party/boringssl/crypto/x509/t_x509a.c )
+ s.files += %w( third_party/boringssl/crypto/x509/x509.c )
+ s.files += %w( third_party/boringssl/crypto/x509/x509_att.c )
+ s.files += %w( third_party/boringssl/crypto/x509/x509_cmp.c )
+ s.files += %w( third_party/boringssl/crypto/x509/x509_d2.c )
+ s.files += %w( third_party/boringssl/crypto/x509/x509_def.c )
+ s.files += %w( third_party/boringssl/crypto/x509/x509_ext.c )
+ s.files += %w( third_party/boringssl/crypto/x509/x509_lu.c )
+ s.files += %w( third_party/boringssl/crypto/x509/x509_obj.c )
+ s.files += %w( third_party/boringssl/crypto/x509/x509_r2x.c )
+ s.files += %w( third_party/boringssl/crypto/x509/x509_req.c )
+ s.files += %w( third_party/boringssl/crypto/x509/x509_set.c )
+ s.files += %w( third_party/boringssl/crypto/x509/x509_trs.c )
+ s.files += %w( third_party/boringssl/crypto/x509/x509_txt.c )
+ s.files += %w( third_party/boringssl/crypto/x509/x509_v3.c )
+ s.files += %w( third_party/boringssl/crypto/x509/x509_vfy.c )
+ s.files += %w( third_party/boringssl/crypto/x509/x509_vpm.c )
+ s.files += %w( third_party/boringssl/crypto/x509/x509cset.c )
+ s.files += %w( third_party/boringssl/crypto/x509/x509name.c )
+ s.files += %w( third_party/boringssl/crypto/x509/x509rset.c )
+ s.files += %w( third_party/boringssl/crypto/x509/x509spki.c )
+ s.files += %w( third_party/boringssl/crypto/x509/x509type.c )
+ s.files += %w( third_party/boringssl/crypto/x509/x_algor.c )
+ s.files += %w( third_party/boringssl/crypto/x509/x_all.c )
+ s.files += %w( third_party/boringssl/crypto/x509/x_attrib.c )
+ s.files += %w( third_party/boringssl/crypto/x509/x_crl.c )
+ s.files += %w( third_party/boringssl/crypto/x509/x_exten.c )
+ s.files += %w( third_party/boringssl/crypto/x509/x_info.c )
+ s.files += %w( third_party/boringssl/crypto/x509/x_name.c )
+ s.files += %w( third_party/boringssl/crypto/x509/x_pkey.c )
+ s.files += %w( third_party/boringssl/crypto/x509/x_pubkey.c )
+ s.files += %w( third_party/boringssl/crypto/x509/x_req.c )
+ s.files += %w( third_party/boringssl/crypto/x509/x_sig.c )
+ s.files += %w( third_party/boringssl/crypto/x509/x_spki.c )
+ s.files += %w( third_party/boringssl/crypto/x509/x_val.c )
+ s.files += %w( third_party/boringssl/crypto/x509/x_x509.c )
+ s.files += %w( third_party/boringssl/crypto/x509/x_x509a.c )
+ s.files += %w( third_party/boringssl/crypto/x509v3/pcy_cache.c )
+ s.files += %w( third_party/boringssl/crypto/x509v3/pcy_data.c )
+ s.files += %w( third_party/boringssl/crypto/x509v3/pcy_lib.c )
+ s.files += %w( third_party/boringssl/crypto/x509v3/pcy_map.c )
+ s.files += %w( third_party/boringssl/crypto/x509v3/pcy_node.c )
+ s.files += %w( third_party/boringssl/crypto/x509v3/pcy_tree.c )
+ s.files += %w( third_party/boringssl/crypto/x509v3/v3_akey.c )
+ s.files += %w( third_party/boringssl/crypto/x509v3/v3_akeya.c )
+ s.files += %w( third_party/boringssl/crypto/x509v3/v3_alt.c )
+ s.files += %w( third_party/boringssl/crypto/x509v3/v3_bcons.c )
+ s.files += %w( third_party/boringssl/crypto/x509v3/v3_bitst.c )
+ s.files += %w( third_party/boringssl/crypto/x509v3/v3_conf.c )
+ s.files += %w( third_party/boringssl/crypto/x509v3/v3_cpols.c )
+ s.files += %w( third_party/boringssl/crypto/x509v3/v3_crld.c )
+ s.files += %w( third_party/boringssl/crypto/x509v3/v3_enum.c )
+ s.files += %w( third_party/boringssl/crypto/x509v3/v3_extku.c )
+ s.files += %w( third_party/boringssl/crypto/x509v3/v3_genn.c )
+ s.files += %w( third_party/boringssl/crypto/x509v3/v3_ia5.c )
+ s.files += %w( third_party/boringssl/crypto/x509v3/v3_info.c )
+ s.files += %w( third_party/boringssl/crypto/x509v3/v3_int.c )
+ s.files += %w( third_party/boringssl/crypto/x509v3/v3_lib.c )
+ s.files += %w( third_party/boringssl/crypto/x509v3/v3_ncons.c )
+ s.files += %w( third_party/boringssl/crypto/x509v3/v3_pci.c )
+ s.files += %w( third_party/boringssl/crypto/x509v3/v3_pcia.c )
+ s.files += %w( third_party/boringssl/crypto/x509v3/v3_pcons.c )
+ s.files += %w( third_party/boringssl/crypto/x509v3/v3_pku.c )
+ s.files += %w( third_party/boringssl/crypto/x509v3/v3_pmaps.c )
+ s.files += %w( third_party/boringssl/crypto/x509v3/v3_prn.c )
+ s.files += %w( third_party/boringssl/crypto/x509v3/v3_purp.c )
+ s.files += %w( third_party/boringssl/crypto/x509v3/v3_skey.c )
+ s.files += %w( third_party/boringssl/crypto/x509v3/v3_sxnet.c )
+ s.files += %w( third_party/boringssl/crypto/x509v3/v3_utl.c )
+ s.files += %w( third_party/boringssl/ssl/custom_extensions.c )
+ s.files += %w( third_party/boringssl/ssl/d1_both.c )
+ s.files += %w( third_party/boringssl/ssl/d1_clnt.c )
+ s.files += %w( third_party/boringssl/ssl/d1_lib.c )
+ s.files += %w( third_party/boringssl/ssl/d1_meth.c )
+ s.files += %w( third_party/boringssl/ssl/d1_pkt.c )
+ s.files += %w( third_party/boringssl/ssl/d1_srtp.c )
+ s.files += %w( third_party/boringssl/ssl/d1_srvr.c )
+ s.files += %w( third_party/boringssl/ssl/dtls_record.c )
+ s.files += %w( third_party/boringssl/ssl/pqueue/pqueue.c )
+ s.files += %w( third_party/boringssl/ssl/s3_both.c )
+ s.files += %w( third_party/boringssl/ssl/s3_clnt.c )
+ s.files += %w( third_party/boringssl/ssl/s3_enc.c )
+ s.files += %w( third_party/boringssl/ssl/s3_lib.c )
+ s.files += %w( third_party/boringssl/ssl/s3_meth.c )
+ s.files += %w( third_party/boringssl/ssl/s3_pkt.c )
+ s.files += %w( third_party/boringssl/ssl/s3_srvr.c )
+ s.files += %w( third_party/boringssl/ssl/ssl_aead_ctx.c )
+ s.files += %w( third_party/boringssl/ssl/ssl_asn1.c )
+ s.files += %w( third_party/boringssl/ssl/ssl_buffer.c )
+ s.files += %w( third_party/boringssl/ssl/ssl_cert.c )
+ s.files += %w( third_party/boringssl/ssl/ssl_cipher.c )
+ s.files += %w( third_party/boringssl/ssl/ssl_file.c )
+ s.files += %w( third_party/boringssl/ssl/ssl_lib.c )
+ s.files += %w( third_party/boringssl/ssl/ssl_rsa.c )
+ s.files += %w( third_party/boringssl/ssl/ssl_session.c )
+ s.files += %w( third_party/boringssl/ssl/ssl_stat.c )
+ s.files += %w( third_party/boringssl/ssl/t1_enc.c )
+ s.files += %w( third_party/boringssl/ssl/t1_lib.c )
+ s.files += %w( third_party/boringssl/ssl/tls_record.c )
+ s.files += %w( third_party/zlib/crc32.h )
+ s.files += %w( third_party/zlib/deflate.h )
+ s.files += %w( third_party/zlib/gzguts.h )
+ s.files += %w( third_party/zlib/inffast.h )
+ s.files += %w( third_party/zlib/inffixed.h )
+ s.files += %w( third_party/zlib/inflate.h )
+ s.files += %w( third_party/zlib/inftrees.h )
+ s.files += %w( third_party/zlib/trees.h )
+ s.files += %w( third_party/zlib/zconf.h )
+ s.files += %w( third_party/zlib/zlib.h )
+ s.files += %w( third_party/zlib/zutil.h )
+ s.files += %w( third_party/zlib/adler32.c )
+ s.files += %w( third_party/zlib/compress.c )
+ s.files += %w( third_party/zlib/crc32.c )
+ s.files += %w( third_party/zlib/deflate.c )
+ s.files += %w( third_party/zlib/gzclose.c )
+ s.files += %w( third_party/zlib/gzlib.c )
+ s.files += %w( third_party/zlib/gzread.c )
+ s.files += %w( third_party/zlib/gzwrite.c )
+ s.files += %w( third_party/zlib/infback.c )
+ s.files += %w( third_party/zlib/inffast.c )
+ s.files += %w( third_party/zlib/inflate.c )
+ s.files += %w( third_party/zlib/inftrees.c )
+ s.files += %w( third_party/zlib/trees.c )
+ s.files += %w( third_party/zlib/uncompr.c )
+ s.files += %w( third_party/zlib/zutil.c )
end
diff --git a/src/ruby/ext/grpc/extconf.rb b/src/ruby/ext/grpc/extconf.rb
index 018353ce5d..52c512e015 100644
--- a/src/ruby/ext/grpc/extconf.rb
+++ b/src/ruby/ext/grpc/extconf.rb
@@ -1,4 +1,4 @@
-# Copyright 2015, Google Inc.
+# Copyright 2015-2016, Google Inc.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -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} #{grpc_lib_dir}/libgpr.a #{grpc_lib_dir}/libgrpc.a CONFIG=#{grpc_config}")
+ exit 1 unless $? == 0
end
$CFLAGS << ' -I' + File.join(grpc_root, 'include')
@@ -85,8 +107,30 @@ $CFLAGS << ' -Wall '
$CFLAGS << ' -Wextra '
$CFLAGS << ' -pedantic '
$CFLAGS << ' -Werror '
+$CFLAGS << ' -Wno-format '
-$LDFLAGS << ' -lssl '
-$LDFLAGS << ' -lcrypto '
+case RUBY_PLATFORM
+when /mingw|mswin/
+ $LDFLAGS << ' -static '
+end
-create_makefile('grpc/grpc')
+output = File.join('grpc', 'grpc_c')
+puts 'Generating Makefile for ' + output
+create_makefile(output)
+
+strip_tool = RbConfig::CONFIG['STRIP']
+
+if grpc_config == 'opt'
+ 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
+ File.rename('Makefile.new', 'Makefile')
+end
diff --git a/src/ruby/ext/grpc/rb_grpc.c b/src/ruby/ext/grpc/rb_grpc.c
index 265ab58ecb..9514d54c17 100644
--- a/src/ruby/ext/grpc/rb_grpc.c
+++ b/src/ruby/ext/grpc/rb_grpc.c
@@ -297,7 +297,7 @@ VALUE sym_code = Qundef;
VALUE sym_details = Qundef;
VALUE sym_metadata = Qundef;
-void Init_grpc() {
+void Init_grpc_c() {
grpc_init();
/* TODO: find alternative to ruby_vm_at_exit that is ok in Ruby 2.0 */
diff --git a/src/ruby/lib/grpc/grpc.rb b/src/ruby/lib/grpc/grpc.rb
new file mode 100644
index 0000000000..d8a4947494
--- /dev/null
+++ b/src/ruby/lib/grpc/grpc.rb
@@ -0,0 +1,34 @@
+# Copyright 2015-2016, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+# * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+begin
+ require "grpc/#{RUBY_VERSION.sub(/\.\d$/, '')}/grpc_c"
+rescue LoadError
+ require 'grpc/grpc_c'
+end
diff --git a/templates/grpc.gemspec.template b/templates/grpc.gemspec.template
index fdf87ee13f..9d034ddba1 100644
--- a/templates/grpc.gemspec.template
+++ b/templates/grpc.gemspec.template
@@ -18,7 +18,7 @@
s.required_ruby_version = '>= 2.0.0'
s.requirements << 'libgrpc ~> 0.11.0 needs to be installed'
- s.files = %w( Rakefile Makefile )
+ s.files = %w( Makefile )
s.files += %w( etc/roots.pem )
s.files += Dir.glob('src/ruby/bin/**/*')
s.files += Dir.glob('src/ruby/ext/**/*')
@@ -35,22 +35,23 @@
s.platform = Gem::Platform::RUBY
s.add_dependency 'google-protobuf', '~> 3.0.0alpha.1.1'
- s.add_dependency 'googleauth', '~> 0.5.1'
+ s.add_dependency 'googleauth', '~> 0.5.1'
- s.add_development_dependency 'bundler', '~> 1.9'
- s.add_development_dependency 'logging', '~> 2.0'
- s.add_development_dependency 'simplecov', '~> 0.9'
- s.add_development_dependency 'rake', '~> 10.4'
- s.add_development_dependency 'rake-compiler', '~> 0.9'
- s.add_development_dependency 'rspec', '~> 3.2'
- s.add_development_dependency 'rubocop', '~> 0.30.0'
- s.add_development_dependency 'signet', '~>0.7.0'
+ s.add_development_dependency 'bundler', '~> 1.9'
+ s.add_development_dependency 'logging', '~> 2.0'
+ s.add_development_dependency 'simplecov', '~> 0.9'
+ s.add_development_dependency 'rake', '~> 10.4'
+ s.add_development_dependency 'rake-compiler', '~> 0.9'
+ s.add_development_dependency 'rake-compiler-dock', '~> 0.5'
+ s.add_development_dependency 'rspec', '~> 3.2'
+ s.add_development_dependency 'rubocop', '~> 0.30.0'
+ s.add_development_dependency 'signet', '~> 0.7.0'
s.extensions = %w(src/ruby/ext/grpc/extconf.rb)
% for lib in libs:
- % if lib.name in ('gpr', 'grpc'):
- % for file in lib.public_headers + lib.headers + lib.src:
+ % if lib.name in ruby_gem.get('deps', []):
+ % for file in lib.get('public_headers', []) + lib.headers + lib.src:
s.files += %w( ${file} )
% endfor
% endif
diff --git a/third_party/rake-compiler-dock/Dockerfile b/third_party/rake-compiler-dock/Dockerfile
new file mode 100644
index 0000000000..435a0926dc
--- /dev/null
+++ b/third_party/rake-compiler-dock/Dockerfile
@@ -0,0 +1,112 @@
+FROM ubuntu:14.04
+
+RUN apt-get -y update && \
+ apt-get install -y curl git-core mingw-w64 xz-utils build-essential wget unzip
+
+RUN mkdir -p /opt/mingw && \
+ curl -SL http://downloads.sourceforge.net/mingw-w64/i686-w64-mingw32-gcc-4.7.2-release-linux64_rubenvb.tar.xz | \
+ tar -xJC /opt/mingw && \
+ echo "export PATH=\$PATH:/opt/mingw/mingw32/bin" >> /etc/rubybashrc
+
+RUN mkdir -p /opt/mingw && \
+ curl -SL http://downloads.sourceforge.net/mingw-w64/x86_64-w64-mingw32-gcc-4.7.2-release-linux64_rubenvb.tar.xz | \
+ tar -xJC /opt/mingw && \
+ echo "export PATH=\$PATH:/opt/mingw/mingw64/bin" >> /etc/rubybashrc
+
+# Add "rvm" as system group, to avoid conflicts with host GIDs typically starting with 1000
+RUN groupadd -r rvm && useradd -r -g rvm -G sudo -p "" --create-home rvm && \
+ echo "source /etc/profile.d/rvm.sh" >> /etc/rubybashrc
+USER rvm
+
+# install rvm, RVM 1.26.0+ has signed releases, source rvm for usage outside of package scripts
+RUN gpg --keyserver hkp://keys.gnupg.net --recv-keys D39DC0E3 && \
+ (curl -L http://get.rvm.io | sudo bash -s stable) && \
+ bash -c " \
+ source /etc/rubybashrc && \
+ rvmsudo rvm cleanup all "
+
+# Import patch files for ruby and gems
+COPY build/patches /home/rvm/patches/
+ENV BASH_ENV /etc/rubybashrc
+
+# install rubies and fix permissions on
+RUN bash -c " \
+ export CFLAGS='-s -O3 -fno-fast-math -fPIC' && \
+ for v in 2.3.0 ; do \
+ rvm install \$v --patch \$(echo ~/patches/ruby-\$v/* | tr ' ' ','); \
+ done && \
+ rvm cleanup all && \
+ find /usr/local/rvm -type d -print0 | sudo xargs -0 chmod g+sw "
+
+# Install rake-compiler and typical gems in all Rubies
+# do not generate documentation for gems
+RUN echo "gem: --no-ri --no-rdoc" >> ~/.gemrc && \
+ bash -c " \
+ rvm all do gem install bundler rake-compiler hoe mini_portile rubygems-tasks json && \
+ rvm 2.3.0 do gem install mini_portile2 && \
+ find /usr/local/rvm -type d -print0 | sudo xargs -0 chmod g+sw "
+
+# Install rake-compiler's cross rubies in global dir instead of /root
+RUN sudo mkdir -p /usr/local/rake-compiler && \
+ sudo chown rvm.rvm /usr/local/rake-compiler && \
+ ln -s /usr/local/rake-compiler ~/.rake-compiler
+
+# Patch rake-compiler to avoid build of ruby extensions
+RUN cd /usr/local/rvm/gems/ruby-2.3.0/gems/rake-compiler-0.9.5 && patch -p1 < /home/rvm/patches/rake-compiler-0.9.5/without-exts.diff ; \
+ true
+
+RUN bash -c "rvm use 2.3.0 --default && \
+ export MAKE=\"make -j`nproc`\" CFLAGS='-s -O1 -fno-omit-frame-pointer -fno-fast-math' && \
+ rake-compiler cross-ruby VERSION=2.3.0 HOST=i686-w64-mingw32 && \
+ rake-compiler cross-ruby VERSION=2.3.0 HOST=x86_64-w64-mingw32 && \
+ rake-compiler cross-ruby VERSION=2.2.2 HOST=i686-w64-mingw32 && \
+ rake-compiler cross-ruby VERSION=2.2.2 HOST=x86_64-w64-mingw32 && \
+ rake-compiler cross-ruby VERSION=2.1.6 HOST=i686-w64-mingw32 && \
+ rake-compiler cross-ruby VERSION=2.1.6 HOST=x86_64-w64-mingw32 && \
+ rake-compiler cross-ruby VERSION=2.0.0-p645 HOST=i686-w64-mingw32 && \
+ rake-compiler cross-ruby VERSION=2.0.0-p645 HOST=x86_64-w64-mingw32 && \
+ rm -rf ~/.rake-compiler/builds ~/.rake-compiler/sources && \
+ find /usr/local/rvm -type d -print0 | sudo xargs -0 chmod g+sw "
+
+RUN bash -c " \
+ rvm alias create 2.3 2.3.0 "
+
+USER root
+
+# Fix paths in rake-compiler/config.yml and add rvm and mingw-tools to the global bashrc
+RUN sed -i -- "s:/root/.rake-compiler:/usr/local/rake-compiler:g" /usr/local/rake-compiler/config.yml && \
+ echo "source /etc/profile.d/rvm.sh" >> /etc/bash.bashrc && \
+ echo "export PATH=\$PATH:/opt/mingw/mingw32/bin" >> /etc/bash.bashrc && \
+ echo "export PATH=\$PATH:/opt/mingw/mingw64/bin" >> /etc/bash.bashrc
+
+# Install wrappers for strip commands as a workaround for "Protocol error" in boot2docker.
+COPY build/strip_wrapper /root/
+RUN mv /opt/mingw/mingw32/bin/i686-w64-mingw32-strip /opt/mingw/mingw32/bin/i686-w64-mingw32-strip.bin && \
+ mv /opt/mingw/mingw64/bin/x86_64-w64-mingw32-strip /opt/mingw/mingw64/bin/x86_64-w64-mingw32-strip.bin && \
+ mv /usr/bin/i686-w64-mingw32-strip /usr/bin/i686-w64-mingw32-strip.bin && \
+ mv /usr/bin/x86_64-w64-mingw32-strip /usr/bin/x86_64-w64-mingw32-strip.bin && \
+ ln /root/strip_wrapper /opt/mingw/mingw32/bin/i686-w64-mingw32-strip && \
+ ln /root/strip_wrapper /opt/mingw/mingw64/bin/x86_64-w64-mingw32-strip && \
+ ln /root/strip_wrapper /usr/bin/i686-w64-mingw32-strip && \
+ ln /root/strip_wrapper /usr/bin/x86_64-w64-mingw32-strip
+
+RUN find / -name rbconfig.rb | while read f ; do sed -i 's/0x0501/0x0600/' $f ; done
+RUN find / -name win32.h | while read f ; do sed -i 's/gettimeofday/rb_gettimeofday/' $f ; done
+RUN sed -i 's/defined.__MINGW64__.$/1/' /usr/local/rake-compiler/ruby/i686-w64-mingw32/ruby-2.0.0-p645/include/ruby-2.0.0/ruby/win32.h
+RUN find / -name libwinpthread.dll.a | while read f ; do rm $f ; done
+RUN find / -name libwinpthread-1.dll | while read f ; do rm $f ; done
+RUN find / -name *msvcrt-ruby*.dll.a | while read f ; do n=`echo $f | sed s/.dll//` ; mv $f $n ; done
+
+# Install SIGINT forwarder
+COPY build/sigfw.c /root/
+RUN gcc $HOME/sigfw.c -o /usr/local/bin/sigfw
+
+# Install user mapper
+COPY build/runas /usr/local/bin/
+
+# Install sudoers configuration
+COPY build/sudoers /etc/sudoers.d/rake-compiler-dock
+
+ENV RUBY_CC_VERSION 2.3.0:2.2.2:2.1.6:2.0.0
+
+CMD bash
diff --git a/third_party/rake-compiler-dock/LICENSE.txt b/third_party/rake-compiler-dock/LICENSE.txt
new file mode 100644
index 0000000000..b884ba5396
--- /dev/null
+++ b/third_party/rake-compiler-dock/LICENSE.txt
@@ -0,0 +1,22 @@
+Copyright (c) 2015 Lars Kanis
+
+MIT License
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/third_party/rake-compiler-dock/README.md b/third_party/rake-compiler-dock/README.md
new file mode 100644
index 0000000000..0a9aa8ba78
--- /dev/null
+++ b/third_party/rake-compiler-dock/README.md
@@ -0,0 +1 @@
+This is a modified Dockerfile taken from [rake-compiler-dock](https://github.com/rake-compiler/rake-compiler-dock) for the purpose of building gRPC's ruby gem.
diff --git a/third_party/rake-compiler-dock/build/patches/rake-compiler-0.9.5/without-exts.diff b/third_party/rake-compiler-dock/build/patches/rake-compiler-0.9.5/without-exts.diff
new file mode 100644
index 0000000000..07739d33ec
--- /dev/null
+++ b/third_party/rake-compiler-dock/build/patches/rake-compiler-0.9.5/without-exts.diff
@@ -0,0 +1,14 @@
+diff --git a/tasks/bin/cross-ruby.rake b/tasks/bin/cross-ruby.rake
+index 6acc816..6aa2a49 100644
+--- a/tasks/bin/cross-ruby.rake
++++ b/tasks/bin/cross-ruby.rake
+@@ -135,8 +135,7 @@ file "#{USER_HOME}/builds/#{MINGW_HOST}/#{RUBY_CC_VERSION}/Makefile" => ["#{USER
+ "--build=#{RUBY_BUILD}",
+ '--enable-shared',
+ '--disable-install-doc',
+- '--without-tk',
+- '--without-tcl'
++ '--with-ext='
+ ]
+
+ # Force Winsock2 for Ruby 1.8, 1.9 defaults to it
diff --git a/third_party/rake-compiler-dock/build/patches/ruby-1.8.7-p374/nop.patch b/third_party/rake-compiler-dock/build/patches/ruby-1.8.7-p374/nop.patch
new file mode 100644
index 0000000000..fac8525da6
--- /dev/null
+++ b/third_party/rake-compiler-dock/build/patches/ruby-1.8.7-p374/nop.patch
@@ -0,0 +1,2 @@
+diff --git a/configure b/configure
+index 55157af..6630eba 100755
diff --git a/third_party/rake-compiler-dock/build/patches/ruby-1.9.3/no_sendfile.patch b/third_party/rake-compiler-dock/build/patches/ruby-1.9.3/no_sendfile.patch
new file mode 100644
index 0000000000..d8f339e814
--- /dev/null
+++ b/third_party/rake-compiler-dock/build/patches/ruby-1.9.3/no_sendfile.patch
@@ -0,0 +1,13 @@
+diff --git a/configure b/configure
+index 898730c..cfe6253 100755
+--- a/configure
++++ b/configure
+@@ -14695,7 +14695,7 @@ for ac_func in fmod killpg wait4 waitpid fork spawnv syscall __syscall chroot ge
+ setsid telldir seekdir fchmod cosh sinh tanh log2 round\
+ setuid setgid daemon select_large_fdset setenv unsetenv\
+ mktime timegm gmtime_r clock_gettime gettimeofday poll ppoll\
+- pread sendfile shutdown sigaltstack dl_iterate_phdr
++ pread shutdown sigaltstack dl_iterate_phdr
+ do :
+ as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
diff --git a/third_party/rake-compiler-dock/build/patches/ruby-1.9.3/nop.patch b/third_party/rake-compiler-dock/build/patches/ruby-1.9.3/nop.patch
new file mode 100644
index 0000000000..fac8525da6
--- /dev/null
+++ b/third_party/rake-compiler-dock/build/patches/ruby-1.9.3/nop.patch
@@ -0,0 +1,2 @@
+diff --git a/configure b/configure
+index 55157af..6630eba 100755
diff --git a/third_party/rake-compiler-dock/build/patches/ruby-2.3.0/no_sendfile.patch b/third_party/rake-compiler-dock/build/patches/ruby-2.3.0/no_sendfile.patch
new file mode 100644
index 0000000000..915fc7b790
--- /dev/null
+++ b/third_party/rake-compiler-dock/build/patches/ruby-2.3.0/no_sendfile.patch
@@ -0,0 +1,12 @@
+diff --git a/configure b/configure
+index ebe3d8c..a336b73 100755
+--- a/configure
++++ b/configure
+@@ -18943,7 +18943,6 @@ do :
+ ac_fn_c_check_func "$LINENO" "sendfile" "ac_cv_func_sendfile"
+ if test "x$ac_cv_func_sendfile" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+-#define HAVE_SENDFILE 1
+ _ACEOF
+
+ fi
diff --git a/third_party/rake-compiler-dock/build/runas b/third_party/rake-compiler-dock/build/runas
new file mode 100755
index 0000000000..b29ce31fcc
--- /dev/null
+++ b/third_party/rake-compiler-dock/build/runas
@@ -0,0 +1,12 @@
+#!/bin/bash
+
+groupadd -g "$GID" "$GROUP"
+mkdir -p /tmp/home
+useradd -g "$GID" -u "$UID" -G rvm,sudo -p "" -b /tmp/home -m "$USER"
+
+HOME=$(bash <<< "echo ~$USER")
+ln -s /usr/local/rake-compiler "$HOME"/.rake-compiler
+
+sudo -u "$USER" --set-home \
+ BASH_ENV=/etc/rubybashrc \
+ -- "$@"
diff --git a/third_party/rake-compiler-dock/build/sigfw.c b/third_party/rake-compiler-dock/build/sigfw.c
new file mode 100644
index 0000000000..291d76cec8
--- /dev/null
+++ b/third_party/rake-compiler-dock/build/sigfw.c
@@ -0,0 +1,43 @@
+/*
+ * This program handles SIGINT and forwards it to another process.
+ * It is intended to be run as PID 1.
+ *
+ * Docker starts processes with "docker run" as PID 1.
+ * On Linux, the default signal handler for PID 1 ignores any signals.
+ * Therefore Ctrl-C aka SIGINT is ignored per default.
+ */
+
+#include <signal.h>
+#include <sys/types.h>
+#include <sys/wait.h>
+
+int pid = 0;
+
+void
+handle_sigint (int signum)
+{
+ if(pid)
+ kill(pid, SIGINT);
+}
+
+int main(int argc, char *argv[]){
+ struct sigaction new_action;
+ int status = -1;
+
+ /* Set up the structure to specify the new action. */
+ new_action.sa_handler = handle_sigint;
+ sigemptyset (&new_action.sa_mask);
+ new_action.sa_flags = 0;
+
+ sigaction (SIGINT, &new_action, (void*)0);
+
+ pid = fork();
+ if(pid){
+ wait(&status);
+ return WEXITSTATUS(status);
+ }else{
+ status = execvp(argv[1], &argv[1]);
+ perror("exec");
+ return status;
+ }
+}
diff --git a/third_party/rake-compiler-dock/build/strip_wrapper b/third_party/rake-compiler-dock/build/strip_wrapper
new file mode 100755
index 0000000000..7f8a1346a1
--- /dev/null
+++ b/third_party/rake-compiler-dock/build/strip_wrapper
@@ -0,0 +1,30 @@
+#!/usr/bin/env ruby
+
+# Strip file on local folder instead of a Virtualbox shared folder
+# to work around this bug: https://www.virtualbox.org/ticket/8463
+
+require 'tempfile'
+require 'fileutils'
+
+strip = "#{File.basename($0)}.bin"
+
+files = ARGV.reject{|f| f=~/^-/ }.map do |arg|
+ tmp = Tempfile.new 'strip'
+ tmp.close
+ FileUtils.cp arg, tmp.path
+ [tmp, arg]
+end
+
+options = ARGV.select{|f| f=~/^-/ } + files.map{|t,o| t.path }
+
+unless system( strip, *options )
+ exit 127
+end
+code = $?.exitstatus
+
+files.each do |tmp, orig|
+ FileUtils.rm orig
+ FileUtils.cp tmp.path, orig
+end
+
+exit code
diff --git a/third_party/rake-compiler-dock/build/sudoers b/third_party/rake-compiler-dock/build/sudoers
new file mode 100644
index 0000000000..f9f9b97c95
--- /dev/null
+++ b/third_party/rake-compiler-dock/build/sudoers
@@ -0,0 +1 @@
+Defaults env_keep += "http_proxy https_proxy ftp_proxy RCD_HOST_RUBY_PLATFORM RCD_HOST_RUBY_VERSION RCD_IMAGE RUBY_CC_VERSION"