On 02/02/13 10:31, Branko Čibej wrote:
You could try adding ${abs_srcdir}/gtest/include to the include path. :)
Also, you'll get rid of those warnings by adding appropriate paths to
the private-includes list in build.conf.

-- Brane

Thanks Brane,

I think it is now working, please see attached patch and log.

Index: gen-make.py
===================================================================
--- gen-make.py	(revision 1442436)
+++ gen-make.py	(working copy)
@@ -213,6 +213,8 @@ def _usage_exit(err=None):
   print("")
   print("  --with-apr_memcache=DIR")
   print("           the apr_memcache sources are in DIR")
+  print("  --with-gtest")
+  print("           enable Gtest")
   sys.exit(1)
 
 
@@ -261,7 +263,7 @@ if __name__ == '__main__':
                             'disable-shared',
                             'installed-libs=',
                             'vsnet-version=',
-
+                            'with-gtest',
                             # Keep distributions that help by adding a path
                             # working. On unix this would be filtered by
                             # configure, but on Windows gen-make.py is used
Index: get-deps.sh
===================================================================
--- get-deps.sh	(revision 1442436)
+++ get-deps.sh	(working copy)
@@ -115,7 +115,11 @@ get_gtest() {
 
     unzip -q $TEMPDIR/$GTEST.zip
 
-    mv $GTEST gtest
+    mv $GTEST gtestlib
+    echo "Gtest has been installed, please note:"
+    echo "autogen.sh will issue spurious header warnings."
+    echo "./configure --enable-gtest will issue repeated spurious warnings that"
+    echo "the option --enable-gtest is not recognsed."
 }
 
 # main()
Index: Makefile.in
===================================================================
--- Makefile.in	(revision 1442436)
+++ Makefile.in	(working copy)
@@ -135,6 +135,8 @@ APACHE_INCLUDES = @APACHE_INCLUDES@
 APACHE_LIBEXECDIR = $(DESTDIR)@APACHE_LIBEXECDIR@
 APACHE_LDFLAGS = @APACHE_LDFLAGS@
 
+GTEST_INCLUDES = -Igtest -Igtest/include
+
 SWIG = @SWIG@
 SWIG_PY_INCLUDES = @SWIG_PY_INCLUDES@ -I$(SWIG_SRC_DIR)/python/libsvn_swig_py
 SWIG_PY_COMPILE = @SWIG_PY_COMPILE@
@@ -183,9 +185,11 @@ SWIG_LDFLAGS = @SWIG_LDFLAGS@ $(EXTRA_SWIG_LDFLAGS
 
 COMPILE = $(CC) $(CMODEFLAGS) $(CPPFLAGS) $(CMAINTAINERFLAGS) $(CFLAGS) $(INCLUDES)
 COMPILE_CXX = $(CXX) $(CXXMODEFLAGS) $(CPPFLAGS) $(CXXMAINTAINERFLAGS) $(CXXFLAGS) $(INCLUDES)
+COMPILE_GTEST_CXX = $(COMPILE_CXX) $(GTEST_INCLUDES) -o $@ -c 
 LT_COMPILE = $(LIBTOOL) $(LTFLAGS) --mode=compile $(COMPILE) $(LT_CFLAGS)
 LT_COMPILE_CXX = $(LIBTOOL) $(LTCXXFLAGS) --mode=compile $(COMPILE_CXX) $(LT_CFLAGS)
-
+## I don't understand why, but I need to provide "-o ... -c" in order to get the object file in the correct directory
+LT_COMPILE_GTEST_CXX = $(LIBTOOL) $(LTCXXFLAGS) --mode=compile $(COMPILE_CXX) $(LT_FLAGS) $(GTEST_INCLUDES) -o lib$@ -c 
 # Execute a command that loads libraries from the build dir
 LT_EXECUTE = $(LIBTOOL) $(LTFLAGS) --mode=execute `for f in $(abs_builddir)/subversion/*/*.la; do echo -dlopen $$f; done`
 
@@ -209,6 +213,8 @@ LINK = $(LIBTOOL) $(LTFLAGS) --mode=link $(CC) $(L
 LINK_LIB = $(LINK) $(LT_SO_VERSION)
 LINK_CXX = $(LIBTOOL) $(LTCXXFLAGS) --mode=link $(CXX) $(LT_LDFLAGS) $(CXXFLAGS) $(LDFLAGS) -rpath $(libdir)
 LINK_CXX_LIB = $(LINK_CXX) $(LT_SO_VERSION)
+## LINK_GTEST_CXX = ar -rv libgtest.a src/gtest-all.lo
+LINK_GTEST_CXX = $(LIBTOOL) $(LTCXXFLAGS) --mode=link $(CXX) $(LT_LDFLAGS) $(CXXFLAGS) $(LDFLAGS) -rpath $(libdir)
 
 # special link rule for mod_dav_svn
 LINK_APACHE_MOD = $(LIBTOOL) $(LTFLAGS) --mode=link $(CC) $(LT_LDFLAGS) $(CFLAGS) $(LDFLAGS) -rpath $(APACHE_LIBEXECDIR) -avoid-version -module $(APACHE_LDFLAGS)
Index: build.conf
===================================================================
--- build.conf	(revision 1442436)
+++ build.conf	(working copy)
@@ -40,6 +40,7 @@ private-includes =
         subversion/libsvn_delta/compose_delta.c
         subversion/bindings/cxxhl/include/*.hpp
         subversion/bindings/cxxhl/include/svncxxhl/*.hpp
+
 private-built-includes =
         subversion/svn_private_config.h
         subversion/libsvn_fs_fs/rep-cache-db.h
@@ -404,7 +405,6 @@ type = sql-header
 path = subversion/libsvn_subr
 sources = internal_statements.sql
 
-
 # ----------------------------------------------------------------------------
 #
 # TARGETS FOR I18N SUPPORT
@@ -652,8 +652,26 @@ install = tests
 compile-cmd = $(COMPILE_CXXHL_CXX)
 link-cmd = $(LINK_CXX)
 
+
 # ----------------------------------------------------------------------------
 #
+# Gtest targets
+#
+
+# renamed from gtest to libgtest because libtool couldn't output 
+# a library that didn't have the prefix 'lib'
+[libgtest] 
+description = Gtest Test Suite
+type = lib
+path = libgtest
+headers = include/gtest
+sources = src/gtest-all.cc
+install = libgtest-install
+compile-cmd = $(LT_COMPILE_GTEST_CXX)
+link-cmd = $(LINK_CXX)
+
+# ----------------------------------------------------------------------------
+#
 # TESTING TARGETS
 #
 
Index: build/generator/gen_base.py
===================================================================
--- build/generator/gen_base.py	(revision 1442436)
+++ build/generator/gen_base.py	(working copy)
@@ -431,6 +431,8 @@ class TargetLinked(Target):
         if glob.glob(src):
           if src[-2:] == '.c':
             objname = src[:-2] + self.objext
+          elif src[-3:] == '.cc':
+            objname = src[:-3] + self.objext
           elif src[-4:] == '.cpp':
             objname = src[:-4] + self.objext
           else:
Index: configure.ac
===================================================================
--- configure.ac	(revision 1442436)
+++ configure.ac	(working copy)
@@ -633,7 +633,23 @@ fi
 AC_SUBST(SVN_GNOME_KEYRING_INCLUDES)
 AC_SUBST(SVN_GNOME_KEYRING_LIBS)
 
+dnl gtest -----------------
+AC_ARG_ENABLE([gtest],
+  [AS_HELP_STRING([--enable-gtest],
+                  [Enable tests using the Google C++ Testing Framework.
+                  ])],
+  enable_gtest=yes,
+  [])
 
+if test "$enable_gtest" = "yes"; then
+  AC_MSG_RESULT([yes])
+  AC_DEFINE([HAVE_GTEST], [1], 
+            [Is gtest enabled?])
+else
+  AC_MSG_RESULT([no])
+fi
+AC_SUBST([HAVE_GTEST])
+
 dnl Ev2 experimental features ----------------------
 dnl Note: The Ev2 implementations will be built unconditionally, but by
 dnl providing this flag, users can choose to use the currently-shimmed Ev2
@@ -839,6 +855,12 @@ if test "$svn_lib_kwallet" = "yes"; then
   INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-kwallet-lib"
 fi
 
+if test "$enable_gtest" = "yes"; then
+  BUILD_RULES="$BUILD_RULES libgtest"
+  INSTALL_RULES="`echo $INSTALL_RULES | $SED 's/install-lib/install-lib install-gtest/'`"
+  INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-gtest"
+fi
+
 if test "$found_gnome_keyring" = "yes"; then
   BUILD_RULES="$BUILD_RULES gnome-keyring-lib"
   INSTALL_RULES="`echo $INSTALL_RULES | $SED 's/install-lib/install-lib install-gnome-keyring-lib/'`"
[[[
Add Gtest to be compiled by the build system.
 
* trunk/get-deps.sh (gtest): change gtest dir to libgtest and
    add warnings to user to ignore spurious warnings.

* trunk/build/generator/gen_base.py (TargetLinked.add_dependencies): 
  Add .cc extension.

* trunk/gen_make.py (_useage_exit): add gtest flag help info. 

* trunk/Makefile.in(): various entries for gtest flags
 
* trunk/build.conf (install): Add Gtest target.

* trunk/configure.ac (): Add AC_ARG_ENABLE command hook and test
    (build rules): add gtest build rules

Patch by: Gabriela Gibson <gabriela.gibson{_AT_}gmail.com>
]]]

Reply via email to