if(BUILD_TEST)
include(${CMAKE_SOURCE_DIR}/cmake/test.cmake)
set(_OPS_BLAS_BUILT_TESTS "")
set(_OPS_BLAS_ADDED_DIRS "")
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/skipped_tests.list "")
foreach(TEST_NAME ${TEST_NAMES})
set(TEST_DIR "")
if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${TEST_NAME})
set(TEST_DIR "${TEST_NAME}")
else()
file(GLOB family_dirs RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*)
foreach(family_dir ${family_dirs})
if(IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/${family_dir}
AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${family_dir}/${TEST_NAME})
set(TEST_DIR "${family_dir}/${TEST_NAME}")
break()
endif()
endforeach()
endif()
if("${TEST_DIR}" STREQUAL "" AND TEST_NAME MATCHES "^[a-zA-Z]")
string(SUBSTRING "${TEST_NAME}" 1 -1 _stripped)
if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${_stripped})
set(TEST_DIR "${_stripped}")
endif()
endif()
if("${TEST_DIR}" STREQUAL "")
message(FATAL_ERROR
"Test directory 'test/${TEST_NAME}' does not exist (checked flat and family layouts). "
"Please check the operator name specified in --ops or TEST_NAMES.")
endif()
ops_blas_has_op_sources_for_soc(${TEST_NAME} TEST_HAS_OP_SOURCES)
set(TEST_HAS_TEST_SOURCES FALSE)
set(TEST_CPP "${TEST_NAME}_test.cpp")
if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${TEST_DIR}/${TEST_CPP})
set(TEST_HAS_TEST_SOURCES TRUE)
endif()
foreach(arch_dir ${SOC_ARCH_DIRS})
if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${TEST_DIR}/${arch_dir}/${TEST_CPP})
set(TEST_HAS_TEST_SOURCES TRUE)
break()
endif()
file(GLOB arch_test_supp_srcs
${CMAKE_CURRENT_SOURCE_DIR}/${TEST_DIR}/${arch_dir}/${TEST_NAME}_test_*.cpp)
if(arch_test_supp_srcs)
set(TEST_HAS_TEST_SOURCES TRUE)
break()
endif()
endforeach()
if(NOT TEST_HAS_OP_SOURCES OR NOT TEST_HAS_TEST_SOURCES)
set(SKIP_REASONS "")
if(NOT TEST_HAS_OP_SOURCES)
if(NOT ENABLE_BLAS_TRMM AND (TEST_NAME STREQUAL "strmm" OR TEST_NAME STREQUAL "trmm"))
list(APPEND SKIP_REASONS
"requires asc-devkit >= 9.1, current ${ASC_DEVKIT_MAJOR}.${ASC_DEVKIT_MINOR}")
elseif(NOT ENABLE_BLAS_DGMM AND (TEST_NAME STREQUAL "sdgmm" OR TEST_NAME STREQUAL "dgmm"))
list(APPEND SKIP_REASONS
"requires asc-devkit >= 9.1, current ${ASC_DEVKIT_MAJOR}.${ASC_DEVKIT_MINOR}")
else()
list(APPEND SKIP_REASONS
"operator implementation not found for '${SOC_VERSION}' "
"(checked blas/${TEST_NAME}/ and blasLt/*/)")
endif()
endif()
if(NOT TEST_HAS_TEST_SOURCES)
list(APPEND SKIP_REASONS
"test directory 'test/${TEST_DIR}/' contains no test sources for '${SOC_VERSION}'")
endif()
string(JOIN "; " SKIP_REASONS_STR ${SKIP_REASONS})
if(TEST_NAME MATCHES "^blasLt")
set(ACLBLAS_OP_NAME "acl${TEST_NAME}")
else()
string(SUBSTRING "${TEST_NAME}" 0 1 _api_first)
string(TOUPPER "${_api_first}" _api_first)
string(SUBSTRING "${TEST_NAME}" 1 -1 _api_rest)
set(ACLBLAS_OP_NAME "aclblas${_api_first}${_api_rest}")
endif()
message(STATUS
"Skipping test '${TEST_NAME}': ${SKIP_REASONS_STR}. "
"Please verify that '${ACLBLAS_OP_NAME}' supports '${SOC_VERSION}'.")
string(REPLACE ";" "," SKIP_REASONS_SAFE "${SKIP_REASONS_STR}")
string(REPLACE "\n" " " SKIP_REASONS_SAFE "${SKIP_REASONS_SAFE}")
file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/skipped_tests.list
"${TEST_NAME}|${SKIP_REASONS_SAFE}\n")
continue()
endif()
list(FIND _OPS_BLAS_ADDED_DIRS "${TEST_DIR}" _added_idx)
if(_added_idx EQUAL -1)
list(APPEND _OPS_BLAS_ADDED_DIRS "${TEST_DIR}")
list(APPEND _OPS_BLAS_BUILT_TESTS "${TEST_NAME}")
add_subdirectory(${TEST_DIR})
endif()
endforeach()
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/built_tests.list "")
foreach(test_name ${_OPS_BLAS_BUILT_TESTS})
file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/built_tests.list "${test_name}\n")
endforeach()
endif()