FindTAEF.cmake 4.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. # Find the TAEF path that supports x86 and x64.
  2. get_filename_component(WINDOWS_KIT_10_PATH "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows Kits\\Installed Roots;KitsRoot10]" ABSOLUTE CACHE)
  3. get_filename_component(WINDOWS_KIT_81_PATH "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows Kits\\Installed Roots;KitsRoot81]" ABSOLUTE CACHE)
  4. # Find the TAEF path, it will typically look something like this.
  5. # "C:\Program Files (x86)\Windows Kits\8.1\Testing\Development\inc"
  6. set(pfx86 "programfiles(x86)") # Work around behavior for environment names allows chars.
  7. find_path(TAEF_INCLUDE_DIR # Set variable TAEF_INCLUDE_DIR
  8. Wex.Common.h # Find a path with Wex.Common.h
  9. HINTS "${CMAKE_SOURCE_DIR}/external/taef/build/Include"
  10. HINTS "${WINDOWS_KIT_10_PATH}/Testing/Development/inc"
  11. HINTS "${WINDOWS_KIT_81_PATH}/Testing/Development/inc"
  12. DOC "path to TAEF header files"
  13. HINTS
  14. )
  15. if ("${DXC_BUILD_ARCH}" STREQUAL "x64" )
  16. find_library(TAEF_COMMON_LIBRARY NAMES Te.Common.lib
  17. HINTS ${TAEF_INCLUDE_DIR}/../Library/x64
  18. HINTS ${TAEF_INCLUDE_DIR}/../lib/x64 )
  19. find_library(TAEF_WEX_COMMON_LIBRARY NAMES Wex.Common.lib
  20. HINTS ${TAEF_INCLUDE_DIR}/../Library/x64
  21. HINTS ${TAEF_INCLUDE_DIR}/../lib/x64 )
  22. find_library(TAEF_WEX_LOGGER_LIBRARY NAMES Wex.Logger.lib
  23. HINTS ${TAEF_INCLUDE_DIR}/../Library/x64
  24. HINTS ${TAEF_INCLUDE_DIR}/../lib/x64 )
  25. elseif (CMAKE_GENERATOR MATCHES "Visual Studio.*ARM" )
  26. find_library(TAEF_COMMON_LIBRARY NAMES Te.Common.lib
  27. HINTS ${TAEF_INCLUDE_DIR}/../Library/arm
  28. HINTS ${TAEF_INCLUDE_DIR}/../lib/arm )
  29. find_library(TAEF_WEX_COMMON_LIBRARY NAMES Wex.Common.lib
  30. HINTS ${TAEF_INCLUDE_DIR}/../Library/arm
  31. HINTS ${TAEF_INCLUDE_DIR}/../lib/arm )
  32. find_library(TAEF_WEX_LOGGER_LIBRARY NAMES Wex.Logger.lib
  33. HINTS ${TAEF_INCLUDE_DIR}/../Library/arm
  34. HINTS ${TAEF_INCLUDE_DIR}/../lib/arm )
  35. elseif ("${DXC_BUILD_ARCH}" STREQUAL "Win32" )
  36. find_library(TAEF_COMMON_LIBRARY NAMES Te.Common.lib
  37. HINTS ${TAEF_INCLUDE_DIR}/../Library/x86
  38. HINTS ${TAEF_INCLUDE_DIR}/../lib/x86 )
  39. find_library(TAEF_WEX_COMMON_LIBRARY NAMES Wex.Common.lib
  40. HINTS ${TAEF_INCLUDE_DIR}/../Library/x86
  41. HINTS ${TAEF_INCLUDE_DIR}/../lib/x86 )
  42. find_library(TAEF_WEX_LOGGER_LIBRARY NAMES Wex.Logger.lib
  43. HINTS ${TAEF_INCLUDE_DIR}/../Library/x86
  44. HINTS ${TAEF_INCLUDE_DIR}/../lib/x86 )
  45. endif ("${DXC_BUILD_ARCH}" STREQUAL "x64" )
  46. set(TAEF_LIBRARIES ${TAEF_COMMON_LIBRARY} ${TAEF_WEX_COMMON_LIBRARY} ${TAEF_WEX_LOGGER_LIBRARY})
  47. set(TAEF_INCLUDE_DIRS ${TAEF_INCLUDE_DIR})
  48. # Prefer the version that supports both x86 and x64, else prefer latest.
  49. if(EXISTS "${CMAKE_SOURCE_DIR}/external/taef/build/Binaries/amd64/te.exe")
  50. set(TAEF_BIN_DIR "${CMAKE_SOURCE_DIR}/external/taef/build/Binaries")
  51. elseif(EXISTS "${WINDOWS_KIT_10_PATH}/Testing/Runtimes/TAEF/x86/te.exe"
  52. AND EXISTS "${WINDOWS_KIT_10_PATH}/Testing/Runtimes/TAEF/x64/te.exe")
  53. set(TAEF_BIN_DIR "${WINDOWS_KIT_10_PATH}/Testing/Runtimes/TAEF")
  54. elseif(EXISTS "${WINDOWS_KIT_81_PATH}/Testing/Runtimes/TAEF/x86/te.exe"
  55. AND EXISTS "${WINDOWS_KIT_81_PATH}/Testing/Runtimes/TAEF/x64/te.exe")
  56. set(TAEF_BIN_DIR "${WINDOWS_KIT_81_PATH}/Testing/Runtimes/TAEF")
  57. elseif(EXISTS "${WINDOWS_KIT_10_PATH}")
  58. message(ERROR "Unable to find TAEF binaries under Windows 10 SDK.")
  59. elseif(EXISTS "${WINDOWS_KIT_81_PATH}")
  60. message(ERROR "Unable to find TAEF binaries under Windows 8.1 or 10 SDK.")
  61. else()
  62. message(ERROR "Unable to find TAEF binaries or Windows 8.1 or 10 SDK.")
  63. endif()
  64. include(FindPackageHandleStandardArgs)
  65. # handle the QUIETLY and REQUIRED arguments and set TAEF_FOUND to TRUE
  66. # if all listed variables are TRUE
  67. find_package_handle_standard_args(TAEF DEFAULT_MSG
  68. TAEF_COMMON_LIBRARY TAEF_INCLUDE_DIR)
  69. mark_as_advanced(TAEF_INCLUDE_DIR TAEF_LIBRARY)