gnucash master: Add Google Test and Google Mock
John Ralls
jralls at code.gnucash.org
Wed Oct 29 17:20:52 EDT 2014
Updated via https://github.com/Gnucash/gnucash/commit/35e9257c (commit)
from https://github.com/Gnucash/gnucash/commit/177ea6f0 (commit)
commit 35e9257cabb3b77772f8677c1ad90a5e178e9da6
Author: John Ralls <jralls at ceridwen.us>
Date: Tue Oct 21 17:34:35 2014 -0700
Add Google Test and Google Mock
Enabled with --enable-google-test, configure the location of the sources
with --with-gtest-root, --with-gtest-headers, --with-gmock-root, and
--with-gmock-headers. The latter isn't necessary if the headers are
installed in /usr/include and the sources in /usr/src as the Debian
packages do.
This is a first-pass and needs to be made a bit more sophisticated later.
It might also be worthwhile to extract it into an m4 macro.
diff --git a/configure.ac b/configure.ac
index 6887e6f..d4220d6 100644
--- a/configure.ac
+++ b/configure.ac
@@ -756,11 +756,105 @@ enable_google_profile=no
AC_ARG_ENABLE( google-profiler,
[AS_HELP_STRING([--enable-google-profiler], [link in Google Performance Tools profiler; allows enabling profiling by setting $CPUPROFILE=/path/to/logfile.])],
[AC_MSG_CHECKING([Google PerfTools Profiler])
- AC_CHECK_LIB([profiler], enable_google_profile=yes)],
- [AC_MSG_WARN([Google Profiling Enabled but the library wasn\'t found.])
+ AC_CHECK_LIB([profiler], [enable_google_profile=yes],
+ [AC_MSG_WARN([Google Profiling Enabled but the library was not found.])])
])
AM_CONDITIONAL(WITH_GOOGLE_PROFILER, [test x$enable_google_profile = xyes])
+###---------------------------------------------------------------------------
+### Google Test and Mock Support: https://code.google.com/p/googletest/ and
+### https://code.google.com/p/googlemock/
+### ---------------------------------------------------------------------------
+enable_google_test=no
+ac_cv_gmock_root=""
+ac_cv_gmock_headers=""
+ac_cv_gtest_root=""
+ac_cv_gtest_headers=""
+AC_ARG_ENABLE( google-test,
+ [AS_HELP_STRING([--enable-google-test], [build the Google Test and Google Mock static libraries and enable C++ Unit Tests])],
+ [enable_google_test=yes])
+if test x$enable_google_test = xyes; then
+ AC_CHECK_FILES([/usr/src/gtest/src/gtest-all.cc /usr/src/gtest/src/gmock-all.cc /usr/include/gtest/gtest-all.h /usr/include/gmock/gmock-all.h], [gtest_system_install=yes],[gtest_system_install=no])
+fi
+AC_ARG_WITH([gtest-root],
+ [AS_HELP_STRING([--with-gtest-root=PATH], [location of the google test sources])],
+ [ac_cv_gtest_root="$with_gtest_root"])
+AC_ARG_WITH([gtest-headers],
+ [AS_HELP_STRING([--with-gtest-headers=PATH], [location of the google test header files if not in gtest-root])],
+ [ac_cv_gtest_headers="$with_gtest_headers"])
+AC_ARG_WITH([gmock-root],
+ [AS_HELP_STRING([--with-gmock-root=PATH], [location of the google mock sources])],
+ [ac_cv_gmock_root="$with_gmock_root"])
+AC_ARG_WITH([gmock-headers],
+ [AS_HELP_STRING([--with-gmock-headers=PATH], [location of the google test header files if not in gmock-root])],
+ [ac_cv_gmock_headers="$with_gmock_headers"])
+
+if test x$enable_google_test = xyes; then
+ if test -z $ac_cv_gtest_root -o ! -r "$ac_cv_gtest_root/src/gtest-all.cc"; then
+ if test -n ${GTEST_ROOT} -a -r ${GTEST_ROOT}/src/gtest-all.cc; then
+ ac_cv_gtest_root=${GTEST_ROOT}
+ elif test "x$gtest_system_install" = "xyes"; then
+ ac_cv_test_gtest_root=${GTEST_ROOT}
+ else
+ ac_cv_test_root=""
+ fi
+ fi
+ if test -z $ac_cv_gtest_root; then
+ enable_google_test=no
+ else
+ if test ! -r $ac_cv_gtest_root/include/gtest/gtest.h; then
+ if test -z $ac_cv_gtest_headers -o ! -r $ac_cv_gtest_headers/gtest/gtest.h; then
+ if test -n ${GTEST_HEADERS} -a -r ${GTEST_HEADERS}/gtest/gtest.h; then
+ ac_cv_gtest_headers=${GTEST_HEADERS}
+ elif test "x$gtest_system_install" = "xyes"; then
+ ac_cv_test_gtest_root=${GTEST_ROOT}
+ else
+ ac_cv_gtest_headers=""
+ fi
+ fi
+ if test -z $ac_cv_gtest_headers; then
+ enable_google_test=no
+ fi
+ else
+ ac_cv_gtest_headers=$ac_cv_gtest_root/include
+ fi
+ fi
+ if test -z $ac_cv_gmock_root -o ! -r "$ac_cv_gmock_root/src/gmock-all.cc"; then
+ if test -n ${GMOCK_ROOT} -a -r ${GMOCK_ROOT}/src/gmock-all.cc; then
+ ac_cv_gmock_root=${GMOCK_ROOT}
+ elif test "x$gmock_system_install" = "xyes"; then
+ ac_cv_test_gmock_root=${GMOCK_ROOT}
+ else
+ ac_cv_test_root=""
+ fi
+ fi
+ if test -z $ac_cv_gmock_root; then
+ enable_google_test=no
+ else
+ if test ! -r $ac_cv_gmock_root/include/gmock/gmock.h; then
+ if test -z $ac_cv_gmock_headers -o ! -r $ac_cv_gmock_headers/gmock/gmock.h; then
+ if test -n ${GMOCK_HEADERS} -a -r ${GMOCK_HEADERS}/gmock/gmock.h; then
+ ac_cv_gmock_headers=${GMOCK_HEADERS}
+ elif test "x$gmock_system_install" = "xyes"; then
+ ac_cv_test_gmock_root=${GMOCK_ROOT}
+ else
+ ac_cv_gmock_headers=""
+ fi
+ fi
+ if test -z $ac_cv_gmock_headers; then
+ enable_google_test=no
+ fi
+ else
+ ac_cv_gmock_headers=$ac_cv_gmock_root/include
+ fi
+ fi
+fi
+AC_SUBST([GTEST_ROOT], [$ac_cv_gtest_root])
+AC_SUBST([GTEST_HEADERS], [$ac_cv_gtest_headers])
+AC_SUBST([GMOCK_ROOT], [$ac_cv_gmock_root])
+AC_SUBST([GMOCK_HEADERS], [$ac_cv_gmock_headers])
+AM_CONDITIONAL([WITH_GOOGLE_TEST], [test "x$enable_google_test" = "xyes"])
+
### --------------------------------------------------------------------------
### Register2
AC_ARG_ENABLE( register2,
diff --git a/src/test-core/Makefile.am b/src/test-core/Makefile.am
index 6a46fef..7ae32db 100644
--- a/src/test-core/Makefile.am
+++ b/src/test-core/Makefile.am
@@ -78,6 +78,17 @@ _unittest_support_la_LIBADD = \
libtest-core.la
endif
+
+if WITH_GOOGLE_TEST
+noinst_LIBRARIES = \
+ libgtest.a \
+ libgmock.a
+libgtest_a_SOURCES = ${GTEST_ROOT}/src/gtest-all.cc
+libgmock_a_SOURCES = ${GMOCK_ROOT}/src/gmock-all.cc
+libgtest_a_CPPFLAGS = ${AM_CPPFLAGS} -I${GTEST_HEADERS} -I${GTEST_ROOT}
+libgmock_a_CPPFLAGS = ${libgtest_a_CPPFLAGS} -I${GMOCK_HEADERS} -I${GMOCK_ROOT}
+endif
+
SCM_FILES = unittest-support.scm
gncmoddir = ${GNC_SHAREDIR}/guile-modules/gnucash
Summary of changes:
configure.ac | 98 ++++++++++++++++++++++++++++++++++++++++++++++-
src/test-core/Makefile.am | 11 ++++++
2 files changed, 107 insertions(+), 2 deletions(-)
More information about the gnucash-changes
mailing list