Merge branch 'master' of github.com:google/googletest
This commit is contained in:
commit
2f42d769ad
12
.travis.yml
12
.travis.yml
|
@ -11,34 +11,26 @@ language: cpp
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
- os: linux
|
- os: linux
|
||||||
dist: trusty
|
|
||||||
sudo: required
|
sudo: required
|
||||||
group: deprecated-2017Q3
|
|
||||||
before_install: chmod -R +x ./ci/*platformio.sh
|
before_install: chmod -R +x ./ci/*platformio.sh
|
||||||
install: ./ci/install-platformio.sh
|
install: ./ci/install-platformio.sh
|
||||||
script: ./ci/build-platformio.sh
|
script: ./ci/build-platformio.sh
|
||||||
- os: linux
|
- os: linux
|
||||||
|
dist: xenial
|
||||||
compiler: gcc
|
compiler: gcc
|
||||||
sudo : true
|
sudo : true
|
||||||
install: ./ci/install-linux.sh && ./ci/log-config.sh
|
install: ./ci/install-linux.sh && ./ci/log-config.sh
|
||||||
script: ./ci/build-linux-bazel.sh
|
script: ./ci/build-linux-bazel.sh
|
||||||
- os: linux
|
- os: linux
|
||||||
|
dist: xenial
|
||||||
compiler: clang
|
compiler: clang
|
||||||
sudo : true
|
sudo : true
|
||||||
install: ./ci/install-linux.sh && ./ci/log-config.sh
|
install: ./ci/install-linux.sh && ./ci/log-config.sh
|
||||||
script: ./ci/build-linux-bazel.sh
|
script: ./ci/build-linux-bazel.sh
|
||||||
- os: linux
|
- os: linux
|
||||||
group: deprecated-2017Q4
|
|
||||||
compiler: gcc
|
|
||||||
install: ./ci/install-linux.sh && ./ci/log-config.sh
|
|
||||||
script: ./ci/build-linux-autotools.sh
|
|
||||||
env: VERBOSE=1 CXXFLAGS=-std=c++11
|
|
||||||
- os: linux
|
|
||||||
group: deprecated-2017Q4
|
|
||||||
compiler: gcc
|
compiler: gcc
|
||||||
env: BUILD_TYPE=Debug VERBOSE=1 CXX_FLAGS=-std=c++11
|
env: BUILD_TYPE=Debug VERBOSE=1 CXX_FLAGS=-std=c++11
|
||||||
- os: linux
|
- os: linux
|
||||||
group: deprecated-2017Q4
|
|
||||||
compiler: clang
|
compiler: clang
|
||||||
env: BUILD_TYPE=Release VERBOSE=1 CXX_FLAGS=-std=c++11 -Wgnu-zero-variadic-macro-arguments
|
env: BUILD_TYPE=Release VERBOSE=1 CXX_FLAGS=-std=c++11 -Wgnu-zero-variadic-macro-arguments
|
||||||
- os: linux
|
- os: linux
|
||||||
|
|
16
Makefile.am
16
Makefile.am
|
@ -1,16 +0,0 @@
|
||||||
# Note: automake support is community-based. The maintainers do not use automake
|
|
||||||
# internally.
|
|
||||||
|
|
||||||
## Process this file with automake to produce Makefile.in
|
|
||||||
|
|
||||||
AUTOMAKE_OPTIONS = foreign
|
|
||||||
|
|
||||||
# Build . before src so that our all-local and clean-local hooks kicks in at
|
|
||||||
# the right time.
|
|
||||||
SUBDIRS = googletest googlemock
|
|
||||||
|
|
||||||
EXTRA_DIST = \
|
|
||||||
BUILD.bazel \
|
|
||||||
CMakeLists.txt \
|
|
||||||
README.md \
|
|
||||||
WORKSPACE
|
|
|
@ -1,44 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
# Copyright 2017 Google Inc.
|
|
||||||
# All Rights Reserved.
|
|
||||||
#
|
|
||||||
#
|
|
||||||
# Redistribution and use in source and binary forms, with or without
|
|
||||||
# modification, are permitted provided that the following conditions are
|
|
||||||
# met:
|
|
||||||
#
|
|
||||||
# * Redistributions of source code must retain the above copyright
|
|
||||||
# notice, this list of conditions and the following disclaimer.
|
|
||||||
# * Redistributions in binary form must reproduce the above
|
|
||||||
# copyright notice, this list of conditions and the following disclaimer
|
|
||||||
# in the documentation and/or other materials provided with the
|
|
||||||
# distribution.
|
|
||||||
# * Neither the name of Google Inc. nor the names of its
|
|
||||||
# contributors may be used to endorse or promote products derived from
|
|
||||||
# this software without specific prior written permission.
|
|
||||||
#
|
|
||||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
||||||
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
||||||
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
||||||
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
||||||
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
||||||
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
||||||
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
||||||
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
||||||
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
||||||
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
. ci/get-nprocessors.sh
|
|
||||||
|
|
||||||
# Create the configuration script
|
|
||||||
autoreconf -i
|
|
||||||
|
|
||||||
# Run in a subdirectory to keep the sources clean
|
|
||||||
mkdir build || true
|
|
||||||
cd build
|
|
||||||
../configure
|
|
||||||
|
|
||||||
make -j ${NPROCESSORS:-2}
|
|
19
configure.ac
19
configure.ac
|
@ -1,19 +0,0 @@
|
||||||
# Note: automake support is community-based. The maintainers do not use automake
|
|
||||||
# internally.
|
|
||||||
|
|
||||||
AC_INIT([Google C++ Mocking and Testing Frameworks],
|
|
||||||
[1.9.0],
|
|
||||||
[googlemock@googlegroups.com],
|
|
||||||
[googletest])
|
|
||||||
|
|
||||||
# Provide various options to initialize the Autoconf and configure processes.
|
|
||||||
AC_PREREQ([2.59])
|
|
||||||
AC_CONFIG_SRCDIR([./README.md])
|
|
||||||
AC_CONFIG_AUX_DIR([build-aux])
|
|
||||||
AC_CONFIG_FILES([Makefile])
|
|
||||||
AC_CONFIG_SUBDIRS([googletest googlemock])
|
|
||||||
|
|
||||||
AM_INIT_AUTOMAKE
|
|
||||||
|
|
||||||
# Output the generated files. No further autoconf macros may be used.
|
|
||||||
AC_OUTPUT
|
|
|
@ -1,221 +0,0 @@
|
||||||
# Note: automake support is community-based. The maintainers do not use automake
|
|
||||||
# internally.
|
|
||||||
|
|
||||||
# Automake file
|
|
||||||
|
|
||||||
ACLOCAL_AMFLAGS = -I m4
|
|
||||||
|
|
||||||
# Nonstandard package files for distribution.
|
|
||||||
EXTRA_DIST = LICENSE
|
|
||||||
|
|
||||||
# We may need to build our internally packaged gtest. If so, it will be
|
|
||||||
# included in the 'subdirs' variable.
|
|
||||||
SUBDIRS = $(subdirs)
|
|
||||||
|
|
||||||
# This is generated by the configure script, so clean it for distribution.
|
|
||||||
DISTCLEANFILES = scripts/gmock-config
|
|
||||||
|
|
||||||
# We define the global AM_CPPFLAGS as everything we compile includes from these
|
|
||||||
# directories.
|
|
||||||
AM_CPPFLAGS = $(GTEST_CPPFLAGS) -I$(srcdir)/include
|
|
||||||
|
|
||||||
# Modifies compiler and linker flags for pthreads compatibility.
|
|
||||||
if HAVE_PTHREADS
|
|
||||||
AM_CXXFLAGS = @PTHREAD_CFLAGS@ -DGTEST_HAS_PTHREAD=1
|
|
||||||
AM_LIBS = @PTHREAD_LIBS@
|
|
||||||
endif
|
|
||||||
|
|
||||||
# Build rules for libraries.
|
|
||||||
lib_LTLIBRARIES = lib/libgmock.la lib/libgmock_main.la
|
|
||||||
|
|
||||||
lib_libgmock_la_SOURCES = src/gmock-all.cc
|
|
||||||
|
|
||||||
pkginclude_HEADERS = \
|
|
||||||
include/gmock/gmock-actions.h \
|
|
||||||
include/gmock/gmock-cardinalities.h \
|
|
||||||
include/gmock/gmock-function-mocker.h \
|
|
||||||
include/gmock/gmock-generated-actions.h \
|
|
||||||
include/gmock/gmock-generated-function-mockers.h \
|
|
||||||
include/gmock/gmock-generated-matchers.h \
|
|
||||||
include/gmock/gmock-matchers.h \
|
|
||||||
include/gmock/gmock-more-actions.h \
|
|
||||||
include/gmock/gmock-more-matchers.h \
|
|
||||||
include/gmock/gmock-nice-strict.h \
|
|
||||||
include/gmock/gmock-spec-builders.h \
|
|
||||||
include/gmock/gmock.h
|
|
||||||
|
|
||||||
pkginclude_internaldir = $(pkgincludedir)/internal
|
|
||||||
pkginclude_internal_HEADERS = \
|
|
||||||
include/gmock/internal/gmock-internal-utils.h \
|
|
||||||
include/gmock/internal/gmock-port.h \
|
|
||||||
include/gmock/internal/gmock-pp.h \
|
|
||||||
include/gmock/internal/custom/gmock-generated-actions.h \
|
|
||||||
include/gmock/internal/custom/gmock-matchers.h \
|
|
||||||
include/gmock/internal/custom/gmock-port.h
|
|
||||||
|
|
||||||
lib_libgmock_main_la_SOURCES = src/gmock_main.cc
|
|
||||||
lib_libgmock_main_la_LIBADD = lib/libgmock.la
|
|
||||||
|
|
||||||
# Build rules for tests. Automake's naming for some of these variables isn't
|
|
||||||
# terribly obvious, so this is a brief reference:
|
|
||||||
#
|
|
||||||
# TESTS -- Programs run automatically by "make check"
|
|
||||||
# check_PROGRAMS -- Programs built by "make check" but not necessarily run
|
|
||||||
|
|
||||||
TESTS=
|
|
||||||
check_PROGRAMS=
|
|
||||||
AM_LDFLAGS = $(GTEST_LDFLAGS)
|
|
||||||
|
|
||||||
# This exercises all major components of Google Mock. It also
|
|
||||||
# verifies that libgmock works.
|
|
||||||
TESTS += test/gmock-spec-builders_test
|
|
||||||
check_PROGRAMS += test/gmock-spec-builders_test
|
|
||||||
test_gmock_spec_builders_test_SOURCES = test/gmock-spec-builders_test.cc
|
|
||||||
test_gmock_spec_builders_test_LDADD = $(GTEST_LIBS) lib/libgmock.la
|
|
||||||
|
|
||||||
# This tests using Google Mock in multiple translation units. It also
|
|
||||||
# verifies that libgmock_main and libgmock work.
|
|
||||||
TESTS += test/gmock_link_test
|
|
||||||
check_PROGRAMS += test/gmock_link_test
|
|
||||||
test_gmock_link_test_SOURCES = \
|
|
||||||
test/gmock_link2_test.cc \
|
|
||||||
test/gmock_link_test.cc \
|
|
||||||
test/gmock_link_test.h
|
|
||||||
test_gmock_link_test_LDADD = $(GTEST_LIBS) lib/libgmock_main.la lib/libgmock.la
|
|
||||||
|
|
||||||
if HAVE_PYTHON
|
|
||||||
# Tests that fused gmock files compile and work.
|
|
||||||
TESTS += test/gmock_fused_test
|
|
||||||
check_PROGRAMS += test/gmock_fused_test
|
|
||||||
test_gmock_fused_test_SOURCES = \
|
|
||||||
fused-src/gmock-gtest-all.cc \
|
|
||||||
fused-src/gmock/gmock.h \
|
|
||||||
fused-src/gmock_main.cc \
|
|
||||||
fused-src/gtest/gtest.h \
|
|
||||||
test/gmock_test.cc
|
|
||||||
test_gmock_fused_test_CPPFLAGS = -I"$(srcdir)/fused-src"
|
|
||||||
endif
|
|
||||||
|
|
||||||
# Google Mock source files that we don't compile directly.
|
|
||||||
GMOCK_SOURCE_INGLUDES = \
|
|
||||||
src/gmock-cardinalities.cc \
|
|
||||||
src/gmock-internal-utils.cc \
|
|
||||||
src/gmock-matchers.cc \
|
|
||||||
src/gmock-spec-builders.cc \
|
|
||||||
src/gmock.cc
|
|
||||||
|
|
||||||
EXTRA_DIST += $(GMOCK_SOURCE_INGLUDES)
|
|
||||||
|
|
||||||
# C++ tests that we don't compile using autotools.
|
|
||||||
EXTRA_DIST += \
|
|
||||||
test/gmock-actions_test.cc \
|
|
||||||
test/gmock_all_test.cc \
|
|
||||||
test/gmock-cardinalities_test.cc \
|
|
||||||
test/gmock_ex_test.cc \
|
|
||||||
test/gmock-generated-actions_test.cc \
|
|
||||||
test/gmock-function-mocker_test.cc \
|
|
||||||
test/gmock-generated-function-mockers_test.cc \
|
|
||||||
test/gmock-generated-matchers_test.cc \
|
|
||||||
test/gmock-internal-utils_test.cc \
|
|
||||||
test/gmock-matchers_test.cc \
|
|
||||||
test/gmock-more-actions_test.cc \
|
|
||||||
test/gmock-nice-strict_test.cc \
|
|
||||||
test/gmock-port_test.cc \
|
|
||||||
test/gmock_stress_test.cc
|
|
||||||
|
|
||||||
# Python tests, which we don't run using autotools.
|
|
||||||
EXTRA_DIST += \
|
|
||||||
test/gmock_leak_test.py \
|
|
||||||
test/gmock_leak_test_.cc \
|
|
||||||
test/gmock_output_test.py \
|
|
||||||
test/gmock_output_test_.cc \
|
|
||||||
test/gmock_output_test_golden.txt \
|
|
||||||
test/gmock_test_utils.py
|
|
||||||
|
|
||||||
# Nonstandard package files for distribution.
|
|
||||||
EXTRA_DIST += \
|
|
||||||
CONTRIBUTORS \
|
|
||||||
make/Makefile
|
|
||||||
|
|
||||||
# Pump scripts for generating Google Mock headers.
|
|
||||||
EXTRA_DIST += \
|
|
||||||
include/gmock/gmock-generated-actions.h.pump \
|
|
||||||
include/gmock/gmock-generated-function-mockers.h.pump \
|
|
||||||
include/gmock/gmock-generated-matchers.h.pump \
|
|
||||||
include/gmock/internal/custom/gmock-generated-actions.h.pump
|
|
||||||
|
|
||||||
# Script for fusing Google Mock and Google Test source files.
|
|
||||||
EXTRA_DIST += scripts/fuse_gmock_files.py
|
|
||||||
|
|
||||||
# The Google Mock Generator tool from the cppclean project.
|
|
||||||
EXTRA_DIST += \
|
|
||||||
scripts/generator/LICENSE \
|
|
||||||
scripts/generator/README \
|
|
||||||
scripts/generator/README.cppclean \
|
|
||||||
scripts/generator/cpp/__init__.py \
|
|
||||||
scripts/generator/cpp/ast.py \
|
|
||||||
scripts/generator/cpp/gmock_class.py \
|
|
||||||
scripts/generator/cpp/keywords.py \
|
|
||||||
scripts/generator/cpp/tokenize.py \
|
|
||||||
scripts/generator/cpp/utils.py \
|
|
||||||
scripts/generator/gmock_gen.py
|
|
||||||
|
|
||||||
# CMake scripts.
|
|
||||||
EXTRA_DIST += \
|
|
||||||
CMakeLists.txt
|
|
||||||
|
|
||||||
# Microsoft Visual Studio 2005 projects.
|
|
||||||
EXTRA_DIST += \
|
|
||||||
msvc/2005/gmock.sln \
|
|
||||||
msvc/2005/gmock.vcproj \
|
|
||||||
msvc/2005/gmock_config.vsprops \
|
|
||||||
msvc/2005/gmock_main.vcproj \
|
|
||||||
msvc/2005/gmock_test.vcproj
|
|
||||||
|
|
||||||
# Microsoft Visual Studio 2010 projects.
|
|
||||||
EXTRA_DIST += \
|
|
||||||
msvc/2010/gmock.sln \
|
|
||||||
msvc/2010/gmock.vcxproj \
|
|
||||||
msvc/2010/gmock_config.props \
|
|
||||||
msvc/2010/gmock_main.vcxproj \
|
|
||||||
msvc/2010/gmock_test.vcxproj
|
|
||||||
|
|
||||||
if HAVE_PYTHON
|
|
||||||
# gmock_test.cc does not really depend on files generated by the
|
|
||||||
# fused-gmock-internal rule. However, gmock_test.o does, and it is
|
|
||||||
# important to include test/gmock_test.cc as part of this rule in order to
|
|
||||||
# prevent compiling gmock_test.o until all dependent files have been
|
|
||||||
# generated.
|
|
||||||
$(test_gmock_fused_test_SOURCES): fused-gmock-internal
|
|
||||||
|
|
||||||
fused-gmock-internal: $(pkginclude_HEADERS) $(pkginclude_internal_HEADERS) \
|
|
||||||
$(lib_libgmock_la_SOURCES) $(GMOCK_SOURCE_INGLUDES) \
|
|
||||||
$(lib_libgmock_main_la_SOURCES) \
|
|
||||||
scripts/fuse_gmock_files.py
|
|
||||||
mkdir -p "$(srcdir)/fused-src"
|
|
||||||
chmod -R u+w "$(srcdir)/fused-src"
|
|
||||||
rm -f "$(srcdir)/fused-src/gtest/gtest.h"
|
|
||||||
rm -f "$(srcdir)/fused-src/gmock/gmock.h"
|
|
||||||
rm -f "$(srcdir)/fused-src/gmock-gtest-all.cc"
|
|
||||||
"$(srcdir)/scripts/fuse_gmock_files.py" "$(srcdir)/fused-src"
|
|
||||||
cp -f "$(srcdir)/src/gmock_main.cc" "$(srcdir)/fused-src"
|
|
||||||
|
|
||||||
maintainer-clean-local:
|
|
||||||
rm -rf "$(srcdir)/fused-src"
|
|
||||||
endif
|
|
||||||
|
|
||||||
# Death tests may produce core dumps in the build directory. In case
|
|
||||||
# this happens, clean them to keep distcleancheck happy.
|
|
||||||
CLEANFILES = core
|
|
||||||
|
|
||||||
# Disables 'make install' as installing a compiled version of Google
|
|
||||||
# Mock can lead to undefined behavior due to violation of the
|
|
||||||
# One-Definition Rule.
|
|
||||||
|
|
||||||
install-exec-local:
|
|
||||||
echo "'make install' is dangerous and not supported. Instead, see README for how to integrate Google Mock into your build system."
|
|
||||||
false
|
|
||||||
|
|
||||||
install-data-local:
|
|
||||||
echo "'make install' is dangerous and not supported. Instead, see README for how to integrate Google Mock into your build system."
|
|
||||||
false
|
|
|
@ -145,93 +145,6 @@ to
|
||||||
|
|
||||||
This works because `gmock_main` library is compiled with Google Test.
|
This works because `gmock_main` library is compiled with Google Test.
|
||||||
|
|
||||||
#### Preparing to Build (Unix only) ####
|
|
||||||
|
|
||||||
If you are using a Unix system and plan to use the GNU Autotools build
|
|
||||||
system to build Google Mock (described below), you'll need to
|
|
||||||
configure it now.
|
|
||||||
|
|
||||||
To prepare the Autotools build system:
|
|
||||||
|
|
||||||
cd googlemock
|
|
||||||
autoreconf -fvi
|
|
||||||
|
|
||||||
To build Google Mock and your tests that use it, you need to tell your
|
|
||||||
build system where to find its headers and source files. The exact
|
|
||||||
way to do it depends on which build system you use, and is usually
|
|
||||||
straightforward.
|
|
||||||
|
|
||||||
This section shows how you can integrate Google Mock into your
|
|
||||||
existing build system.
|
|
||||||
|
|
||||||
Suppose you put Google Mock in directory `${GMOCK_DIR}` and Google Test
|
|
||||||
in `${GTEST_DIR}` (the latter is `${GMOCK_DIR}/gtest` by default). To
|
|
||||||
build Google Mock, create a library build target (or a project as
|
|
||||||
called by Visual Studio and Xcode) to compile
|
|
||||||
|
|
||||||
${GTEST_DIR}/src/gtest-all.cc and ${GMOCK_DIR}/src/gmock-all.cc
|
|
||||||
|
|
||||||
with
|
|
||||||
|
|
||||||
${GTEST_DIR}/include and ${GMOCK_DIR}/include
|
|
||||||
|
|
||||||
in the system header search path, and
|
|
||||||
|
|
||||||
${GTEST_DIR} and ${GMOCK_DIR}
|
|
||||||
|
|
||||||
in the normal header search path. Assuming a Linux-like system and gcc,
|
|
||||||
something like the following will do:
|
|
||||||
|
|
||||||
g++ -isystem ${GTEST_DIR}/include -I${GTEST_DIR} \
|
|
||||||
-isystem ${GMOCK_DIR}/include -I${GMOCK_DIR} \
|
|
||||||
-pthread -c ${GTEST_DIR}/src/gtest-all.cc
|
|
||||||
g++ -isystem ${GTEST_DIR}/include -I${GTEST_DIR} \
|
|
||||||
-isystem ${GMOCK_DIR}/include -I${GMOCK_DIR} \
|
|
||||||
-pthread -c ${GMOCK_DIR}/src/gmock-all.cc
|
|
||||||
ar -rv libgmock.a gtest-all.o gmock-all.o
|
|
||||||
|
|
||||||
(We need -pthread as Google Test and Google Mock use threads.)
|
|
||||||
|
|
||||||
Next, you should compile your test source file with
|
|
||||||
${GTEST\_DIR}/include and ${GMOCK\_DIR}/include in the header search
|
|
||||||
path, and link it with gmock and any other necessary libraries:
|
|
||||||
|
|
||||||
g++ -isystem ${GTEST_DIR}/include -isystem ${GMOCK_DIR}/include \
|
|
||||||
-pthread path/to/your_test.cc libgmock.a -o your_test
|
|
||||||
|
|
||||||
As an example, the make/ directory contains a Makefile that you can
|
|
||||||
use to build Google Mock on systems where GNU make is available
|
|
||||||
(e.g. Linux, Mac OS X, and Cygwin). It doesn't try to build Google
|
|
||||||
Mock's own tests. Instead, it just builds the Google Mock library and
|
|
||||||
a sample test. You can use it as a starting point for your own build
|
|
||||||
script.
|
|
||||||
|
|
||||||
If the default settings are correct for your environment, the
|
|
||||||
following commands should succeed:
|
|
||||||
|
|
||||||
cd ${GMOCK_DIR}/make
|
|
||||||
make
|
|
||||||
./gmock_test
|
|
||||||
|
|
||||||
If you see errors, try to tweak the contents of
|
|
||||||
[make/Makefile](make/Makefile) to make them go away.
|
|
||||||
|
|
||||||
### Windows ###
|
|
||||||
|
|
||||||
The msvc/2005 directory contains VC++ 2005 projects and the msvc/2010
|
|
||||||
directory contains VC++ 2010 projects for building Google Mock and
|
|
||||||
selected tests.
|
|
||||||
|
|
||||||
Change to the appropriate directory and run "msbuild gmock.sln" to
|
|
||||||
build the library and tests (or open the gmock.sln in the MSVC IDE).
|
|
||||||
If you want to create your own project to use with Google Mock, you'll
|
|
||||||
have to configure it to use the `gmock_config` propety sheet. For that:
|
|
||||||
|
|
||||||
* Open the Property Manager window (View | Other Windows | Property Manager)
|
|
||||||
* Right-click on your project and select "Add Existing Property Sheet..."
|
|
||||||
* Navigate to `gmock_config.vsprops` or `gmock_config.props` and select it.
|
|
||||||
* In Project Properties | Configuration Properties | General | Additional
|
|
||||||
Include Directories, type <path to Google Mock>/include.
|
|
||||||
|
|
||||||
### Tweaking Google Mock ###
|
### Tweaking Google Mock ###
|
||||||
|
|
||||||
|
|
|
@ -1,137 +0,0 @@
|
||||||
# Note: automake support is community-based. The maintainers do not use automake
|
|
||||||
# internally.
|
|
||||||
|
|
||||||
m4_include(../googletest/m4/acx_pthread.m4)
|
|
||||||
|
|
||||||
AC_INIT([Google C++ Mocking Framework],
|
|
||||||
[1.8.0],
|
|
||||||
[googlemock@googlegroups.com],
|
|
||||||
[gmock])
|
|
||||||
|
|
||||||
# Provide various options to initialize the Autoconf and configure processes.
|
|
||||||
AC_PREREQ([2.59])
|
|
||||||
AC_CONFIG_SRCDIR([./LICENSE])
|
|
||||||
AC_CONFIG_MACRO_DIRS([m4])
|
|
||||||
AC_CONFIG_AUX_DIR([build-aux])
|
|
||||||
AC_CONFIG_HEADERS([build-aux/config.h])
|
|
||||||
AC_CONFIG_FILES([Makefile])
|
|
||||||
AC_CONFIG_FILES([scripts/gmock-config], [chmod +x scripts/gmock-config])
|
|
||||||
|
|
||||||
# Initialize Automake with various options. We require at least v1.9, prevent
|
|
||||||
# pedantic complaints about package files, and enable various distribution
|
|
||||||
# targets.
|
|
||||||
AM_INIT_AUTOMAKE([1.9 dist-bzip2 dist-zip foreign subdir-objects])
|
|
||||||
|
|
||||||
# Check for programs used in building Google Test.
|
|
||||||
AC_PROG_CC
|
|
||||||
AC_PROG_CXX
|
|
||||||
AC_LANG([C++])
|
|
||||||
AC_PROG_LIBTOOL
|
|
||||||
|
|
||||||
PYTHON= # We *do not* allow the user to specify a python interpreter
|
|
||||||
AC_PATH_PROG([PYTHON],[python],[:])
|
|
||||||
AS_IF([test "$PYTHON" != ":"],
|
|
||||||
[AM_PYTHON_CHECK_VERSION([$PYTHON],[2.3],[:],[PYTHON=":"])])
|
|
||||||
AM_CONDITIONAL([HAVE_PYTHON],[test "$PYTHON" != ":"])
|
|
||||||
|
|
||||||
# Configure pthreads.
|
|
||||||
AC_ARG_WITH([pthreads],
|
|
||||||
[AS_HELP_STRING([--with-pthreads],
|
|
||||||
[use pthreads (default is yes)])],
|
|
||||||
[with_pthreads=$withval],
|
|
||||||
[with_pthreads=check])
|
|
||||||
|
|
||||||
have_pthreads=no
|
|
||||||
AS_IF([test "x$with_pthreads" != "xno"],
|
|
||||||
[ACX_PTHREAD(
|
|
||||||
[],
|
|
||||||
[AS_IF([test "x$with_pthreads" != "xcheck"],
|
|
||||||
[AC_MSG_FAILURE(
|
|
||||||
[--with-pthreads was specified, but unable to be used])])])
|
|
||||||
have_pthreads="$acx_pthread_ok"])
|
|
||||||
AM_CONDITIONAL([HAVE_PTHREADS],[test "x$have_pthreads" == "xyes"])
|
|
||||||
AC_SUBST(PTHREAD_CFLAGS)
|
|
||||||
AC_SUBST(PTHREAD_LIBS)
|
|
||||||
|
|
||||||
# GoogleMock currently has hard dependencies upon GoogleTest above and beyond
|
|
||||||
# running its own test suite, so we both provide our own version in
|
|
||||||
# a subdirectory and provide some logic to use a custom version or a system
|
|
||||||
# installed version.
|
|
||||||
AC_ARG_WITH([gtest],
|
|
||||||
[AS_HELP_STRING([--with-gtest],
|
|
||||||
[Specifies how to find the gtest package. If no
|
|
||||||
arguments are given, the default behavior, a
|
|
||||||
system installed gtest will be used if present,
|
|
||||||
and an internal version built otherwise. If a
|
|
||||||
path is provided, the gtest built or installed at
|
|
||||||
that prefix will be used.])],
|
|
||||||
[],
|
|
||||||
[with_gtest=yes])
|
|
||||||
AC_ARG_ENABLE([external-gtest],
|
|
||||||
[AS_HELP_STRING([--disable-external-gtest],
|
|
||||||
[Disables any detection or use of a system
|
|
||||||
installed or user provided gtest. Any option to
|
|
||||||
'--with-gtest' is ignored. (Default is enabled.)])
|
|
||||||
], [], [enable_external_gtest=yes])
|
|
||||||
AS_IF([test "x$with_gtest" == "xno"],
|
|
||||||
[AC_MSG_ERROR([dnl
|
|
||||||
Support for GoogleTest was explicitly disabled. Currently GoogleMock has a hard
|
|
||||||
dependency upon GoogleTest to build, please provide a version, or allow
|
|
||||||
GoogleMock to use any installed version and fall back upon its internal
|
|
||||||
version.])])
|
|
||||||
|
|
||||||
# Setup various GTEST variables.
|
|
||||||
AC_ARG_VAR([GTEST_CONFIG],
|
|
||||||
[The exact path of Google Test's 'gtest-config' script.])
|
|
||||||
AC_ARG_VAR([GTEST_CPPFLAGS],
|
|
||||||
[C-like preprocessor flags for Google Test.])
|
|
||||||
AC_ARG_VAR([GTEST_CXXFLAGS],
|
|
||||||
[C++ compile flags for Google Test.])
|
|
||||||
AC_ARG_VAR([GTEST_LDFLAGS],
|
|
||||||
[Linker path and option flags for Google Test.])
|
|
||||||
AC_ARG_VAR([GTEST_LIBS],
|
|
||||||
[Library linking flags for Google Test.])
|
|
||||||
AC_ARG_VAR([GTEST_VERSION],
|
|
||||||
[The version of Google Test available.])
|
|
||||||
HAVE_BUILT_GTEST="no"
|
|
||||||
|
|
||||||
GTEST_MIN_VERSION="1.8.0"
|
|
||||||
|
|
||||||
AS_IF([test "x${enable_external_gtest}" = "xyes"],
|
|
||||||
[# Begin filling in variables as we are able.
|
|
||||||
AS_IF([test "x${with_gtest}" != "xyes"],
|
|
||||||
[AS_IF([test -x "${with_gtest}/scripts/gtest-config"],
|
|
||||||
[GTEST_CONFIG="${with_gtest}/scripts/gtest-config"],
|
|
||||||
[GTEST_CONFIG="${with_gtest}/bin/gtest-config"])
|
|
||||||
AS_IF([test -x "${GTEST_CONFIG}"], [],
|
|
||||||
[AC_MSG_ERROR([dnl
|
|
||||||
Unable to locate either a built or installed Google Test at '${with_gtest}'.])
|
|
||||||
])])
|
|
||||||
|
|
||||||
AS_IF([test -x "${GTEST_CONFIG}"], [],
|
|
||||||
[AC_PATH_PROG([GTEST_CONFIG], [gtest-config])])
|
|
||||||
AS_IF([test -x "${GTEST_CONFIG}"],
|
|
||||||
[AC_MSG_CHECKING([for Google Test version >= ${GTEST_MIN_VERSION}])
|
|
||||||
AS_IF([${GTEST_CONFIG} --min-version=${GTEST_MIN_VERSION}],
|
|
||||||
[AC_MSG_RESULT([yes])
|
|
||||||
HAVE_BUILT_GTEST="yes"],
|
|
||||||
[AC_MSG_RESULT([no])])])])
|
|
||||||
|
|
||||||
AS_IF([test "x${HAVE_BUILT_GTEST}" = "xyes"],
|
|
||||||
[GTEST_CPPFLAGS=`${GTEST_CONFIG} --cppflags`
|
|
||||||
GTEST_CXXFLAGS=`${GTEST_CONFIG} --cxxflags`
|
|
||||||
GTEST_LDFLAGS=`${GTEST_CONFIG} --ldflags`
|
|
||||||
GTEST_LIBS=`${GTEST_CONFIG} --libs`
|
|
||||||
GTEST_VERSION=`${GTEST_CONFIG} --version`],
|
|
||||||
[
|
|
||||||
# GTEST_CONFIG needs to be executable both in a Makefile environment and
|
|
||||||
# in a shell script environment, so resolve an absolute path for it here.
|
|
||||||
GTEST_CONFIG="`pwd -P`/../googletest/scripts/gtest-config"
|
|
||||||
GTEST_CPPFLAGS='-I$(top_srcdir)/../googletest/include'
|
|
||||||
GTEST_CXXFLAGS='-g'
|
|
||||||
GTEST_LDFLAGS=''
|
|
||||||
GTEST_LIBS='$(top_builddir)/../googletest/lib/libgtest.la'
|
|
||||||
GTEST_VERSION="${GTEST_MIN_VERSION}"])
|
|
||||||
|
|
||||||
# Output the generated files. No further autoconf macros may be used.
|
|
||||||
AC_OUTPUT
|
|
|
@ -1,4 +1,6 @@
|
||||||
|
## Google Mock Cookbook
|
||||||
|
|
||||||
|
<!-- GOOGLETEST_CM0011 DO NOT DELETE -->
|
||||||
|
|
||||||
You can find recipes for using Google Mock here. If you haven't yet,
|
You can find recipes for using Google Mock here. If you haven't yet,
|
||||||
please read the [ForDummies](ForDummies.md) document first to make sure you understand
|
please read the [ForDummies](ForDummies.md) document first to make sure you understand
|
||||||
|
@ -2820,9 +2822,7 @@ and you should see an `OUTPUT_DIR` directory being created with files
|
||||||
`gtest/gtest.h`, `gmock/gmock.h`, and `gmock-gtest-all.cc` in it.
|
`gtest/gtest.h`, `gmock/gmock.h`, and `gmock-gtest-all.cc` in it.
|
||||||
These three files contain everything you need to use Google Mock (and
|
These three files contain everything you need to use Google Mock (and
|
||||||
Google Test). Just copy them to anywhere you want and you are ready
|
Google Test). Just copy them to anywhere you want and you are ready
|
||||||
to write tests and use mocks. You can use the
|
to write tests and use mocks.
|
||||||
[make/Makefile](../make/Makefile) file as an example on how to compile your tests
|
|
||||||
against them.
|
|
||||||
|
|
||||||
# Extending Google Mock #
|
# Extending Google Mock #
|
||||||
|
|
||||||
|
|
|
@ -1,126 +0,0 @@
|
||||||
# A sample Makefile for building both Google Mock and Google Test and
|
|
||||||
# using them in user tests. This file is self-contained, so you don't
|
|
||||||
# need to use the Makefile in Google Test's source tree. Please tweak
|
|
||||||
# it to suit your environment and project. You may want to move it to
|
|
||||||
# your project's root directory.
|
|
||||||
#
|
|
||||||
# SYNOPSIS:
|
|
||||||
#
|
|
||||||
# make [all] - makes everything.
|
|
||||||
# make TARGET - makes the given target.
|
|
||||||
# make clean - removes all files generated by make.
|
|
||||||
|
|
||||||
# Please tweak the following variable definitions as needed by your
|
|
||||||
# project, except GMOCK_HEADERS and GTEST_HEADERS, which you can use
|
|
||||||
# in your own targets but shouldn't modify.
|
|
||||||
|
|
||||||
# Points to the root of Google Test, relative to where this file is.
|
|
||||||
# Remember to tweak this if you move this file, or if you want to use
|
|
||||||
# a copy of Google Test at a different location.
|
|
||||||
GTEST_DIR = ../../googletest
|
|
||||||
|
|
||||||
# Points to the location of the Google Test libraries
|
|
||||||
GTEST_LIB_DIR = .
|
|
||||||
|
|
||||||
# Points to the root of Google Mock, relative to where this file is.
|
|
||||||
# Remember to tweak this if you move this file.
|
|
||||||
GMOCK_DIR = ..
|
|
||||||
|
|
||||||
# Where to find user code.
|
|
||||||
USER_DIR = ../test
|
|
||||||
|
|
||||||
# Flags passed to the preprocessor.
|
|
||||||
# Set Google Test and Google Mock's header directories as system
|
|
||||||
# directories, such that the compiler doesn't generate warnings in
|
|
||||||
# these headers.
|
|
||||||
CPPFLAGS += -isystem $(GTEST_DIR)/include -isystem $(GMOCK_DIR)/include
|
|
||||||
|
|
||||||
# Flags passed to the C++ compiler.
|
|
||||||
CXXFLAGS += -g -Wall -Wextra -pthread -std=c++11
|
|
||||||
|
|
||||||
# Google Test libraries
|
|
||||||
GTEST_LIBS = libgtest.a libgtest_main.a libgmock.a libgmock_main.a
|
|
||||||
|
|
||||||
# All tests produced by this Makefile. Remember to add new tests you
|
|
||||||
# created to the list.
|
|
||||||
TESTS = gmock_test
|
|
||||||
|
|
||||||
# All Google Test headers. Usually you shouldn't change this
|
|
||||||
# definition.
|
|
||||||
GTEST_HEADERS = $(GTEST_DIR)/include/gtest/*.h \
|
|
||||||
$(GTEST_DIR)/include/gtest/internal/*.h
|
|
||||||
|
|
||||||
# All Google Mock headers. Note that all Google Test headers are
|
|
||||||
# included here too, as they are #included by Google Mock headers.
|
|
||||||
# Usually you shouldn't change this definition.
|
|
||||||
GMOCK_HEADERS = $(GMOCK_DIR)/include/gmock/*.h \
|
|
||||||
$(GMOCK_DIR)/include/gmock/internal/*.h \
|
|
||||||
$(GTEST_HEADERS)
|
|
||||||
|
|
||||||
# House-keeping build targets.
|
|
||||||
|
|
||||||
ifndef GOOGLETEST_UNSUPPORTED_MAKEFILE_BUILD_SYSTEM_WORKAROUND
|
|
||||||
.PHONY all:
|
|
||||||
$(info "The Make buildsystem is no longer supported")
|
|
||||||
$(info "You can temporarily set GOOGLETEST_UNSUPPORTED_MAKEFILE_BUILD_SYSTEM_WORKAROUND=1")
|
|
||||||
$(info "i.e make GOOGLETEST_UNSUPPORTED_MAKEFILE_BUILD_SYSTEM_WORKAROUND=1 all")
|
|
||||||
$(info "But this is going away very soon. ")
|
|
||||||
$(exit 1)
|
|
||||||
else
|
|
||||||
all: $(GTEST_LIBS) $(TESTS)
|
|
||||||
endif
|
|
||||||
|
|
||||||
clean :
|
|
||||||
rm -f $(GTEST_LIBS) $(TESTS) *.o
|
|
||||||
|
|
||||||
# Builds gmock.a and gmock_main.a. These libraries contain both
|
|
||||||
# Google Mock and Google Test. A test should link with either gmock.a
|
|
||||||
# or gmock_main.a, depending on whether it defines its own main()
|
|
||||||
# function. It's fine if your test only uses features from Google
|
|
||||||
# Test (and not Google Mock).
|
|
||||||
|
|
||||||
# Usually you shouldn't tweak such internal variables, indicated by a
|
|
||||||
# trailing _.
|
|
||||||
GTEST_SRCS_ = $(GTEST_DIR)/src/*.cc $(GTEST_DIR)/src/*.h $(GTEST_HEADERS)
|
|
||||||
GMOCK_SRCS_ = $(GMOCK_DIR)/src/*.cc $(GMOCK_HEADERS)
|
|
||||||
|
|
||||||
# For simplicity and to avoid depending on implementation details of
|
|
||||||
# Google Mock and Google Test, the dependencies specified below are
|
|
||||||
# conservative and not optimized. This is fine as Google Mock and
|
|
||||||
# Google Test compile fast and for ordinary users their source rarely
|
|
||||||
# changes.
|
|
||||||
gtest-all.o : $(GTEST_SRCS_)
|
|
||||||
$(CXX) $(CPPFLAGS) -I$(GTEST_DIR) -I$(GMOCK_DIR) $(CXXFLAGS) \
|
|
||||||
-c $(GTEST_DIR)/src/gtest-all.cc
|
|
||||||
|
|
||||||
gtest_main.o : $(GTEST_SRCS_)
|
|
||||||
$(CXX) $(CPPFLAGS) -I$(GTEST_DIR) -I$(GMOCK_DIR) $(CXXFLAGS) \
|
|
||||||
-c $(GTEST_DIR)/src/gtest_main.cc
|
|
||||||
|
|
||||||
gmock-all.o : $(GMOCK_SRCS_)
|
|
||||||
$(CXX) $(CPPFLAGS) -I$(GTEST_DIR) -I$(GMOCK_DIR) $(CXXFLAGS) \
|
|
||||||
-c $(GMOCK_DIR)/src/gmock-all.cc
|
|
||||||
|
|
||||||
gmock_main.o : $(GMOCK_SRCS_)
|
|
||||||
$(CXX) $(CPPFLAGS) -I$(GTEST_DIR) -I$(GMOCK_DIR) $(CXXFLAGS) \
|
|
||||||
-c $(GMOCK_DIR)/src/gmock_main.cc
|
|
||||||
|
|
||||||
libgtest.a : gtest-all.o
|
|
||||||
$(AR) $(ARFLAGS) $@ $^
|
|
||||||
|
|
||||||
libgtest_main.a : gtest_main.o
|
|
||||||
$(AR) $(ARFLAGS) $@ $^
|
|
||||||
|
|
||||||
libgmock.a : gmock-all.o
|
|
||||||
$(AR) $(ARFLAGS) $@ $^
|
|
||||||
|
|
||||||
libgmock_main.a : gmock_main.o
|
|
||||||
$(AR) $(ARFLAGS) $@ $^
|
|
||||||
|
|
||||||
# Builds a sample test.
|
|
||||||
|
|
||||||
gmock_test.o : $(USER_DIR)/gmock_test.cc $(GMOCK_HEADERS)
|
|
||||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/gmock_test.cc
|
|
||||||
|
|
||||||
gmock_test : gmock_test.o $(GTEST_LIBS)
|
|
||||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -L$(GTEST_LIB_DIR) -lgmock -lpthread $^ -o $@
|
|
|
@ -1,303 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
# These variables are automatically filled in by the configure script.
|
|
||||||
name="@PACKAGE_TARNAME@"
|
|
||||||
version="@PACKAGE_VERSION@"
|
|
||||||
|
|
||||||
show_usage()
|
|
||||||
{
|
|
||||||
echo "Usage: gmock-config [OPTIONS...]"
|
|
||||||
}
|
|
||||||
|
|
||||||
show_help()
|
|
||||||
{
|
|
||||||
show_usage
|
|
||||||
cat <<\EOF
|
|
||||||
|
|
||||||
The `gmock-config' script provides access to the necessary compile and linking
|
|
||||||
flags to connect with Google C++ Mocking Framework, both in a build prior to
|
|
||||||
installation, and on the system proper after installation. The installation
|
|
||||||
overrides may be issued in combination with any other queries, but will only
|
|
||||||
affect installation queries if called on a built but not installed gmock. The
|
|
||||||
installation queries may not be issued with any other types of queries, and
|
|
||||||
only one installation query may be made at a time. The version queries and
|
|
||||||
compiler flag queries may be combined as desired but not mixed. Different
|
|
||||||
version queries are always combined with logical "and" semantics, and only the
|
|
||||||
last of any particular query is used while all previous ones ignored. All
|
|
||||||
versions must be specified as a sequence of numbers separated by periods.
|
|
||||||
Compiler flag queries output the union of the sets of flags when combined.
|
|
||||||
|
|
||||||
Examples:
|
|
||||||
gmock-config --min-version=1.0 || echo "Insufficient Google Mock version."
|
|
||||||
|
|
||||||
g++ $(gmock-config --cppflags --cxxflags) -o foo.o -c foo.cpp
|
|
||||||
g++ $(gmock-config --ldflags --libs) -o foo foo.o
|
|
||||||
|
|
||||||
# When using a built but not installed Google Mock:
|
|
||||||
g++ $(../../my_gmock_build/scripts/gmock-config ...) ...
|
|
||||||
|
|
||||||
# When using an installed Google Mock, but with installation overrides:
|
|
||||||
export GMOCK_PREFIX="/opt"
|
|
||||||
g++ $(gmock-config --libdir="/opt/lib64" ...) ...
|
|
||||||
|
|
||||||
Help:
|
|
||||||
--usage brief usage information
|
|
||||||
--help display this help message
|
|
||||||
|
|
||||||
Installation Overrides:
|
|
||||||
--prefix=<dir> overrides the installation prefix
|
|
||||||
--exec-prefix=<dir> overrides the executable installation prefix
|
|
||||||
--libdir=<dir> overrides the library installation prefix
|
|
||||||
--includedir=<dir> overrides the header file installation prefix
|
|
||||||
|
|
||||||
Installation Queries:
|
|
||||||
--prefix installation prefix
|
|
||||||
--exec-prefix executable installation prefix
|
|
||||||
--libdir library installation directory
|
|
||||||
--includedir header file installation directory
|
|
||||||
--version the version of the Google Mock installation
|
|
||||||
|
|
||||||
Version Queries:
|
|
||||||
--min-version=VERSION return 0 if the version is at least VERSION
|
|
||||||
--exact-version=VERSION return 0 if the version is exactly VERSION
|
|
||||||
--max-version=VERSION return 0 if the version is at most VERSION
|
|
||||||
|
|
||||||
Compilation Flag Queries:
|
|
||||||
--cppflags compile flags specific to the C-like preprocessors
|
|
||||||
--cxxflags compile flags appropriate for C++ programs
|
|
||||||
--ldflags linker flags
|
|
||||||
--libs libraries for linking
|
|
||||||
|
|
||||||
EOF
|
|
||||||
}
|
|
||||||
|
|
||||||
# This function bounds our version with a min and a max. It uses some clever
|
|
||||||
# POSIX-compliant variable expansion to portably do all the work in the shell
|
|
||||||
# and avoid any dependency on a particular "sed" or "awk" implementation.
|
|
||||||
# Notable is that it will only ever compare the first 3 components of versions.
|
|
||||||
# Further components will be cleanly stripped off. All versions must be
|
|
||||||
# unadorned, so "v1.0" will *not* work. The minimum version must be in $1, and
|
|
||||||
# the max in $2. TODO(chandlerc@google.com): If this ever breaks, we should
|
|
||||||
# investigate expanding this via autom4te from AS_VERSION_COMPARE rather than
|
|
||||||
# continuing to maintain our own shell version.
|
|
||||||
check_versions()
|
|
||||||
{
|
|
||||||
major_version=${version%%.*}
|
|
||||||
minor_version="0"
|
|
||||||
point_version="0"
|
|
||||||
if test "${version#*.}" != "${version}"; then
|
|
||||||
minor_version=${version#*.}
|
|
||||||
minor_version=${minor_version%%.*}
|
|
||||||
fi
|
|
||||||
if test "${version#*.*.}" != "${version}"; then
|
|
||||||
point_version=${version#*.*.}
|
|
||||||
point_version=${point_version%%.*}
|
|
||||||
fi
|
|
||||||
|
|
||||||
min_version="$1"
|
|
||||||
min_major_version=${min_version%%.*}
|
|
||||||
min_minor_version="0"
|
|
||||||
min_point_version="0"
|
|
||||||
if test "${min_version#*.}" != "${min_version}"; then
|
|
||||||
min_minor_version=${min_version#*.}
|
|
||||||
min_minor_version=${min_minor_version%%.*}
|
|
||||||
fi
|
|
||||||
if test "${min_version#*.*.}" != "${min_version}"; then
|
|
||||||
min_point_version=${min_version#*.*.}
|
|
||||||
min_point_version=${min_point_version%%.*}
|
|
||||||
fi
|
|
||||||
|
|
||||||
max_version="$2"
|
|
||||||
max_major_version=${max_version%%.*}
|
|
||||||
max_minor_version="0"
|
|
||||||
max_point_version="0"
|
|
||||||
if test "${max_version#*.}" != "${max_version}"; then
|
|
||||||
max_minor_version=${max_version#*.}
|
|
||||||
max_minor_version=${max_minor_version%%.*}
|
|
||||||
fi
|
|
||||||
if test "${max_version#*.*.}" != "${max_version}"; then
|
|
||||||
max_point_version=${max_version#*.*.}
|
|
||||||
max_point_version=${max_point_version%%.*}
|
|
||||||
fi
|
|
||||||
|
|
||||||
test $(($major_version)) -lt $(($min_major_version)) && exit 1
|
|
||||||
if test $(($major_version)) -eq $(($min_major_version)); then
|
|
||||||
test $(($minor_version)) -lt $(($min_minor_version)) && exit 1
|
|
||||||
if test $(($minor_version)) -eq $(($min_minor_version)); then
|
|
||||||
test $(($point_version)) -lt $(($min_point_version)) && exit 1
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
test $(($major_version)) -gt $(($max_major_version)) && exit 1
|
|
||||||
if test $(($major_version)) -eq $(($max_major_version)); then
|
|
||||||
test $(($minor_version)) -gt $(($max_minor_version)) && exit 1
|
|
||||||
if test $(($minor_version)) -eq $(($max_minor_version)); then
|
|
||||||
test $(($point_version)) -gt $(($max_point_version)) && exit 1
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
exit 0
|
|
||||||
}
|
|
||||||
|
|
||||||
# Show the usage line when no arguments are specified.
|
|
||||||
if test $# -eq 0; then
|
|
||||||
show_usage
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
while test $# -gt 0; do
|
|
||||||
case $1 in
|
|
||||||
--usage) show_usage; exit 0;;
|
|
||||||
--help) show_help; exit 0;;
|
|
||||||
|
|
||||||
# Installation overrides
|
|
||||||
--prefix=*) GMOCK_PREFIX=${1#--prefix=};;
|
|
||||||
--exec-prefix=*) GMOCK_EXEC_PREFIX=${1#--exec-prefix=};;
|
|
||||||
--libdir=*) GMOCK_LIBDIR=${1#--libdir=};;
|
|
||||||
--includedir=*) GMOCK_INCLUDEDIR=${1#--includedir=};;
|
|
||||||
|
|
||||||
# Installation queries
|
|
||||||
--prefix|--exec-prefix|--libdir|--includedir|--version)
|
|
||||||
if test -n "${do_query}"; then
|
|
||||||
show_usage
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
do_query=${1#--}
|
|
||||||
;;
|
|
||||||
|
|
||||||
# Version checking
|
|
||||||
--min-version=*)
|
|
||||||
do_check_versions=yes
|
|
||||||
min_version=${1#--min-version=}
|
|
||||||
;;
|
|
||||||
--max-version=*)
|
|
||||||
do_check_versions=yes
|
|
||||||
max_version=${1#--max-version=}
|
|
||||||
;;
|
|
||||||
--exact-version=*)
|
|
||||||
do_check_versions=yes
|
|
||||||
exact_version=${1#--exact-version=}
|
|
||||||
;;
|
|
||||||
|
|
||||||
# Compiler flag output
|
|
||||||
--cppflags) echo_cppflags=yes;;
|
|
||||||
--cxxflags) echo_cxxflags=yes;;
|
|
||||||
--ldflags) echo_ldflags=yes;;
|
|
||||||
--libs) echo_libs=yes;;
|
|
||||||
|
|
||||||
# Everything else is an error
|
|
||||||
*) show_usage; exit 1;;
|
|
||||||
esac
|
|
||||||
shift
|
|
||||||
done
|
|
||||||
|
|
||||||
# These have defaults filled in by the configure script but can also be
|
|
||||||
# overridden by environment variables or command line parameters.
|
|
||||||
prefix="${GMOCK_PREFIX:-@prefix@}"
|
|
||||||
exec_prefix="${GMOCK_EXEC_PREFIX:-@exec_prefix@}"
|
|
||||||
libdir="${GMOCK_LIBDIR:-@libdir@}"
|
|
||||||
includedir="${GMOCK_INCLUDEDIR:-@includedir@}"
|
|
||||||
|
|
||||||
# We try and detect if our binary is not located at its installed location. If
|
|
||||||
# it's not, we provide variables pointing to the source and build tree rather
|
|
||||||
# than to the install tree. We also locate Google Test using the configured
|
|
||||||
# gtest-config script rather than searching the PATH and our bindir for one.
|
|
||||||
# This allows building against a just-built gmock rather than an installed
|
|
||||||
# gmock.
|
|
||||||
bindir="@bindir@"
|
|
||||||
this_relative_bindir=`dirname $0`
|
|
||||||
this_bindir=`cd ${this_relative_bindir}; pwd -P`
|
|
||||||
if test "${this_bindir}" = "${this_bindir%${bindir}}"; then
|
|
||||||
# The path to the script doesn't end in the bindir sequence from Autoconf,
|
|
||||||
# assume that we are in a build tree.
|
|
||||||
build_dir=`dirname ${this_bindir}`
|
|
||||||
src_dir=`cd ${this_bindir}/@top_srcdir@; pwd -P`
|
|
||||||
|
|
||||||
# TODO(chandlerc@google.com): This is a dangerous dependency on libtool, we
|
|
||||||
# should work to remove it, and/or remove libtool altogether, replacing it
|
|
||||||
# with direct references to the library and a link path.
|
|
||||||
gmock_libs="${build_dir}/lib/libgmock.la"
|
|
||||||
gmock_ldflags=""
|
|
||||||
|
|
||||||
# We provide hooks to include from either the source or build dir, where the
|
|
||||||
# build dir is always preferred. This will potentially allow us to write
|
|
||||||
# build rules for generated headers and have them automatically be preferred
|
|
||||||
# over provided versions.
|
|
||||||
gmock_cppflags="-I${build_dir}/include -I${src_dir}/include"
|
|
||||||
gmock_cxxflags=""
|
|
||||||
|
|
||||||
# Directly invoke the gtest-config script used during the build process.
|
|
||||||
gtest_config="@GTEST_CONFIG@"
|
|
||||||
else
|
|
||||||
# We're using an installed gmock, although it may be staged under some
|
|
||||||
# prefix. Assume (as our own libraries do) that we can resolve the prefix,
|
|
||||||
# and are present in the dynamic link paths.
|
|
||||||
gmock_ldflags="-L${libdir}"
|
|
||||||
gmock_libs="-l${name}"
|
|
||||||
gmock_cppflags="-I${includedir}"
|
|
||||||
gmock_cxxflags=""
|
|
||||||
|
|
||||||
# We also prefer any gtest-config script installed in our prefix. Lacking
|
|
||||||
# one, we look in the PATH for one.
|
|
||||||
gtest_config="${bindir}/gtest-config"
|
|
||||||
if test ! -x "${gtest_config}"; then
|
|
||||||
gtest_config=`which gtest-config`
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Ensure that we have located a Google Test to link against.
|
|
||||||
if ! test -x "${gtest_config}"; then
|
|
||||||
echo "Unable to locate Google Test, check your Google Mock configuration" \
|
|
||||||
"and installation" >&2
|
|
||||||
exit 1
|
|
||||||
elif ! "${gtest_config}" "--exact-version=@GTEST_VERSION@"; then
|
|
||||||
echo "The Google Test found is not the same version as Google Mock was " \
|
|
||||||
"built against" >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Add the necessary Google Test bits into the various flag variables
|
|
||||||
gmock_cppflags="${gmock_cppflags} `${gtest_config} --cppflags`"
|
|
||||||
gmock_cxxflags="${gmock_cxxflags} `${gtest_config} --cxxflags`"
|
|
||||||
gmock_ldflags="${gmock_ldflags} `${gtest_config} --ldflags`"
|
|
||||||
gmock_libs="${gmock_libs} `${gtest_config} --libs`"
|
|
||||||
|
|
||||||
# Do an installation query if requested.
|
|
||||||
if test -n "$do_query"; then
|
|
||||||
case $do_query in
|
|
||||||
prefix) echo $prefix; exit 0;;
|
|
||||||
exec-prefix) echo $exec_prefix; exit 0;;
|
|
||||||
libdir) echo $libdir; exit 0;;
|
|
||||||
includedir) echo $includedir; exit 0;;
|
|
||||||
version) echo $version; exit 0;;
|
|
||||||
*) show_usage; exit 1;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Do a version check if requested.
|
|
||||||
if test "$do_check_versions" = "yes"; then
|
|
||||||
# Make sure we didn't receive a bad combination of parameters.
|
|
||||||
test "$echo_cppflags" = "yes" && show_usage && exit 1
|
|
||||||
test "$echo_cxxflags" = "yes" && show_usage && exit 1
|
|
||||||
test "$echo_ldflags" = "yes" && show_usage && exit 1
|
|
||||||
test "$echo_libs" = "yes" && show_usage && exit 1
|
|
||||||
|
|
||||||
if test "$exact_version" != ""; then
|
|
||||||
check_versions $exact_version $exact_version
|
|
||||||
# unreachable
|
|
||||||
else
|
|
||||||
check_versions ${min_version:-0.0.0} ${max_version:-9999.9999.9999}
|
|
||||||
# unreachable
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Do the output in the correct order so that these can be used in-line of
|
|
||||||
# a compiler invocation.
|
|
||||||
output=""
|
|
||||||
test "$echo_cppflags" = "yes" && output="$output $gmock_cppflags"
|
|
||||||
test "$echo_cxxflags" = "yes" && output="$output $gmock_cxxflags"
|
|
||||||
test "$echo_ldflags" = "yes" && output="$output $gmock_ldflags"
|
|
||||||
test "$echo_libs" = "yes" && output="$output $gmock_libs"
|
|
||||||
echo $output
|
|
||||||
|
|
||||||
exit 0
|
|
|
@ -95,6 +95,7 @@ py_test(
|
||||||
":gmock_output_test_",
|
":gmock_output_test_",
|
||||||
":gmock_output_test_golden.txt",
|
":gmock_output_test_golden.txt",
|
||||||
],
|
],
|
||||||
|
python_version = "PY2",
|
||||||
deps = [":gmock_test_utils"],
|
deps = [":gmock_test_utils"],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -1,341 +0,0 @@
|
||||||
# Note: automake support is community-based. The maintainers do not use automake
|
|
||||||
# internally.
|
|
||||||
|
|
||||||
# Automake file
|
|
||||||
|
|
||||||
ACLOCAL_AMFLAGS = -I m4
|
|
||||||
|
|
||||||
# Nonstandard package files for distribution
|
|
||||||
EXTRA_DIST = \
|
|
||||||
CONTRIBUTORS \
|
|
||||||
LICENSE \
|
|
||||||
include/gtest/internal/gtest-type-util.h.pump \
|
|
||||||
make/Makefile \
|
|
||||||
scripts/fuse_gtest_files.py \
|
|
||||||
scripts/gen_gtest_pred_impl.py \
|
|
||||||
scripts/pump.py \
|
|
||||||
scripts/test/Makefile
|
|
||||||
|
|
||||||
# gtest source files that we don't compile directly. They are
|
|
||||||
# #included by gtest-all.cc.
|
|
||||||
GTEST_SRC = \
|
|
||||||
src/gtest-death-test.cc \
|
|
||||||
src/gtest-filepath.cc \
|
|
||||||
src/gtest-internal-inl.h \
|
|
||||||
src/gtest-matchers.cc \
|
|
||||||
src/gtest-port.cc \
|
|
||||||
src/gtest-printers.cc \
|
|
||||||
src/gtest-test-part.cc \
|
|
||||||
src/gtest-typed-test.cc \
|
|
||||||
src/gtest.cc
|
|
||||||
|
|
||||||
EXTRA_DIST += $(GTEST_SRC)
|
|
||||||
|
|
||||||
# Sample files that we don't compile.
|
|
||||||
EXTRA_DIST += \
|
|
||||||
samples/prime_tables.h \
|
|
||||||
samples/sample1_unittest.cc \
|
|
||||||
samples/sample2_unittest.cc \
|
|
||||||
samples/sample3_unittest.cc \
|
|
||||||
samples/sample4_unittest.cc \
|
|
||||||
samples/sample5_unittest.cc \
|
|
||||||
samples/sample6_unittest.cc \
|
|
||||||
samples/sample7_unittest.cc \
|
|
||||||
samples/sample8_unittest.cc \
|
|
||||||
samples/sample9_unittest.cc
|
|
||||||
|
|
||||||
# C++ test files that we don't compile directly.
|
|
||||||
EXTRA_DIST += \
|
|
||||||
test/googletest-death-test_ex_test.cc \
|
|
||||||
test/googletest-death-test-test.cc \
|
|
||||||
test/googletest-filepath-test.cc \
|
|
||||||
test/googletest-listener-test.cc \
|
|
||||||
test/googletest-message-test.cc \
|
|
||||||
test/googletest-options-test.cc \
|
|
||||||
test/googletest-param-test2-test.cc \
|
|
||||||
test/googletest-param-test2-test.cc \
|
|
||||||
test/googletest-param-test-test.cc \
|
|
||||||
test/googletest-param-test-test.cc \
|
|
||||||
test/googletest-param-test-test.h \
|
|
||||||
test/googletest-port-test.cc \
|
|
||||||
test/gtest_premature_exit_test.cc \
|
|
||||||
test/googletest-printers-test.cc \
|
|
||||||
test/googletest-test-part-test.cc \
|
|
||||||
test/gtest-typed-test2_test.cc \
|
|
||||||
test/gtest-typed-test_test.cc \
|
|
||||||
test/gtest-typed-test_test.h \
|
|
||||||
test/gtest-unittest-api_test.cc \
|
|
||||||
test/googletest-break-on-failure-unittest_.cc \
|
|
||||||
test/googletest-catch-exceptions-test_.cc \
|
|
||||||
test/googletest-color-test_.cc \
|
|
||||||
test/googletest-env-var-test_.cc \
|
|
||||||
test/gtest_environment_test.cc \
|
|
||||||
test/googletest-filter-unittest_.cc \
|
|
||||||
test/gtest_help_test_.cc \
|
|
||||||
test/googletest-list-tests-unittest_.cc \
|
|
||||||
test/gtest_main_unittest.cc \
|
|
||||||
test/gtest_no_test_unittest.cc \
|
|
||||||
test/googletest-output-test_.cc \
|
|
||||||
test/gtest_pred_impl_unittest.cc \
|
|
||||||
test/gtest_prod_test.cc \
|
|
||||||
test/gtest_repeat_test.cc \
|
|
||||||
test/googletest-shuffle-test_.cc \
|
|
||||||
test/gtest_sole_header_test.cc \
|
|
||||||
test/gtest_stress_test.cc \
|
|
||||||
test/gtest_throw_on_failure_ex_test.cc \
|
|
||||||
test/googletest-throw-on-failure-test_.cc \
|
|
||||||
test/googletest-uninitialized-test_.cc \
|
|
||||||
test/gtest_unittest.cc \
|
|
||||||
test/gtest_unittest.cc \
|
|
||||||
test/gtest_xml_outfile1_test_.cc \
|
|
||||||
test/gtest_xml_outfile2_test_.cc \
|
|
||||||
test/gtest_xml_output_unittest_.cc \
|
|
||||||
test/production.cc \
|
|
||||||
test/production.h
|
|
||||||
|
|
||||||
# Python tests that we don't run.
|
|
||||||
EXTRA_DIST += \
|
|
||||||
test/googletest-break-on-failure-unittest.py \
|
|
||||||
test/googletest-catch-exceptions-test.py \
|
|
||||||
test/googletest-color-test.py \
|
|
||||||
test/googletest-env-var-test.py \
|
|
||||||
test/googletest-filter-unittest.py \
|
|
||||||
test/gtest_help_test.py \
|
|
||||||
test/googletest-list-tests-unittest.py \
|
|
||||||
test/googletest-output-test.py \
|
|
||||||
test/googletest-output-test-golden-lin.txt \
|
|
||||||
test/googletest-shuffle-test.py \
|
|
||||||
test/gtest_test_utils.py \
|
|
||||||
test/googletest-throw-on-failure-test.py \
|
|
||||||
test/googletest-uninitialized-test.py \
|
|
||||||
test/gtest_xml_outfiles_test.py \
|
|
||||||
test/gtest_xml_output_unittest.py \
|
|
||||||
test/gtest_xml_test_utils.py
|
|
||||||
|
|
||||||
# CMake script
|
|
||||||
EXTRA_DIST += \
|
|
||||||
CMakeLists.txt \
|
|
||||||
cmake/internal_utils.cmake
|
|
||||||
|
|
||||||
# MSVC project files
|
|
||||||
EXTRA_DIST += \
|
|
||||||
msvc/2010/gtest-md.sln \
|
|
||||||
msvc/2010/gtest-md.vcxproj \
|
|
||||||
msvc/2010/gtest.sln \
|
|
||||||
msvc/2010/gtest.vcxproj \
|
|
||||||
msvc/2010/gtest_main-md.vcxproj \
|
|
||||||
msvc/2010/gtest_main.vcxproj \
|
|
||||||
msvc/2010/gtest_prod_test-md.vcxproj \
|
|
||||||
msvc/2010/gtest_prod_test.vcxproj \
|
|
||||||
msvc/2010/gtest_unittest-md.vcxproj \
|
|
||||||
msvc/2010/gtest_unittest.vcxproj
|
|
||||||
|
|
||||||
# xcode project files
|
|
||||||
EXTRA_DIST += \
|
|
||||||
xcode/Config/DebugProject.xcconfig \
|
|
||||||
xcode/Config/FrameworkTarget.xcconfig \
|
|
||||||
xcode/Config/General.xcconfig \
|
|
||||||
xcode/Config/ReleaseProject.xcconfig \
|
|
||||||
xcode/Config/StaticLibraryTarget.xcconfig \
|
|
||||||
xcode/Config/TestTarget.xcconfig \
|
|
||||||
xcode/Resources/Info.plist \
|
|
||||||
xcode/Scripts/runtests.sh \
|
|
||||||
xcode/Scripts/versiongenerate.py \
|
|
||||||
xcode/gtest.xcodeproj/project.pbxproj
|
|
||||||
|
|
||||||
# xcode sample files
|
|
||||||
EXTRA_DIST += \
|
|
||||||
xcode/Samples/FrameworkSample/Info.plist \
|
|
||||||
xcode/Samples/FrameworkSample/WidgetFramework.xcodeproj/project.pbxproj \
|
|
||||||
xcode/Samples/FrameworkSample/runtests.sh \
|
|
||||||
xcode/Samples/FrameworkSample/widget.cc \
|
|
||||||
xcode/Samples/FrameworkSample/widget.h \
|
|
||||||
xcode/Samples/FrameworkSample/widget_test.cc
|
|
||||||
|
|
||||||
# C++Builder project files
|
|
||||||
EXTRA_DIST += \
|
|
||||||
codegear/gtest.cbproj \
|
|
||||||
codegear/gtest.groupproj \
|
|
||||||
codegear/gtest_all.cc \
|
|
||||||
codegear/gtest_link.cc \
|
|
||||||
codegear/gtest_main.cbproj \
|
|
||||||
codegear/gtest_unittest.cbproj
|
|
||||||
|
|
||||||
# Distribute and install M4 macro
|
|
||||||
m4datadir = $(datadir)/aclocal
|
|
||||||
m4data_DATA = m4/gtest.m4
|
|
||||||
EXTRA_DIST += $(m4data_DATA)
|
|
||||||
|
|
||||||
# We define the global AM_CPPFLAGS as everything we compile includes from these
|
|
||||||
# directories.
|
|
||||||
AM_CPPFLAGS = -I$(srcdir) -I$(srcdir)/include
|
|
||||||
|
|
||||||
# Modifies compiler and linker flags for pthreads compatibility.
|
|
||||||
if HAVE_PTHREADS
|
|
||||||
AM_CXXFLAGS = @PTHREAD_CFLAGS@ -DGTEST_HAS_PTHREAD=1
|
|
||||||
AM_LIBS = @PTHREAD_LIBS@
|
|
||||||
else
|
|
||||||
AM_CXXFLAGS = -DGTEST_HAS_PTHREAD=0
|
|
||||||
endif
|
|
||||||
|
|
||||||
# Build rules for libraries.
|
|
||||||
lib_LTLIBRARIES = lib/libgtest.la lib/libgtest_main.la
|
|
||||||
|
|
||||||
lib_libgtest_la_SOURCES = src/gtest-all.cc
|
|
||||||
|
|
||||||
pkginclude_HEADERS = \
|
|
||||||
include/gtest/gtest-death-test.h \
|
|
||||||
include/gtest/gtest-matchers.h \
|
|
||||||
include/gtest/gtest-message.h \
|
|
||||||
include/gtest/gtest-param-test.h \
|
|
||||||
include/gtest/gtest-printers.h \
|
|
||||||
include/gtest/gtest-spi.h \
|
|
||||||
include/gtest/gtest-test-part.h \
|
|
||||||
include/gtest/gtest-typed-test.h \
|
|
||||||
include/gtest/gtest.h \
|
|
||||||
include/gtest/gtest_pred_impl.h \
|
|
||||||
include/gtest/gtest_prod.h
|
|
||||||
|
|
||||||
pkginclude_internaldir = $(pkgincludedir)/internal
|
|
||||||
pkginclude_internal_HEADERS = \
|
|
||||||
include/gtest/internal/gtest-death-test-internal.h \
|
|
||||||
include/gtest/internal/gtest-filepath.h \
|
|
||||||
include/gtest/internal/gtest-internal.h \
|
|
||||||
include/gtest/internal/gtest-param-util.h \
|
|
||||||
include/gtest/internal/gtest-port.h \
|
|
||||||
include/gtest/internal/gtest-port-arch.h \
|
|
||||||
include/gtest/internal/gtest-string.h \
|
|
||||||
include/gtest/internal/gtest-type-util.h \
|
|
||||||
include/gtest/internal/custom/gtest.h \
|
|
||||||
include/gtest/internal/custom/gtest-port.h \
|
|
||||||
include/gtest/internal/custom/gtest-printers.h
|
|
||||||
|
|
||||||
lib_libgtest_main_la_SOURCES = src/gtest_main.cc
|
|
||||||
lib_libgtest_main_la_LIBADD = lib/libgtest.la
|
|
||||||
|
|
||||||
# Build rules for samples and tests. Automake's naming for some of
|
|
||||||
# these variables isn't terribly obvious, so this is a brief
|
|
||||||
# reference:
|
|
||||||
#
|
|
||||||
# TESTS -- Programs run automatically by "make check"
|
|
||||||
# check_PROGRAMS -- Programs built by "make check" but not necessarily run
|
|
||||||
|
|
||||||
TESTS=
|
|
||||||
TESTS_ENVIRONMENT = GTEST_SOURCE_DIR="$(srcdir)/test" \
|
|
||||||
GTEST_BUILD_DIR="$(top_builddir)/test"
|
|
||||||
check_PROGRAMS=
|
|
||||||
|
|
||||||
# A simple sample on using gtest.
|
|
||||||
TESTS += samples/sample1_unittest \
|
|
||||||
samples/sample2_unittest \
|
|
||||||
samples/sample3_unittest \
|
|
||||||
samples/sample4_unittest \
|
|
||||||
samples/sample5_unittest \
|
|
||||||
samples/sample6_unittest \
|
|
||||||
samples/sample7_unittest \
|
|
||||||
samples/sample8_unittest \
|
|
||||||
samples/sample9_unittest \
|
|
||||||
samples/sample10_unittest
|
|
||||||
check_PROGRAMS += samples/sample1_unittest \
|
|
||||||
samples/sample2_unittest \
|
|
||||||
samples/sample3_unittest \
|
|
||||||
samples/sample4_unittest \
|
|
||||||
samples/sample5_unittest \
|
|
||||||
samples/sample6_unittest \
|
|
||||||
samples/sample7_unittest \
|
|
||||||
samples/sample8_unittest \
|
|
||||||
samples/sample9_unittest \
|
|
||||||
samples/sample10_unittest
|
|
||||||
|
|
||||||
samples_sample1_unittest_SOURCES = samples/sample1_unittest.cc samples/sample1.cc
|
|
||||||
samples_sample1_unittest_LDADD = lib/libgtest_main.la \
|
|
||||||
lib/libgtest.la
|
|
||||||
samples_sample2_unittest_SOURCES = samples/sample2_unittest.cc samples/sample2.cc
|
|
||||||
samples_sample2_unittest_LDADD = lib/libgtest_main.la \
|
|
||||||
lib/libgtest.la
|
|
||||||
samples_sample3_unittest_SOURCES = samples/sample3_unittest.cc
|
|
||||||
samples_sample3_unittest_LDADD = lib/libgtest_main.la \
|
|
||||||
lib/libgtest.la
|
|
||||||
samples_sample4_unittest_SOURCES = samples/sample4_unittest.cc samples/sample4.cc
|
|
||||||
samples_sample4_unittest_LDADD = lib/libgtest_main.la \
|
|
||||||
lib/libgtest.la
|
|
||||||
samples_sample5_unittest_SOURCES = samples/sample5_unittest.cc samples/sample1.cc
|
|
||||||
samples_sample5_unittest_LDADD = lib/libgtest_main.la \
|
|
||||||
lib/libgtest.la
|
|
||||||
samples_sample6_unittest_SOURCES = samples/sample6_unittest.cc
|
|
||||||
samples_sample6_unittest_LDADD = lib/libgtest_main.la \
|
|
||||||
lib/libgtest.la
|
|
||||||
samples_sample7_unittest_SOURCES = samples/sample7_unittest.cc
|
|
||||||
samples_sample7_unittest_LDADD = lib/libgtest_main.la \
|
|
||||||
lib/libgtest.la
|
|
||||||
samples_sample8_unittest_SOURCES = samples/sample8_unittest.cc
|
|
||||||
samples_sample8_unittest_LDADD = lib/libgtest_main.la \
|
|
||||||
lib/libgtest.la
|
|
||||||
|
|
||||||
# Also verify that libgtest works by itself.
|
|
||||||
samples_sample9_unittest_SOURCES = samples/sample9_unittest.cc
|
|
||||||
samples_sample9_unittest_LDADD = lib/libgtest.la
|
|
||||||
samples_sample10_unittest_SOURCES = samples/sample10_unittest.cc
|
|
||||||
samples_sample10_unittest_LDADD = lib/libgtest.la
|
|
||||||
|
|
||||||
# This tests most constructs of gtest and verifies that libgtest_main
|
|
||||||
# and libgtest work.
|
|
||||||
TESTS += test/gtest_all_test
|
|
||||||
check_PROGRAMS += test/gtest_all_test
|
|
||||||
test_gtest_all_test_SOURCES = test/gtest_all_test.cc
|
|
||||||
test_gtest_all_test_LDADD = lib/libgtest_main.la \
|
|
||||||
lib/libgtest.la
|
|
||||||
|
|
||||||
TESTS += test/gtest_skip_in_environment_setup_test
|
|
||||||
check_PROGRAMS += test/gtest_skip_in_environment_setup_test
|
|
||||||
test_gtest_skip_in_environment_setup_test_SOURCES = test/gtest_skip_in_environment_setup_test.cc
|
|
||||||
test_gtest_skip_in_environment_setup_test_LDADD= lib/libgtest_main.la \
|
|
||||||
lib/libgtest.la
|
|
||||||
|
|
||||||
# Tests that fused gtest files compile and work.
|
|
||||||
FUSED_GTEST_SRC = \
|
|
||||||
fused-src/gtest/gtest-all.cc \
|
|
||||||
fused-src/gtest/gtest.h \
|
|
||||||
fused-src/gtest/gtest_main.cc
|
|
||||||
|
|
||||||
if HAVE_PYTHON
|
|
||||||
TESTS += test/fused_gtest_test
|
|
||||||
check_PROGRAMS += test/fused_gtest_test
|
|
||||||
test_fused_gtest_test_SOURCES = $(FUSED_GTEST_SRC) \
|
|
||||||
samples/sample1.cc samples/sample1_unittest.cc
|
|
||||||
test_fused_gtest_test_CPPFLAGS = -I"$(srcdir)/fused-src"
|
|
||||||
|
|
||||||
# Build rules for putting fused Google Test files into the distribution
|
|
||||||
# package. The user can also create those files by manually running
|
|
||||||
# scripts/fuse_gtest_files.py.
|
|
||||||
$(test_fused_gtest_test_SOURCES): fused-gtest
|
|
||||||
|
|
||||||
fused-gtest: $(pkginclude_HEADERS) $(pkginclude_internal_HEADERS) \
|
|
||||||
$(GTEST_SRC) src/gtest-all.cc src/gtest_main.cc \
|
|
||||||
scripts/fuse_gtest_files.py
|
|
||||||
mkdir -p "$(srcdir)/fused-src"
|
|
||||||
chmod -R u+w "$(srcdir)/fused-src"
|
|
||||||
rm -f "$(srcdir)/fused-src/gtest/gtest-all.cc"
|
|
||||||
rm -f "$(srcdir)/fused-src/gtest/gtest.h"
|
|
||||||
"$(srcdir)/scripts/fuse_gtest_files.py" "$(srcdir)/fused-src"
|
|
||||||
cp -f "$(srcdir)/src/gtest_main.cc" "$(srcdir)/fused-src/gtest/"
|
|
||||||
|
|
||||||
maintainer-clean-local:
|
|
||||||
rm -rf "$(srcdir)/fused-src"
|
|
||||||
endif
|
|
||||||
|
|
||||||
# Death tests may produce core dumps in the build directory. In case
|
|
||||||
# this happens, clean them to keep distcleancheck happy.
|
|
||||||
CLEANFILES = core
|
|
||||||
|
|
||||||
# Disables 'make install' as installing a compiled version of Google
|
|
||||||
# Test can lead to undefined behavior due to violation of the
|
|
||||||
# One-Definition Rule.
|
|
||||||
|
|
||||||
install-exec-local:
|
|
||||||
echo "'make install' is dangerous and not supported. Instead, see README for how to integrate Google Test into your build system."
|
|
||||||
false
|
|
||||||
|
|
||||||
install-data-local:
|
|
||||||
echo "'make install' is dangerous and not supported. Instead, see README for how to integrate Google Test into your build system."
|
|
||||||
false
|
|
|
@ -6,48 +6,7 @@ To build Google Test and your tests that use it, you need to tell your build
|
||||||
system where to find its headers and source files. The exact way to do it
|
system where to find its headers and source files. The exact way to do it
|
||||||
depends on which build system you use, and is usually straightforward.
|
depends on which build system you use, and is usually straightforward.
|
||||||
|
|
||||||
#### Build
|
### Build with CMake
|
||||||
|
|
||||||
Suppose you put Google Test in directory `${GTEST_DIR}`. To build it, create a
|
|
||||||
library build target (or a project as called by Visual Studio and Xcode) to
|
|
||||||
compile
|
|
||||||
|
|
||||||
${GTEST_DIR}/src/gtest-all.cc
|
|
||||||
|
|
||||||
with `${GTEST_DIR}/include` in the system header search path and `${GTEST_DIR}`
|
|
||||||
in the normal header search path. Assuming a Linux-like system and gcc,
|
|
||||||
something like the following will do:
|
|
||||||
|
|
||||||
g++ -std=c++11 -isystem ${GTEST_DIR}/include -I${GTEST_DIR} \
|
|
||||||
-pthread -c ${GTEST_DIR}/src/gtest-all.cc
|
|
||||||
ar -rv libgtest.a gtest-all.o
|
|
||||||
|
|
||||||
(We need `-pthread` as Google Test uses threads.)
|
|
||||||
|
|
||||||
Next, you should compile your test source file with `${GTEST_DIR}/include` in
|
|
||||||
the system header search path, and link it with gtest and any other necessary
|
|
||||||
libraries:
|
|
||||||
|
|
||||||
g++ -std=c++11 -isystem ${GTEST_DIR}/include -pthread path/to/your_test.cc libgtest.a \
|
|
||||||
-o your_test
|
|
||||||
|
|
||||||
As an example, the make/ directory contains a Makefile that you can use to build
|
|
||||||
Google Test on systems where GNU make is available (e.g. Linux, Mac OS X, and
|
|
||||||
Cygwin). It doesn't try to build Google Test's own tests. Instead, it just
|
|
||||||
builds the Google Test library and a sample test. You can use it as a starting
|
|
||||||
point for your own build script.
|
|
||||||
|
|
||||||
If the default settings are correct for your environment, the following commands
|
|
||||||
should succeed:
|
|
||||||
|
|
||||||
cd ${GTEST_DIR}/make
|
|
||||||
make
|
|
||||||
./sample1_unittest
|
|
||||||
|
|
||||||
If you see errors, try to tweak the contents of `make/Makefile` to make them go
|
|
||||||
away. There are instructions in `make/Makefile` on how to do it.
|
|
||||||
|
|
||||||
### Using CMake
|
|
||||||
|
|
||||||
Google Test comes with a CMake build script (
|
Google Test comes with a CMake build script (
|
||||||
[CMakeLists.txt](https://github.com/google/googletest/blob/master/CMakeLists.txt))
|
[CMakeLists.txt](https://github.com/google/googletest/blob/master/CMakeLists.txt))
|
||||||
|
|
|
@ -1,61 +0,0 @@
|
||||||
# Note: automake support is community-based. The maintainers do not use automake
|
|
||||||
# internally.
|
|
||||||
|
|
||||||
m4_include(m4/acx_pthread.m4)
|
|
||||||
|
|
||||||
# At this point, the Xcode project assumes the version string will be three
|
|
||||||
# integers separated by periods and surrounded by square brackets (e.g.
|
|
||||||
# "[1.0.1]"). It also asumes that there won't be any closing parenthesis
|
|
||||||
# between "AC_INIT(" and the closing ")" including comments and strings.
|
|
||||||
AC_INIT([Google C++ Testing Framework],
|
|
||||||
[1.8.0],
|
|
||||||
[googletestframework@googlegroups.com],
|
|
||||||
[gtest])
|
|
||||||
|
|
||||||
# Provide various options to initialize the Autoconf and configure processes.
|
|
||||||
AC_PREREQ([2.59])
|
|
||||||
AC_CONFIG_SRCDIR([./LICENSE])
|
|
||||||
AC_CONFIG_MACRO_DIRS([m4])
|
|
||||||
AC_CONFIG_AUX_DIR([build-aux])
|
|
||||||
AC_CONFIG_HEADERS([build-aux/config.h])
|
|
||||||
AC_CONFIG_FILES([Makefile])
|
|
||||||
AC_CONFIG_FILES([scripts/gtest-config], [chmod +x scripts/gtest-config])
|
|
||||||
|
|
||||||
# Initialize Automake with various options. We require at least v1.9, prevent
|
|
||||||
# pedantic complaints about package files, and enable various distribution
|
|
||||||
# targets.
|
|
||||||
AM_INIT_AUTOMAKE([1.9 dist-bzip2 dist-zip foreign subdir-objects])
|
|
||||||
|
|
||||||
# Check for programs used in building Google Test.
|
|
||||||
AC_PROG_CC
|
|
||||||
AC_PROG_CXX
|
|
||||||
AC_LANG([C++])
|
|
||||||
AC_PROG_LIBTOOL
|
|
||||||
|
|
||||||
PYTHON= # We *do not* allow the user to specify a python interpreter
|
|
||||||
AC_PATH_PROG([PYTHON],[python],[:])
|
|
||||||
AS_IF([test "$PYTHON" != ":"],
|
|
||||||
[AM_PYTHON_CHECK_VERSION([$PYTHON],[2.3],[:],[PYTHON=":"])])
|
|
||||||
AM_CONDITIONAL([HAVE_PYTHON],[test "$PYTHON" != ":"])
|
|
||||||
|
|
||||||
# Configure pthreads.
|
|
||||||
AC_ARG_WITH([pthreads],
|
|
||||||
[AS_HELP_STRING([--with-pthreads],
|
|
||||||
[use pthreads (default is yes)])],
|
|
||||||
[with_pthreads=$withval],
|
|
||||||
[with_pthreads=check])
|
|
||||||
|
|
||||||
have_pthreads=no
|
|
||||||
AS_IF([test "x$with_pthreads" != "xno"],
|
|
||||||
[ACX_PTHREAD(
|
|
||||||
[],
|
|
||||||
[AS_IF([test "x$with_pthreads" != "xcheck"],
|
|
||||||
[AC_MSG_FAILURE(
|
|
||||||
[--with-pthreads was specified, but unable to be used])])])
|
|
||||||
have_pthreads="$acx_pthread_ok"])
|
|
||||||
AM_CONDITIONAL([HAVE_PTHREADS],[test "x$have_pthreads" = "xyes"])
|
|
||||||
AC_SUBST(PTHREAD_CFLAGS)
|
|
||||||
AC_SUBST(PTHREAD_LIBS)
|
|
||||||
|
|
||||||
# Output the generated files. No further autoconf macros may be used.
|
|
||||||
AC_OUTPUT
|
|
|
@ -109,15 +109,15 @@ GTEST_LIBS = `pkg-config --libs gtest_main`
|
||||||
.PHONY: tests all
|
.PHONY: tests all
|
||||||
|
|
||||||
tests: all
|
tests: all
|
||||||
./testapp
|
./testapp
|
||||||
|
|
||||||
all: testapp
|
all: testapp
|
||||||
|
|
||||||
testapp: testapp.o
|
testapp: testapp.o
|
||||||
$(CXX) $(CXXFLAGS) $(LDFLAGS) $< -o $@ $(GTEST_LIBS)
|
$(CXX) $(CXXFLAGS) $(LDFLAGS) $< -o $@ $(GTEST_LIBS)
|
||||||
|
|
||||||
testapp.o: samples/sample3_unittest.cc
|
testapp.o: samples/sample3_unittest.cc
|
||||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $< -c -o $@ $(GTEST_CFLAGS)
|
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $< -c -o $@ $(GTEST_CFLAGS)
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,15 +1,13 @@
|
||||||
# Googletest Primer
|
# Googletest Primer
|
||||||
|
|
||||||
|
|
||||||
## Introduction: Why googletest?
|
## Introduction: Why googletest?
|
||||||
|
|
||||||
*googletest* helps you write better C++ tests.
|
*googletest* helps you write better C++ tests.
|
||||||
|
|
||||||
googletest is a testing framework developed by the Testing
|
googletest is a testing framework developed by the Testing Technology team with
|
||||||
Technology team with Google's specific
|
Google's specific requirements and constraints in mind. No matter whether you
|
||||||
requirements and constraints in mind. No matter whether you work on Linux,
|
work on Linux, Windows, or a Mac, if you write C++ code, googletest can help
|
||||||
Windows, or a Mac, if you write C++ code, googletest can help you. And it
|
you. And it supports *any* kind of tests, not just unit tests.
|
||||||
supports *any* kind of tests, not just unit tests.
|
|
||||||
|
|
||||||
So what makes a good test, and how does googletest fit in? We believe:
|
So what makes a good test, and how does googletest fit in? We believe:
|
||||||
|
|
||||||
|
@ -18,15 +16,14 @@ So what makes a good test, and how does googletest fit in? We believe:
|
||||||
tests by running each of them on a different object. When a test fails,
|
tests by running each of them on a different object. When a test fails,
|
||||||
googletest allows you to run it in isolation for quick debugging.
|
googletest allows you to run it in isolation for quick debugging.
|
||||||
1. Tests should be well *organized* and reflect the structure of the tested
|
1. Tests should be well *organized* and reflect the structure of the tested
|
||||||
code. googletest groups related tests into test cases that can share data
|
code. googletest groups related tests into test suites that can share data
|
||||||
and subroutines. This common pattern is easy to recognize and makes tests
|
and subroutines. This common pattern is easy to recognize and makes tests
|
||||||
easy to maintain. Such consistency is especially helpful when people switch
|
easy to maintain. Such consistency is especially helpful when people switch
|
||||||
projects and start to work on a new code base.
|
projects and start to work on a new code base.
|
||||||
1. Tests should be *portable* and *reusable*. Google has a lot of code that is
|
1. Tests should be *portable* and *reusable*. Google has a lot of code that is
|
||||||
platform-neutral, its tests should also be platform-neutral. googletest
|
platform-neutral, its tests should also be platform-neutral. googletest
|
||||||
works on different OSes, with different compilers, with
|
works on different OSes, with different compilers, with or without
|
||||||
or without exceptions, so googletest tests can work with a variety of
|
exceptions, so googletest tests can work with a variety of configurations.
|
||||||
configurations.
|
|
||||||
1. When tests fail, they should provide as much *information* about the problem
|
1. When tests fail, they should provide as much *information* about the problem
|
||||||
as possible. googletest doesn't stop at the first test failure. Instead, it
|
as possible. googletest doesn't stop at the first test failure. Instead, it
|
||||||
only stops the current test and continues with the next. You can also set up
|
only stops the current test and continues with the next. You can also set up
|
||||||
|
@ -71,9 +68,9 @@ and refactored away
|
||||||
|
|
||||||
So please be aware of the different definitions of the terms:
|
So please be aware of the different definitions of the terms:
|
||||||
|
|
||||||
Meaning | googletest Term | [ISTQB](http://www.istqb.org/) Term
|
Meaning | googletest Term | [ISTQB](http://www.istqb.org/) Term
|
||||||
:----------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------- | :----------------------------------
|
:----------------------------------------------------------------------------------- | :---------------------- | :----------------------------------
|
||||||
Exercise a particular program path with specific input values and verify the results | [TEST()](#simple-tests) | [Test Case](http://glossary.istqb.org/search/test%20case)
|
Exercise a particular program path with specific input values and verify the results | [TEST()](#simple-tests) | [Test Case](http://glossary.istqb.org/search/test%20case)
|
||||||
|
|
||||||
## Basic Concepts
|
## Basic Concepts
|
||||||
|
|
||||||
|
@ -85,15 +82,15 @@ current function; otherwise the program continues normally.
|
||||||
*Tests* use assertions to verify the tested code's behavior. If a test crashes
|
*Tests* use assertions to verify the tested code's behavior. If a test crashes
|
||||||
or has a failed assertion, then it *fails*; otherwise it *succeeds*.
|
or has a failed assertion, then it *fails*; otherwise it *succeeds*.
|
||||||
|
|
||||||
A *test case* contains one or many tests. You should group your tests into test
|
A *test suite* contains one or many tests. You should group your tests into test
|
||||||
cases that reflect the structure of the tested code. When multiple tests in a
|
suites that reflect the structure of the tested code. When multiple tests in a
|
||||||
test case need to share common objects and subroutines, you can put them into a
|
test suite need to share common objects and subroutines, you can put them into a
|
||||||
*test fixture* class.
|
*test fixture* class.
|
||||||
|
|
||||||
A *test program* can contain multiple test cases.
|
A *test program* can contain multiple test suites.
|
||||||
|
|
||||||
We'll now explain how to write a test program, starting at the individual
|
We'll now explain how to write a test program, starting at the individual
|
||||||
assertion level and building up to tests and test cases.
|
assertion level and building up to tests and test suites.
|
||||||
|
|
||||||
## Assertions
|
## Assertions
|
||||||
|
|
||||||
|
@ -256,10 +253,10 @@ TEST(TestSuiteName, TestName) {
|
||||||
```
|
```
|
||||||
|
|
||||||
`TEST()` arguments go from general to specific. The *first* argument is the name
|
`TEST()` arguments go from general to specific. The *first* argument is the name
|
||||||
of the test case, and the *second* argument is the test's name within the test
|
of the test suite, and the *second* argument is the test's name within the test
|
||||||
case. Both names must be valid C++ identifiers, and they should not contain
|
case. Both names must be valid C++ identifiers, and they should not contain
|
||||||
underscore (`_`). A test's *full name* consists of its containing test case and
|
underscore (`_`). A test's *full name* consists of its containing test suite and
|
||||||
its individual name. Tests from different test cases can have the same
|
its individual name. Tests from different test suites can have the same
|
||||||
individual name.
|
individual name.
|
||||||
|
|
||||||
For example, let's take a simple integer function:
|
For example, let's take a simple integer function:
|
||||||
|
@ -285,13 +282,13 @@ TEST(FactorialTest, HandlesPositiveInput) {
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
googletest groups the test results by test cases, so logically-related tests
|
googletest groups the test results by test suites, so logically-related tests
|
||||||
should be in the same test case; in other words, the first argument to their
|
should be in the same test suite; in other words, the first argument to their
|
||||||
`TEST()` should be the same. In the above example, we have two tests,
|
`TEST()` should be the same. In the above example, we have two tests,
|
||||||
`HandlesZeroInput` and `HandlesPositiveInput`, that belong to the same test case
|
`HandlesZeroInput` and `HandlesPositiveInput`, that belong to the same test suite
|
||||||
`FactorialTest`.
|
`FactorialTest`.
|
||||||
|
|
||||||
When naming your test cases and tests, you should follow the same convention as
|
When naming your test suites and tests, you should follow the same convention as
|
||||||
for [naming functions and
|
for [naming functions and
|
||||||
classes](https://google.github.io/styleguide/cppguide.html#Function_Names).
|
classes](https://google.github.io/styleguide/cppguide.html#Function_Names).
|
||||||
|
|
||||||
|
@ -327,7 +324,7 @@ TEST_F(TestSuiteName, TestName) {
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
Like `TEST()`, the first argument is the test case name, but for `TEST_F()` this
|
Like `TEST()`, the first argument is the test suite name, but for `TEST_F()` this
|
||||||
must be the name of the test fixture class. You've probably guessed: `_F` is for
|
must be the name of the test fixture class. You've probably guessed: `_F` is for
|
||||||
fixture.
|
fixture.
|
||||||
|
|
||||||
|
@ -342,7 +339,7 @@ declaration`".
|
||||||
For each test defined with `TEST_F()` , googletest will create a *fresh* test
|
For each test defined with `TEST_F()` , googletest will create a *fresh* test
|
||||||
fixture at runtime, immediately initialize it via `SetUp()` , run the test,
|
fixture at runtime, immediately initialize it via `SetUp()` , run the test,
|
||||||
clean up by calling `TearDown()` , and then delete the test fixture. Note that
|
clean up by calling `TearDown()` , and then delete the test fixture. Note that
|
||||||
different tests in the same test case have different test fixture objects, and
|
different tests in the same test suite have different test fixture objects, and
|
||||||
googletest always deletes a test fixture before it creates the next one.
|
googletest always deletes a test fixture before it creates the next one.
|
||||||
googletest does **not** reuse the same test fixture for multiple tests. Any
|
googletest does **not** reuse the same test fixture for multiple tests. Any
|
||||||
changes one test makes to the fixture do not affect other tests.
|
changes one test makes to the fixture do not affect other tests.
|
||||||
|
@ -439,7 +436,7 @@ your defined tests in order to run them.
|
||||||
After defining your tests, you can run them with `RUN_ALL_TESTS()` , which
|
After defining your tests, you can run them with `RUN_ALL_TESTS()` , which
|
||||||
returns `0` if all the tests are successful, or `1` otherwise. Note that
|
returns `0` if all the tests are successful, or `1` otherwise. Note that
|
||||||
`RUN_ALL_TESTS()` runs *all tests* in your link unit -- they can be from
|
`RUN_ALL_TESTS()` runs *all tests* in your link unit -- they can be from
|
||||||
different test cases, or even different source files.
|
different test suites, or even different source files.
|
||||||
|
|
||||||
When invoked, the `RUN_ALL_TESTS()` macro:
|
When invoked, the `RUN_ALL_TESTS()` macro:
|
||||||
|
|
||||||
|
@ -511,7 +508,7 @@ class FooTest : public ::testing::Test {
|
||||||
// before the destructor).
|
// before the destructor).
|
||||||
}
|
}
|
||||||
|
|
||||||
// Objects declared here can be used by all tests in the test case for Foo.
|
// Objects declared here can be used by all tests in the test suite for Foo.
|
||||||
};
|
};
|
||||||
|
|
||||||
// Tests that the Foo::Bar() method does Abc.
|
// Tests that the Foo::Bar() method does Abc.
|
||||||
|
|
|
@ -1,363 +0,0 @@
|
||||||
# This was retrieved from
|
|
||||||
# http://svn.0pointer.de/viewvc/trunk/common/acx_pthread.m4?revision=1277&root=avahi
|
|
||||||
# See also (perhaps for new versions?)
|
|
||||||
# http://svn.0pointer.de/viewvc/trunk/common/acx_pthread.m4?root=avahi
|
|
||||||
#
|
|
||||||
# We've rewritten the inconsistency check code (from avahi), to work
|
|
||||||
# more broadly. In particular, it no longer assumes ld accepts -zdefs.
|
|
||||||
# This caused a restructing of the code, but the functionality has only
|
|
||||||
# changed a little.
|
|
||||||
|
|
||||||
dnl @synopsis ACX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
|
|
||||||
dnl
|
|
||||||
dnl @summary figure out how to build C programs using POSIX threads
|
|
||||||
dnl
|
|
||||||
dnl This macro figures out how to build C programs using POSIX threads.
|
|
||||||
dnl It sets the PTHREAD_LIBS output variable to the threads library and
|
|
||||||
dnl linker flags, and the PTHREAD_CFLAGS output variable to any special
|
|
||||||
dnl C compiler flags that are needed. (The user can also force certain
|
|
||||||
dnl compiler flags/libs to be tested by setting these environment
|
|
||||||
dnl variables.)
|
|
||||||
dnl
|
|
||||||
dnl Also sets PTHREAD_CC to any special C compiler that is needed for
|
|
||||||
dnl multi-threaded programs (defaults to the value of CC otherwise).
|
|
||||||
dnl (This is necessary on AIX to use the special cc_r compiler alias.)
|
|
||||||
dnl
|
|
||||||
dnl NOTE: You are assumed to not only compile your program with these
|
|
||||||
dnl flags, but also link it with them as well. e.g. you should link
|
|
||||||
dnl with $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS
|
|
||||||
dnl $LIBS
|
|
||||||
dnl
|
|
||||||
dnl If you are only building threads programs, you may wish to use
|
|
||||||
dnl these variables in your default LIBS, CFLAGS, and CC:
|
|
||||||
dnl
|
|
||||||
dnl LIBS="$PTHREAD_LIBS $LIBS"
|
|
||||||
dnl CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
|
|
||||||
dnl CC="$PTHREAD_CC"
|
|
||||||
dnl
|
|
||||||
dnl In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute
|
|
||||||
dnl constant has a nonstandard name, defines PTHREAD_CREATE_JOINABLE to
|
|
||||||
dnl that name (e.g. PTHREAD_CREATE_UNDETACHED on AIX).
|
|
||||||
dnl
|
|
||||||
dnl ACTION-IF-FOUND is a list of shell commands to run if a threads
|
|
||||||
dnl library is found, and ACTION-IF-NOT-FOUND is a list of commands to
|
|
||||||
dnl run it if it is not found. If ACTION-IF-FOUND is not specified, the
|
|
||||||
dnl default action will define HAVE_PTHREAD.
|
|
||||||
dnl
|
|
||||||
dnl Please let the authors know if this macro fails on any platform, or
|
|
||||||
dnl if you have any other suggestions or comments. This macro was based
|
|
||||||
dnl on work by SGJ on autoconf scripts for FFTW (www.fftw.org) (with
|
|
||||||
dnl help from M. Frigo), as well as ac_pthread and hb_pthread macros
|
|
||||||
dnl posted by Alejandro Forero Cuervo to the autoconf macro repository.
|
|
||||||
dnl We are also grateful for the helpful feedback of numerous users.
|
|
||||||
dnl
|
|
||||||
dnl @category InstalledPackages
|
|
||||||
dnl @author Steven G. Johnson <stevenj@alum.mit.edu>
|
|
||||||
dnl @version 2006-05-29
|
|
||||||
dnl @license GPLWithACException
|
|
||||||
dnl
|
|
||||||
dnl Checks for GCC shared/pthread inconsistency based on work by
|
|
||||||
dnl Marcin Owsiany <marcin@owsiany.pl>
|
|
||||||
|
|
||||||
|
|
||||||
AC_DEFUN([ACX_PTHREAD], [
|
|
||||||
AC_REQUIRE([AC_CANONICAL_HOST])
|
|
||||||
AC_LANG_SAVE
|
|
||||||
AC_LANG_C
|
|
||||||
acx_pthread_ok=no
|
|
||||||
|
|
||||||
# We used to check for pthread.h first, but this fails if pthread.h
|
|
||||||
# requires special compiler flags (e.g. on True64 or Sequent).
|
|
||||||
# It gets checked for in the link test anyway.
|
|
||||||
|
|
||||||
# First of all, check if the user has set any of the PTHREAD_LIBS,
|
|
||||||
# etcetera environment variables, and if threads linking works using
|
|
||||||
# them:
|
|
||||||
if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then
|
|
||||||
save_CFLAGS="$CFLAGS"
|
|
||||||
CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
|
|
||||||
save_LIBS="$LIBS"
|
|
||||||
LIBS="$PTHREAD_LIBS $LIBS"
|
|
||||||
AC_MSG_CHECKING([for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS])
|
|
||||||
AC_TRY_LINK_FUNC(pthread_join, acx_pthread_ok=yes)
|
|
||||||
AC_MSG_RESULT($acx_pthread_ok)
|
|
||||||
if test x"$acx_pthread_ok" = xno; then
|
|
||||||
PTHREAD_LIBS=""
|
|
||||||
PTHREAD_CFLAGS=""
|
|
||||||
fi
|
|
||||||
LIBS="$save_LIBS"
|
|
||||||
CFLAGS="$save_CFLAGS"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# We must check for the threads library under a number of different
|
|
||||||
# names; the ordering is very important because some systems
|
|
||||||
# (e.g. DEC) have both -lpthread and -lpthreads, where one of the
|
|
||||||
# libraries is broken (non-POSIX).
|
|
||||||
|
|
||||||
# Create a list of thread flags to try. Items starting with a "-" are
|
|
||||||
# C compiler flags, and other items are library names, except for "none"
|
|
||||||
# which indicates that we try without any flags at all, and "pthread-config"
|
|
||||||
# which is a program returning the flags for the Pth emulation library.
|
|
||||||
|
|
||||||
acx_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config"
|
|
||||||
|
|
||||||
# The ordering *is* (sometimes) important. Some notes on the
|
|
||||||
# individual items follow:
|
|
||||||
|
|
||||||
# pthreads: AIX (must check this before -lpthread)
|
|
||||||
# none: in case threads are in libc; should be tried before -Kthread and
|
|
||||||
# other compiler flags to prevent continual compiler warnings
|
|
||||||
# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h)
|
|
||||||
# -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able)
|
|
||||||
# lthread: LinuxThreads port on FreeBSD (also preferred to -pthread)
|
|
||||||
# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads)
|
|
||||||
# -pthreads: Solaris/gcc
|
|
||||||
# -mthreads: Mingw32/gcc, Lynx/gcc
|
|
||||||
# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it
|
|
||||||
# doesn't hurt to check since this sometimes defines pthreads too;
|
|
||||||
# also defines -D_REENTRANT)
|
|
||||||
# ... -mt is also the pthreads flag for HP/aCC
|
|
||||||
# pthread: Linux, etcetera
|
|
||||||
# --thread-safe: KAI C++
|
|
||||||
# pthread-config: use pthread-config program (for GNU Pth library)
|
|
||||||
|
|
||||||
case "${host_cpu}-${host_os}" in
|
|
||||||
*solaris*)
|
|
||||||
|
|
||||||
# On Solaris (at least, for some versions), libc contains stubbed
|
|
||||||
# (non-functional) versions of the pthreads routines, so link-based
|
|
||||||
# tests will erroneously succeed. (We need to link with -pthreads/-mt/
|
|
||||||
# -lpthread.) (The stubs are missing pthread_cleanup_push, or rather
|
|
||||||
# a function called by this macro, so we could check for that, but
|
|
||||||
# who knows whether they'll stub that too in a future libc.) So,
|
|
||||||
# we'll just look for -pthreads and -lpthread first:
|
|
||||||
|
|
||||||
acx_pthread_flags="-pthreads pthread -mt -pthread $acx_pthread_flags"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
if test x"$acx_pthread_ok" = xno; then
|
|
||||||
for flag in $acx_pthread_flags; do
|
|
||||||
|
|
||||||
case $flag in
|
|
||||||
none)
|
|
||||||
AC_MSG_CHECKING([whether pthreads work without any flags])
|
|
||||||
;;
|
|
||||||
|
|
||||||
-*)
|
|
||||||
AC_MSG_CHECKING([whether pthreads work with $flag])
|
|
||||||
PTHREAD_CFLAGS="$flag"
|
|
||||||
;;
|
|
||||||
|
|
||||||
pthread-config)
|
|
||||||
AC_CHECK_PROG(acx_pthread_config, pthread-config, yes, no)
|
|
||||||
if test x"$acx_pthread_config" = xno; then continue; fi
|
|
||||||
PTHREAD_CFLAGS="`pthread-config --cflags`"
|
|
||||||
PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`"
|
|
||||||
;;
|
|
||||||
|
|
||||||
*)
|
|
||||||
AC_MSG_CHECKING([for the pthreads library -l$flag])
|
|
||||||
PTHREAD_LIBS="-l$flag"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
save_LIBS="$LIBS"
|
|
||||||
save_CFLAGS="$CFLAGS"
|
|
||||||
LIBS="$PTHREAD_LIBS $LIBS"
|
|
||||||
CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
|
|
||||||
|
|
||||||
# Check for various functions. We must include pthread.h,
|
|
||||||
# since some functions may be macros. (On the Sequent, we
|
|
||||||
# need a special flag -Kthread to make this header compile.)
|
|
||||||
# We check for pthread_join because it is in -lpthread on IRIX
|
|
||||||
# while pthread_create is in libc. We check for pthread_attr_init
|
|
||||||
# due to DEC craziness with -lpthreads. We check for
|
|
||||||
# pthread_cleanup_push because it is one of the few pthread
|
|
||||||
# functions on Solaris that doesn't have a non-functional libc stub.
|
|
||||||
# We try pthread_create on general principles.
|
|
||||||
AC_TRY_LINK([#include <pthread.h>],
|
|
||||||
[pthread_t th; pthread_join(th, 0);
|
|
||||||
pthread_attr_init(0); pthread_cleanup_push(0, 0);
|
|
||||||
pthread_create(0,0,0,0); pthread_cleanup_pop(0); ],
|
|
||||||
[acx_pthread_ok=yes])
|
|
||||||
|
|
||||||
LIBS="$save_LIBS"
|
|
||||||
CFLAGS="$save_CFLAGS"
|
|
||||||
|
|
||||||
AC_MSG_RESULT($acx_pthread_ok)
|
|
||||||
if test "x$acx_pthread_ok" = xyes; then
|
|
||||||
break;
|
|
||||||
fi
|
|
||||||
|
|
||||||
PTHREAD_LIBS=""
|
|
||||||
PTHREAD_CFLAGS=""
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Various other checks:
|
|
||||||
if test "x$acx_pthread_ok" = xyes; then
|
|
||||||
save_LIBS="$LIBS"
|
|
||||||
LIBS="$PTHREAD_LIBS $LIBS"
|
|
||||||
save_CFLAGS="$CFLAGS"
|
|
||||||
CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
|
|
||||||
|
|
||||||
# Detect AIX lossage: JOINABLE attribute is called UNDETACHED.
|
|
||||||
AC_MSG_CHECKING([for joinable pthread attribute])
|
|
||||||
attr_name=unknown
|
|
||||||
for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do
|
|
||||||
AC_TRY_LINK([#include <pthread.h>], [int attr=$attr; return attr;],
|
|
||||||
[attr_name=$attr; break])
|
|
||||||
done
|
|
||||||
AC_MSG_RESULT($attr_name)
|
|
||||||
if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then
|
|
||||||
AC_DEFINE_UNQUOTED(PTHREAD_CREATE_JOINABLE, $attr_name,
|
|
||||||
[Define to necessary symbol if this constant
|
|
||||||
uses a non-standard name on your system.])
|
|
||||||
fi
|
|
||||||
|
|
||||||
AC_MSG_CHECKING([if more special flags are required for pthreads])
|
|
||||||
flag=no
|
|
||||||
case "${host_cpu}-${host_os}" in
|
|
||||||
*-aix* | *-freebsd* | *-darwin*) flag="-D_THREAD_SAFE";;
|
|
||||||
*solaris* | *-osf* | *-hpux*) flag="-D_REENTRANT";;
|
|
||||||
esac
|
|
||||||
AC_MSG_RESULT(${flag})
|
|
||||||
if test "x$flag" != xno; then
|
|
||||||
PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS"
|
|
||||||
fi
|
|
||||||
|
|
||||||
LIBS="$save_LIBS"
|
|
||||||
CFLAGS="$save_CFLAGS"
|
|
||||||
# More AIX lossage: must compile with xlc_r or cc_r
|
|
||||||
if test x"$GCC" != xyes; then
|
|
||||||
AC_CHECK_PROGS(PTHREAD_CC, xlc_r cc_r, ${CC})
|
|
||||||
else
|
|
||||||
PTHREAD_CC=$CC
|
|
||||||
fi
|
|
||||||
|
|
||||||
# The next part tries to detect GCC inconsistency with -shared on some
|
|
||||||
# architectures and systems. The problem is that in certain
|
|
||||||
# configurations, when -shared is specified, GCC "forgets" to
|
|
||||||
# internally use various flags which are still necessary.
|
|
||||||
|
|
||||||
#
|
|
||||||
# Prepare the flags
|
|
||||||
#
|
|
||||||
save_CFLAGS="$CFLAGS"
|
|
||||||
save_LIBS="$LIBS"
|
|
||||||
save_CC="$CC"
|
|
||||||
|
|
||||||
# Try with the flags determined by the earlier checks.
|
|
||||||
#
|
|
||||||
# -Wl,-z,defs forces link-time symbol resolution, so that the
|
|
||||||
# linking checks with -shared actually have any value
|
|
||||||
#
|
|
||||||
# FIXME: -fPIC is required for -shared on many architectures,
|
|
||||||
# so we specify it here, but the right way would probably be to
|
|
||||||
# properly detect whether it is actually required.
|
|
||||||
CFLAGS="-shared -fPIC -Wl,-z,defs $CFLAGS $PTHREAD_CFLAGS"
|
|
||||||
LIBS="$PTHREAD_LIBS $LIBS"
|
|
||||||
CC="$PTHREAD_CC"
|
|
||||||
|
|
||||||
# In order not to create several levels of indentation, we test
|
|
||||||
# the value of "$done" until we find the cure or run out of ideas.
|
|
||||||
done="no"
|
|
||||||
|
|
||||||
# First, make sure the CFLAGS we added are actually accepted by our
|
|
||||||
# compiler. If not (and OS X's ld, for instance, does not accept -z),
|
|
||||||
# then we can't do this test.
|
|
||||||
if test x"$done" = xno; then
|
|
||||||
AC_MSG_CHECKING([whether to check for GCC pthread/shared inconsistencies])
|
|
||||||
AC_TRY_LINK(,, , [done=yes])
|
|
||||||
|
|
||||||
if test "x$done" = xyes ; then
|
|
||||||
AC_MSG_RESULT([no])
|
|
||||||
else
|
|
||||||
AC_MSG_RESULT([yes])
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test x"$done" = xno; then
|
|
||||||
AC_MSG_CHECKING([whether -pthread is sufficient with -shared])
|
|
||||||
AC_TRY_LINK([#include <pthread.h>],
|
|
||||||
[pthread_t th; pthread_join(th, 0);
|
|
||||||
pthread_attr_init(0); pthread_cleanup_push(0, 0);
|
|
||||||
pthread_create(0,0,0,0); pthread_cleanup_pop(0); ],
|
|
||||||
[done=yes])
|
|
||||||
|
|
||||||
if test "x$done" = xyes; then
|
|
||||||
AC_MSG_RESULT([yes])
|
|
||||||
else
|
|
||||||
AC_MSG_RESULT([no])
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
#
|
|
||||||
# Linux gcc on some architectures such as mips/mipsel forgets
|
|
||||||
# about -lpthread
|
|
||||||
#
|
|
||||||
if test x"$done" = xno; then
|
|
||||||
AC_MSG_CHECKING([whether -lpthread fixes that])
|
|
||||||
LIBS="-lpthread $PTHREAD_LIBS $save_LIBS"
|
|
||||||
AC_TRY_LINK([#include <pthread.h>],
|
|
||||||
[pthread_t th; pthread_join(th, 0);
|
|
||||||
pthread_attr_init(0); pthread_cleanup_push(0, 0);
|
|
||||||
pthread_create(0,0,0,0); pthread_cleanup_pop(0); ],
|
|
||||||
[done=yes])
|
|
||||||
|
|
||||||
if test "x$done" = xyes; then
|
|
||||||
AC_MSG_RESULT([yes])
|
|
||||||
PTHREAD_LIBS="-lpthread $PTHREAD_LIBS"
|
|
||||||
else
|
|
||||||
AC_MSG_RESULT([no])
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
#
|
|
||||||
# FreeBSD 4.10 gcc forgets to use -lc_r instead of -lc
|
|
||||||
#
|
|
||||||
if test x"$done" = xno; then
|
|
||||||
AC_MSG_CHECKING([whether -lc_r fixes that])
|
|
||||||
LIBS="-lc_r $PTHREAD_LIBS $save_LIBS"
|
|
||||||
AC_TRY_LINK([#include <pthread.h>],
|
|
||||||
[pthread_t th; pthread_join(th, 0);
|
|
||||||
pthread_attr_init(0); pthread_cleanup_push(0, 0);
|
|
||||||
pthread_create(0,0,0,0); pthread_cleanup_pop(0); ],
|
|
||||||
[done=yes])
|
|
||||||
|
|
||||||
if test "x$done" = xyes; then
|
|
||||||
AC_MSG_RESULT([yes])
|
|
||||||
PTHREAD_LIBS="-lc_r $PTHREAD_LIBS"
|
|
||||||
else
|
|
||||||
AC_MSG_RESULT([no])
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
if test x"$done" = xno; then
|
|
||||||
# OK, we have run out of ideas
|
|
||||||
AC_MSG_WARN([Impossible to determine how to use pthreads with shared libraries])
|
|
||||||
|
|
||||||
# so it's not safe to assume that we may use pthreads
|
|
||||||
acx_pthread_ok=no
|
|
||||||
fi
|
|
||||||
|
|
||||||
CFLAGS="$save_CFLAGS"
|
|
||||||
LIBS="$save_LIBS"
|
|
||||||
CC="$save_CC"
|
|
||||||
else
|
|
||||||
PTHREAD_CC="$CC"
|
|
||||||
fi
|
|
||||||
|
|
||||||
AC_SUBST(PTHREAD_LIBS)
|
|
||||||
AC_SUBST(PTHREAD_CFLAGS)
|
|
||||||
AC_SUBST(PTHREAD_CC)
|
|
||||||
|
|
||||||
# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
|
|
||||||
if test x"$acx_pthread_ok" = xyes; then
|
|
||||||
ifelse([$1],,AC_DEFINE(HAVE_PTHREAD,1,[Define if you have POSIX threads libraries and header files.]),[$1])
|
|
||||||
:
|
|
||||||
else
|
|
||||||
acx_pthread_ok=no
|
|
||||||
$2
|
|
||||||
fi
|
|
||||||
AC_LANG_RESTORE
|
|
||||||
])dnl ACX_PTHREAD
|
|
|
@ -1,74 +0,0 @@
|
||||||
dnl GTEST_LIB_CHECK([minimum version [,
|
|
||||||
dnl action if found [,action if not found]]])
|
|
||||||
dnl
|
|
||||||
dnl Check for the presence of the Google Test library, optionally at a minimum
|
|
||||||
dnl version, and indicate a viable version with the HAVE_GTEST flag. It defines
|
|
||||||
dnl standard variables for substitution including GTEST_CPPFLAGS,
|
|
||||||
dnl GTEST_CXXFLAGS, GTEST_LDFLAGS, and GTEST_LIBS. It also defines
|
|
||||||
dnl GTEST_VERSION as the version of Google Test found. Finally, it provides
|
|
||||||
dnl optional custom action slots in the event GTEST is found or not.
|
|
||||||
AC_DEFUN([GTEST_LIB_CHECK],
|
|
||||||
[
|
|
||||||
dnl Provide a flag to enable or disable Google Test usage.
|
|
||||||
AC_ARG_ENABLE([gtest],
|
|
||||||
[AS_HELP_STRING([--enable-gtest],
|
|
||||||
[Enable tests using the Google C++ Testing Framework.
|
|
||||||
(Default is enabled.)])],
|
|
||||||
[],
|
|
||||||
[enable_gtest=])
|
|
||||||
AC_ARG_VAR([GTEST_CONFIG],
|
|
||||||
[The exact path of Google Test's 'gtest-config' script.])
|
|
||||||
AC_ARG_VAR([GTEST_CPPFLAGS],
|
|
||||||
[C-like preprocessor flags for Google Test.])
|
|
||||||
AC_ARG_VAR([GTEST_CXXFLAGS],
|
|
||||||
[C++ compile flags for Google Test.])
|
|
||||||
AC_ARG_VAR([GTEST_LDFLAGS],
|
|
||||||
[Linker path and option flags for Google Test.])
|
|
||||||
AC_ARG_VAR([GTEST_LIBS],
|
|
||||||
[Library linking flags for Google Test.])
|
|
||||||
AC_ARG_VAR([GTEST_VERSION],
|
|
||||||
[The version of Google Test available.])
|
|
||||||
HAVE_GTEST="no"
|
|
||||||
AS_IF([test "x${enable_gtest}" != "xno"],
|
|
||||||
[AC_MSG_CHECKING([for 'gtest-config'])
|
|
||||||
AS_IF([test "x${enable_gtest}" != "xyes"],
|
|
||||||
[AS_IF([test -x "${enable_gtest}/scripts/gtest-config"],
|
|
||||||
[GTEST_CONFIG="${enable_gtest}/scripts/gtest-config"],
|
|
||||||
[GTEST_CONFIG="${enable_gtest}/bin/gtest-config"])
|
|
||||||
AS_IF([test -x "${GTEST_CONFIG}"], [],
|
|
||||||
[AC_MSG_RESULT([no])
|
|
||||||
AC_MSG_ERROR([dnl
|
|
||||||
Unable to locate either a built or installed Google Test.
|
|
||||||
The specific location '${enable_gtest}' was provided for a built or installed
|
|
||||||
Google Test, but no 'gtest-config' script could be found at this location.])
|
|
||||||
])],
|
|
||||||
[AC_PATH_PROG([GTEST_CONFIG], [gtest-config])])
|
|
||||||
AS_IF([test -x "${GTEST_CONFIG}"],
|
|
||||||
[AC_MSG_RESULT([${GTEST_CONFIG}])
|
|
||||||
m4_ifval([$1],
|
|
||||||
[_gtest_min_version="--min-version=$1"
|
|
||||||
AC_MSG_CHECKING([for Google Test at least version >= $1])],
|
|
||||||
[_gtest_min_version="--min-version=0"
|
|
||||||
AC_MSG_CHECKING([for Google Test])])
|
|
||||||
AS_IF([${GTEST_CONFIG} ${_gtest_min_version}],
|
|
||||||
[AC_MSG_RESULT([yes])
|
|
||||||
HAVE_GTEST='yes'],
|
|
||||||
[AC_MSG_RESULT([no])])],
|
|
||||||
[AC_MSG_RESULT([no])])
|
|
||||||
AS_IF([test "x${HAVE_GTEST}" = "xyes"],
|
|
||||||
[GTEST_CPPFLAGS=`${GTEST_CONFIG} --cppflags`
|
|
||||||
GTEST_CXXFLAGS=`${GTEST_CONFIG} --cxxflags`
|
|
||||||
GTEST_LDFLAGS=`${GTEST_CONFIG} --ldflags`
|
|
||||||
GTEST_LIBS=`${GTEST_CONFIG} --libs`
|
|
||||||
GTEST_VERSION=`${GTEST_CONFIG} --version`
|
|
||||||
AC_DEFINE([HAVE_GTEST],[1],[Defined when Google Test is available.])],
|
|
||||||
[AS_IF([test "x${enable_gtest}" = "xyes"],
|
|
||||||
[AC_MSG_ERROR([dnl
|
|
||||||
Google Test was enabled, but no viable version could be found.])
|
|
||||||
])])])
|
|
||||||
AC_SUBST([HAVE_GTEST])
|
|
||||||
AM_CONDITIONAL([HAVE_GTEST],[test "x$HAVE_GTEST" = "xyes"])
|
|
||||||
AS_IF([test "x$HAVE_GTEST" = "xyes"],
|
|
||||||
[m4_ifval([$2], [$2])],
|
|
||||||
[m4_ifval([$3], [$3])])
|
|
||||||
])
|
|
|
@ -1,97 +0,0 @@
|
||||||
# A sample Makefile for building Google Test and using it in user
|
|
||||||
# tests. Please tweak it to suit your environment and project. You
|
|
||||||
# may want to move it to your project's root directory.
|
|
||||||
#
|
|
||||||
# SYNOPSIS:
|
|
||||||
#
|
|
||||||
# make [all] - makes everything.
|
|
||||||
# make TARGET - makes the given target.
|
|
||||||
# make clean - removes all files generated by make.
|
|
||||||
|
|
||||||
# Please tweak the following variable definitions as needed by your
|
|
||||||
# project, except GTEST_HEADERS, which you can use in your own targets
|
|
||||||
# but shouldn't modify.
|
|
||||||
|
|
||||||
# Points to the root of Google Test, relative to where this file is.
|
|
||||||
# Remember to tweak this if you move this file.
|
|
||||||
GTEST_DIR = ..
|
|
||||||
|
|
||||||
# Points to the location of the Google Test libraries
|
|
||||||
GTEST_LIB_DIR = .
|
|
||||||
|
|
||||||
# Where to find user code.
|
|
||||||
USER_DIR = ../samples
|
|
||||||
|
|
||||||
# Flags passed to the preprocessor.
|
|
||||||
# Set Google Test's header directory as a system directory, such that
|
|
||||||
# the compiler doesn't generate warnings in Google Test headers.
|
|
||||||
CPPFLAGS += -isystem $(GTEST_DIR)/include
|
|
||||||
|
|
||||||
# Flags passed to the C++ compiler.
|
|
||||||
CXXFLAGS += -g -Wall -Wextra -pthread -std=c++11
|
|
||||||
|
|
||||||
# Google Test libraries
|
|
||||||
GTEST_LIBS = libgtest.a libgtest_main.a
|
|
||||||
|
|
||||||
# All tests produced by this Makefile. Remember to add new tests you
|
|
||||||
# created to the list.
|
|
||||||
TESTS = sample1_unittest
|
|
||||||
|
|
||||||
# All Google Test headers. Usually you shouldn't change this
|
|
||||||
# definition.
|
|
||||||
GTEST_HEADERS = $(GTEST_DIR)/include/gtest/*.h \
|
|
||||||
$(GTEST_DIR)/include/gtest/internal/*.h
|
|
||||||
|
|
||||||
# House-keeping build targets.
|
|
||||||
|
|
||||||
ifndef GOOGLETEST_UNSUPPORTED_MAKEFILE_BUILD_SYSTEM_WORKAROUND
|
|
||||||
.PHONY all:
|
|
||||||
$(info "The Make buildsystem is no longer supported")
|
|
||||||
$(info "You can temporarily set GOOGLETEST_UNSUPPORTED_MAKEFILE_BUILD_SYSTEM_WORKAROUND=1")
|
|
||||||
$(info "i.e make GOOGLETEST_UNSUPPORTED_MAKEFILE_BUILD_SYSTEM_WORKAROUND=1 all")
|
|
||||||
$(info "But this is going away very soon. ")
|
|
||||||
$(exit 1)
|
|
||||||
else
|
|
||||||
all: $(GTEST_LIBS) $(TESTS)
|
|
||||||
endif
|
|
||||||
|
|
||||||
clean :
|
|
||||||
rm -f $(GTEST_LIBS) $(TESTS) *.o
|
|
||||||
|
|
||||||
# Builds gtest.a and gtest_main.a.
|
|
||||||
|
|
||||||
# Usually you shouldn't tweak such internal variables, indicated by a
|
|
||||||
# trailing _.
|
|
||||||
GTEST_SRCS_ = $(GTEST_DIR)/src/*.cc $(GTEST_DIR)/src/*.h $(GTEST_HEADERS)
|
|
||||||
|
|
||||||
# For simplicity and to avoid depending on Google Test's
|
|
||||||
# implementation details, the dependencies specified below are
|
|
||||||
# conservative and not optimized. This is fine as Google Test
|
|
||||||
# compiles fast and for ordinary users its source rarely changes.
|
|
||||||
gtest-all.o : $(GTEST_SRCS_)
|
|
||||||
$(CXX) $(CPPFLAGS) -I$(GTEST_DIR) $(CXXFLAGS) -c \
|
|
||||||
$(GTEST_DIR)/src/gtest-all.cc
|
|
||||||
|
|
||||||
gtest_main.o : $(GTEST_SRCS_)
|
|
||||||
$(CXX) $(CPPFLAGS) -I$(GTEST_DIR) $(CXXFLAGS) -c \
|
|
||||||
$(GTEST_DIR)/src/gtest_main.cc
|
|
||||||
|
|
||||||
libgtest.a : gtest-all.o
|
|
||||||
$(AR) $(ARFLAGS) $@ $^
|
|
||||||
|
|
||||||
libgtest_main.a : gtest-all.o gtest_main.o
|
|
||||||
$(AR) $(ARFLAGS) $@ $^
|
|
||||||
|
|
||||||
# Builds a sample test. A test should link with either gtest.a or
|
|
||||||
# gtest_main.a, depending on whether it defines its own main()
|
|
||||||
# function.
|
|
||||||
|
|
||||||
sample1.o : $(USER_DIR)/sample1.cc $(USER_DIR)/sample1.h $(GTEST_HEADERS)
|
|
||||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/sample1.cc
|
|
||||||
|
|
||||||
sample1_unittest.o : $(USER_DIR)/sample1_unittest.cc \
|
|
||||||
$(USER_DIR)/sample1.h $(GTEST_HEADERS)
|
|
||||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/sample1_unittest.cc
|
|
||||||
|
|
||||||
sample1_unittest : sample1.o sample1_unittest.o $(GTEST_LIBS)
|
|
||||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -L$(GTEST_LIB_DIR) -lgtest_main -lpthread $^ -o $@
|
|
Loading…
Reference in New Issue
Block a user