CMake: use gtest and gmock targets
Bug: b/145758253
Bug: b/152606052
Change-Id: I826225ed393ed324301555ebaea14947997632cf
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/43289
Reviewed-by: Ben Clayton <bclayton@google.com>
Reviewed-by: Nicolas Capens <nicolascapens@google.com>
Tested-by: Antonio Maiorano <amaiorano@google.com>
diff --git a/CMakeLists.txt b/CMakeLists.txt
index f309bbc..bd9c5b2 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -615,6 +615,18 @@
endif()
###########################################################
+# gtest and gmock
+###########################################################
+if(SWIFTSHADER_BUILD_TESTS)
+ # For Win32, force gtest to match our CRT (shared)
+ set(gtest_force_shared_crt TRUE CACHE BOOL "" FORCE)
+ add_subdirectory(third_party/googletest EXCLUDE_FROM_ALL)
+ # gtest finds python, which picks python 2 first, if present.
+ # We need to undo this so that SPIR-V can later find python3.
+ unset(PYTHON_EXECUTABLE CACHE)
+endif()
+
+###########################################################
# Include Directories
###########################################################
@@ -984,7 +996,7 @@
# This variable is also used by SPIRV-Tools to locate SPIRV-Headers
set(SPIRV-Headers_SOURCE_DIR "${THIRD_PARTY_DIR}/SPIRV-Headers")
list(APPEND VULKAN_INCLUDE_DIR "${SPIRV-Headers_SOURCE_DIR}/include")
-
+ set(SPIRV_SKIP_TESTS TRUE CACHE BOOL "" FORCE)
add_subdirectory(third_party/SPIRV-Tools)
set_target_properties(core_tables PROPERTIES FOLDER "SPIRV-Tools build")
@@ -1097,33 +1109,22 @@
if(SWIFTSHADER_BUILD_TESTS)
set(REACTOR_UNIT_TESTS_LIST
${SOURCE_DIR}/Reactor/ReactorUnitTests.cpp
- ${THIRD_PARTY_DIR}/googletest/googletest/src/gtest-all.cc
- )
-
- set(REACTOR_UNIT_TESTS_INCLUDE_DIR
- ${THIRD_PARTY_DIR}/googletest/googletest/include
- ${THIRD_PARTY_DIR}/googletest/googletest/
)
add_executable(ReactorUnitTests ${REACTOR_UNIT_TESTS_LIST})
set_target_properties(ReactorUnitTests PROPERTIES
- INCLUDE_DIRECTORIES "${REACTOR_UNIT_TESTS_INCLUDE_DIR}"
COMPILE_OPTIONS "${SWIFTSHADER_COMPILE_OPTIONS};${WARNINGS_AS_ERRORS}"
LINK_FLAGS "${SWIFTSHADER_LINK_FLAGS}"
FOLDER "Tests"
)
- target_link_libraries(ReactorUnitTests ${Reactor} ${OS_LIBS})
+ target_link_libraries(ReactorUnitTests ${Reactor} ${OS_LIBS} gtest)
set(GLES_UNITTESTS_LIST
${TESTS_DIR}/GLESUnitTests/main.cpp
${TESTS_DIR}/GLESUnitTests/unittests.cpp
- ${THIRD_PARTY_DIR}/googletest/googletest/src/gtest-all.cc
)
set(GLES_UNITTESTS_INCLUDE_DIR
- ${THIRD_PARTY_DIR}/googletest/googletest/include/
- ${THIRD_PARTY_DIR}/googletest/googlemock/include/
- ${THIRD_PARTY_DIR}/googletest/googletest/
${CMAKE_CURRENT_SOURCE_DIR}/include/
)
@@ -1136,7 +1137,7 @@
LINK_FLAGS "${SWIFTSHADER_LINK_FLAGS}"
)
- target_link_libraries(gles-unittests libEGL libGLESv2 ${OS_LIBS} ${SWIFTSHADER_LIBS})
+ target_link_libraries(gles-unittests libEGL libGLESv2 ${OS_LIBS} ${SWIFTSHADER_LIBS} gtest gmock)
if(ANDROID)
target_link_libraries(gles-unittests -landroid)
endif()
@@ -1145,13 +1146,9 @@
set(MATH_UNITTESTS_LIST
${TESTS_DIR}/MathUnitTests/main.cpp
${TESTS_DIR}/MathUnitTests/unittests.cpp
- ${THIRD_PARTY_DIR}/googletest/googletest/src/gtest-all.cc
)
set(MATH_UNITTESTS_INCLUDE_DIR
- ${THIRD_PARTY_DIR}/googletest/googletest/include/
- ${THIRD_PARTY_DIR}/googletest/googlemock/include/
- ${THIRD_PARTY_DIR}/googletest/googletest/
${CMAKE_CURRENT_SOURCE_DIR}/src/
)
@@ -1163,6 +1160,7 @@
LINK_FLAGS "${SWIFTSHADER_LINK_FLAGS}"
)
+ target_link_libraries(math-unittests gtest gmock)
if(NOT WIN32)
target_link_libraries(math-unittests pthread ${SWIFTSHADER_LIBS})
endif()
@@ -1194,13 +1192,9 @@
${TESTS_DIR}/VulkanUnitTests/Driver.cpp
${TESTS_DIR}/VulkanUnitTests/main.cpp
${TESTS_DIR}/VulkanUnitTests/unittests.cpp
- ${THIRD_PARTY_DIR}/googletest/googletest/src/gtest-all.cc
)
set(VK_UNITTESTS_INCLUDE_DIR
- ${THIRD_PARTY_DIR}/googletest/googletest/include/
- ${THIRD_PARTY_DIR}/googletest/googlemock/include/
- ${THIRD_PARTY_DIR}/googletest/googletest/
${THIRD_PARTY_DIR}/SPIRV-Tools/include
${CMAKE_CURRENT_SOURCE_DIR}/include/
)
@@ -1216,7 +1210,7 @@
LINK_FLAGS "${SWIFTSHADER_LINK_FLAGS}"
)
- target_link_libraries(vk-unittests ${OS_LIBS} SPIRV-Tools ${SWIFTSHADER_LIBS})
+ target_link_libraries(vk-unittests SPIRV-Tools ${OS_LIBS} ${SWIFTSHADER_LIBS} gtest gmock)
endif(SWIFTSHADER_BUILD_TESTS AND SWIFTSHADER_BUILD_VULKAN)
if(HAVE_PVR_SUBMODULE AND SWIFTSHADER_BUILD_PVR)