From 97de527d9a394f141eb0b616568fbfff469ff851 Mon Sep 17 00:00:00 2001 From: Artur Wojcik Date: Thu, 31 Aug 2023 22:54:10 +0200 Subject: [PATCH 1/2] cmake: fix cmake/googletest.cmake on Windows --- cmake/googletest.cmake | 43 --------------------- cmake/gtest.cmake | 80 +++++++++++++++++++++++++++++++++++++++ test/gtest/CMakeLists.txt | 37 ++++++++---------- 3 files changed, 96 insertions(+), 64 deletions(-) delete mode 100644 cmake/googletest.cmake create mode 100644 cmake/gtest.cmake diff --git a/cmake/googletest.cmake b/cmake/googletest.cmake deleted file mode 100644 index 39dea8fc73..0000000000 --- a/cmake/googletest.cmake +++ /dev/null @@ -1,43 +0,0 @@ -include(FetchContent) - -set(CMAKE_POLICY_DEFAULT_CMP0077 NEW) - -set(GOOGLETEST_DIR "" CACHE STRING "Location of local GoogleTest repo to build against") - -if(GOOGLETEST_DIR) - set(FETCHCONTENT_SOURCE_DIR_GOOGLETEST ${GOOGLETEST_DIR} CACHE STRING "GoogleTest source directory override") -endif() - -message(STATUS "Fetching GoogleTest") - -list(APPEND GTEST_CMAKE_CXX_FLAGS - -Wno-undef - -Wno-reserved-identifier - -Wno-global-constructors - -Wno-missing-noreturn - -Wno-disabled-macro-expansion - -Wno-used-but-marked-unused - -Wno-switch-enum - -Wno-zero-as-null-pointer-constant - -Wno-unused-member-function - -Wno-comma - -Wno-old-style-cast - -Wno-deprecated - -Wno-unsafe-buffer-usage -) -message(STATUS "Suppressing googltest warnings with flags: ${GTEST_CMAKE_CXX_FLAGS}") - -FetchContent_Declare( - googletest - GIT_REPOSITORY https://github.com/google/googletest.git - GIT_TAG e2239ee6043f73722e7aa812a459f54a28552929 -) - -# Will be necessary for windows build -# set(gtest_force_shared_crt ON CACHE BOOL "" FORCE) -FetchContent_MakeAvailable(googletest) - -target_compile_options(gtest PRIVATE ${GTEST_CMAKE_CXX_FLAGS}) -target_compile_options(gtest_main PRIVATE ${GTEST_CMAKE_CXX_FLAGS}) -target_compile_options(gmock PRIVATE ${GTEST_CMAKE_CXX_FLAGS}) -target_compile_options(gmock_main PRIVATE ${GTEST_CMAKE_CXX_FLAGS}) diff --git a/cmake/gtest.cmake b/cmake/gtest.cmake new file mode 100644 index 0000000000..e99fcd8499 --- /dev/null +++ b/cmake/gtest.cmake @@ -0,0 +1,80 @@ +################################################################################ +# +# MIT License +# +# Copyright (c) 2023 Advanced Micro Devices, Inc. +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +# +################################################################################ + +include(FetchContent) + +set(CMAKE_POLICY_DEFAULT_CMP0077 NEW) + +set(GOOGLETEST_DIR "" CACHE STRING "Location of local GoogleTest repo to build against") + +if(GOOGLETEST_DIR) + set(FETCHCONTENT_SOURCE_DIR_GOOGLETEST ${GOOGLETEST_DIR} CACHE STRING "GoogleTest source directory override") +endif() + +set(BUILD_GMOCK OFF CACHE INTERNAL "") + +FetchContent_Declare( + googletest + GIT_REPOSITORY https://github.com/google/googletest.git + GIT_TAG e2239ee6043f73722e7aa812a459f54a28552929) + +if(WIN32) + set(gtest_force_shared_crt ON CACHE INTERNAL "") +endif() + +# Store the current value of BUILD_SHARED_LIBS +set(__build_shared_libs ${BUILD_SHARED_LIBS}) +set(BUILD_SHARED_LIBS OFF CACHE INTERNAL "") + +FetchContent_MakeAvailable(googletest) + +# Restore the old value of BUILD_SHARED_LIBS +set(BUILD_SHARED_LIBS ${__build_shared_libs} CACHE BOOL "Type of libraries to build" FORCE) + +set(GTEST_CMAKE_CXX_FLAGS + -Wno-undef + -Wno-reserved-identifier + -Wno-global-constructors + -Wno-missing-noreturn + -Wno-disabled-macro-expansion + -Wno-used-but-marked-unused + -Wno-switch-enum + -Wno-zero-as-null-pointer-constant + -Wno-unused-member-function + -Wno-comma + -Wno-old-style-cast + -Wno-deprecated + -Wno-ignored-attributes + -Wno-incompatible-pointer-types + -Wno-enum-constexpr-conversion + -Wno-deprecated-builtins + -Wno-enum-constexpr-conversion) + +target_compile_options(gtest PRIVATE ${GTEST_CMAKE_CXX_FLAGS}) +target_compile_options(gtest_main PRIVATE ${GTEST_CMAKE_CXX_FLAGS}) + +include(GoogleTest) +unset(GTEST_CMAKE_CXX_FLAGS) diff --git a/test/gtest/CMakeLists.txt b/test/gtest/CMakeLists.txt index bbfec85023..8368f314df 100644 --- a/test/gtest/CMakeLists.txt +++ b/test/gtest/CMakeLists.txt @@ -1,22 +1,16 @@ -include(googletest) #include googletest.cmake +include(gtest) #include gtest.cmake enable_testing() -include(GoogleTest) #add_custom_target(check COMMAND ${CMAKE_CTEST_COMMAND} --output-on-failure -C ${CMAKE_CFG_INTDIR}) #add_custom_target(tests) find_package(rocblas) -set(SOURCES) -list(APPEND SOURCES +set(SOURCES log_test_helper.cpp platform.cpp ) -if(MIOPEN_BACKEND_OPENCL) - set(SKIP_TESTS dumpTensorTest) -endif() - function(add_gtest TEST_NAME) if( NOT (TEST_NAME IN_LIST SKIP_TESTS)) message("Adding Test: " ${TEST_NAME}) @@ -29,10 +23,9 @@ function(add_gtest TEST_NAME) target_include_directories(test_${TEST_NAME} SYSTEM PRIVATE $) target_include_directories(test_${TEST_NAME} SYSTEM PRIVATE $) endif() + target_link_libraries(test_${TEST_NAME} gtest gtest_main MIOpen ${Boost_LIBRARIES} hip::host $) if(NOT MIOPEN_EMBED_DB STREQUAL "") - target_link_libraries(test_${TEST_NAME} gtest_main MIOpen ${Boost_LIBRARIES} hip::host $ $) - else() - target_link_libraries(test_${TEST_NAME} gtest_main MIOpen ${Boost_LIBRARIES} hip::host $) + target_link_libraries(test_${TEST_NAME} $) endif() # Enable CMake to discover the test binary gtest_discover_tests(test_${TEST_NAME} PROPERTIES ENVIRONMENT "MIOPEN_USER_DB_PATH=${CMAKE_CURRENT_BINARY_DIR};MIOPEN_TEST_ALL=${MIOPEN_TEST_ALL};MIOPEN_TEST_MLIR=${MIOPEN_TEST_MLIR};MIOPEN_TEST_COMPOSABLEKERNEL=${MIOPEN_TEST_COMPOSABLEKERNEL}") @@ -40,13 +33,15 @@ function(add_gtest TEST_NAME) endif() endfunction() -file(GLOB TESTS *.cpp) -# Remove files that do not contain tests -foreach(SOURCE ${SOURCES}) - list(REMOVE_ITEM TESTS ${CMAKE_CURRENT_SOURCE_DIR}/${SOURCE}) -endforeach() - -foreach(TEST ${TESTS}) - get_filename_component(BASE_NAME ${TEST} NAME_WE) - add_gtest(${BASE_NAME}) -endforeach() +add_gtest(api_convbiasactiv) +add_gtest(cba_infer) +add_gtest(conv_api) +add_gtest(conv_api_strided_tensors) +add_gtest(log_test) +add_gtest(log_test_neg) +add_gtest(na_infer) +add_gtest(solver_convasm3x3u) + +if(NOT MIOPEN_BACKEND_OPENCL) + add_gtest(dumpTensorTest) +endif() From 5a6dafaddae892719f66b6d733090e058830017a Mon Sep 17 00:00:00 2001 From: Artur Wojcik Date: Mon, 30 Oct 2023 22:46:37 +0100 Subject: [PATCH 2/2] incorporate review feedback --- test/gtest/CMakeLists.txt | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/test/gtest/CMakeLists.txt b/test/gtest/CMakeLists.txt index 2c1dad62cf..2740730a90 100644 --- a/test/gtest/CMakeLists.txt +++ b/test/gtest/CMakeLists.txt @@ -8,6 +8,10 @@ set(SOURCES platform.cpp ) +if(MIOPEN_BACKEND_OPENCL) + set(SKIP_TESTS dumpTensorTest) +endif() + function(add_gtest TEST_NAME) if( NOT (TEST_NAME IN_LIST SKIP_TESTS)) message("Adding Test: " ${TEST_NAME}) @@ -30,15 +34,13 @@ function(add_gtest TEST_NAME) endif() endfunction() -add_gtest(api_convbiasactiv) -add_gtest(cba_infer) -add_gtest(conv_api) -add_gtest(conv_api_strided_tensors) -add_gtest(log_test) -add_gtest(log_test_neg) -add_gtest(na_infer) -add_gtest(solver_convasm3x3u) +file(GLOB TESTS *.cpp) +# Remove files that do not contain tests +foreach(SOURCE ${SOURCES}) + list(REMOVE_ITEM TESTS ${CMAKE_CURRENT_SOURCE_DIR}/${SOURCE}) +endforeach() -if(NOT MIOPEN_BACKEND_OPENCL) - add_gtest(dumpTensorTest) -endif() +foreach(TEST ${TESTS}) + get_filename_component(BASE_NAME ${TEST} NAME_WE) + add_gtest(${BASE_NAME}) +endforeach()