mirror of
https://github.com/loot/yaml-cpp.git
synced 2026-07-27 14:13:42 -07:00
Add gtest, as separate set of tests (that just follow the ad-hoc tests that already exist)
This commit is contained in:
+5
-2
@@ -1,3 +1,6 @@
|
|||||||
|
add_subdirectory(gtest-1.7.0)
|
||||||
|
include_directories(gtest-1.7.0/include)
|
||||||
|
|
||||||
file(GLOB test_headers [a-z]*.h)
|
file(GLOB test_headers [a-z]*.h)
|
||||||
file(GLOB test_sources [a-z]*.cpp)
|
file(GLOB test_sources [a-z]*.cpp)
|
||||||
file(GLOB test_core_sources core/[a-z]*.cpp)
|
file(GLOB test_core_sources core/[a-z]*.cpp)
|
||||||
@@ -10,6 +13,6 @@ add_executable(run-tests
|
|||||||
${test_sources}
|
${test_sources}
|
||||||
${test_headers}
|
${test_headers}
|
||||||
)
|
)
|
||||||
target_link_libraries(run-tests yaml-cpp)
|
target_link_libraries(run-tests yaml-cpp gtest)
|
||||||
|
|
||||||
add_test(yaml-reader-test run-tests)
|
#add_test(yaml-reader-test run-tests)
|
||||||
|
|||||||
@@ -0,0 +1,157 @@
|
|||||||
|
Changes for 1.7.0:
|
||||||
|
|
||||||
|
* New feature: death tests are supported on OpenBSD and in iOS
|
||||||
|
simulator now.
|
||||||
|
* New feature: Google Test now implements a protocol to allow
|
||||||
|
a test runner to detect that a test program has exited
|
||||||
|
prematurely and report it as a failure (before it would be
|
||||||
|
falsely reported as a success if the exit code is 0).
|
||||||
|
* New feature: Test::RecordProperty() can now be used outside of the
|
||||||
|
lifespan of a test method, in which case it will be attributed to
|
||||||
|
the current test case or the test program in the XML report.
|
||||||
|
* New feature (potentially breaking): --gtest_list_tests now prints
|
||||||
|
the type parameters and value parameters for each test.
|
||||||
|
* Improvement: char pointers and char arrays are now escaped properly
|
||||||
|
in failure messages.
|
||||||
|
* Improvement: failure summary in XML reports now includes file and
|
||||||
|
line information.
|
||||||
|
* Improvement: the <testsuites> XML element now has a timestamp attribute.
|
||||||
|
* Improvement: When --gtest_filter is specified, XML report now doesn't
|
||||||
|
contain information about tests that are filtered out.
|
||||||
|
* Fixed the bug where long --gtest_filter flag values are truncated in
|
||||||
|
death tests.
|
||||||
|
* Potentially breaking change: RUN_ALL_TESTS() is now implemented as a
|
||||||
|
function instead of a macro in order to work better with Clang.
|
||||||
|
* Compatibility fixes with C++ 11 and various platforms.
|
||||||
|
* Bug/warning fixes.
|
||||||
|
|
||||||
|
Changes for 1.6.0:
|
||||||
|
|
||||||
|
* New feature: ADD_FAILURE_AT() for reporting a test failure at the
|
||||||
|
given source location -- useful for writing testing utilities.
|
||||||
|
* New feature: the universal value printer is moved from Google Mock
|
||||||
|
to Google Test.
|
||||||
|
* New feature: type parameters and value parameters are reported in
|
||||||
|
the XML report now.
|
||||||
|
* A gtest_disable_pthreads CMake option.
|
||||||
|
* Colored output works in GNU Screen sessions now.
|
||||||
|
* Parameters of value-parameterized tests are now printed in the
|
||||||
|
textual output.
|
||||||
|
* Failures from ad hoc test assertions run before RUN_ALL_TESTS() are
|
||||||
|
now correctly reported.
|
||||||
|
* Arguments of ASSERT_XY and EXPECT_XY no longer need to support << to
|
||||||
|
ostream.
|
||||||
|
* More complete handling of exceptions.
|
||||||
|
* GTEST_ASSERT_XY can be used instead of ASSERT_XY in case the latter
|
||||||
|
name is already used by another library.
|
||||||
|
* --gtest_catch_exceptions is now true by default, allowing a test
|
||||||
|
program to continue after an exception is thrown.
|
||||||
|
* Value-parameterized test fixtures can now derive from Test and
|
||||||
|
WithParamInterface<T> separately, easing conversion of legacy tests.
|
||||||
|
* Death test messages are clearly marked to make them more
|
||||||
|
distinguishable from other messages.
|
||||||
|
* Compatibility fixes for Android, Google Native Client, MinGW, HP UX,
|
||||||
|
PowerPC, Lucid autotools, libCStd, Sun C++, Borland C++ Builder (Code Gear),
|
||||||
|
IBM XL C++ (Visual Age C++), and C++0x.
|
||||||
|
* Bug fixes and implementation clean-ups.
|
||||||
|
* Potentially incompatible changes: disables the harmful 'make install'
|
||||||
|
command in autotools.
|
||||||
|
|
||||||
|
Changes for 1.5.0:
|
||||||
|
|
||||||
|
* New feature: assertions can be safely called in multiple threads
|
||||||
|
where the pthreads library is available.
|
||||||
|
* New feature: predicates used inside EXPECT_TRUE() and friends
|
||||||
|
can now generate custom failure messages.
|
||||||
|
* New feature: Google Test can now be compiled as a DLL.
|
||||||
|
* New feature: fused source files are included.
|
||||||
|
* New feature: prints help when encountering unrecognized Google Test flags.
|
||||||
|
* Experimental feature: CMake build script (requires CMake 2.6.4+).
|
||||||
|
* Experimental feature: the Pump script for meta programming.
|
||||||
|
* double values streamed to an assertion are printed with enough precision
|
||||||
|
to differentiate any two different values.
|
||||||
|
* Google Test now works on Solaris and AIX.
|
||||||
|
* Build and test script improvements.
|
||||||
|
* Bug fixes and implementation clean-ups.
|
||||||
|
|
||||||
|
Potentially breaking changes:
|
||||||
|
|
||||||
|
* Stopped supporting VC++ 7.1 with exceptions disabled.
|
||||||
|
* Dropped support for 'make install'.
|
||||||
|
|
||||||
|
Changes for 1.4.0:
|
||||||
|
|
||||||
|
* New feature: the event listener API
|
||||||
|
* New feature: test shuffling
|
||||||
|
* New feature: the XML report format is closer to junitreport and can
|
||||||
|
be parsed by Hudson now.
|
||||||
|
* New feature: when a test runs under Visual Studio, its failures are
|
||||||
|
integrated in the IDE.
|
||||||
|
* New feature: /MD(d) versions of VC++ projects.
|
||||||
|
* New feature: elapsed time for the tests is printed by default.
|
||||||
|
* New feature: comes with a TR1 tuple implementation such that Boost
|
||||||
|
is no longer needed for Combine().
|
||||||
|
* New feature: EXPECT_DEATH_IF_SUPPORTED macro and friends.
|
||||||
|
* New feature: the Xcode project can now produce static gtest
|
||||||
|
libraries in addition to a framework.
|
||||||
|
* Compatibility fixes for Solaris, Cygwin, minGW, Windows Mobile,
|
||||||
|
Symbian, gcc, and C++Builder.
|
||||||
|
* Bug fixes and implementation clean-ups.
|
||||||
|
|
||||||
|
Changes for 1.3.0:
|
||||||
|
|
||||||
|
* New feature: death tests on Windows, Cygwin, and Mac.
|
||||||
|
* New feature: ability to use Google Test assertions in other testing
|
||||||
|
frameworks.
|
||||||
|
* New feature: ability to run disabled test via
|
||||||
|
--gtest_also_run_disabled_tests.
|
||||||
|
* New feature: the --help flag for printing the usage.
|
||||||
|
* New feature: access to Google Test flag values in user code.
|
||||||
|
* New feature: a script that packs Google Test into one .h and one
|
||||||
|
.cc file for easy deployment.
|
||||||
|
* New feature: support for distributing test functions to multiple
|
||||||
|
machines (requires support from the test runner).
|
||||||
|
* Bug fixes and implementation clean-ups.
|
||||||
|
|
||||||
|
Changes for 1.2.1:
|
||||||
|
|
||||||
|
* Compatibility fixes for Linux IA-64 and IBM z/OS.
|
||||||
|
* Added support for using Boost and other TR1 implementations.
|
||||||
|
* Changes to the build scripts to support upcoming release of Google C++
|
||||||
|
Mocking Framework.
|
||||||
|
* Added Makefile to the distribution package.
|
||||||
|
* Improved build instructions in README.
|
||||||
|
|
||||||
|
Changes for 1.2.0:
|
||||||
|
|
||||||
|
* New feature: value-parameterized tests.
|
||||||
|
* New feature: the ASSERT/EXPECT_(NON)FATAL_FAILURE(_ON_ALL_THREADS)
|
||||||
|
macros.
|
||||||
|
* Changed the XML report format to match JUnit/Ant's.
|
||||||
|
* Added tests to the Xcode project.
|
||||||
|
* Added scons/SConscript for building with SCons.
|
||||||
|
* Added src/gtest-all.cc for building Google Test from a single file.
|
||||||
|
* Fixed compatibility with Solaris and z/OS.
|
||||||
|
* Enabled running Python tests on systems with python 2.3 installed,
|
||||||
|
e.g. Mac OS X 10.4.
|
||||||
|
* Bug fixes.
|
||||||
|
|
||||||
|
Changes for 1.1.0:
|
||||||
|
|
||||||
|
* New feature: type-parameterized tests.
|
||||||
|
* New feature: exception assertions.
|
||||||
|
* New feature: printing elapsed time of tests.
|
||||||
|
* Improved the robustness of death tests.
|
||||||
|
* Added an Xcode project and samples.
|
||||||
|
* Adjusted the output format on Windows to be understandable by Visual Studio.
|
||||||
|
* Minor bug fixes.
|
||||||
|
|
||||||
|
Changes for 1.0.1:
|
||||||
|
|
||||||
|
* Added project files for Visual Studio 7.1.
|
||||||
|
* Fixed issues with compiling on Mac OS X.
|
||||||
|
* Fixed issues with compiling on Cygwin.
|
||||||
|
|
||||||
|
Changes for 1.0.0:
|
||||||
|
|
||||||
|
* Initial Open Source release of Google Test
|
||||||
@@ -0,0 +1,252 @@
|
|||||||
|
########################################################################
|
||||||
|
# CMake build script for Google Test.
|
||||||
|
#
|
||||||
|
# To run the tests for Google Test itself on Linux, use 'make test' or
|
||||||
|
# ctest. You can select which tests to run using 'ctest -R regex'.
|
||||||
|
# For more options, run 'ctest --help'.
|
||||||
|
|
||||||
|
# BUILD_SHARED_LIBS is a standard CMake variable, but we declare it here to
|
||||||
|
# make it prominent in the GUI.
|
||||||
|
option(BUILD_SHARED_LIBS "Build shared libraries (DLLs)." OFF)
|
||||||
|
|
||||||
|
# When other libraries are using a shared version of runtime libraries,
|
||||||
|
# Google Test also has to use one.
|
||||||
|
option(
|
||||||
|
gtest_force_shared_crt
|
||||||
|
"Use shared (DLL) run-time lib even when Google Test is built as static lib."
|
||||||
|
OFF)
|
||||||
|
|
||||||
|
option(gtest_build_tests "Build all of gtest's own tests." OFF)
|
||||||
|
|
||||||
|
option(gtest_build_samples "Build gtest's sample programs." OFF)
|
||||||
|
|
||||||
|
option(gtest_disable_pthreads "Disable uses of pthreads in gtest." OFF)
|
||||||
|
|
||||||
|
# Defines pre_project_set_up_hermetic_build() and set_up_hermetic_build().
|
||||||
|
include(cmake/hermetic_build.cmake OPTIONAL)
|
||||||
|
|
||||||
|
if (COMMAND pre_project_set_up_hermetic_build)
|
||||||
|
pre_project_set_up_hermetic_build()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
########################################################################
|
||||||
|
#
|
||||||
|
# Project-wide settings
|
||||||
|
|
||||||
|
# Name of the project.
|
||||||
|
#
|
||||||
|
# CMake files in this project can refer to the root source directory
|
||||||
|
# as ${gtest_SOURCE_DIR} and to the root binary directory as
|
||||||
|
# ${gtest_BINARY_DIR}.
|
||||||
|
# Language "C" is required for find_package(Threads).
|
||||||
|
project(gtest CXX C)
|
||||||
|
cmake_minimum_required(VERSION 2.6.2)
|
||||||
|
|
||||||
|
if (COMMAND set_up_hermetic_build)
|
||||||
|
set_up_hermetic_build()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Define helper functions and macros used by Google Test.
|
||||||
|
include(cmake/internal_utils.cmake)
|
||||||
|
|
||||||
|
config_compiler_and_linker() # Defined in internal_utils.cmake.
|
||||||
|
|
||||||
|
# Where Google Test's .h files can be found.
|
||||||
|
include_directories(
|
||||||
|
${gtest_SOURCE_DIR}/include
|
||||||
|
${gtest_SOURCE_DIR})
|
||||||
|
|
||||||
|
# Where Google Test's libraries can be found.
|
||||||
|
link_directories(${gtest_BINARY_DIR}/src)
|
||||||
|
|
||||||
|
########################################################################
|
||||||
|
#
|
||||||
|
# Defines the gtest & gtest_main libraries. User tests should link
|
||||||
|
# with one of them.
|
||||||
|
|
||||||
|
# Google Test libraries. We build them using more strict warnings than what
|
||||||
|
# are used for other targets, to ensure that gtest can be compiled by a user
|
||||||
|
# aggressive about warnings.
|
||||||
|
cxx_library(gtest "${cxx_strict}" src/gtest-all.cc)
|
||||||
|
cxx_library(gtest_main "${cxx_strict}" src/gtest_main.cc)
|
||||||
|
target_link_libraries(gtest_main gtest)
|
||||||
|
|
||||||
|
########################################################################
|
||||||
|
#
|
||||||
|
# Samples on how to link user tests with gtest or gtest_main.
|
||||||
|
#
|
||||||
|
# They are not built by default. To build them, set the
|
||||||
|
# gtest_build_samples option to ON. You can do it by running ccmake
|
||||||
|
# or specifying the -Dgtest_build_samples=ON flag when running cmake.
|
||||||
|
|
||||||
|
if (gtest_build_samples)
|
||||||
|
cxx_executable(sample1_unittest samples gtest_main samples/sample1.cc)
|
||||||
|
cxx_executable(sample2_unittest samples gtest_main samples/sample2.cc)
|
||||||
|
cxx_executable(sample3_unittest samples gtest_main)
|
||||||
|
cxx_executable(sample4_unittest samples gtest_main samples/sample4.cc)
|
||||||
|
cxx_executable(sample5_unittest samples gtest_main samples/sample1.cc)
|
||||||
|
cxx_executable(sample6_unittest samples gtest_main)
|
||||||
|
cxx_executable(sample7_unittest samples gtest_main)
|
||||||
|
cxx_executable(sample8_unittest samples gtest_main)
|
||||||
|
cxx_executable(sample9_unittest samples gtest)
|
||||||
|
cxx_executable(sample10_unittest samples gtest)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
########################################################################
|
||||||
|
#
|
||||||
|
# Google Test's own tests.
|
||||||
|
#
|
||||||
|
# You can skip this section if you aren't interested in testing
|
||||||
|
# Google Test itself.
|
||||||
|
#
|
||||||
|
# The tests are not built by default. To build them, set the
|
||||||
|
# gtest_build_tests option to ON. You can do it by running ccmake
|
||||||
|
# or specifying the -Dgtest_build_tests=ON flag when running cmake.
|
||||||
|
|
||||||
|
if (gtest_build_tests)
|
||||||
|
# This must be set in the root directory for the tests to be run by
|
||||||
|
# 'make test' or ctest.
|
||||||
|
enable_testing()
|
||||||
|
|
||||||
|
############################################################
|
||||||
|
# C++ tests built with standard compiler flags.
|
||||||
|
|
||||||
|
cxx_test(gtest-death-test_test gtest_main)
|
||||||
|
cxx_test(gtest_environment_test gtest)
|
||||||
|
cxx_test(gtest-filepath_test gtest_main)
|
||||||
|
cxx_test(gtest-linked_ptr_test gtest_main)
|
||||||
|
cxx_test(gtest-listener_test gtest_main)
|
||||||
|
cxx_test(gtest_main_unittest gtest_main)
|
||||||
|
cxx_test(gtest-message_test gtest_main)
|
||||||
|
cxx_test(gtest_no_test_unittest gtest)
|
||||||
|
cxx_test(gtest-options_test gtest_main)
|
||||||
|
cxx_test(gtest-param-test_test gtest
|
||||||
|
test/gtest-param-test2_test.cc)
|
||||||
|
cxx_test(gtest-port_test gtest_main)
|
||||||
|
cxx_test(gtest_pred_impl_unittest gtest_main)
|
||||||
|
cxx_test(gtest_premature_exit_test gtest
|
||||||
|
test/gtest_premature_exit_test.cc)
|
||||||
|
cxx_test(gtest-printers_test gtest_main)
|
||||||
|
cxx_test(gtest_prod_test gtest_main
|
||||||
|
test/production.cc)
|
||||||
|
cxx_test(gtest_repeat_test gtest)
|
||||||
|
cxx_test(gtest_sole_header_test gtest_main)
|
||||||
|
cxx_test(gtest_stress_test gtest)
|
||||||
|
cxx_test(gtest-test-part_test gtest_main)
|
||||||
|
cxx_test(gtest_throw_on_failure_ex_test gtest)
|
||||||
|
cxx_test(gtest-typed-test_test gtest_main
|
||||||
|
test/gtest-typed-test2_test.cc)
|
||||||
|
cxx_test(gtest_unittest gtest_main)
|
||||||
|
cxx_test(gtest-unittest-api_test gtest)
|
||||||
|
|
||||||
|
############################################################
|
||||||
|
# C++ tests built with non-standard compiler flags.
|
||||||
|
|
||||||
|
# MSVC 7.1 does not support STL with exceptions disabled.
|
||||||
|
if (NOT MSVC OR MSVC_VERSION GREATER 1310)
|
||||||
|
cxx_library(gtest_no_exception "${cxx_no_exception}"
|
||||||
|
src/gtest-all.cc)
|
||||||
|
cxx_library(gtest_main_no_exception "${cxx_no_exception}"
|
||||||
|
src/gtest-all.cc src/gtest_main.cc)
|
||||||
|
endif()
|
||||||
|
cxx_library(gtest_main_no_rtti "${cxx_no_rtti}"
|
||||||
|
src/gtest-all.cc src/gtest_main.cc)
|
||||||
|
|
||||||
|
cxx_test_with_flags(gtest-death-test_ex_nocatch_test
|
||||||
|
"${cxx_exception} -DGTEST_ENABLE_CATCH_EXCEPTIONS_=0"
|
||||||
|
gtest test/gtest-death-test_ex_test.cc)
|
||||||
|
cxx_test_with_flags(gtest-death-test_ex_catch_test
|
||||||
|
"${cxx_exception} -DGTEST_ENABLE_CATCH_EXCEPTIONS_=1"
|
||||||
|
gtest test/gtest-death-test_ex_test.cc)
|
||||||
|
|
||||||
|
cxx_test_with_flags(gtest_no_rtti_unittest "${cxx_no_rtti}"
|
||||||
|
gtest_main_no_rtti test/gtest_unittest.cc)
|
||||||
|
|
||||||
|
cxx_shared_library(gtest_dll "${cxx_default}"
|
||||||
|
src/gtest-all.cc src/gtest_main.cc)
|
||||||
|
|
||||||
|
cxx_executable_with_flags(gtest_dll_test_ "${cxx_default}"
|
||||||
|
gtest_dll test/gtest_all_test.cc)
|
||||||
|
set_target_properties(gtest_dll_test_
|
||||||
|
PROPERTIES
|
||||||
|
COMPILE_DEFINITIONS "GTEST_LINKED_AS_SHARED_LIBRARY=1")
|
||||||
|
|
||||||
|
if (NOT MSVC OR NOT MSVC_VERSION EQUAL 1600)
|
||||||
|
# The C++ Standard specifies tuple_element<int, class>.
|
||||||
|
# Yet MSVC 10's <utility> declares tuple_element<size_t, class>.
|
||||||
|
# That declaration conflicts with our own standard-conforming
|
||||||
|
# tuple implementation. Therefore using our own tuple with
|
||||||
|
# MSVC 10 doesn't compile.
|
||||||
|
cxx_library(gtest_main_use_own_tuple "${cxx_use_own_tuple}"
|
||||||
|
src/gtest-all.cc src/gtest_main.cc)
|
||||||
|
|
||||||
|
cxx_test_with_flags(gtest-tuple_test "${cxx_use_own_tuple}"
|
||||||
|
gtest_main_use_own_tuple test/gtest-tuple_test.cc)
|
||||||
|
|
||||||
|
cxx_test_with_flags(gtest_use_own_tuple_test "${cxx_use_own_tuple}"
|
||||||
|
gtest_main_use_own_tuple
|
||||||
|
test/gtest-param-test_test.cc test/gtest-param-test2_test.cc)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
############################################################
|
||||||
|
# Python tests.
|
||||||
|
|
||||||
|
cxx_executable(gtest_break_on_failure_unittest_ test gtest)
|
||||||
|
py_test(gtest_break_on_failure_unittest)
|
||||||
|
|
||||||
|
# MSVC 7.1 does not support STL with exceptions disabled.
|
||||||
|
if (NOT MSVC OR MSVC_VERSION GREATER 1310)
|
||||||
|
cxx_executable_with_flags(
|
||||||
|
gtest_catch_exceptions_no_ex_test_
|
||||||
|
"${cxx_no_exception}"
|
||||||
|
gtest_main_no_exception
|
||||||
|
test/gtest_catch_exceptions_test_.cc)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
cxx_executable_with_flags(
|
||||||
|
gtest_catch_exceptions_ex_test_
|
||||||
|
"${cxx_exception}"
|
||||||
|
gtest_main
|
||||||
|
test/gtest_catch_exceptions_test_.cc)
|
||||||
|
py_test(gtest_catch_exceptions_test)
|
||||||
|
|
||||||
|
cxx_executable(gtest_color_test_ test gtest)
|
||||||
|
py_test(gtest_color_test)
|
||||||
|
|
||||||
|
cxx_executable(gtest_env_var_test_ test gtest)
|
||||||
|
py_test(gtest_env_var_test)
|
||||||
|
|
||||||
|
cxx_executable(gtest_filter_unittest_ test gtest)
|
||||||
|
py_test(gtest_filter_unittest)
|
||||||
|
|
||||||
|
cxx_executable(gtest_help_test_ test gtest_main)
|
||||||
|
py_test(gtest_help_test)
|
||||||
|
|
||||||
|
cxx_executable(gtest_list_tests_unittest_ test gtest)
|
||||||
|
py_test(gtest_list_tests_unittest)
|
||||||
|
|
||||||
|
cxx_executable(gtest_output_test_ test gtest)
|
||||||
|
py_test(gtest_output_test)
|
||||||
|
|
||||||
|
cxx_executable(gtest_shuffle_test_ test gtest)
|
||||||
|
py_test(gtest_shuffle_test)
|
||||||
|
|
||||||
|
# MSVC 7.1 does not support STL with exceptions disabled.
|
||||||
|
if (NOT MSVC OR MSVC_VERSION GREATER 1310)
|
||||||
|
cxx_executable(gtest_throw_on_failure_test_ test gtest_no_exception)
|
||||||
|
set_target_properties(gtest_throw_on_failure_test_
|
||||||
|
PROPERTIES
|
||||||
|
COMPILE_FLAGS "${cxx_no_exception}")
|
||||||
|
py_test(gtest_throw_on_failure_test)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
cxx_executable(gtest_uninitialized_test_ test gtest)
|
||||||
|
py_test(gtest_uninitialized_test)
|
||||||
|
|
||||||
|
cxx_executable(gtest_xml_outfile1_test_ test gtest_main)
|
||||||
|
cxx_executable(gtest_xml_outfile2_test_ test gtest_main)
|
||||||
|
py_test(gtest_xml_outfiles_test)
|
||||||
|
|
||||||
|
cxx_executable(gtest_xml_output_unittest_ test gtest)
|
||||||
|
py_test(gtest_xml_output_unittest)
|
||||||
|
endif()
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
# This file contains a list of people who've made non-trivial
|
||||||
|
# contribution to the Google C++ Testing Framework project. People
|
||||||
|
# who commit code to the project are encouraged to add their names
|
||||||
|
# here. Please keep the list sorted by first names.
|
||||||
|
|
||||||
|
Ajay Joshi <jaj@google.com>
|
||||||
|
Balázs Dán <balazs.dan@gmail.com>
|
||||||
|
Bharat Mediratta <bharat@menalto.com>
|
||||||
|
Chandler Carruth <chandlerc@google.com>
|
||||||
|
Chris Prince <cprince@google.com>
|
||||||
|
Chris Taylor <taylorc@google.com>
|
||||||
|
Dan Egnor <egnor@google.com>
|
||||||
|
Eric Roman <eroman@chromium.org>
|
||||||
|
Hady Zalek <hady.zalek@gmail.com>
|
||||||
|
Jeffrey Yasskin <jyasskin@google.com>
|
||||||
|
Jói Sigurðsson <joi@google.com>
|
||||||
|
Keir Mierle <mierle@gmail.com>
|
||||||
|
Keith Ray <keith.ray@gmail.com>
|
||||||
|
Kenton Varda <kenton@google.com>
|
||||||
|
Manuel Klimek <klimek@google.com>
|
||||||
|
Markus Heule <markus.heule@gmail.com>
|
||||||
|
Mika Raento <mikie@iki.fi>
|
||||||
|
Miklós Fazekas <mfazekas@szemafor.com>
|
||||||
|
Pasi Valminen <pasi.valminen@gmail.com>
|
||||||
|
Patrick Hanna <phanna@google.com>
|
||||||
|
Patrick Riley <pfr@google.com>
|
||||||
|
Peter Kaminski <piotrk@google.com>
|
||||||
|
Preston Jackson <preston.a.jackson@gmail.com>
|
||||||
|
Rainer Klaffenboeck <rainer.klaffenboeck@dynatrace.com>
|
||||||
|
Russ Cox <rsc@google.com>
|
||||||
|
Russ Rufer <russ@pentad.com>
|
||||||
|
Sean Mcafee <eefacm@gmail.com>
|
||||||
|
Sigurður Ásgeirsson <siggi@google.com>
|
||||||
|
Tracy Bialik <tracy@pentad.com>
|
||||||
|
Vadim Berman <vadimb@google.com>
|
||||||
|
Vlad Losev <vladl@google.com>
|
||||||
|
Zhanyong Wan <wan@google.com>
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
Copyright 2008, 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.
|
||||||
@@ -0,0 +1,306 @@
|
|||||||
|
# Automake file
|
||||||
|
|
||||||
|
ACLOCAL_AMFLAGS = -I m4
|
||||||
|
|
||||||
|
# Nonstandard package files for distribution
|
||||||
|
EXTRA_DIST = \
|
||||||
|
CHANGES \
|
||||||
|
CONTRIBUTORS \
|
||||||
|
LICENSE \
|
||||||
|
include/gtest/gtest-param-test.h.pump \
|
||||||
|
include/gtest/internal/gtest-param-util-generated.h.pump \
|
||||||
|
include/gtest/internal/gtest-tuple.h.pump \
|
||||||
|
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-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/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/gtest-death-test_ex_test.cc \
|
||||||
|
test/gtest-death-test_test.cc \
|
||||||
|
test/gtest-filepath_test.cc \
|
||||||
|
test/gtest-linked_ptr_test.cc \
|
||||||
|
test/gtest-listener_test.cc \
|
||||||
|
test/gtest-message_test.cc \
|
||||||
|
test/gtest-options_test.cc \
|
||||||
|
test/gtest-param-test2_test.cc \
|
||||||
|
test/gtest-param-test2_test.cc \
|
||||||
|
test/gtest-param-test_test.cc \
|
||||||
|
test/gtest-param-test_test.cc \
|
||||||
|
test/gtest-param-test_test.h \
|
||||||
|
test/gtest-port_test.cc \
|
||||||
|
test/gtest_premature_exit_test.cc \
|
||||||
|
test/gtest-printers_test.cc \
|
||||||
|
test/gtest-test-part_test.cc \
|
||||||
|
test/gtest-tuple_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/gtest_break_on_failure_unittest_.cc \
|
||||||
|
test/gtest_catch_exceptions_test_.cc \
|
||||||
|
test/gtest_color_test_.cc \
|
||||||
|
test/gtest_env_var_test_.cc \
|
||||||
|
test/gtest_environment_test.cc \
|
||||||
|
test/gtest_filter_unittest_.cc \
|
||||||
|
test/gtest_help_test_.cc \
|
||||||
|
test/gtest_list_tests_unittest_.cc \
|
||||||
|
test/gtest_main_unittest.cc \
|
||||||
|
test/gtest_no_test_unittest.cc \
|
||||||
|
test/gtest_output_test_.cc \
|
||||||
|
test/gtest_pred_impl_unittest.cc \
|
||||||
|
test/gtest_prod_test.cc \
|
||||||
|
test/gtest_repeat_test.cc \
|
||||||
|
test/gtest_shuffle_test_.cc \
|
||||||
|
test/gtest_sole_header_test.cc \
|
||||||
|
test/gtest_stress_test.cc \
|
||||||
|
test/gtest_throw_on_failure_ex_test.cc \
|
||||||
|
test/gtest_throw_on_failure_test_.cc \
|
||||||
|
test/gtest_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/gtest_break_on_failure_unittest.py \
|
||||||
|
test/gtest_catch_exceptions_test.py \
|
||||||
|
test/gtest_color_test.py \
|
||||||
|
test/gtest_env_var_test.py \
|
||||||
|
test/gtest_filter_unittest.py \
|
||||||
|
test/gtest_help_test.py \
|
||||||
|
test/gtest_list_tests_unittest.py \
|
||||||
|
test/gtest_output_test.py \
|
||||||
|
test/gtest_output_test_golden_lin.txt \
|
||||||
|
test/gtest_shuffle_test.py \
|
||||||
|
test/gtest_test_utils.py \
|
||||||
|
test/gtest_throw_on_failure_test.py \
|
||||||
|
test/gtest_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/gtest-md.sln \
|
||||||
|
msvc/gtest-md.vcproj \
|
||||||
|
msvc/gtest.sln \
|
||||||
|
msvc/gtest.vcproj \
|
||||||
|
msvc/gtest_main-md.vcproj \
|
||||||
|
msvc/gtest_main.vcproj \
|
||||||
|
msvc/gtest_prod_test-md.vcproj \
|
||||||
|
msvc/gtest_prod_test.vcproj \
|
||||||
|
msvc/gtest_unittest-md.vcproj \
|
||||||
|
msvc/gtest_unittest.vcproj
|
||||||
|
|
||||||
|
# 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-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-linked_ptr.h \
|
||||||
|
include/gtest/internal/gtest-param-util-generated.h \
|
||||||
|
include/gtest/internal/gtest-param-util.h \
|
||||||
|
include/gtest/internal/gtest-port.h \
|
||||||
|
include/gtest/internal/gtest-string.h \
|
||||||
|
include/gtest/internal/gtest-tuple.h \
|
||||||
|
include/gtest/internal/gtest-type-util.h
|
||||||
|
|
||||||
|
lib_libgtest_main_la_SOURCES = src/gtest_main.cc
|
||||||
|
lib_libgtest_main_la_LIBADD = lib/libgtest.la
|
||||||
|
|
||||||
|
# Bulid 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
|
||||||
|
|
||||||
|
noinst_LTLIBRARIES = samples/libsamples.la
|
||||||
|
|
||||||
|
samples_libsamples_la_SOURCES = \
|
||||||
|
samples/sample1.cc \
|
||||||
|
samples/sample1.h \
|
||||||
|
samples/sample2.cc \
|
||||||
|
samples/sample2.h \
|
||||||
|
samples/sample3-inl.h \
|
||||||
|
samples/sample4.cc \
|
||||||
|
samples/sample4.h
|
||||||
|
|
||||||
|
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
|
||||||
|
check_PROGRAMS += samples/sample1_unittest
|
||||||
|
samples_sample1_unittest_SOURCES = samples/sample1_unittest.cc
|
||||||
|
samples_sample1_unittest_LDADD = lib/libgtest_main.la \
|
||||||
|
lib/libgtest.la \
|
||||||
|
samples/libsamples.la
|
||||||
|
|
||||||
|
# Another sample. It also verifies that libgtest works.
|
||||||
|
TESTS += samples/sample10_unittest
|
||||||
|
check_PROGRAMS += samples/sample10_unittest
|
||||||
|
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 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
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,435 @@
|
|||||||
|
Google C++ Testing Framework
|
||||||
|
============================
|
||||||
|
|
||||||
|
http://code.google.com/p/googletest/
|
||||||
|
|
||||||
|
Overview
|
||||||
|
--------
|
||||||
|
|
||||||
|
Google's framework for writing C++ tests on a variety of platforms
|
||||||
|
(Linux, Mac OS X, Windows, Windows CE, Symbian, etc). Based on the
|
||||||
|
xUnit architecture. Supports automatic test discovery, a rich set of
|
||||||
|
assertions, user-defined assertions, death tests, fatal and non-fatal
|
||||||
|
failures, various options for running the tests, and XML test report
|
||||||
|
generation.
|
||||||
|
|
||||||
|
Please see the project page above for more information as well as the
|
||||||
|
mailing list for questions, discussions, and development. There is
|
||||||
|
also an IRC channel on OFTC (irc.oftc.net) #gtest available. Please
|
||||||
|
join us!
|
||||||
|
|
||||||
|
Requirements for End Users
|
||||||
|
--------------------------
|
||||||
|
|
||||||
|
Google Test is designed to have fairly minimal requirements to build
|
||||||
|
and use with your projects, but there are some. Currently, we support
|
||||||
|
Linux, Windows, Mac OS X, and Cygwin. We will also make our best
|
||||||
|
effort to support other platforms (e.g. Solaris, AIX, and z/OS).
|
||||||
|
However, since core members of the Google Test project have no access
|
||||||
|
to these platforms, Google Test may have outstanding issues there. If
|
||||||
|
you notice any problems on your platform, please notify
|
||||||
|
googletestframework@googlegroups.com. Patches for fixing them are
|
||||||
|
even more welcome!
|
||||||
|
|
||||||
|
### Linux Requirements ###
|
||||||
|
|
||||||
|
These are the base requirements to build and use Google Test from a source
|
||||||
|
package (as described below):
|
||||||
|
* GNU-compatible Make or gmake
|
||||||
|
* POSIX-standard shell
|
||||||
|
* POSIX(-2) Regular Expressions (regex.h)
|
||||||
|
* A C++98-standard-compliant compiler
|
||||||
|
|
||||||
|
### Windows Requirements ###
|
||||||
|
|
||||||
|
* Microsoft Visual C++ 7.1 or newer
|
||||||
|
|
||||||
|
### Cygwin Requirements ###
|
||||||
|
|
||||||
|
* Cygwin 1.5.25-14 or newer
|
||||||
|
|
||||||
|
### Mac OS X Requirements ###
|
||||||
|
|
||||||
|
* Mac OS X 10.4 Tiger or newer
|
||||||
|
* Developer Tools Installed
|
||||||
|
|
||||||
|
Also, you'll need CMake 2.6.4 or higher if you want to build the
|
||||||
|
samples using the provided CMake script, regardless of the platform.
|
||||||
|
|
||||||
|
Requirements for Contributors
|
||||||
|
-----------------------------
|
||||||
|
|
||||||
|
We welcome patches. If you plan to contribute a patch, you need to
|
||||||
|
build Google Test and its own tests from an SVN checkout (described
|
||||||
|
below), which has further requirements:
|
||||||
|
|
||||||
|
* Python version 2.3 or newer (for running some of the tests and
|
||||||
|
re-generating certain source files from templates)
|
||||||
|
* CMake 2.6.4 or newer
|
||||||
|
|
||||||
|
Getting the Source
|
||||||
|
------------------
|
||||||
|
|
||||||
|
There are two primary ways of getting Google Test's source code: you
|
||||||
|
can download a stable source release in your preferred archive format,
|
||||||
|
or directly check out the source from our Subversion (SVN) repositary.
|
||||||
|
The SVN checkout requires a few extra steps and some extra software
|
||||||
|
packages on your system, but lets you track the latest development and
|
||||||
|
make patches much more easily, so we highly encourage it.
|
||||||
|
|
||||||
|
### Source Package ###
|
||||||
|
|
||||||
|
Google Test is released in versioned source packages which can be
|
||||||
|
downloaded from the download page [1]. Several different archive
|
||||||
|
formats are provided, but the only difference is the tools used to
|
||||||
|
manipulate them, and the size of the resulting file. Download
|
||||||
|
whichever you are most comfortable with.
|
||||||
|
|
||||||
|
[1] http://code.google.com/p/googletest/downloads/list
|
||||||
|
|
||||||
|
Once the package is downloaded, expand it using whichever tools you
|
||||||
|
prefer for that type. This will result in a new directory with the
|
||||||
|
name "gtest-X.Y.Z" which contains all of the source code. Here are
|
||||||
|
some examples on Linux:
|
||||||
|
|
||||||
|
tar -xvzf gtest-X.Y.Z.tar.gz
|
||||||
|
tar -xvjf gtest-X.Y.Z.tar.bz2
|
||||||
|
unzip gtest-X.Y.Z.zip
|
||||||
|
|
||||||
|
### SVN Checkout ###
|
||||||
|
|
||||||
|
To check out the main branch (also known as the "trunk") of Google
|
||||||
|
Test, run the following Subversion command:
|
||||||
|
|
||||||
|
svn checkout http://googletest.googlecode.com/svn/trunk/ gtest-svn
|
||||||
|
|
||||||
|
Setting up the Build
|
||||||
|
--------------------
|
||||||
|
|
||||||
|
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 depends on which build system you use, and is usually
|
||||||
|
straightforward.
|
||||||
|
|
||||||
|
### Generic Build Instructions ###
|
||||||
|
|
||||||
|
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++ -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++ -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 (CMakeLists.txt) that can
|
||||||
|
be used on a wide range of platforms ("C" stands for cross-platofrm.).
|
||||||
|
If you don't have CMake installed already, you can download it for
|
||||||
|
free from http://www.cmake.org/.
|
||||||
|
|
||||||
|
CMake works by generating native makefiles or build projects that can
|
||||||
|
be used in the compiler environment of your choice. The typical
|
||||||
|
workflow starts with:
|
||||||
|
|
||||||
|
mkdir mybuild # Create a directory to hold the build output.
|
||||||
|
cd mybuild
|
||||||
|
cmake ${GTEST_DIR} # Generate native build scripts.
|
||||||
|
|
||||||
|
If you want to build Google Test's samples, you should replace the
|
||||||
|
last command with
|
||||||
|
|
||||||
|
cmake -Dgtest_build_samples=ON ${GTEST_DIR}
|
||||||
|
|
||||||
|
If you are on a *nix system, you should now see a Makefile in the
|
||||||
|
current directory. Just type 'make' to build gtest.
|
||||||
|
|
||||||
|
If you use Windows and have Vistual Studio installed, a gtest.sln file
|
||||||
|
and several .vcproj files will be created. You can then build them
|
||||||
|
using Visual Studio.
|
||||||
|
|
||||||
|
On Mac OS X with Xcode installed, a .xcodeproj file will be generated.
|
||||||
|
|
||||||
|
### Legacy Build Scripts ###
|
||||||
|
|
||||||
|
Before settling on CMake, we have been providing hand-maintained build
|
||||||
|
projects/scripts for Visual Studio, Xcode, and Autotools. While we
|
||||||
|
continue to provide them for convenience, they are not actively
|
||||||
|
maintained any more. We highly recommend that you follow the
|
||||||
|
instructions in the previous two sections to integrate Google Test
|
||||||
|
with your existing build system.
|
||||||
|
|
||||||
|
If you still need to use the legacy build scripts, here's how:
|
||||||
|
|
||||||
|
The msvc\ folder contains two solutions with Visual C++ projects.
|
||||||
|
Open the gtest.sln or gtest-md.sln file using Visual Studio, and you
|
||||||
|
are ready to build Google Test the same way you build any Visual
|
||||||
|
Studio project. Files that have names ending with -md use DLL
|
||||||
|
versions of Microsoft runtime libraries (the /MD or the /MDd compiler
|
||||||
|
option). Files without that suffix use static versions of the runtime
|
||||||
|
libraries (the /MT or the /MTd option). Please note that one must use
|
||||||
|
the same option to compile both gtest and the test code. If you use
|
||||||
|
Visual Studio 2005 or above, we recommend the -md version as /MD is
|
||||||
|
the default for new projects in these versions of Visual Studio.
|
||||||
|
|
||||||
|
On Mac OS X, open the gtest.xcodeproj in the xcode/ folder using
|
||||||
|
Xcode. Build the "gtest" target. The universal binary framework will
|
||||||
|
end up in your selected build directory (selected in the Xcode
|
||||||
|
"Preferences..." -> "Building" pane and defaults to xcode/build).
|
||||||
|
Alternatively, at the command line, enter:
|
||||||
|
|
||||||
|
xcodebuild
|
||||||
|
|
||||||
|
This will build the "Release" configuration of gtest.framework in your
|
||||||
|
default build location. See the "xcodebuild" man page for more
|
||||||
|
information about building different configurations and building in
|
||||||
|
different locations.
|
||||||
|
|
||||||
|
If you wish to use the Google Test Xcode project with Xcode 4.x and
|
||||||
|
above, you need to either:
|
||||||
|
* update the SDK configuration options in xcode/Config/General.xconfig.
|
||||||
|
Comment options SDKROOT, MACOS_DEPLOYMENT_TARGET, and GCC_VERSION. If
|
||||||
|
you choose this route you lose the ability to target earlier versions
|
||||||
|
of MacOS X.
|
||||||
|
* Install an SDK for an earlier version. This doesn't appear to be
|
||||||
|
supported by Apple, but has been reported to work
|
||||||
|
(http://stackoverflow.com/questions/5378518).
|
||||||
|
|
||||||
|
Tweaking Google Test
|
||||||
|
--------------------
|
||||||
|
|
||||||
|
Google Test can be used in diverse environments. The default
|
||||||
|
configuration may not work (or may not work well) out of the box in
|
||||||
|
some environments. However, you can easily tweak Google Test by
|
||||||
|
defining control macros on the compiler command line. Generally,
|
||||||
|
these macros are named like GTEST_XYZ and you define them to either 1
|
||||||
|
or 0 to enable or disable a certain feature.
|
||||||
|
|
||||||
|
We list the most frequently used macros below. For a complete list,
|
||||||
|
see file include/gtest/internal/gtest-port.h.
|
||||||
|
|
||||||
|
### Choosing a TR1 Tuple Library ###
|
||||||
|
|
||||||
|
Some Google Test features require the C++ Technical Report 1 (TR1)
|
||||||
|
tuple library, which is not yet available with all compilers. The
|
||||||
|
good news is that Google Test implements a subset of TR1 tuple that's
|
||||||
|
enough for its own need, and will automatically use this when the
|
||||||
|
compiler doesn't provide TR1 tuple.
|
||||||
|
|
||||||
|
Usually you don't need to care about which tuple library Google Test
|
||||||
|
uses. However, if your project already uses TR1 tuple, you need to
|
||||||
|
tell Google Test to use the same TR1 tuple library the rest of your
|
||||||
|
project uses, or the two tuple implementations will clash. To do
|
||||||
|
that, add
|
||||||
|
|
||||||
|
-DGTEST_USE_OWN_TR1_TUPLE=0
|
||||||
|
|
||||||
|
to the compiler flags while compiling Google Test and your tests. If
|
||||||
|
you want to force Google Test to use its own tuple library, just add
|
||||||
|
|
||||||
|
-DGTEST_USE_OWN_TR1_TUPLE=1
|
||||||
|
|
||||||
|
to the compiler flags instead.
|
||||||
|
|
||||||
|
If you don't want Google Test to use tuple at all, add
|
||||||
|
|
||||||
|
-DGTEST_HAS_TR1_TUPLE=0
|
||||||
|
|
||||||
|
and all features using tuple will be disabled.
|
||||||
|
|
||||||
|
### Multi-threaded Tests ###
|
||||||
|
|
||||||
|
Google Test is thread-safe where the pthread library is available.
|
||||||
|
After #include "gtest/gtest.h", you can check the GTEST_IS_THREADSAFE
|
||||||
|
macro to see whether this is the case (yes if the macro is #defined to
|
||||||
|
1, no if it's undefined.).
|
||||||
|
|
||||||
|
If Google Test doesn't correctly detect whether pthread is available
|
||||||
|
in your environment, you can force it with
|
||||||
|
|
||||||
|
-DGTEST_HAS_PTHREAD=1
|
||||||
|
|
||||||
|
or
|
||||||
|
|
||||||
|
-DGTEST_HAS_PTHREAD=0
|
||||||
|
|
||||||
|
When Google Test uses pthread, you may need to add flags to your
|
||||||
|
compiler and/or linker to select the pthread library, or you'll get
|
||||||
|
link errors. If you use the CMake script or the deprecated Autotools
|
||||||
|
script, this is taken care of for you. If you use your own build
|
||||||
|
script, you'll need to read your compiler and linker's manual to
|
||||||
|
figure out what flags to add.
|
||||||
|
|
||||||
|
### As a Shared Library (DLL) ###
|
||||||
|
|
||||||
|
Google Test is compact, so most users can build and link it as a
|
||||||
|
static library for the simplicity. You can choose to use Google Test
|
||||||
|
as a shared library (known as a DLL on Windows) if you prefer.
|
||||||
|
|
||||||
|
To compile *gtest* as a shared library, add
|
||||||
|
|
||||||
|
-DGTEST_CREATE_SHARED_LIBRARY=1
|
||||||
|
|
||||||
|
to the compiler flags. You'll also need to tell the linker to produce
|
||||||
|
a shared library instead - consult your linker's manual for how to do
|
||||||
|
it.
|
||||||
|
|
||||||
|
To compile your *tests* that use the gtest shared library, add
|
||||||
|
|
||||||
|
-DGTEST_LINKED_AS_SHARED_LIBRARY=1
|
||||||
|
|
||||||
|
to the compiler flags.
|
||||||
|
|
||||||
|
Note: while the above steps aren't technically necessary today when
|
||||||
|
using some compilers (e.g. GCC), they may become necessary in the
|
||||||
|
future, if we decide to improve the speed of loading the library (see
|
||||||
|
http://gcc.gnu.org/wiki/Visibility for details). Therefore you are
|
||||||
|
recommended to always add the above flags when using Google Test as a
|
||||||
|
shared library. Otherwise a future release of Google Test may break
|
||||||
|
your build script.
|
||||||
|
|
||||||
|
### Avoiding Macro Name Clashes ###
|
||||||
|
|
||||||
|
In C++, macros don't obey namespaces. Therefore two libraries that
|
||||||
|
both define a macro of the same name will clash if you #include both
|
||||||
|
definitions. In case a Google Test macro clashes with another
|
||||||
|
library, you can force Google Test to rename its macro to avoid the
|
||||||
|
conflict.
|
||||||
|
|
||||||
|
Specifically, if both Google Test and some other code define macro
|
||||||
|
FOO, you can add
|
||||||
|
|
||||||
|
-DGTEST_DONT_DEFINE_FOO=1
|
||||||
|
|
||||||
|
to the compiler flags to tell Google Test to change the macro's name
|
||||||
|
from FOO to GTEST_FOO. Currently FOO can be FAIL, SUCCEED, or TEST.
|
||||||
|
For example, with -DGTEST_DONT_DEFINE_TEST=1, you'll need to write
|
||||||
|
|
||||||
|
GTEST_TEST(SomeTest, DoesThis) { ... }
|
||||||
|
|
||||||
|
instead of
|
||||||
|
|
||||||
|
TEST(SomeTest, DoesThis) { ... }
|
||||||
|
|
||||||
|
in order to define a test.
|
||||||
|
|
||||||
|
Upgrating from an Earlier Version
|
||||||
|
---------------------------------
|
||||||
|
|
||||||
|
We strive to keep Google Test releases backward compatible.
|
||||||
|
Sometimes, though, we have to make some breaking changes for the
|
||||||
|
users' long-term benefits. This section describes what you'll need to
|
||||||
|
do if you are upgrading from an earlier version of Google Test.
|
||||||
|
|
||||||
|
### Upgrading from 1.3.0 or Earlier ###
|
||||||
|
|
||||||
|
You may need to explicitly enable or disable Google Test's own TR1
|
||||||
|
tuple library. See the instructions in section "Choosing a TR1 Tuple
|
||||||
|
Library".
|
||||||
|
|
||||||
|
### Upgrading from 1.4.0 or Earlier ###
|
||||||
|
|
||||||
|
The Autotools build script (configure + make) is no longer officially
|
||||||
|
supportted. You are encouraged to migrate to your own build system or
|
||||||
|
use CMake. If you still need to use Autotools, you can find
|
||||||
|
instructions in the README file from Google Test 1.4.0.
|
||||||
|
|
||||||
|
On platforms where the pthread library is available, Google Test uses
|
||||||
|
it in order to be thread-safe. See the "Multi-threaded Tests" section
|
||||||
|
for what this means to your build script.
|
||||||
|
|
||||||
|
If you use Microsoft Visual C++ 7.1 with exceptions disabled, Google
|
||||||
|
Test will no longer compile. This should affect very few people, as a
|
||||||
|
large portion of STL (including <string>) doesn't compile in this mode
|
||||||
|
anyway. We decided to stop supporting it in order to greatly simplify
|
||||||
|
Google Test's implementation.
|
||||||
|
|
||||||
|
Developing Google Test
|
||||||
|
----------------------
|
||||||
|
|
||||||
|
This section discusses how to make your own changes to Google Test.
|
||||||
|
|
||||||
|
### Testing Google Test Itself ###
|
||||||
|
|
||||||
|
To make sure your changes work as intended and don't break existing
|
||||||
|
functionality, you'll want to compile and run Google Test's own tests.
|
||||||
|
For that you can use CMake:
|
||||||
|
|
||||||
|
mkdir mybuild
|
||||||
|
cd mybuild
|
||||||
|
cmake -Dgtest_build_tests=ON ${GTEST_DIR}
|
||||||
|
|
||||||
|
Make sure you have Python installed, as some of Google Test's tests
|
||||||
|
are written in Python. If the cmake command complains about not being
|
||||||
|
able to find Python ("Could NOT find PythonInterp (missing:
|
||||||
|
PYTHON_EXECUTABLE)"), try telling it explicitly where your Python
|
||||||
|
executable can be found:
|
||||||
|
|
||||||
|
cmake -DPYTHON_EXECUTABLE=path/to/python -Dgtest_build_tests=ON ${GTEST_DIR}
|
||||||
|
|
||||||
|
Next, you can build Google Test and all of its own tests. On *nix,
|
||||||
|
this is usually done by 'make'. To run the tests, do
|
||||||
|
|
||||||
|
make test
|
||||||
|
|
||||||
|
All tests should pass.
|
||||||
|
|
||||||
|
### Regenerating Source Files ###
|
||||||
|
|
||||||
|
Some of Google Test's source files are generated from templates (not
|
||||||
|
in the C++ sense) using a script. A template file is named FOO.pump,
|
||||||
|
where FOO is the name of the file it will generate. For example, the
|
||||||
|
file include/gtest/internal/gtest-type-util.h.pump is used to generate
|
||||||
|
gtest-type-util.h in the same directory.
|
||||||
|
|
||||||
|
Normally you don't need to worry about regenerating the source files,
|
||||||
|
unless you need to modify them. In that case, you should modify the
|
||||||
|
corresponding .pump files instead and run the pump.py Python script to
|
||||||
|
regenerate them. You can find pump.py in the scripts/ directory.
|
||||||
|
Read the Pump manual [2] for how to use it.
|
||||||
|
|
||||||
|
[2] http://code.google.com/p/googletest/wiki/PumpManual
|
||||||
|
|
||||||
|
### Contributing a Patch ###
|
||||||
|
|
||||||
|
We welcome patches. Please read the Google Test developer's guide [3]
|
||||||
|
for how you can contribute. In particular, make sure you have signed
|
||||||
|
the Contributor License Agreement, or we won't be able to accept the
|
||||||
|
patch.
|
||||||
|
|
||||||
|
[3] http://code.google.com/p/googletest/wiki/GoogleTestDevGuide
|
||||||
|
|
||||||
|
Happy testing!
|
||||||
Vendored
+1198
File diff suppressed because it is too large
Load Diff
+1530
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,69 @@
|
|||||||
|
/* build-aux/config.h.in. Generated from configure.ac by autoheader. */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <dlfcn.h> header file. */
|
||||||
|
#undef HAVE_DLFCN_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <inttypes.h> header file. */
|
||||||
|
#undef HAVE_INTTYPES_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <memory.h> header file. */
|
||||||
|
#undef HAVE_MEMORY_H
|
||||||
|
|
||||||
|
/* Define if you have POSIX threads libraries and header files. */
|
||||||
|
#undef HAVE_PTHREAD
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <stdint.h> header file. */
|
||||||
|
#undef HAVE_STDINT_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <stdlib.h> header file. */
|
||||||
|
#undef HAVE_STDLIB_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <strings.h> header file. */
|
||||||
|
#undef HAVE_STRINGS_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <string.h> header file. */
|
||||||
|
#undef HAVE_STRING_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/stat.h> header file. */
|
||||||
|
#undef HAVE_SYS_STAT_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/types.h> header file. */
|
||||||
|
#undef HAVE_SYS_TYPES_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <unistd.h> header file. */
|
||||||
|
#undef HAVE_UNISTD_H
|
||||||
|
|
||||||
|
/* Define to the sub-directory in which libtool stores uninstalled libraries.
|
||||||
|
*/
|
||||||
|
#undef LT_OBJDIR
|
||||||
|
|
||||||
|
/* Name of package */
|
||||||
|
#undef PACKAGE
|
||||||
|
|
||||||
|
/* Define to the address where bug reports for this package should be sent. */
|
||||||
|
#undef PACKAGE_BUGREPORT
|
||||||
|
|
||||||
|
/* Define to the full name of this package. */
|
||||||
|
#undef PACKAGE_NAME
|
||||||
|
|
||||||
|
/* Define to the full name and version of this package. */
|
||||||
|
#undef PACKAGE_STRING
|
||||||
|
|
||||||
|
/* Define to the one symbol short name of this package. */
|
||||||
|
#undef PACKAGE_TARNAME
|
||||||
|
|
||||||
|
/* Define to the home page for this package. */
|
||||||
|
#undef PACKAGE_URL
|
||||||
|
|
||||||
|
/* Define to the version of this package. */
|
||||||
|
#undef PACKAGE_VERSION
|
||||||
|
|
||||||
|
/* Define to necessary symbol if this constant uses a non-standard name on
|
||||||
|
your system. */
|
||||||
|
#undef PTHREAD_CREATE_JOINABLE
|
||||||
|
|
||||||
|
/* Define to 1 if you have the ANSI C header files. */
|
||||||
|
#undef STDC_HEADERS
|
||||||
|
|
||||||
|
/* Version number of package */
|
||||||
|
#undef VERSION
|
||||||
+1773
File diff suppressed because it is too large
Load Diff
Executable
+688
File diff suppressed because it is too large
Load Diff
Executable
+527
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Executable
+331
@@ -0,0 +1,331 @@
|
|||||||
|
#! /bin/sh
|
||||||
|
# Common stub for a few missing GNU programs while installing.
|
||||||
|
|
||||||
|
scriptversion=2012-01-06.13; # UTC
|
||||||
|
|
||||||
|
# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006,
|
||||||
|
# 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
|
||||||
|
# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
|
||||||
|
|
||||||
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation; either version 2, or (at your option)
|
||||||
|
# any later version.
|
||||||
|
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
# As a special exception to the GNU General Public License, if you
|
||||||
|
# distribute this file as part of a program that contains a
|
||||||
|
# configuration script generated by Autoconf, you may include it under
|
||||||
|
# the same distribution terms that you use for the rest of that program.
|
||||||
|
|
||||||
|
if test $# -eq 0; then
|
||||||
|
echo 1>&2 "Try \`$0 --help' for more information"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
run=:
|
||||||
|
sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
|
||||||
|
sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
|
||||||
|
|
||||||
|
# In the cases where this matters, `missing' is being run in the
|
||||||
|
# srcdir already.
|
||||||
|
if test -f configure.ac; then
|
||||||
|
configure_ac=configure.ac
|
||||||
|
else
|
||||||
|
configure_ac=configure.in
|
||||||
|
fi
|
||||||
|
|
||||||
|
msg="missing on your system"
|
||||||
|
|
||||||
|
case $1 in
|
||||||
|
--run)
|
||||||
|
# Try to run requested program, and just exit if it succeeds.
|
||||||
|
run=
|
||||||
|
shift
|
||||||
|
"$@" && exit 0
|
||||||
|
# Exit code 63 means version mismatch. This often happens
|
||||||
|
# when the user try to use an ancient version of a tool on
|
||||||
|
# a file that requires a minimum version. In this case we
|
||||||
|
# we should proceed has if the program had been absent, or
|
||||||
|
# if --run hadn't been passed.
|
||||||
|
if test $? = 63; then
|
||||||
|
run=:
|
||||||
|
msg="probably too old"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
|
||||||
|
-h|--h|--he|--hel|--help)
|
||||||
|
echo "\
|
||||||
|
$0 [OPTION]... PROGRAM [ARGUMENT]...
|
||||||
|
|
||||||
|
Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
|
||||||
|
error status if there is no known handling for PROGRAM.
|
||||||
|
|
||||||
|
Options:
|
||||||
|
-h, --help display this help and exit
|
||||||
|
-v, --version output version information and exit
|
||||||
|
--run try to run the given command, and emulate it if it fails
|
||||||
|
|
||||||
|
Supported PROGRAM values:
|
||||||
|
aclocal touch file \`aclocal.m4'
|
||||||
|
autoconf touch file \`configure'
|
||||||
|
autoheader touch file \`config.h.in'
|
||||||
|
autom4te touch the output file, or create a stub one
|
||||||
|
automake touch all \`Makefile.in' files
|
||||||
|
bison create \`y.tab.[ch]', if possible, from existing .[ch]
|
||||||
|
flex create \`lex.yy.c', if possible, from existing .c
|
||||||
|
help2man touch the output file
|
||||||
|
lex create \`lex.yy.c', if possible, from existing .c
|
||||||
|
makeinfo touch the output file
|
||||||
|
yacc create \`y.tab.[ch]', if possible, from existing .[ch]
|
||||||
|
|
||||||
|
Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and
|
||||||
|
\`g' are ignored when checking the name.
|
||||||
|
|
||||||
|
Send bug reports to <bug-automake@gnu.org>."
|
||||||
|
exit $?
|
||||||
|
;;
|
||||||
|
|
||||||
|
-v|--v|--ve|--ver|--vers|--versi|--versio|--version)
|
||||||
|
echo "missing $scriptversion (GNU Automake)"
|
||||||
|
exit $?
|
||||||
|
;;
|
||||||
|
|
||||||
|
-*)
|
||||||
|
echo 1>&2 "$0: Unknown \`$1' option"
|
||||||
|
echo 1>&2 "Try \`$0 --help' for more information"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
||||||
|
|
||||||
|
# normalize program name to check for.
|
||||||
|
program=`echo "$1" | sed '
|
||||||
|
s/^gnu-//; t
|
||||||
|
s/^gnu//; t
|
||||||
|
s/^g//; t'`
|
||||||
|
|
||||||
|
# Now exit if we have it, but it failed. Also exit now if we
|
||||||
|
# don't have it and --version was passed (most likely to detect
|
||||||
|
# the program). This is about non-GNU programs, so use $1 not
|
||||||
|
# $program.
|
||||||
|
case $1 in
|
||||||
|
lex*|yacc*)
|
||||||
|
# Not GNU programs, they don't have --version.
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
|
||||||
|
# We have it, but it failed.
|
||||||
|
exit 1
|
||||||
|
elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
|
||||||
|
# Could not run --version or --help. This is probably someone
|
||||||
|
# running `$TOOL --version' or `$TOOL --help' to check whether
|
||||||
|
# $TOOL exists and not knowing $TOOL uses missing.
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# If it does not exist, or fails to run (possibly an outdated version),
|
||||||
|
# try to emulate it.
|
||||||
|
case $program in
|
||||||
|
aclocal*)
|
||||||
|
echo 1>&2 "\
|
||||||
|
WARNING: \`$1' is $msg. You should only need it if
|
||||||
|
you modified \`acinclude.m4' or \`${configure_ac}'. You might want
|
||||||
|
to install the \`Automake' and \`Perl' packages. Grab them from
|
||||||
|
any GNU archive site."
|
||||||
|
touch aclocal.m4
|
||||||
|
;;
|
||||||
|
|
||||||
|
autoconf*)
|
||||||
|
echo 1>&2 "\
|
||||||
|
WARNING: \`$1' is $msg. You should only need it if
|
||||||
|
you modified \`${configure_ac}'. You might want to install the
|
||||||
|
\`Autoconf' and \`GNU m4' packages. Grab them from any GNU
|
||||||
|
archive site."
|
||||||
|
touch configure
|
||||||
|
;;
|
||||||
|
|
||||||
|
autoheader*)
|
||||||
|
echo 1>&2 "\
|
||||||
|
WARNING: \`$1' is $msg. You should only need it if
|
||||||
|
you modified \`acconfig.h' or \`${configure_ac}'. You might want
|
||||||
|
to install the \`Autoconf' and \`GNU m4' packages. Grab them
|
||||||
|
from any GNU archive site."
|
||||||
|
files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
|
||||||
|
test -z "$files" && files="config.h"
|
||||||
|
touch_files=
|
||||||
|
for f in $files; do
|
||||||
|
case $f in
|
||||||
|
*:*) touch_files="$touch_files "`echo "$f" |
|
||||||
|
sed -e 's/^[^:]*://' -e 's/:.*//'`;;
|
||||||
|
*) touch_files="$touch_files $f.in";;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
touch $touch_files
|
||||||
|
;;
|
||||||
|
|
||||||
|
automake*)
|
||||||
|
echo 1>&2 "\
|
||||||
|
WARNING: \`$1' is $msg. You should only need it if
|
||||||
|
you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
|
||||||
|
You might want to install the \`Automake' and \`Perl' packages.
|
||||||
|
Grab them from any GNU archive site."
|
||||||
|
find . -type f -name Makefile.am -print |
|
||||||
|
sed 's/\.am$/.in/' |
|
||||||
|
while read f; do touch "$f"; done
|
||||||
|
;;
|
||||||
|
|
||||||
|
autom4te*)
|
||||||
|
echo 1>&2 "\
|
||||||
|
WARNING: \`$1' is needed, but is $msg.
|
||||||
|
You might have modified some files without having the
|
||||||
|
proper tools for further handling them.
|
||||||
|
You can get \`$1' as part of \`Autoconf' from any GNU
|
||||||
|
archive site."
|
||||||
|
|
||||||
|
file=`echo "$*" | sed -n "$sed_output"`
|
||||||
|
test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
|
||||||
|
if test -f "$file"; then
|
||||||
|
touch $file
|
||||||
|
else
|
||||||
|
test -z "$file" || exec >$file
|
||||||
|
echo "#! /bin/sh"
|
||||||
|
echo "# Created by GNU Automake missing as a replacement of"
|
||||||
|
echo "# $ $@"
|
||||||
|
echo "exit 0"
|
||||||
|
chmod +x $file
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
|
||||||
|
bison*|yacc*)
|
||||||
|
echo 1>&2 "\
|
||||||
|
WARNING: \`$1' $msg. You should only need it if
|
||||||
|
you modified a \`.y' file. You may need the \`Bison' package
|
||||||
|
in order for those modifications to take effect. You can get
|
||||||
|
\`Bison' from any GNU archive site."
|
||||||
|
rm -f y.tab.c y.tab.h
|
||||||
|
if test $# -ne 1; then
|
||||||
|
eval LASTARG=\${$#}
|
||||||
|
case $LASTARG in
|
||||||
|
*.y)
|
||||||
|
SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
|
||||||
|
if test -f "$SRCFILE"; then
|
||||||
|
cp "$SRCFILE" y.tab.c
|
||||||
|
fi
|
||||||
|
SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
|
||||||
|
if test -f "$SRCFILE"; then
|
||||||
|
cp "$SRCFILE" y.tab.h
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
if test ! -f y.tab.h; then
|
||||||
|
echo >y.tab.h
|
||||||
|
fi
|
||||||
|
if test ! -f y.tab.c; then
|
||||||
|
echo 'main() { return 0; }' >y.tab.c
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
|
||||||
|
lex*|flex*)
|
||||||
|
echo 1>&2 "\
|
||||||
|
WARNING: \`$1' is $msg. You should only need it if
|
||||||
|
you modified a \`.l' file. You may need the \`Flex' package
|
||||||
|
in order for those modifications to take effect. You can get
|
||||||
|
\`Flex' from any GNU archive site."
|
||||||
|
rm -f lex.yy.c
|
||||||
|
if test $# -ne 1; then
|
||||||
|
eval LASTARG=\${$#}
|
||||||
|
case $LASTARG in
|
||||||
|
*.l)
|
||||||
|
SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
|
||||||
|
if test -f "$SRCFILE"; then
|
||||||
|
cp "$SRCFILE" lex.yy.c
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
if test ! -f lex.yy.c; then
|
||||||
|
echo 'main() { return 0; }' >lex.yy.c
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
|
||||||
|
help2man*)
|
||||||
|
echo 1>&2 "\
|
||||||
|
WARNING: \`$1' is $msg. You should only need it if
|
||||||
|
you modified a dependency of a manual page. You may need the
|
||||||
|
\`Help2man' package in order for those modifications to take
|
||||||
|
effect. You can get \`Help2man' from any GNU archive site."
|
||||||
|
|
||||||
|
file=`echo "$*" | sed -n "$sed_output"`
|
||||||
|
test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
|
||||||
|
if test -f "$file"; then
|
||||||
|
touch $file
|
||||||
|
else
|
||||||
|
test -z "$file" || exec >$file
|
||||||
|
echo ".ab help2man is required to generate this page"
|
||||||
|
exit $?
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
|
||||||
|
makeinfo*)
|
||||||
|
echo 1>&2 "\
|
||||||
|
WARNING: \`$1' is $msg. You should only need it if
|
||||||
|
you modified a \`.texi' or \`.texinfo' file, or any other file
|
||||||
|
indirectly affecting the aspect of the manual. The spurious
|
||||||
|
call might also be the consequence of using a buggy \`make' (AIX,
|
||||||
|
DU, IRIX). You might want to install the \`Texinfo' package or
|
||||||
|
the \`GNU make' package. Grab either from any GNU archive site."
|
||||||
|
# The file to touch is that specified with -o ...
|
||||||
|
file=`echo "$*" | sed -n "$sed_output"`
|
||||||
|
test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
|
||||||
|
if test -z "$file"; then
|
||||||
|
# ... or it is the one specified with @setfilename ...
|
||||||
|
infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
|
||||||
|
file=`sed -n '
|
||||||
|
/^@setfilename/{
|
||||||
|
s/.* \([^ ]*\) *$/\1/
|
||||||
|
p
|
||||||
|
q
|
||||||
|
}' $infile`
|
||||||
|
# ... or it is derived from the source name (dir/f.texi becomes f.info)
|
||||||
|
test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
|
||||||
|
fi
|
||||||
|
# If the file does not exist, the user really needs makeinfo;
|
||||||
|
# let's fail without touching anything.
|
||||||
|
test -f $file || exit 1
|
||||||
|
touch $file
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
echo 1>&2 "\
|
||||||
|
WARNING: \`$1' is needed, and is $msg.
|
||||||
|
You might have modified some files without having the
|
||||||
|
proper tools for further handling them. Check the \`README' file,
|
||||||
|
it often tells you about the needed prerequisites for installing
|
||||||
|
this package. You may also peek at any GNU archive site, in case
|
||||||
|
some other package would contain this missing \`$1' program."
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
|
||||||
|
# Local variables:
|
||||||
|
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||||
|
# time-stamp-start: "scriptversion="
|
||||||
|
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||||
|
# time-stamp-time-zone: "UTC"
|
||||||
|
# time-stamp-end: "; # UTC"
|
||||||
|
# End:
|
||||||
@@ -0,0 +1,227 @@
|
|||||||
|
# Defines functions and macros useful for building Google Test and
|
||||||
|
# Google Mock.
|
||||||
|
#
|
||||||
|
# Note:
|
||||||
|
#
|
||||||
|
# - This file will be run twice when building Google Mock (once via
|
||||||
|
# Google Test's CMakeLists.txt, and once via Google Mock's).
|
||||||
|
# Therefore it shouldn't have any side effects other than defining
|
||||||
|
# the functions and macros.
|
||||||
|
#
|
||||||
|
# - The functions/macros defined in this file may depend on Google
|
||||||
|
# Test and Google Mock's option() definitions, and thus must be
|
||||||
|
# called *after* the options have been defined.
|
||||||
|
|
||||||
|
# Tweaks CMake's default compiler/linker settings to suit Google Test's needs.
|
||||||
|
#
|
||||||
|
# This must be a macro(), as inside a function string() can only
|
||||||
|
# update variables in the function scope.
|
||||||
|
macro(fix_default_compiler_settings_)
|
||||||
|
if (MSVC)
|
||||||
|
# For MSVC, CMake sets certain flags to defaults we want to override.
|
||||||
|
# This replacement code is taken from sample in the CMake Wiki at
|
||||||
|
# http://www.cmake.org/Wiki/CMake_FAQ#Dynamic_Replace.
|
||||||
|
foreach (flag_var
|
||||||
|
CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE
|
||||||
|
CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO)
|
||||||
|
if (NOT BUILD_SHARED_LIBS AND NOT gtest_force_shared_crt)
|
||||||
|
# When Google Test is built as a shared library, it should also use
|
||||||
|
# shared runtime libraries. Otherwise, it may end up with multiple
|
||||||
|
# copies of runtime library data in different modules, resulting in
|
||||||
|
# hard-to-find crashes. When it is built as a static library, it is
|
||||||
|
# preferable to use CRT as static libraries, as we don't have to rely
|
||||||
|
# on CRT DLLs being available. CMake always defaults to using shared
|
||||||
|
# CRT libraries, so we override that default here.
|
||||||
|
string(REPLACE "/MD" "-MT" ${flag_var} "${${flag_var}}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# We prefer more strict warning checking for building Google Test.
|
||||||
|
# Replaces /W3 with /W4 in defaults.
|
||||||
|
string(REPLACE "/W3" "-W4" ${flag_var} "${${flag_var}}")
|
||||||
|
endforeach()
|
||||||
|
endif()
|
||||||
|
endmacro()
|
||||||
|
|
||||||
|
# Defines the compiler/linker flags used to build Google Test and
|
||||||
|
# Google Mock. You can tweak these definitions to suit your need. A
|
||||||
|
# variable's value is empty before it's explicitly assigned to.
|
||||||
|
macro(config_compiler_and_linker)
|
||||||
|
if (NOT gtest_disable_pthreads)
|
||||||
|
# Defines CMAKE_USE_PTHREADS_INIT and CMAKE_THREAD_LIBS_INIT.
|
||||||
|
find_package(Threads)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
fix_default_compiler_settings_()
|
||||||
|
if (MSVC)
|
||||||
|
# Newlines inside flags variables break CMake's NMake generator.
|
||||||
|
# TODO(vladl@google.com): Add -RTCs and -RTCu to debug builds.
|
||||||
|
set(cxx_base_flags "-GS -W4 -WX -wd4127 -wd4251 -wd4275 -nologo -J -Zi")
|
||||||
|
if (MSVC_VERSION LESS 1400)
|
||||||
|
# Suppress spurious warnings MSVC 7.1 sometimes issues.
|
||||||
|
# Forcing value to bool.
|
||||||
|
set(cxx_base_flags "${cxx_base_flags} -wd4800")
|
||||||
|
# Copy constructor and assignment operator could not be generated.
|
||||||
|
set(cxx_base_flags "${cxx_base_flags} -wd4511 -wd4512")
|
||||||
|
# Compatibility warnings not applicable to Google Test.
|
||||||
|
# Resolved overload was found by argument-dependent lookup.
|
||||||
|
set(cxx_base_flags "${cxx_base_flags} -wd4675")
|
||||||
|
endif()
|
||||||
|
set(cxx_base_flags "${cxx_base_flags} -D_UNICODE -DUNICODE -DWIN32 -D_WIN32")
|
||||||
|
set(cxx_base_flags "${cxx_base_flags} -DSTRICT -DWIN32_LEAN_AND_MEAN")
|
||||||
|
set(cxx_exception_flags "-EHsc -D_HAS_EXCEPTIONS=1")
|
||||||
|
set(cxx_no_exception_flags "-D_HAS_EXCEPTIONS=0")
|
||||||
|
set(cxx_no_rtti_flags "-GR-")
|
||||||
|
elseif (CMAKE_COMPILER_IS_GNUCXX)
|
||||||
|
set(cxx_base_flags "-Wall -Wshadow")
|
||||||
|
set(cxx_exception_flags "-fexceptions")
|
||||||
|
set(cxx_no_exception_flags "-fno-exceptions")
|
||||||
|
# Until version 4.3.2, GCC doesn't define a macro to indicate
|
||||||
|
# whether RTTI is enabled. Therefore we define GTEST_HAS_RTTI
|
||||||
|
# explicitly.
|
||||||
|
set(cxx_no_rtti_flags "-fno-rtti -DGTEST_HAS_RTTI=0")
|
||||||
|
set(cxx_strict_flags
|
||||||
|
"-Wextra -Wno-unused-parameter -Wno-missing-field-initializers")
|
||||||
|
elseif (CMAKE_CXX_COMPILER_ID STREQUAL "SunPro")
|
||||||
|
set(cxx_exception_flags "-features=except")
|
||||||
|
# Sun Pro doesn't provide macros to indicate whether exceptions and
|
||||||
|
# RTTI are enabled, so we define GTEST_HAS_* explicitly.
|
||||||
|
set(cxx_no_exception_flags "-features=no%except -DGTEST_HAS_EXCEPTIONS=0")
|
||||||
|
set(cxx_no_rtti_flags "-features=no%rtti -DGTEST_HAS_RTTI=0")
|
||||||
|
elseif (CMAKE_CXX_COMPILER_ID STREQUAL "VisualAge" OR
|
||||||
|
CMAKE_CXX_COMPILER_ID STREQUAL "XL")
|
||||||
|
# CMake 2.8 changes Visual Age's compiler ID to "XL".
|
||||||
|
set(cxx_exception_flags "-qeh")
|
||||||
|
set(cxx_no_exception_flags "-qnoeh")
|
||||||
|
# Until version 9.0, Visual Age doesn't define a macro to indicate
|
||||||
|
# whether RTTI is enabled. Therefore we define GTEST_HAS_RTTI
|
||||||
|
# explicitly.
|
||||||
|
set(cxx_no_rtti_flags "-qnortti -DGTEST_HAS_RTTI=0")
|
||||||
|
elseif (CMAKE_CXX_COMPILER_ID STREQUAL "HP")
|
||||||
|
set(cxx_base_flags "-AA -mt")
|
||||||
|
set(cxx_exception_flags "-DGTEST_HAS_EXCEPTIONS=1")
|
||||||
|
set(cxx_no_exception_flags "+noeh -DGTEST_HAS_EXCEPTIONS=0")
|
||||||
|
# RTTI can not be disabled in HP aCC compiler.
|
||||||
|
set(cxx_no_rtti_flags "")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if (CMAKE_USE_PTHREADS_INIT) # The pthreads library is available and allowed.
|
||||||
|
set(cxx_base_flags "${cxx_base_flags} -DGTEST_HAS_PTHREAD=1")
|
||||||
|
else()
|
||||||
|
set(cxx_base_flags "${cxx_base_flags} -DGTEST_HAS_PTHREAD=0")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# For building gtest's own tests and samples.
|
||||||
|
set(cxx_exception "${CMAKE_CXX_FLAGS} ${cxx_base_flags} ${cxx_exception_flags}")
|
||||||
|
set(cxx_no_exception
|
||||||
|
"${CMAKE_CXX_FLAGS} ${cxx_base_flags} ${cxx_no_exception_flags}")
|
||||||
|
set(cxx_default "${cxx_exception}")
|
||||||
|
set(cxx_no_rtti "${cxx_default} ${cxx_no_rtti_flags}")
|
||||||
|
set(cxx_use_own_tuple "${cxx_default} -DGTEST_USE_OWN_TR1_TUPLE=1")
|
||||||
|
|
||||||
|
# For building the gtest libraries.
|
||||||
|
set(cxx_strict "${cxx_default} ${cxx_strict_flags}")
|
||||||
|
endmacro()
|
||||||
|
|
||||||
|
# Defines the gtest & gtest_main libraries. User tests should link
|
||||||
|
# with one of them.
|
||||||
|
function(cxx_library_with_type name type cxx_flags)
|
||||||
|
# type can be either STATIC or SHARED to denote a static or shared library.
|
||||||
|
# ARGN refers to additional arguments after 'cxx_flags'.
|
||||||
|
add_library(${name} ${type} ${ARGN})
|
||||||
|
set_target_properties(${name}
|
||||||
|
PROPERTIES
|
||||||
|
COMPILE_FLAGS "${cxx_flags}")
|
||||||
|
if (BUILD_SHARED_LIBS OR type STREQUAL "SHARED")
|
||||||
|
set_target_properties(${name}
|
||||||
|
PROPERTIES
|
||||||
|
COMPILE_DEFINITIONS "GTEST_CREATE_SHARED_LIBRARY=1")
|
||||||
|
endif()
|
||||||
|
if (CMAKE_USE_PTHREADS_INIT)
|
||||||
|
target_link_libraries(${name} ${CMAKE_THREAD_LIBS_INIT})
|
||||||
|
endif()
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
########################################################################
|
||||||
|
#
|
||||||
|
# Helper functions for creating build targets.
|
||||||
|
|
||||||
|
function(cxx_shared_library name cxx_flags)
|
||||||
|
cxx_library_with_type(${name} SHARED "${cxx_flags}" ${ARGN})
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
function(cxx_library name cxx_flags)
|
||||||
|
cxx_library_with_type(${name} "" "${cxx_flags}" ${ARGN})
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
# cxx_executable_with_flags(name cxx_flags libs srcs...)
|
||||||
|
#
|
||||||
|
# creates a named C++ executable that depends on the given libraries and
|
||||||
|
# is built from the given source files with the given compiler flags.
|
||||||
|
function(cxx_executable_with_flags name cxx_flags libs)
|
||||||
|
add_executable(${name} ${ARGN})
|
||||||
|
if (cxx_flags)
|
||||||
|
set_target_properties(${name}
|
||||||
|
PROPERTIES
|
||||||
|
COMPILE_FLAGS "${cxx_flags}")
|
||||||
|
endif()
|
||||||
|
if (BUILD_SHARED_LIBS)
|
||||||
|
set_target_properties(${name}
|
||||||
|
PROPERTIES
|
||||||
|
COMPILE_DEFINITIONS "GTEST_LINKED_AS_SHARED_LIBRARY=1")
|
||||||
|
endif()
|
||||||
|
# To support mixing linking in static and dynamic libraries, link each
|
||||||
|
# library in with an extra call to target_link_libraries.
|
||||||
|
foreach (lib "${libs}")
|
||||||
|
target_link_libraries(${name} ${lib})
|
||||||
|
endforeach()
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
# cxx_executable(name dir lib srcs...)
|
||||||
|
#
|
||||||
|
# creates a named target that depends on the given libs and is built
|
||||||
|
# from the given source files. dir/name.cc is implicitly included in
|
||||||
|
# the source file list.
|
||||||
|
function(cxx_executable name dir libs)
|
||||||
|
cxx_executable_with_flags(
|
||||||
|
${name} "${cxx_default}" "${libs}" "${dir}/${name}.cc" ${ARGN})
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
# Sets PYTHONINTERP_FOUND and PYTHON_EXECUTABLE.
|
||||||
|
find_package(PythonInterp)
|
||||||
|
|
||||||
|
# cxx_test_with_flags(name cxx_flags libs srcs...)
|
||||||
|
#
|
||||||
|
# creates a named C++ test that depends on the given libs and is built
|
||||||
|
# from the given source files with the given compiler flags.
|
||||||
|
function(cxx_test_with_flags name cxx_flags libs)
|
||||||
|
cxx_executable_with_flags(${name} "${cxx_flags}" "${libs}" ${ARGN})
|
||||||
|
add_test(${name} ${name})
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
# cxx_test(name libs srcs...)
|
||||||
|
#
|
||||||
|
# creates a named test target that depends on the given libs and is
|
||||||
|
# built from the given source files. Unlike cxx_test_with_flags,
|
||||||
|
# test/name.cc is already implicitly included in the source file list.
|
||||||
|
function(cxx_test name libs)
|
||||||
|
cxx_test_with_flags("${name}" "${cxx_default}" "${libs}"
|
||||||
|
"test/${name}.cc" ${ARGN})
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
# py_test(name)
|
||||||
|
#
|
||||||
|
# creates a Python test with the given name whose main module is in
|
||||||
|
# test/name.py. It does nothing if Python is not installed.
|
||||||
|
function(py_test name)
|
||||||
|
# We are not supporting Python tests on Linux yet as they consider
|
||||||
|
# all Linux environments to be google3 and try to use google3 features.
|
||||||
|
if (PYTHONINTERP_FOUND)
|
||||||
|
# ${CMAKE_BINARY_DIR} is known at configuration time, so we can
|
||||||
|
# directly bind it from cmake. ${CTEST_CONFIGURATION_TYPE} is known
|
||||||
|
# only at ctest runtime (by calling ctest -c <Configuration>), so
|
||||||
|
# we have to escape $ to delay variable substitution here.
|
||||||
|
add_test(${name}
|
||||||
|
${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/test/${name}.py
|
||||||
|
--build_dir=${CMAKE_CURRENT_BINARY_DIR}/\${CTEST_CONFIGURATION_TYPE})
|
||||||
|
endif()
|
||||||
|
endfunction()
|
||||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,54 @@
|
|||||||
|
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<PropertyGroup>
|
||||||
|
<ProjectGuid>{c1d923e0-6cba-4332-9b6f-3420acbf5091}</ProjectGuid>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemGroup />
|
||||||
|
<ItemGroup>
|
||||||
|
<Projects Include="gtest.cbproj" />
|
||||||
|
<Projects Include="gtest_main.cbproj" />
|
||||||
|
<Projects Include="gtest_unittest.cbproj" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ProjectExtensions>
|
||||||
|
<Borland.Personality>Default.Personality</Borland.Personality>
|
||||||
|
<Borland.ProjectType />
|
||||||
|
<BorlandProject>
|
||||||
|
<BorlandProject xmlns=""><Default.Personality></Default.Personality></BorlandProject></BorlandProject>
|
||||||
|
</ProjectExtensions>
|
||||||
|
<Target Name="gtest">
|
||||||
|
<MSBuild Projects="gtest.cbproj" Targets="" />
|
||||||
|
</Target>
|
||||||
|
<Target Name="gtest:Clean">
|
||||||
|
<MSBuild Projects="gtest.cbproj" Targets="Clean" />
|
||||||
|
</Target>
|
||||||
|
<Target Name="gtest:Make">
|
||||||
|
<MSBuild Projects="gtest.cbproj" Targets="Make" />
|
||||||
|
</Target>
|
||||||
|
<Target Name="gtest_main">
|
||||||
|
<MSBuild Projects="gtest_main.cbproj" Targets="" />
|
||||||
|
</Target>
|
||||||
|
<Target Name="gtest_main:Clean">
|
||||||
|
<MSBuild Projects="gtest_main.cbproj" Targets="Clean" />
|
||||||
|
</Target>
|
||||||
|
<Target Name="gtest_main:Make">
|
||||||
|
<MSBuild Projects="gtest_main.cbproj" Targets="Make" />
|
||||||
|
</Target>
|
||||||
|
<Target Name="gtest_unittest">
|
||||||
|
<MSBuild Projects="gtest_unittest.cbproj" Targets="" />
|
||||||
|
</Target>
|
||||||
|
<Target Name="gtest_unittest:Clean">
|
||||||
|
<MSBuild Projects="gtest_unittest.cbproj" Targets="Clean" />
|
||||||
|
</Target>
|
||||||
|
<Target Name="gtest_unittest:Make">
|
||||||
|
<MSBuild Projects="gtest_unittest.cbproj" Targets="Make" />
|
||||||
|
</Target>
|
||||||
|
<Target Name="Build">
|
||||||
|
<CallTarget Targets="gtest;gtest_main;gtest_unittest" />
|
||||||
|
</Target>
|
||||||
|
<Target Name="Clean">
|
||||||
|
<CallTarget Targets="gtest:Clean;gtest_main:Clean;gtest_unittest:Clean" />
|
||||||
|
</Target>
|
||||||
|
<Target Name="Make">
|
||||||
|
<CallTarget Targets="gtest:Make;gtest_main:Make;gtest_unittest:Make" />
|
||||||
|
</Target>
|
||||||
|
<Import Condition="Exists('$(MSBuildBinPath)\Borland.Group.Targets')" Project="$(MSBuildBinPath)\Borland.Group.Targets" />
|
||||||
|
</Project>
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
// Copyright 2009, 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.
|
||||||
|
//
|
||||||
|
// Author: Josh Kelley (joshkel@gmail.com)
|
||||||
|
//
|
||||||
|
// Google C++ Testing Framework (Google Test)
|
||||||
|
//
|
||||||
|
// C++Builder's IDE cannot build a static library from files with hyphens
|
||||||
|
// in their name. See http://qc.codegear.com/wc/qcmain.aspx?d=70977 .
|
||||||
|
// This file serves as a workaround.
|
||||||
|
|
||||||
|
#include "src/gtest-all.cc"
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user