FindTAEF.cmake 4.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  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. HINTS "$ENV{TAEF_PATH}/../../../Include"
  13. HINTS "$ENV{TAEF_PATH}/../../../Development/inc"
  14. DOC "path to TAEF header files"
  15. HINTS
  16. )
  17. if ("${DXC_BUILD_ARCH}" STREQUAL "x64" )
  18. find_library(TAEF_COMMON_LIBRARY NAMES Te.Common.lib
  19. HINTS ${TAEF_INCLUDE_DIR}/../Library/x64
  20. HINTS ${TAEF_INCLUDE_DIR}/../lib/x64 )
  21. find_library(TAEF_WEX_COMMON_LIBRARY NAMES Wex.Common.lib
  22. HINTS ${TAEF_INCLUDE_DIR}/../Library/x64
  23. HINTS ${TAEF_INCLUDE_DIR}/../lib/x64 )
  24. find_library(TAEF_WEX_LOGGER_LIBRARY NAMES Wex.Logger.lib
  25. HINTS ${TAEF_INCLUDE_DIR}/../Library/x64
  26. HINTS ${TAEF_INCLUDE_DIR}/../lib/x64 )
  27. elseif (CMAKE_GENERATOR MATCHES "Visual Studio.*ARM" OR "${DXC_BUILD_ARCH}" STREQUAL "ARM")
  28. find_library(TAEF_COMMON_LIBRARY NAMES Te.Common.lib
  29. HINTS ${TAEF_INCLUDE_DIR}/../Library/arm
  30. HINTS ${TAEF_INCLUDE_DIR}/../lib/arm )
  31. find_library(TAEF_WEX_COMMON_LIBRARY NAMES Wex.Common.lib
  32. HINTS ${TAEF_INCLUDE_DIR}/../Library/arm
  33. HINTS ${TAEF_INCLUDE_DIR}/../lib/arm )
  34. find_library(TAEF_WEX_LOGGER_LIBRARY NAMES Wex.Logger.lib
  35. HINTS ${TAEF_INCLUDE_DIR}/../Library/arm
  36. HINTS ${TAEF_INCLUDE_DIR}/../lib/arm )
  37. elseif (CMAKE_GENERATOR MATCHES "Visual Studio.*ARM64" OR "${DXC_BUILD_ARCH}" STREQUAL "ARM64")
  38. find_library(TAEF_COMMON_LIBRARY NAMES Te.Common.lib
  39. HINTS ${TAEF_INCLUDE_DIR}/../Library/arm64
  40. HINTS ${TAEF_INCLUDE_DIR}/../lib/arm64 )
  41. find_library(TAEF_WEX_COMMON_LIBRARY NAMES Wex.Common.lib
  42. HINTS ${TAEF_INCLUDE_DIR}/../Library/arm64
  43. HINTS ${TAEF_INCLUDE_DIR}/../lib/arm64 )
  44. find_library(TAEF_WEX_LOGGER_LIBRARY NAMES Wex.Logger.lib
  45. HINTS ${TAEF_INCLUDE_DIR}/../Library/arm64
  46. HINTS ${TAEF_INCLUDE_DIR}/../lib/arm64 )
  47. elseif ("${DXC_BUILD_ARCH}" STREQUAL "Win32" )
  48. find_library(TAEF_COMMON_LIBRARY NAMES Te.Common.lib
  49. HINTS ${TAEF_INCLUDE_DIR}/../Library/x86
  50. HINTS ${TAEF_INCLUDE_DIR}/../lib/x86 )
  51. find_library(TAEF_WEX_COMMON_LIBRARY NAMES Wex.Common.lib
  52. HINTS ${TAEF_INCLUDE_DIR}/../Library/x86
  53. HINTS ${TAEF_INCLUDE_DIR}/../lib/x86 )
  54. find_library(TAEF_WEX_LOGGER_LIBRARY NAMES Wex.Logger.lib
  55. HINTS ${TAEF_INCLUDE_DIR}/../Library/x86
  56. HINTS ${TAEF_INCLUDE_DIR}/../lib/x86 )
  57. endif ("${DXC_BUILD_ARCH}" STREQUAL "x64" )
  58. set(TAEF_LIBRARIES ${TAEF_COMMON_LIBRARY} ${TAEF_WEX_COMMON_LIBRARY} ${TAEF_WEX_LOGGER_LIBRARY})
  59. set(TAEF_INCLUDE_DIRS ${TAEF_INCLUDE_DIR})
  60. # Prefer the version that supports both x86 and x64, else prefer latest.
  61. if(EXISTS "${CMAKE_SOURCE_DIR}/external/taef/build/Binaries/amd64/te.exe")
  62. set(TAEF_BIN_DIR "${CMAKE_SOURCE_DIR}/external/taef/build/Binaries")
  63. elseif(EXISTS "${WINDOWS_KIT_10_PATH}/Testing/Runtimes/TAEF/x86/te.exe"
  64. AND EXISTS "${WINDOWS_KIT_10_PATH}/Testing/Runtimes/TAEF/x64/te.exe")
  65. set(TAEF_BIN_DIR "${WINDOWS_KIT_10_PATH}/Testing/Runtimes/TAEF")
  66. elseif(EXISTS "${WINDOWS_KIT_81_PATH}/Testing/Runtimes/TAEF/x86/te.exe"
  67. AND EXISTS "${WINDOWS_KIT_81_PATH}/Testing/Runtimes/TAEF/x64/te.exe")
  68. set(TAEF_BIN_DIR "${WINDOWS_KIT_81_PATH}/Testing/Runtimes/TAEF")
  69. elseif(EXISTS "${TAEF_PATH}/te.exe")
  70. set(TAEF_BIN_DIR "${TAEF_PATH}/..")
  71. message("TAEF_BIN_DIR=${TAEF_BIN_DIR}")
  72. elseif(EXISTS "${WINDOWS_KIT_10_PATH}")
  73. message(ERROR "Unable to find TAEF binaries under Windows 10 SDK.")
  74. elseif(EXISTS "${WINDOWS_KIT_81_PATH}")
  75. message(ERROR "Unable to find TAEF binaries under Windows 8.1 or 10 SDK.")
  76. else()
  77. message(ERROR "Unable to find TAEF binaries or Windows 8.1 or 10 SDK.")
  78. endif()
  79. include(FindPackageHandleStandardArgs)
  80. # handle the QUIETLY and REQUIRED arguments and set TAEF_FOUND to TRUE
  81. # if all listed variables are TRUE
  82. find_package_handle_standard_args(TAEF DEFAULT_MSG
  83. TAEF_COMMON_LIBRARY TAEF_INCLUDE_DIR)
  84. mark_as_advanced(TAEF_INCLUDE_DIR TAEF_LIBRARY)