From c080d329298e841d7d4e1380ff7ec88de5cb3b02 Mon Sep 17 00:00:00 2001 From: Arfrever Frehtes Taifersar Arahesis Date: Fri, 28 Jan 2022 15:14:59 +0800 Subject: [PATCH] protobuf-3.19.0: system_libraries Use system version of GoogleTest, which will unbundle gtest, gmock libraries Signed-off-by: Arfrever Frehtes Taifersar Arahesis Signed-off-by: Yixun Lan --- Makefile.am | 20 +------------------- configure.ac | 7 ------- src/Makefile.am | 33 ++++++--------------------------- 3 files changed, 7 insertions(+), 53 deletions(-) diff --git a/Makefile.am b/Makefile.am index 41d4061..b24f8f4 100644 --- a/Makefile.am +++ b/Makefile.am @@ -11,28 +11,10 @@ SUBDIRS = . src # Always include third_party directories in distributions. DIST_SUBDIRS = src conformance benchmarks third_party/googletest -# Build gmock before we build protobuf tests. We don't add gmock to SUBDIRS -# because then "make check" would also build and run all of gmock's own tests, -# which takes a lot of time and is generally not useful to us. Also, we don't -# want "make install" to recurse into gmock since we don't want to overwrite -# the installed version of gmock if there is one. check-local: - @echo "Making lib/libgmock.a lib/libgmock_main.a in gmock" - @cd third_party/googletest/googletest && $(MAKE) $(AM_MAKEFLAGS) lib/libgtest.la lib/libgtest_main.la - @cd third_party/googletest/googlemock && $(MAKE) $(AM_MAKEFLAGS) lib/libgmock.la lib/libgmock_main.la -# We would like to clean gmock when "make clean" is invoked. But we have to -# be careful because clean-local is also invoked during "make distclean", but -# "make distclean" already recurses into gmock because it's listed among the -# DIST_SUBDIRS. distclean will delete gmock/Makefile, so if we then try to -# cd to the directory again and "make clean" it will fail. So, check that the -# Makefile exists before recursing. clean-local: - @if test -e third_party/googletest/Makefile; then \ - echo "Making clean in googletest"; \ - cd third_party/googletest && $(MAKE) $(AM_MAKEFLAGS) clean; \ - fi; \ - if test -e conformance/Makefile; then \ + @if test -e conformance/Makefile; then \ echo "Making clean in conformance"; \ cd conformance && $(MAKE) $(AM_MAKEFLAGS) clean; \ fi; \ diff --git a/configure.ac b/configure.ac index 02085ca..449fb3d 100644 --- a/configure.ac +++ b/configure.ac @@ -236,12 +236,5 @@ if test "x$ANDROID_TEST" = xyes; then fi AC_SUBST([LIBLOG_LIBS]) -# HACK: Make gmock's configure script pick up our copy of CFLAGS and CXXFLAGS, -# since the flags added by ACX_CHECK_SUNCC must be used when compiling gmock -# too. -export CFLAGS -export CXXFLAGS -AC_CONFIG_SUBDIRS([third_party/googletest]) - AC_CONFIG_FILES([Makefile src/Makefile benchmarks/Makefile conformance/Makefile protobuf.pc protobuf-lite.pc]) AC_OUTPUT diff --git a/src/Makefile.am b/src/Makefile.am index 7e86b62..47d759f 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -716,19 +716,11 @@ COMMON_TEST_SOURCES = \ google/protobuf/testing/googletest.cc \ google/protobuf/testing/googletest.h -GOOGLETEST_BUILD_DIR=../third_party/googletest/googletest -GOOGLEMOCK_BUILD_DIR=../third_party/googletest/googlemock -GOOGLETEST_SRC_DIR=$(srcdir)/../third_party/googletest/googletest -GOOGLEMOCK_SRC_DIR=$(srcdir)/../third_party/googletest/googlemock check_PROGRAMS = protoc protobuf-test protobuf-lazy-descriptor-test \ protobuf-lite-test test_plugin protobuf-lite-arena-test \ $(GZCHECKPROGRAMS) protobuf_test_LDADD = $(PTHREAD_LIBS) libprotobuf.la libprotoc.la \ - $(GOOGLETEST_BUILD_DIR)/lib/libgtest.la \ - $(GOOGLEMOCK_BUILD_DIR)/lib/libgmock.la \ - $(GOOGLEMOCK_BUILD_DIR)/lib/libgmock_main.la -protobuf_test_CPPFLAGS = -I$(GOOGLETEST_SRC_DIR)/include \ - -I$(GOOGLEMOCK_SRC_DIR)/include + -lgtest -lgmock -lgmock_main # Disable optimization for tests unless the user explicitly asked for it, # since test_util.cc takes forever to compile with optimization (with GCC). # See configure.ac for more info. @@ -820,12 +812,8 @@ $(am_protobuf_test_OBJECTS): unittest_proto_middleman # Run cpp_unittest again with PROTOBUF_TEST_NO_DESCRIPTORS defined. protobuf_lazy_descriptor_test_LDADD = $(PTHREAD_LIBS) libprotobuf.la \ libprotoc.la \ - $(GOOGLETEST_BUILD_DIR)/lib/libgtest.la \ - $(GOOGLEMOCK_BUILD_DIR)/lib/libgmock.la \ - $(GOOGLEMOCK_BUILD_DIR)/lib/libgmock_main.la -protobuf_lazy_descriptor_test_CPPFLAGS = -I$(GOOGLEMOCK_SRC_DIR)/include \ - -I$(GOOGLETEST_SRC_DIR)/include \ - -DPROTOBUF_TEST_NO_DESCRIPTORS + -lgtest -lgmock -lgmock_main +protobuf_lazy_descriptor_test_CPPFLAGS = -DPROTOBUF_TEST_NO_DESCRIPTORS protobuf_lazy_descriptor_test_CXXFLAGS = $(NO_OPT_CXXFLAGS) protobuf_lazy_descriptor_test_SOURCES = \ google/protobuf/compiler/cpp/cpp_unittest.cc \ @@ -847,11 +835,7 @@ COMMON_LITE_TEST_SOURCES = \ # full runtime and we want to make sure this test builds without full # runtime. protobuf_lite_test_LDADD = $(PTHREAD_LIBS) libprotobuf-lite.la \ - $(GOOGLETEST_BUILD_DIR)/lib/libgtest.la \ - $(GOOGLEMOCK_BUILD_DIR)/lib/libgmock.la \ - $(GOOGLEMOCK_BUILD_DIR)/lib/libgmock_main.la -protobuf_lite_test_CPPFLAGS= -I$(GOOGLEMOCK_SRC_DIR)/include \ - -I$(GOOGLETEST_SRC_DIR)/include + -lgtest -lgmock -lgmock_main protobuf_lite_test_CXXFLAGS = $(NO_OPT_CXXFLAGS) protobuf_lite_test_SOURCES = \ google/protobuf/lite_unittest.cc \ @@ -863,11 +847,7 @@ $(am_protobuf_lite_test_OBJECTS): unittest_proto_middleman # gtest when building the test internally our memory sanitizer doesn't detect # memory leaks (don't know why). protobuf_lite_arena_test_LDADD = $(PTHREAD_LIBS) libprotobuf-lite.la \ - $(GOOGLETEST_BUILD_DIR)/lib/libgtest.la \ - $(GOOGLEMOCK_BUILD_DIR)/lib/libgmock.la \ - $(GOOGLEMOCK_BUILD_DIR)/lib/libgmock_main.la -protobuf_lite_arena_test_CPPFLAGS = -I$(GOOGLEMOCK_SRC_DIR)/include \ - -I$(GOOGLETEST_SRC_DIR)/include + -lgtest -lgmock -lgmock_main protobuf_lite_arena_test_CXXFLAGS = $(NO_OPT_CXXFLAGS) protobuf_lite_arena_test_SOURCES = \ google/protobuf/lite_arena_unittest.cc \ @@ -877,8 +857,7 @@ $(am_protobuf_lite_arena_test_OBJECTS): unittest_proto_middleman # Test plugin binary. test_plugin_LDADD = $(PTHREAD_LIBS) libprotobuf.la libprotoc.la \ - $(GOOGLETEST_BUILD_DIR)/lib/libgtest.la -test_plugin_CPPFLAGS = -I$(GOOGLETEST_SRC_DIR)/include + -lgtest test_plugin_SOURCES = \ google/protobuf/compiler/mock_code_generator.cc \ google/protobuf/compiler/test_plugin.cc \ -- 2.34.1