From 24902602f2f695a85dd364836b041ce5ec0a2565 Mon Sep 17 00:00:00 2001 From: syd Date: Sun, 19 Nov 2017 14:08:17 -0500 Subject: [PATCH 1/4] Upgrade googletest to 1.8.0 --- depends/packages/googlemock.mk | 20 -------------------- depends/packages/googletest.mk | 13 ++++++++----- depends/packages/packages.mk | 2 +- 3 files changed, 9 insertions(+), 26 deletions(-) delete mode 100644 depends/packages/googlemock.mk diff --git a/depends/packages/googlemock.mk b/depends/packages/googlemock.mk deleted file mode 100644 index 229dc3587..000000000 --- a/depends/packages/googlemock.mk +++ /dev/null @@ -1,20 +0,0 @@ -# url=https://github.com/google/googlemock/archive/release-1.7.0.tar.gz - -package=googlemock -$(package)_version=1.7.0 -$(package)_dependencies=googletest - -$(package)_download_path=https://github.com/google/$(package)/archive/ -$(package)_file_name=$(package)-$($(package)_version).tar.gz -$(package)_download_file=release-$($(package)_version).tar.gz -$(package)_sha256_hash=3f20b6acb37e5a98e8c4518165711e3e35d47deb6cdb5a4dd4566563b5efd232 - -define $(package)_build_cmds - $(MAKE) -C make GTEST_DIR='$(host_prefix)' CXXFLAGS='-fPIC' gmock-all.o -endef - - -define $(package)_stage_cmds - install -D ./make/gmock-all.o $($(package)_staging_dir)$(host_prefix)/lib/libgmock.a && \ - cp -a ./include $($(package)_staging_dir)$(host_prefix)/include -endef diff --git a/depends/packages/googletest.mk b/depends/packages/googletest.mk index 5133e64a1..94880efdb 100644 --- a/depends/packages/googletest.mk +++ b/depends/packages/googletest.mk @@ -1,15 +1,18 @@ package=googletest -$(package)_version=1.7.0 +$(package)_version=1.8.0 $(package)_download_path=https://github.com/google/$(package)/archive/ $(package)_file_name=$(package)-$($(package)_version).tar.gz $(package)_download_file=release-$($(package)_version).tar.gz -$(package)_sha256_hash=f73a6546fdf9fce9ff93a5015e0333a8af3062a152a9ad6bcb772c96687016cc +$(package)_sha256_hash=58a6f4277ca2bc8565222b3bbd58a177609e9c488e8a72649359ba51450db7d8 define $(package)_build_cmds - $(MAKE) -C make CXXFLAGS=-fPIC gtest.a + $(MAKE) -C googlemock/make CXXFLAGS=-fPIC gmock.a && \ + $(MAKE) -C googletest/make CXXFLAGS=-fPIC gtest.a endef define $(package)_stage_cmds - install -D ./make/gtest.a $($(package)_staging_dir)$(host_prefix)/lib/libgtest.a && \ - cp -a ./include $($(package)_staging_dir)$(host_prefix)/include + install -D ./googlemock/make/gmock.a $($(package)_staging_dir)$(host_prefix)/lib/libgmock.a && \ + install -D ./googletest/make/gtest.a $($(package)_staging_dir)$(host_prefix)/lib/libgtest.a && \ + cp -a ./googlemock/include $($(package)_staging_dir)$(host_prefix)/ && \ + cp -a ./googletest/include $($(package)_staging_dir)$(host_prefix)/ endef diff --git a/depends/packages/packages.mk b/depends/packages/packages.mk index 0b7905e4f..296323c8c 100644 --- a/depends/packages/packages.mk +++ b/depends/packages/packages.mk @@ -1,7 +1,7 @@ rust_packages := rust librustzcash proton_packages := proton zcash_packages := libgmp libsodium -packages := boost openssl libevent zeromq $(zcash_packages) googletest googlemock +packages := boost openssl libevent zeromq $(zcash_packages) googletest native_packages := native_ccache wallet_packages=bdb From 7c591c6d2f6466f1adda6f85122098db327ad32e Mon Sep 17 00:00:00 2001 From: syd Date: Sat, 25 Nov 2017 10:58:37 -0500 Subject: [PATCH 2/4] Don't compile libgtest.a when building libsnark. Previously libsnark would try to build libgtest if /usr/src/gtest exists on the build machine. This caused issues because the version of libgtest in /usr/src isn't necessarily the same as the one that the rest of zcash's gtests were built with. --- src/Makefile.am | 2 +- src/snark/Makefile | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/Makefile.am b/src/Makefile.am index ea745a1f7..48b60911a 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -46,7 +46,7 @@ $(LIBSECP256K1): $(wildcard secp256k1/src/*) $(wildcard secp256k1/include/*) collate-libsnark: $(LIBSNARK) LIBSNARK_CXXFLAGS = -fPIC -DBINARY_OUTPUT -DNO_PT_COMPRESSION=1 -LIBSNARK_CONFIG_FLAGS = CURVE=ALT_BN128 MULTICORE=1 NO_PROCPS=1 NO_DOCS=1 STATIC=1 NO_SUPERCOP=1 FEATUREFLAGS=-DMONTGOMERY_OUTPUT NO_COPY_DEPINST=1 +LIBSNARK_CONFIG_FLAGS = CURVE=ALT_BN128 MULTICORE=1 NO_PROCPS=1 NO_DOCS=1 STATIC=1 NO_SUPERCOP=1 FEATUREFLAGS=-DMONTGOMERY_OUTPUT NO_COPY_DEPINST=1 NO_COMPILE_LIBGTEST=1 $(LIBSNARK): $(wildcard snark/src/*) $(AM_V_at) CXXFLAGS="$(LIBSNARK_CXXFLAGS)" $(MAKE) $(AM_MAKEFLAGS) -C snark/ install PREFIX=$(srcdir)/build DEPINST="$(LIBSNARK_DEPINST)" $(LIBSNARK_CONFIG_FLAGS) OPTFLAGS="-O2 -march=x86-64" diff --git a/src/snark/Makefile b/src/snark/Makefile index cceffb989..32b8609f2 100644 --- a/src/snark/Makefile +++ b/src/snark/Makefile @@ -27,13 +27,13 @@ INSTALL_LIBS = $(LIB_FILE) # Sentinel file to check existence of this directory (since directories don't work as a Make dependency): DEPINST_EXISTS = $(DEPINST)/.exists - -COMPILE_GTEST := ifneq ($(NO_GTEST),1) - GTESTDIR=/usr/src/gtest -# Compile GTest from sourcecode if we can (e.g., Ubuntu). Otherwise use precompiled one (e.g., Fedora). -# See https://code.google.com/p/googletest/wiki/FAQ#Why_is_it_not_recommended_to_install_a_pre-compiled_copy_of_Goog . - COMPILE_GTEST :=$(shell test -d $(GTESTDIR) && echo -n 1) + # Compile GTest from sourcecode if we can (e.g., Ubuntu). Otherwise use precompiled one (e.g., Fedora). + # See https://github.com/google/googletest/blob/master/googletest/docs/FAQ.md#why-is-it-not-recommended-to-install-a-pre-compiled-copy-of-google-test-for-example-into-usrlocal + ifneq ($(NO_COMPILE_LIBGTEST),1) + GTESTDIR=/usr/src/gtest + COMPILE_LIBGTEST = $(shell test -d $(GTESTDIR) && echo -n 1) + endif GTEST_LDLIBS += -lgtest -lpthread endif @@ -221,13 +221,13 @@ src/gadgetlib2/tests/gadgetlib2_test: \ $(EXECUTABLES): %: %.o $(LIBSNARK_A) $(DEPINST_EXISTS) $(CXX) -o $@ $@.o $(LIBSNARK_A) $(CXXFLAGS) $(LDFLAGS) $(LDLIBS) -$(EXECUTABLES_WITH_GTEST): %: %.o $(LIBSNARK_A) $(if $(COMPILE_GTEST),$(LIBGTEST_A)) $(DEPINST_EXISTS) +$(EXECUTABLES_WITH_GTEST): %: %.o $(LIBSNARK_A) $(if $(COMPILE_LIBGTEST),$(LIBGTEST_A)) $(DEPINST_EXISTS) $(CXX) -o $@ $@.o $(LIBSNARK_A) $(CXXFLAGS) $(LDFLAGS) $(GTEST_LDLIBS) $(LDLIBS) $(EXECUTABLES_WITH_SUPERCOP): %: %.o $(LIBSNARK_A) $(DEPINST_EXISTS) $(CXX) -o $@ $@.o $(LIBSNARK_A) $(CXXFLAGS) $(LDFLAGS) $(SUPERCOP_LDLIBS) $(LDLIBS) -$(GTEST_TESTS): %: $(GTEST_OBJS) $(LIBSNARK_A) $(if $(COMPILE_GTEST),$(LIBGTEST_A)) $(DEPINST_EXISTS) +$(GTEST_TESTS): %: $(GTEST_OBJS) $(LIBSNARK_A) $(if $(COMPILE_LIBGTEST),$(LIBGTEST_A)) $(DEPINST_EXISTS) $(CXX) -o $@ $(GTEST_OBJS) $(LIBSNARK_A) $(CXXFLAGS) $(LDFLAGS) $(GTEST_LDLIBS) $(LDLIBS) From a10c2f46a59229461c9c8c3c8257a986d68d05dd Mon Sep 17 00:00:00 2001 From: syd Date: Sat, 25 Nov 2017 11:05:01 -0500 Subject: [PATCH 3/4] Add gtests to .gitignore --- src/snark/.gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/src/snark/.gitignore b/src/snark/.gitignore index f6fb450a2..bb48e1aba 100644 --- a/src/snark/.gitignore +++ b/src/snark/.gitignore @@ -6,6 +6,7 @@ depinst/ depsrc/ README.html doxygen/ +src/gtests src/gadgetlib2/examples/tutorial src/gadgetlib2/tests/gadgetlib2_test From d52dcf5d0ce3c16a79c7f49fef72d17c9df38a8f Mon Sep 17 00:00:00 2001 From: syd Date: Mon, 27 Nov 2017 11:08:34 -0500 Subject: [PATCH 4/4] InitGoogleMock instead of InitGoogleTest per CR --- src/gtest/main.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gtest/main.cpp b/src/gtest/main.cpp index 0b6e1ad08..d2ae0b23d 100644 --- a/src/gtest/main.cpp +++ b/src/gtest/main.cpp @@ -1,4 +1,4 @@ -#include "gtest/gtest.h" +#include "gmock/gmock.h" #include "crypto/common.h" #include "pubkey.h" #include "zcash/JoinSplit.hpp" @@ -25,6 +25,6 @@ int main(int argc, char **argv) { boost::filesystem::path vk_path = ZC_GetParamsDir() / "sprout-verifying.key"; params = ZCJoinSplit::Prepared(vk_path.string(), pk_path.string()); - testing::InitGoogleTest(&argc, argv); + testing::InitGoogleMock(&argc, argv); return RUN_ALL_TESTS(); }