On Tue, 2012-03-13 at 11:47 -0700, Chase Douglas wrote: > See README for instructions on how to use them. > > Signed-off-by: Chase Douglas <[email protected]> > --- > Makefile.am | 2 +- > README | 41 +++++++++++++++-- > aclocal/Makefile.am | 27 +++++++++++ > aclocal/xorg-gtest.m4 | 105 > ++++++++++++++++++++++++++++++++++++++++++++ > configure.ac | 3 + > src/Makefile-xorg-gtest.am | 61 +++++++++++++++++++++++++ > src/Makefile.am | 5 ++- > xorg-gtest.pc.in | 1 + > 8 files changed, 239 insertions(+), 6 deletions(-) > create mode 100644 aclocal/Makefile.am > create mode 100644 aclocal/xorg-gtest.m4 > create mode 100644 src/Makefile-xorg-gtest.am > > diff --git a/Makefile.am b/Makefile.am > index 2542b44..8e0a0c6 100644 > --- a/Makefile.am > +++ b/Makefile.am > @@ -23,7 +23,7 @@ > # SOFTWARE. > # > > -SUBDIRS = data doc include src examples > +SUBDIRS = aclocal data doc include src examples > > pkgconfigdir = $(libdir)/pkgconfig > pkgconfig_DATA = xorg-gtest.pc > diff --git a/README b/README > index 6b79f05..83c5d38 100644 > --- a/README > +++ b/README > @@ -1,4 +1,4 @@ > -X.Org dummy testing environment for Google Test > +X.Org GTest testing environment for Google Test > =============================================== > > Provides a Google Test environment for starting and stopping > @@ -7,6 +7,39 @@ environment is defined in header environment.h. Please refer > to > the Google test documentation for information on how to add a custom > environment. > > -Moreover, a custom main()-function that takes care of setting up the > -environment is provided in libxtestingenvironment_main.a. This library can be > -used as a replacement for libgtest_main.a > +Moreover, a custom main() function that takes care of setting up the > +environment is provided in xorg-gtest_main.cpp. This can be used as a > +replacement for libgtest_main.a > + > +Using X.org GTest in a project > +============================== > + > +The X.org GTest does not provide precompiled libraries. Each project must > build > +the X.org GTest sources. To facilitate this, aclocal and automake include > files > +are provided. Perform the following to integrate xorg-gtest into an > autotools- > +based project. > + > +Add the following line to the top level Makefile.am for your project: > + > +ACLOCAL_AMFLAGS = -I m4 --install > + > +This will ensure the latest xorg-gtest.m4 macro installed on your system is > +copied into aclocal/. If a user runs autoreconf, they will already have the > +macro even if they don't have xorg-gtest installed. > + > +Call CHECK_XORG_GTEST from configure.ac This will set the value of > +$have_xorg_gtest and set $(XORG_GTEST_CPPFLAGS) and $(XORG_GTEST_CXXFLAGS). > + > +Copy Makefile-xorg-gtest.am into your project. > + > +In your test Makefile.am, add: > + > +include $(top_srcdir)/path/to/Makefile-xorg-gtest.am > + > +Append $(XORG_GTEST_BUILD_LIBS) to check_LIBRARIES. > + > +Append CPPFLAGS with $(XORG_GTEST_CPPFLAGS) and CXXFLAGS with > +$(XORG_GTEST_CXXFLAGS) for any testing source objects. > + > +Finally, link against $(XORG_GTEST_LIBS). If you want the xorg-gtest main() > +integration, link against $(XORG_GTEST_MAIN_LIBS) as well. > diff --git a/aclocal/Makefile.am b/aclocal/Makefile.am > new file mode 100644 > index 0000000..3ea9969 > --- /dev/null > +++ b/aclocal/Makefile.am > @@ -0,0 +1,27 @@ > +# > +# Makefile for the src subdirectory of xorg-gtest > +# > +# Copyright (C) 2012 Canonical, Ltd. > +# > +# Permission is hereby granted, free of charge, to any person obtaining a > copy > +# of this software and associated documentation files (the "Software"), to > deal > +# in the Software without restriction, including without limitation the > rights > +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell > +# copies of the Software, and to permit persons to whom the Software is > +# furnished to do so, subject to the following conditions: > +# > +# The above copyright notice and this permission notice (including the next > +# paragraph) shall be included in all copies or substantial portions of the > +# Software. > +# > +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR > +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, > +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE > +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER > +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING > FROM, > +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN > THE > +# SOFTWARE. > +# > + > +aclocaldir = $(datadir)/aclocal > +dist_aclocal_DATA = xorg-gtest.m4 > diff --git a/aclocal/xorg-gtest.m4 b/aclocal/xorg-gtest.m4 > new file mode 100644 > index 0000000..a1ef1cf > --- /dev/null > +++ b/aclocal/xorg-gtest.m4 > @@ -0,0 +1,105 @@ > +# serial 1 > + > +# Copyright (C) 2012 Canonical, Ltd. > +# > +# Permission is hereby granted, free of charge, to any person obtaining a > copy > +# of this software and associated documentation files (the "Software"), to > deal > +# in the Software without restriction, including without limitation the > rights > +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell > +# copies of the Software, and to permit persons to whom the Software is > +# furnished to do so, subject to the following conditions: > +# > +# The above copyright notice and this permission notice (including the next > +# paragraph) shall be included in all copies or substantial portions of the > +# Software. > +# > +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR > +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, > +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE > +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER > +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING > FROM, > +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN > THE > +# SOFTWARE. > + > +# Checks whether the gtest source is available on the system. Allows for > +# adjusting the include and source path. Sets have_gtest=yes if the source is > +# present. Sets GTEST_CPPFLAGS and GTEST_SOURCE to the preprocessor flags and > +# source location respectively. > +AC_DEFUN([_CHECK_GTEST], > +[ > + AC_ARG_WITH([gtest-include-path], > + [AS_HELP_STRING([--with-gtest-include-path], > + [location of the Google test headers])], > + [GTEST_CPPFLAGS="-I$withval"]) > + > + AC_ARG_WITH([gtest-source-path], > + [AS_HELP_STRING([--with-gtest-source-path], > + [location of the Google test sources, defaults > to /usr/src/gtest])], > + [GTEST_SOURCE="$withval"], > + [GTEST_SOURCE="/usr/src/gtest"]) > + > + GTEST_CPPFLAGS="$GTEST_CPPFLAGS -I$GTEST_SOURCE" > + > + AC_CHECK_FILES([$GTEST_SOURCE/src/gtest-all.cc] > + [$GTEST_SOURCE/src/gtest_main.cc], > + [have_gtest=yes], > + [have_gtest=no]) > + > + AS_IF([test "x$have_gtest_source" = xyes], > + [AC_SUBST(GTEST_CPPFLAGS)] > + [AC_SUBST(GTEST_SOURCE)]) > +]) # _CHECK_GTEST > + > +# Checks whether the xorg-gtest source is available on the system. Allows for > +# adjusting the include and source path. Sets have_xorg_gtest=yes if the > source > +# is present. Sets XORG_GTEST_CPPFLAGS and XORG_GTEST_SOURCE to the > preprocessor > +# flags and source location respectively. Sets XORG_GTEST_LIBS to all the > +# libraries needed to link against a built xorg-gtest library. > +AC_DEFUN([CHECK_XORG_GTEST], > +[ > + AC_REQUIRE([_CHECK_GTEST]) > + > + PKG_CHECK_EXISTS([xorg-gtest], > + [have_xorg_gtest=yes], > + [have_xorg_gtest=no]) > + > + XORG_GTEST_SOURCE=`$PKG_CONFIG --variable=sourcedir --print-errors > xorg-gtest` > + XORG_GTEST_MAKEFILE=`$PKG_CONFIG --variable=makefile --print-errors > xorg-gtest` > + XORG_GTEST_CPPFLAGS=`$PKG_CONFIG --variable=CPPflags --print-errors > xorg-gtest` > + XORG_GTEST_CPPFLAGS="$GTEST_CPPFLAGS $XORG_GTEST_CPPFLAGS" > + XORG_GTEST_CPPFLAGS="$XORG_GTEST_CPPFLAGS -I$XORG_GTEST_SOURCE" > + > + PKG_CHECK_MODULES(X11, [x11], [have_x11=yes], [have_x11=no]) > + > + # Check if we should include support for utouch-evemu > + AC_ARG_WITH([evemu], > + [AS_HELP_STRING([--with-evemu], > + [support Linux input device recording playback > + (default: enabled if available)])], > + [], > + [with_evemu=check]) > + > + AS_IF([test "x$with_evemu" = xyes], > + [PKG_CHECK_MODULES(EVEMU, [utouch-evemu], > [have_xorg_gtest_evemu=yes])], > + [test "x$with_evemu" = xcheck], > + [PKG_CHECK_MODULES(EVEMU, > + [utouch-evemu], > + [have_xorg_gtest_evemu=yes], > + [have_xorg_gtest_evemu=no])]) > + AS_IF([test "x$have_xorg_gtest_evemu" = xyes], > + [XORG_GTEST_CPPFLAGS="$XORG_GTEST_CPPFLAGS -DHAVE_EVEMU"]) > + > + AS_IF([test "x$have_gtest" != xyes -o "x$have_x11" != xyes], > + [have_xorg_gtest=no]) > + > + AS_IF([test "x$have_xorg_gtest" = xyes], > + [AC_SUBST(XORG_GTEST_SOURCE)] > + [AC_SUBST(XORG_GTEST_MAKEFILE)] > + [AC_SUBST(XORG_GTEST_CPPFLAGS)]) > + > + # Get BASE_CXXFLAGS and STRICT_CXXFLAGS > + XORG_MACROS_VERSION(1.17) > + AC_LANG_PUSH([C++]) > + XORG_STRICT_OPTION > + AC_LANG_POP > +]) # CHECK_XORG_GTEST > diff --git a/configure.ac b/configure.ac > index afb10b3..c5ee350 100644 > --- a/configure.ac > +++ b/configure.ac > @@ -50,8 +50,11 @@ AS_IF([test "x$have_evemu" = xyes], > [AC_DEFINE([HAVE_EVEMU])]) > > AC_SUBST(SOURCEDIR, ['${prefix}/src/xorg-gtest']) > AC_SUBST(DUMMY_CONF_PATH, ['${datarootdir}/xorg/gtest/dummy.conf']) > +AC_SUBST(SOURCE_MAKEFILE, > + ['${prefix}/src/xorg-gtest/src/Makefile-xorg-gtest.am']) > > AC_CONFIG_FILES([Makefile > + aclocal/Makefile > data/Makefile > doc/Makefile > examples/Makefile > diff --git a/src/Makefile-xorg-gtest.am b/src/Makefile-xorg-gtest.am > new file mode 100644 > index 0000000..185381d > --- /dev/null > +++ b/src/Makefile-xorg-gtest.am > @@ -0,0 +1,61 @@ > +# Copyright (C) 2012 Canonical, Ltd. > +# > +# Permission is hereby granted, free of charge, to any person obtaining a > copy > +# of this software and associated documentation files (the "Software"), to > deal > +# in the Software without restriction, including without limitation the > rights > +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell > +# copies of the Software, and to permit persons to whom the Software is > +# furnished to do so, subject to the following conditions: > +# > +# The above copyright notice and this permission notice (including the next > +# paragraph) shall be included in all copies or substantial portions of the > +# Software. > +# > +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR > +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, > +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE > +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER > +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING > FROM, > +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN > THE > +# SOFTWARE. > +# > + > +XORG_GTEST_BUILD_LIBS = \ > + libgtest.a \ > + libgtest_main.a \ > + libxorg-gtest.a \ > + libxorg-gtest_main.a > + > +nodist_libgtest_a_SOURCES = $(GTEST_SOURCE)/src/gtest-all.cc > +libgtest_a_CPPFLAGS = $(GTEST_CPPFLAGS) $(AM_CPPFLAGS) -w > +libgtest_a_CXXFLAGS = $(GTEST_CXXFLAGS) $(AM_CXXFLAGS) > + > +nodist_libgtest_main_a_SOURCES = $(GTEST_SOURCE)/src/gtest_main.cc > +libgtest_main_a_CPPFLAGS = $(GTEST_CPPFLAGS) $(AM_CPPFLAGS) -w > +libgtest_main_a_CXXFLAGS = $(GTEST_CXXFLAGS) $(AM_CXXFLAGS) > + > +nodist_libxorg_gtest_a_SOURCES = $(XORG_GTEST_SOURCE)/src/xorg-gtest-all.cpp > +libxorg_gtest_a_CPPFLAGS = \ > + $(XORG_GTEST_CPPFLAGS) \ > + $(GTEST_CPPFLAGS) \ > + $(AM_CPPFLAGS) \ > + -w > +libxorg_gtest_a_CXXFLAGS = \ > + $(XORG_GTEST_CXXFLAGS) \ > + $(GTEST_CXXFLAGS) \ > + $(AM_CPPFLAGS) > + > +nodist_libxorg_gtest_main_a_SOURCES = \ > + $(XORG_GTEST_SOURCE)/src/xorg-gtest_main.cpp > +libxorg_gtest_main_a_CPPFLAGS = \ > + $(XORG_GTEST_CPPFLAGS) \ > + $(GTEST_CPPFLAGS) \ > + $(AM_CPPFLAGS) \ > + -w > +libxorg_gtest_main_a_CXXFLAGS = \ > + $(XORG_GTEST_CXXFLAGS) \ > + $(GTEST_CXXFLAGS) \ > + $(AM_CXXFLAGS) > + > +XORG_GTEST_LIBS = libxorg-gtest.a libgtest.a -lpthread $(X11_LIBS) > +XORG_GTEST_MAIN_LIBS = libxorg-gtest_main.a
I think we could probably do better than this with a static makefile; that way client interface would be a simple "include $THE_MAKEFILE" rather than needing special autofoo treatment. I'll see how hard it is to write such a beast.
signature.asc
Description: This is a digitally signed message part
_______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
