On 12-03-09 03:45 PM, Chase Douglas wrote: > Google Test does not recommend using precompiled gtest libraries. See: > > http://code.google.com/p/googletest/wiki/FAQ#Why_is_it_not_recommended_to_install_a_pre-compiled_copy_of_Goog > > This change modifies the build system so the examples build the gtest > and xorg-gtest libraries and link against the locally built libraries > instead of any other precompiled libraries on the system. It uses the > same compiler flags to compile everything so the C++ One-Definition Rule > is not broken. > > Signed-off-by: Chase Douglas <[email protected]> > --- > configure.ac | 6 +++- > examples/Makefile.am | 39 ++++++++++++++++++++++++--- > m4/gtest.m4 | 71 ++++++++++++++++++++++++++++++++++++++----------- > 3 files changed, 93 insertions(+), 23 deletions(-) > > diff --git a/configure.ac b/configure.ac > index 1082886..b5fa25d 100644 > --- a/configure.ac > +++ b/configure.ac > @@ -20,6 +20,7 @@ AC_PROG_LIBTOOL > > # Checks for programs. > AC_PROG_CXX > +AC_PROG_RANLIB > > AC_LANG([C++]) > > @@ -28,13 +29,14 @@ m4_ifndef([XORG_MACROS_VERSION], > [m4_fatal([must install xorg-macros 1.16 or later before running > autoconf/autogen])]) > XORG_MACROS_VERSION(1.16) > XORG_DEFAULT_OPTIONS > +XORG_ENABLE_INTEGRATION_TESTS > > PKG_CHECK_MODULES(XSERVER, x11) > > # Check for Google Test > -AC_CHECK_GTEST > +CHECK_GTEST > > -AS_IF([test "x$ac_cv_lib_gtest_main" != xyes], > +AS_IF([test "x$have_gtest" != xyes], > AC_MSG_ERROR([package 'gtest' not found])) > > AC_SUBST([GTEST_CPPFLAGS]) > diff --git a/examples/Makefile.am b/examples/Makefile.am > index fcaca2b..da2485b 100644 > --- a/examples/Makefile.am > +++ b/examples/Makefile.am > @@ -24,12 +24,41 @@ > # SOFTWARE. > # > > -noinst_PROGRAMS = xorg-gtest-example > +check_LIBRARIES = libgtest.a libxorg-gtest.a libxorg-gtest_main.a > > -xorg_gtest_example_SOURCES = xorg-gtest-example.cpp > - > -AM_CPPFLAGS = -I$(top_srcdir)/include > AM_CXXFLAGS = $(XSERVER_CFLAGS) $(GTEST_CPPFLAGS) $(BASE_CXXFLAGS) > > -xorg_gtest_example_LDADD = $(top_builddir)/src/libxorg-gtest.la > $(top_builddir)/src/libxorg-gtest_main.la -lgtest -lpthread -lX11 > +nodist_libgtest_a_SOURCES = $(GTEST_SOURCE)/src/gtest-all.cc > +libgtest_a_CPPFLAGS = $(GTEST_CPPFLAGS) -w > +libgtest_a_CXXFLAGS = $(GTEST_CXXFLAGS) $(AM_CXXFLAGS) > + > +libxorg_gtest_a_SOURCES = $(top_srcdir)/src/xorg-gtest-all.cpp > +libxorg_gtest_a_CPPFLAGS = \ > + $(GTEST_CPPFLAGS) \ > + -I$(top_srcdir)/include \ > + -I$(top_srcdir) \ > + -DDUMMY_CONF_PATH="\"$(top_srcdir)/data/xorg/gtest/dummy.conf\"" > +libxorg_gtest_a_CXXFLAGS = $(GTEST_CXXFLAGS) $(AM_CXXFLAGS) > + > +libxorg_gtest_main_a_SOURCES = $(top_srcdir)/src/xorg-gtest_main.cpp > +libxorg_gtest_main_a_CPPFLAGS = \ > + $(GTEST_CPPFLAGS) \ > + -I$(top_srcdir)/include \ > + -I$(top_srcdir) > +libxorg_gtest_main_a_CXXFLAGS = $(GTEST_CXXFLAGS) $(AM_CXXFLAGS) > + > +check_PROGRAMS = xorg-gtest-example > + > +if ENABLE_INTEGRATION_TESTS ~/xorg/src/test/xorg-gtest$ autoreconf -vfi autoreconf: Entering directory `.' autoreconf: configure.ac: not using Gettext autoreconf: running: aclocal -I /home/nadon/xorg/inst/share/aclocal --force -I m4 autoreconf: configure.ac: tracing autoreconf: configure.ac: not using Libtool autoreconf: running: /usr/bin/autoconf --force autoreconf: configure.ac: not using Autoheader autoreconf: running: automake --add-missing --copy --force-missing examples/Makefile.am:52: ENABLE_INTEGRATION_TESTS does not appear in AM_CONDITIONAL autoreconf: automake failed with exit status: 1
> +TESTS = $(check_PROGRAMS) > +endif > + > +xorg_gtest_example_SOURCES = xorg-gtest-example.cpp > > +xorg_gtest_example_LDADD = \ > + libgtest.a \ > + libxorg-gtest.a \ > + libxorg-gtest_main.a \ > + -lpthread \ > + $(XSERVER_LIBS) \ > + $(EVEMU_LIBS) > diff --git a/m4/gtest.m4 b/m4/gtest.m4 > index cd41b21..2de334c 100644 > --- a/m4/gtest.m4 > +++ b/m4/gtest.m4 > @@ -1,24 +1,63 @@ > -# Checks whether the gtest library is available on the system > -# Allows for adjusting the include and library path. > -# Sets have_gtest=yes if the library is present and > -# reports the compiler and linker flags in > -# GTEST_CXXFLAGS AND GTEST_LDFLAGS, respectively. > -AC_DEFUN([AC_CHECK_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. > + > +# 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, defaults to /usr/include])], > - [GTEST_CPPFLAGS="-I$withval"]) > + [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_ARG_WITH([gtest-lib-path], > - [AS_HELP_STRING([--with-gtest-lib-path], [location of the Google test > libraries])], > - [GTEST_LDFLAGS="-L$withval -lpthread"], > - [GTEST_LDFLAGS='-lpthread']) > + AC_LANG_PUSH([C++]) > > - AC_LANG_PUSH(C++) > + tmp_CPPFLAGS="$CPPFLAGS" > + CPPFLAGS="$CPPFLAGS $GTEST_CPPFLAGS" > > - AC_CHECK_LIB([gtest], [main], [:], [:], [$GTEST_LDFLAGS]) > + AC_CHECK_HEADER([gtest/gtest.h]) > + > + CPPFLAGS="$tmp_CPPFLAGS" > > AC_LANG_POP > -]) # AC_CHECK_GTEST > > + AC_CHECK_FILES([$GTEST_SOURCE/src/gtest-all.cc] > + [$GTEST_SOURCE/src/gtest_main.cc], > + [have_gtest_source=yes], > + [have_gtest_source=no]) > + > + AS_IF([test "x$ac_cv_header_gtest_gtest_h" = xyes -a \ > + "x$have_gtest_source" = xyes], > + [have_gtest=yes] > + [AC_SUBST(GTEST_CPPFLAGS)] > + [AC_SUBST(GTEST_SOURCE)], > + [have_gtest=no]) > +]) # CHECK_GTEST _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
