The built-in ssl target now properly merges the archives instead of nesting them.
Change on 2014/12/16 by nnoble <nnoble@google.com>
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=82273781
diff --git a/Makefile b/Makefile
index 736ab55..d68abcf 100644
--- a/Makefile
+++ b/Makefile
@@ -134,6 +134,7 @@
ifeq ($(HAS_SYSTEM_OPENSSL_ALPN),false)
ifeq ($(HAS_EMBEDDED_OPENSSL_ALPN),true)
OPENSSL_DEP = third_party/openssl/libssl.a
+OPENSSL_MERGE_LIBS += third_party/openssl/libssl.a third_party/openssl/libcrypto.a
CPPFLAGS += -Ithird_party/openssl/include
LDFLAGS += -Lthird_party/openssl
else
@@ -629,6 +630,10 @@
strip: strip-static strip-shared
+strip-static: strip-static_c strip-static_cxx
+
+strip-shared: strip-shared_c strip-shared_cxx
+
strip-static_c: static_c
$(E) "[STRIP] Stripping libgpr.a"
$(Q) $(STRIP) libs/libgpr.a
@@ -958,18 +963,22 @@
LIBGRPC_OBJS = $(addprefix objs/, $(addsuffix .o, $(basename $(LIBGRPC_SRC))))
LIBGRPC_DEPS = $(addprefix deps/, $(addsuffix .dep, $(basename $(LIBGRPC_SRC))))
-LIBGRPC_OBJS += $(OPENSSL_DEP)
-
ifeq ($(NO_SECURE),true)
libs/libgrpc.a: openssl_dep_error
else
-libs/libgrpc.a: $(LIBGRPC_OBJS)
+libs/libgrpc.a: $(LIBGRPC_OBJS) $(OPENSSL_DEP)
$(E) "[AR] Creating $@"
$(Q) mkdir -p `dirname $@`
$(Q) $(AR) rcs libs/libgrpc.a $(LIBGRPC_OBJS)
+ $(Q) mkdir tmp-merge
+ $(Q) ( cd tmp-merge ; $(AR) x ../libs/libgrpc.a )
+ $(Q) for l in $(OPENSSL_MERGE_LIBS) ; do ( cd tmp-merge ; ar x ../$${l} ) ; done
+ $(Q) rm -f libs/libgrpc.a tmp-merge/__.SYMDEF*
+ $(Q) ar rcs libs/libgrpc.a tmp-merge/*
+ $(Q) rm -rf tmp-merge
libs/libgrpc.so.$(VERSION): $(LIBGRPC_OBJS)
$(E) "[LD] Linking $@"
@@ -1013,15 +1022,13 @@
LIBGRPC_TEST_UTIL_OBJS = $(addprefix objs/, $(addsuffix .o, $(basename $(LIBGRPC_TEST_UTIL_SRC))))
LIBGRPC_TEST_UTIL_DEPS = $(addprefix deps/, $(addsuffix .dep, $(basename $(LIBGRPC_TEST_UTIL_SRC))))
-LIBGRPC_TEST_UTIL_OBJS += $(OPENSSL_DEP)
-
ifeq ($(NO_SECURE),true)
libs/libgrpc_test_util.a: openssl_dep_error
else
-libs/libgrpc_test_util.a: $(LIBGRPC_TEST_UTIL_OBJS)
+libs/libgrpc_test_util.a: $(LIBGRPC_TEST_UTIL_OBJS) $(OPENSSL_DEP)
$(E) "[AR] Creating $@"
$(Q) mkdir -p `dirname $@`
$(Q) $(AR) rcs libs/libgrpc_test_util.a $(LIBGRPC_TEST_UTIL_OBJS)
@@ -1082,15 +1089,13 @@
LIBGRPC++_OBJS = $(addprefix objs/, $(addsuffix .o, $(basename $(LIBGRPC++_SRC))))
LIBGRPC++_DEPS = $(addprefix deps/, $(addsuffix .dep, $(basename $(LIBGRPC++_SRC))))
-LIBGRPC++_OBJS += $(OPENSSL_DEP)
-
ifeq ($(NO_SECURE),true)
libs/libgrpc++.a: openssl_dep_error
else
-libs/libgrpc++.a: $(LIBGRPC++_OBJS)
+libs/libgrpc++.a: $(LIBGRPC++_OBJS) $(OPENSSL_DEP)
$(E) "[AR] Creating $@"
$(Q) mkdir -p `dirname $@`
$(Q) $(AR) rcs libs/libgrpc++.a $(LIBGRPC++_OBJS)
@@ -1127,15 +1132,13 @@
LIBGRPC++_TEST_UTIL_OBJS = $(addprefix objs/, $(addsuffix .o, $(basename $(LIBGRPC++_TEST_UTIL_SRC))))
LIBGRPC++_TEST_UTIL_DEPS = $(addprefix deps/, $(addsuffix .dep, $(basename $(LIBGRPC++_TEST_UTIL_SRC))))
-LIBGRPC++_TEST_UTIL_OBJS += $(OPENSSL_DEP)
-
ifeq ($(NO_SECURE),true)
libs/libgrpc++_test_util.a: openssl_dep_error
else
-libs/libgrpc++_test_util.a: $(LIBGRPC++_TEST_UTIL_OBJS)
+libs/libgrpc++_test_util.a: $(LIBGRPC++_TEST_UTIL_OBJS) $(OPENSSL_DEP)
$(E) "[AR] Creating $@"
$(Q) mkdir -p `dirname $@`
$(Q) $(AR) rcs libs/libgrpc++_test_util.a $(LIBGRPC++_TEST_UTIL_OBJS)
@@ -1167,15 +1170,13 @@
LIBEND2END_FIXTURE_CHTTP2_FAKE_SECURITY_OBJS = $(addprefix objs/, $(addsuffix .o, $(basename $(LIBEND2END_FIXTURE_CHTTP2_FAKE_SECURITY_SRC))))
LIBEND2END_FIXTURE_CHTTP2_FAKE_SECURITY_DEPS = $(addprefix deps/, $(addsuffix .dep, $(basename $(LIBEND2END_FIXTURE_CHTTP2_FAKE_SECURITY_SRC))))
-LIBEND2END_FIXTURE_CHTTP2_FAKE_SECURITY_OBJS += $(OPENSSL_DEP)
-
ifeq ($(NO_SECURE),true)
libs/libend2end_fixture_chttp2_fake_security.a: openssl_dep_error
else
-libs/libend2end_fixture_chttp2_fake_security.a: $(LIBEND2END_FIXTURE_CHTTP2_FAKE_SECURITY_OBJS)
+libs/libend2end_fixture_chttp2_fake_security.a: $(LIBEND2END_FIXTURE_CHTTP2_FAKE_SECURITY_OBJS) $(OPENSSL_DEP)
$(E) "[AR] Creating $@"
$(Q) mkdir -p `dirname $@`
$(Q) $(AR) rcs libs/libend2end_fixture_chttp2_fake_security.a $(LIBEND2END_FIXTURE_CHTTP2_FAKE_SECURITY_OBJS)
@@ -1207,15 +1208,13 @@
LIBEND2END_FIXTURE_CHTTP2_FULLSTACK_OBJS = $(addprefix objs/, $(addsuffix .o, $(basename $(LIBEND2END_FIXTURE_CHTTP2_FULLSTACK_SRC))))
LIBEND2END_FIXTURE_CHTTP2_FULLSTACK_DEPS = $(addprefix deps/, $(addsuffix .dep, $(basename $(LIBEND2END_FIXTURE_CHTTP2_FULLSTACK_SRC))))
-LIBEND2END_FIXTURE_CHTTP2_FULLSTACK_OBJS += $(OPENSSL_DEP)
-
ifeq ($(NO_SECURE),true)
libs/libend2end_fixture_chttp2_fullstack.a: openssl_dep_error
else
-libs/libend2end_fixture_chttp2_fullstack.a: $(LIBEND2END_FIXTURE_CHTTP2_FULLSTACK_OBJS)
+libs/libend2end_fixture_chttp2_fullstack.a: $(LIBEND2END_FIXTURE_CHTTP2_FULLSTACK_OBJS) $(OPENSSL_DEP)
$(E) "[AR] Creating $@"
$(Q) mkdir -p `dirname $@`
$(Q) $(AR) rcs libs/libend2end_fixture_chttp2_fullstack.a $(LIBEND2END_FIXTURE_CHTTP2_FULLSTACK_OBJS)
@@ -1247,15 +1246,13 @@
LIBEND2END_FIXTURE_CHTTP2_SIMPLE_SSL_FULLSTACK_OBJS = $(addprefix objs/, $(addsuffix .o, $(basename $(LIBEND2END_FIXTURE_CHTTP2_SIMPLE_SSL_FULLSTACK_SRC))))
LIBEND2END_FIXTURE_CHTTP2_SIMPLE_SSL_FULLSTACK_DEPS = $(addprefix deps/, $(addsuffix .dep, $(basename $(LIBEND2END_FIXTURE_CHTTP2_SIMPLE_SSL_FULLSTACK_SRC))))
-LIBEND2END_FIXTURE_CHTTP2_SIMPLE_SSL_FULLSTACK_OBJS += $(OPENSSL_DEP)
-
ifeq ($(NO_SECURE),true)
libs/libend2end_fixture_chttp2_simple_ssl_fullstack.a: openssl_dep_error
else
-libs/libend2end_fixture_chttp2_simple_ssl_fullstack.a: $(LIBEND2END_FIXTURE_CHTTP2_SIMPLE_SSL_FULLSTACK_OBJS)
+libs/libend2end_fixture_chttp2_simple_ssl_fullstack.a: $(LIBEND2END_FIXTURE_CHTTP2_SIMPLE_SSL_FULLSTACK_OBJS) $(OPENSSL_DEP)
$(E) "[AR] Creating $@"
$(Q) mkdir -p `dirname $@`
$(Q) $(AR) rcs libs/libend2end_fixture_chttp2_simple_ssl_fullstack.a $(LIBEND2END_FIXTURE_CHTTP2_SIMPLE_SSL_FULLSTACK_OBJS)
@@ -1287,15 +1284,13 @@
LIBEND2END_FIXTURE_CHTTP2_SIMPLE_SSL_WITH_OAUTH2_FULLSTACK_OBJS = $(addprefix objs/, $(addsuffix .o, $(basename $(LIBEND2END_FIXTURE_CHTTP2_SIMPLE_SSL_WITH_OAUTH2_FULLSTACK_SRC))))
LIBEND2END_FIXTURE_CHTTP2_SIMPLE_SSL_WITH_OAUTH2_FULLSTACK_DEPS = $(addprefix deps/, $(addsuffix .dep, $(basename $(LIBEND2END_FIXTURE_CHTTP2_SIMPLE_SSL_WITH_OAUTH2_FULLSTACK_SRC))))
-LIBEND2END_FIXTURE_CHTTP2_SIMPLE_SSL_WITH_OAUTH2_FULLSTACK_OBJS += $(OPENSSL_DEP)
-
ifeq ($(NO_SECURE),true)
libs/libend2end_fixture_chttp2_simple_ssl_with_oauth2_fullstack.a: openssl_dep_error
else
-libs/libend2end_fixture_chttp2_simple_ssl_with_oauth2_fullstack.a: $(LIBEND2END_FIXTURE_CHTTP2_SIMPLE_SSL_WITH_OAUTH2_FULLSTACK_OBJS)
+libs/libend2end_fixture_chttp2_simple_ssl_with_oauth2_fullstack.a: $(LIBEND2END_FIXTURE_CHTTP2_SIMPLE_SSL_WITH_OAUTH2_FULLSTACK_OBJS) $(OPENSSL_DEP)
$(E) "[AR] Creating $@"
$(Q) mkdir -p `dirname $@`
$(Q) $(AR) rcs libs/libend2end_fixture_chttp2_simple_ssl_with_oauth2_fullstack.a $(LIBEND2END_FIXTURE_CHTTP2_SIMPLE_SSL_WITH_OAUTH2_FULLSTACK_OBJS)
@@ -1327,15 +1322,13 @@
LIBEND2END_FIXTURE_CHTTP2_SOCKET_PAIR_OBJS = $(addprefix objs/, $(addsuffix .o, $(basename $(LIBEND2END_FIXTURE_CHTTP2_SOCKET_PAIR_SRC))))
LIBEND2END_FIXTURE_CHTTP2_SOCKET_PAIR_DEPS = $(addprefix deps/, $(addsuffix .dep, $(basename $(LIBEND2END_FIXTURE_CHTTP2_SOCKET_PAIR_SRC))))
-LIBEND2END_FIXTURE_CHTTP2_SOCKET_PAIR_OBJS += $(OPENSSL_DEP)
-
ifeq ($(NO_SECURE),true)
libs/libend2end_fixture_chttp2_socket_pair.a: openssl_dep_error
else
-libs/libend2end_fixture_chttp2_socket_pair.a: $(LIBEND2END_FIXTURE_CHTTP2_SOCKET_PAIR_OBJS)
+libs/libend2end_fixture_chttp2_socket_pair.a: $(LIBEND2END_FIXTURE_CHTTP2_SOCKET_PAIR_OBJS) $(OPENSSL_DEP)
$(E) "[AR] Creating $@"
$(Q) mkdir -p `dirname $@`
$(Q) $(AR) rcs libs/libend2end_fixture_chttp2_socket_pair.a $(LIBEND2END_FIXTURE_CHTTP2_SOCKET_PAIR_OBJS)
@@ -1367,15 +1360,13 @@
LIBEND2END_FIXTURE_CHTTP2_SOCKET_PAIR_ONE_BYTE_AT_A_TIME_OBJS = $(addprefix objs/, $(addsuffix .o, $(basename $(LIBEND2END_FIXTURE_CHTTP2_SOCKET_PAIR_ONE_BYTE_AT_A_TIME_SRC))))
LIBEND2END_FIXTURE_CHTTP2_SOCKET_PAIR_ONE_BYTE_AT_A_TIME_DEPS = $(addprefix deps/, $(addsuffix .dep, $(basename $(LIBEND2END_FIXTURE_CHTTP2_SOCKET_PAIR_ONE_BYTE_AT_A_TIME_SRC))))
-LIBEND2END_FIXTURE_CHTTP2_SOCKET_PAIR_ONE_BYTE_AT_A_TIME_OBJS += $(OPENSSL_DEP)
-
ifeq ($(NO_SECURE),true)
libs/libend2end_fixture_chttp2_socket_pair_one_byte_at_a_time.a: openssl_dep_error
else
-libs/libend2end_fixture_chttp2_socket_pair_one_byte_at_a_time.a: $(LIBEND2END_FIXTURE_CHTTP2_SOCKET_PAIR_ONE_BYTE_AT_A_TIME_OBJS)
+libs/libend2end_fixture_chttp2_socket_pair_one_byte_at_a_time.a: $(LIBEND2END_FIXTURE_CHTTP2_SOCKET_PAIR_ONE_BYTE_AT_A_TIME_OBJS) $(OPENSSL_DEP)
$(E) "[AR] Creating $@"
$(Q) mkdir -p `dirname $@`
$(Q) $(AR) rcs libs/libend2end_fixture_chttp2_socket_pair_one_byte_at_a_time.a $(LIBEND2END_FIXTURE_CHTTP2_SOCKET_PAIR_ONE_BYTE_AT_A_TIME_OBJS)
@@ -1969,15 +1960,13 @@
LIBEND2END_CERTS_OBJS = $(addprefix objs/, $(addsuffix .o, $(basename $(LIBEND2END_CERTS_SRC))))
LIBEND2END_CERTS_DEPS = $(addprefix deps/, $(addsuffix .dep, $(basename $(LIBEND2END_CERTS_SRC))))
-LIBEND2END_CERTS_OBJS += $(OPENSSL_DEP)
-
ifeq ($(NO_SECURE),true)
libs/libend2end_certs.a: openssl_dep_error
else
-libs/libend2end_certs.a: $(LIBEND2END_CERTS_OBJS)
+libs/libend2end_certs.a: $(LIBEND2END_CERTS_OBJS) $(OPENSSL_DEP)
$(E) "[AR] Creating $@"
$(Q) mkdir -p `dirname $@`
$(Q) $(AR) rcs libs/libend2end_certs.a $(LIBEND2END_CERTS_OBJS)
diff --git a/build.json b/build.json
index b9fef35..386711f 100644
--- a/build.json
+++ b/build.json
@@ -79,6 +79,7 @@
"build": "all",
"secure": true,
"vs_project_guid": "{29D16885-7228-4C31-81ED-5F9187C7F2A9}",
+ "baselib": true,
"alternates": [
{
"name": "grpc_unsecure",
diff --git a/templates/Makefile.template b/templates/Makefile.template
index 2a41344..544e9cc 100644
--- a/templates/Makefile.template
+++ b/templates/Makefile.template
@@ -191,6 +191,7 @@
ifeq ($(HAS_SYSTEM_OPENSSL_ALPN),false)
ifeq ($(HAS_EMBEDDED_OPENSSL_ALPN),true)
OPENSSL_DEP = third_party/openssl/libssl.a
+OPENSSL_MERGE_LIBS += third_party/openssl/libssl.a third_party/openssl/libcrypto.a
CPPFLAGS += -Ithird_party/openssl/include
LDFLAGS += -Lthird_party/openssl
else
@@ -400,6 +401,10 @@
strip: strip-static strip-shared
+strip-static: strip-static_c strip-static_cxx
+
+strip-shared: strip-shared_c strip-shared_cxx
+
strip-static_c: static_c
% for lib in libs:
% if not lib.get("c++", False):
@@ -624,19 +629,29 @@
LIB${lib.name.upper()}_DEPS = $(addprefix deps/, $(addsuffix .dep, $(basename $(LIB${lib.name.upper()}_SRC))))
% if lib.get('secure', True):
-LIB${lib.name.upper()}_OBJS += $(OPENSSL_DEP)
-
ifeq ($(NO_SECURE),true)
libs/lib${lib.name}.a: openssl_dep_error
else
-% endif
+libs/lib${lib.name}.a: $(LIB${lib.name.upper()}_OBJS) $(OPENSSL_DEP)
+% else:
libs/lib${lib.name}.a: $(LIB${lib.name.upper()}_OBJS)
+% endif
$(E) "[AR] Creating $@"
$(Q) mkdir -p `dirname $@`
$(Q) $(AR) rcs libs/lib${lib.name}.a $(LIB${lib.name.upper()}_OBJS)
+% if lib.get('baselib', False):
+% if lib.get('secure', True):
+ $(Q) mkdir tmp-merge
+ $(Q) ( cd tmp-merge ; $(AR) x ../libs/lib${lib.name}.a )
+ $(Q) for l in $(OPENSSL_MERGE_LIBS) ; do ( cd tmp-merge ; <%text>ar x ../$${l}</%text> ) ; done
+ $(Q) rm -f libs/lib${lib.name}.a tmp-merge/__.SYMDEF*
+ $(Q) ar rcs libs/lib${lib.name}.a tmp-merge/*
+ $(Q) rm -rf tmp-merge
+% endif
+% endif
% if lib.build == "all":
libs/lib${lib.name}.so.$(VERSION): $(LIB${lib.name.upper()}_OBJS)