Skip to content

Commit

Permalink
Upgrade googletest from 1.7.0 to 1.8.x (2019-01-30)
Browse files Browse the repository at this point in the history
  • Loading branch information
uklotzde committed Jan 12, 2020
1 parent 4e8bb5d commit 998ee91
Show file tree
Hide file tree
Showing 545 changed files with 38,141 additions and 313,829 deletions.
94 changes: 20 additions & 74 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -765,7 +765,7 @@ if(WIN32)
target_link_libraries(mixxx-lib PUBLIC shell32)

if(MSVC)
if(NOT STATIC_DEPS OR DEBUG)
if(NOT STATIC_DEPS OR CMAKE_BUILD_TYPE STREQUAL "Debug")
target_link_options(mixxx-lib PUBLIC /nodefaultlib:LIBCMT.lib /nodefaultlib:LIBCMTd.lib)
endif()
target_link_options(mixxx-lib PUBLIC /entry:mainCRTStartup)
Expand Down Expand Up @@ -880,6 +880,20 @@ include(CPack)
#
# Tests
#

# CMake + googletest: https://crascit.com/2015/07/25/cmake-gtest/

# Prevent GoogleTest from overriding our compiler/linker options
# when building with Visual Studio
set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)

# Add googletest directly to our build. This adds the following targets:
# gtest, gtest_main, gmock and gmock_main
add_subdirectory(
"${CMAKE_CURRENT_SOURCE_DIR}/lib/googletest-1.8.x"
"${CMAKE_CURRENT_BINARY_DIR}/lib/googletest-1.8.x"
)

add_executable(mixxx-test
src/test/analyserwaveformtest.cpp
src/test/analyzersilence_test.cpp
Expand Down Expand Up @@ -965,69 +979,7 @@ add_executable(mixxx-test
src/test/wwidgetstack_test.cpp
)
set_target_properties(mixxx-test PROPERTIES AUTOMOC ON)
target_link_libraries(mixxx-test PUBLIC mixxx-lib)

set(GTEST_CMAKE_ARGS "")
set(GMOCK_CMAKE_ARGS "")
if(MSVC)
# Since Visual Studio 17 15.5 (Tools Update 2), the use of std::tr1 has
# been deprecated and throws a warning. If /W3 is used, this causes an
# error. This suppresses the warning/error until we pull in the fixes from
# upstream.
# See this for details: https://github.com/google/googletest/issues/1111
set(GTEST_CMAKE_ARGS "-DCMAKE_CXX_FLAGS=/D_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING")
set(GMOCK_CMAKE_ARGS "-DCMAKE_CXX_FLAGS=/D_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING")

# Use shared CRT when linking gtest to prevent error LNK2038: mismatch
# detected for 'RuntimeLibrary': value 'MT_StaticRelease' doesn't match value
# 'MD_DynamicRelease'
set(GTEST_CMAKE_ARGS ${GTEST_CMAKE_ARGS} "-Dgtest_force_shared_crt=ON")
set(GMOCK_CMAKE_ARGS ${GMOCK_CMAKE_ARGS} "-Dgtest_force_shared_crt=ON")

# Work around the Release/Debug subdirectories on Windows
foreach(OUTPUT_CONFIG ${CMAKE_CONFIGURATION_TYPES})
string(TOUPPER "${OUTPUT_CONFIG}" OUTPUT_CONFIG)
set(GTEST_CMAKE_ARGS ${GTEST_CMAKE_ARGS} "-DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_${OUTPUT_CONFIG}=${CMAKE_CURRENT_BINARY_DIR}/lib/gtest-1.7.0")
set(GMOCK_CMAKE_ARGS ${GMOCK_CMAKE_ARGS} "-DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_${OUTPUT_CONFIG}=${CMAKE_CURRENT_BINARY_DIR}/lib/gmock-1.7.0")
endforeach()
elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU"
OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
set(GMOCK_CMAKE_ARGS ${GMOCK_CMAKE_ARGS} "-DCMAKE_CXX_FLAGS=-Wno-deprecated-copy")
endif()

# gtest
ExternalProject_Add(mixxx-gtest
SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/lib/gtest-1.7.0"
BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/lib/gtest-1.7.0"
INSTALL_COMMAND ""
CMAKE_ARGS "-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}" "${GTEST_CMAKE_ARGS}"
BUILD_BYPRODUCTS "${CMAKE_CURRENT_BINARY_DIR}/lib/gtest-1.7.0/${CMAKE_STATIC_LIBRARY_PREFIX}gtest${CMAKE_STATIC_LIBRARY_SUFFIX}"
)
set_target_properties(mixxx-gtest PROPERTIES EXCLUDE_FROM_ALL TRUE)
add_dependencies(mixxx-test mixxx-gtest)
target_include_directories(mixxx-test SYSTEM PUBLIC
"${CMAKE_CURRENT_SOURCE_DIR}/lib/gtest-1.7.0/include"
)
target_link_libraries(mixxx-test PUBLIC
"${CMAKE_CURRENT_BINARY_DIR}/lib/gtest-1.7.0/${CMAKE_STATIC_LIBRARY_PREFIX}gtest${CMAKE_STATIC_LIBRARY_SUFFIX}"
)

# gmock
ExternalProject_Add(mixxx-gmock
SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/lib/gmock-1.7.0"
BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/lib/gmock-1.7.0"
INSTALL_COMMAND ""
CMAKE_ARGS "-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}" "${GMOCK_CMAKE_ARGS}"
BUILD_BYPRODUCTS "${CMAKE_CURRENT_BINARY_DIR}/lib/gmock-1.7.0/${CMAKE_STATIC_LIBRARY_PREFIX}gmock${CMAKE_STATIC_LIBRARY_SUFFIX}"
)
set_target_properties(mixxx-gmock PROPERTIES EXCLUDE_FROM_ALL TRUE)
add_dependencies(mixxx-test mixxx-gmock)
target_include_directories(mixxx-test SYSTEM PUBLIC
"${CMAKE_CURRENT_SOURCE_DIR}/lib/gmock-1.7.0/include"
)
target_link_libraries(mixxx-test PUBLIC
"${CMAKE_CURRENT_BINARY_DIR}/lib/gmock-1.7.0/${CMAKE_STATIC_LIBRARY_PREFIX}gmock${CMAKE_STATIC_LIBRARY_SUFFIX}"
)
target_link_libraries(mixxx-test PUBLIC mixxx-lib gtest gmock)

# Benchmark
add_library(gbenchmark STATIC EXCLUDE_FROM_ALL
Expand Down Expand Up @@ -1230,16 +1182,10 @@ endif()
add_library(FpClassify STATIC EXCLUDE_FROM_ALL src/util/fpclassify.cpp)
target_link_libraries(mixxx-lib PUBLIC FpClassify)

# gtest
target_include_directories(mixxx-lib SYSTEM PUBLIC lib/gtest-1.7.0/include)
if(MSVC)
# Since Visual Studio 17 15.5 (Tools Update 2), the use of std::tr1 has
# been deprecated and throws a warning. If /W3 is used, this causes an
# error. This suppresses the warning/error until we pull in the fixes from
# upstream.
# See this for details: https://github.com/google/googletest/issues/1111
target_compile_definitions(mixxx-lib PUBLIC _SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING)
endif()
# googletest
# Required to use the macro FRIEND_TEST from <gtest/gtest_prod.h>
# in production code
target_include_directories(mixxx-lib SYSTEM PUBLIC "${gtest_SOURCE_DIR}/include")

# LAME
find_package(LAME REQUIRED)
Expand Down
8 changes: 4 additions & 4 deletions SConscript
Original file line number Diff line number Diff line change
Expand Up @@ -107,12 +107,12 @@ def define_test_targets(default=False):
test_files = Glob('src/test/*.cpp', strings=True)
test_env = env.Clone()

test_env.Append(CPPPATH="lib/gtest-1.7.0/include")
test_env.Append(LIBPATH="lib/gtest-1.7.0")
test_env.Append(CPPPATH="lib/googletest-1.8.x/googletest/include")
test_env.Append(LIBPATH="lib/googletest-1.8.x/googletest")
test_env.Append(LIBS=['gtest'])

test_env.Append(CPPPATH="lib/gmock-1.7.0/include")
test_env.Append(LIBPATH="lib/gmock-1.7.0")
test_env.Append(CPPPATH="lib/googletest-1.8.x/googlemock/include")
test_env.Append(LIBPATH="lib/googletest-1.8.x/googlemock")
test_env.Append(LIBS=['gmock'])

test_env.Append(CPPPATH="lib/benchmark/include")
Expand Down
2 changes: 1 addition & 1 deletion build/depends.py
Original file line number Diff line number Diff line change
Expand Up @@ -450,7 +450,7 @@ def configure(self, build, conf):

class TestHeaders(Dependence):
def configure(self, build, conf):
build.env.Append(CPPPATH="#lib/gtest-1.7.0/include")
build.env.Append(CPPPATH="#lib/googletest-1.8.x/googletest/include")

class FidLib(Dependence):
def sources(self, build):
Expand Down
8 changes: 4 additions & 4 deletions build/features.py
Original file line number Diff line number Diff line change
Expand Up @@ -655,17 +655,17 @@ def sources(self, build):
test_env.Append(CCFLAGS='-pthread')
test_env.Append(LINKFLAGS='-pthread')

test_env.Append(CPPPATH="#lib/gtest-1.7.0/include")
gtest_dir = test_env.Dir("lib/gtest-1.7.0")
test_env.Append(CPPPATH="#lib/googletest-1.8.x/googletest/include")
gtest_dir = test_env.Dir("lib/googletest-1.8.x/googletest")

env = test_env
SCons.Export('env')
SCons.Export('build')
env.SConscript(env.File('SConscript', gtest_dir))

# build and configure gmock
test_env.Append(CPPPATH="#lib/gmock-1.7.0/include")
gmock_dir = test_env.Dir("lib/gmock-1.7.0")
test_env.Append(CPPPATH="#lib/googletest-1.8.x/googlemock/include")
gmock_dir = test_env.Dir("lib/googletest-1.8.x/googlemock")
env.SConscript(env.File('SConscript', gmock_dir))

# Build the benchmark library
Expand Down
Loading

0 comments on commit 998ee91

Please sign in to comment.