| # Find the TAEF path that supports x86 and x64. |
| get_filename_component(WINDOWS_KIT_10_PATH "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows Kits\\Installed Roots;KitsRoot10]" ABSOLUTE CACHE) |
| get_filename_component(WINDOWS_KIT_81_PATH "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows Kits\\Installed Roots;KitsRoot81]" ABSOLUTE CACHE) |
| |
| # Find the TAEF path, it will typically look something like this. |
| # "C:\Program Files (x86)\Windows Kits\8.1\Testing\Development\inc" |
| set(pfx86 "programfiles(x86)") # Work around behavior for environment names allows chars. |
| find_path(TAEF_INCLUDE_DIR # Set variable TAEF_INCLUDE_DIR |
| Wex.Common.h # Find a path with Wex.Common.h |
| HINTS "$ENV{TAEF_PATH}/../../../Include" |
| HINTS "$ENV{TAEF_PATH}/../../../Development/inc" |
| HINTS "${CMAKE_SOURCE_DIR}/external/taef/build/Include" |
| HINTS "${WINDOWS_KIT_10_PATH}/Testing/Development/inc" |
| HINTS "${WINDOWS_KIT_81_PATH}/Testing/Development/inc" |
| DOC "path to TAEF header files" |
| HINTS |
| ) |
| |
| macro(find_taef_libraries targetplatform) |
| set(TAEF_LIBRARIES) |
| foreach(L Te.Common.lib Wex.Common.lib Wex.Logger.lib) |
| find_library(TAEF_LIB_${L} NAMES ${L} |
| HINTS ${TAEF_INCLUDE_DIR}/../Library/${targetplatform} |
| HINTS ${TAEF_INCLUDE_DIR}/../lib/${targetplatform}) |
| set(TAEF_LIBRARIES ${TAEF_LIBRARIES} ${TAEF_LIB_${L}}) |
| endforeach() |
| set(TAEF_COMMON_LIBRARY ${TAEF_LIB_Te.Common.lib}) |
| endmacro(find_taef_libraries) |
| |
| if(CMAKE_C_COMPILER_ARCHITECTURE_ID STREQUAL "ARM64EC") |
| find_taef_libraries(arm64) |
| elseif(CMAKE_C_COMPILER_ARCHITECTURE_ID STREQUAL "ARMV7") |
| find_taef_libraries(arm) |
| else() |
| find_taef_libraries(${CMAKE_C_COMPILER_ARCHITECTURE_ID}) |
| endif() |
| |
| set(TAEF_INCLUDE_DIRS ${TAEF_INCLUDE_DIR}) |
| |
| # Get TAEF binaries path from the header location |
| set(TAEF_NUGET_BIN ${TAEF_INCLUDE_DIR}/../Binaries/Release) |
| set(TAEF_SDK_BIN ${TAEF_INCLUDE_DIR}/../../Runtimes/TAEF) |
| |
| if ((CMAKE_GENERATOR_PLATFORM STREQUAL "x64") OR ("${CMAKE_C_COMPILER_ARCHITECTURE_ID}" STREQUAL "x64")) |
| set(TAEF_BIN_ARCH "amd64") |
| set(TAEF_ARCH "x64") |
| elseif ((CMAKE_GENERATOR_PLATFORM STREQUAL "x86") OR ("${CMAKE_C_COMPILER_ARCHITECTURE_ID}" STREQUAL "x86")) |
| set(TAEF_BIN_ARCH "x86") |
| set(TAEF_ARCH "x86") |
| elseif ((CMAKE_GENERATOR_PLATFORM MATCHES "ARM64.*") OR ("${CMAKE_C_COMPILER_ARCHITECTURE_ID}" MATCHES "ARM64.*")) |
| set(TAEF_BIN_ARCH "arm64") |
| set(TAEF_ARCH "arm64") |
| elseif ((CMAKE_GENERATOR_PLATFORM MATCHES "ARM.*") OR ("${CMAKE_C_COMPILER_ARCHITECTURE_ID}" MATCHES "ARM.*")) |
| set(TAEF_BIN_ARCH "arm") |
| set(TAEF_ARCH "arm") |
| endif((CMAKE_GENERATOR_PLATFORM STREQUAL "x64") OR ("${CMAKE_C_COMPILER_ARCHITECTURE_ID}" STREQUAL "x64")) |
| |
| set (TAEF_ARCH ${TAEF_ARCH} CACHE INTERNAL "arch for taef test") |
| find_program(TAEF_EXECUTABLE te.exe PATHS |
| $ENV{TAEF_PATH} |
| ${CMAKE_SOURCE_DIR}/external/taef/build/Binaries/${TAEF_BIN_ARCH} |
| $ENV{HLSL_TAEF_DIR}/${TAEF_BIN_ARCH} |
| ${TAEF_NUGET_BIN}/${TAEF_ARCH} |
| ${TAEF_SDK_BIN}/${TAEF_ARCH} |
| ${WINDOWS_KIT_10_PATH} |
| ${WINDOWS_KIT_81_PATH} |
| ) |
| |
| if (TAEF_EXECUTABLE) |
| get_filename_component(TAEF_BIN_DIR ${TAEF_EXECUTABLE} DIRECTORY) |
| else() |
| message(FATAL_ERROR "Unable to find TAEF binaries.") |
| endif() |
| |
| |
| include(FindPackageHandleStandardArgs) |
| # handle the QUIETLY and REQUIRED arguments and set TAEF_FOUND to TRUE |
| # if all listed variables are TRUE |
| find_package_handle_standard_args(TAEF DEFAULT_MSG |
| TAEF_COMMON_LIBRARY TAEF_INCLUDE_DIR) |
| |
| mark_as_advanced(TAEF_INCLUDE_DIR TAEF_LIBRARY) |