FindTAEF.cmake 4.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  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" OR "${DXC_BUILD_ARCH}" STREQUAL "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 (CMAKE_GENERATOR MATCHES "Visual Studio.*ARM64" OR "${DXC_BUILD_ARCH}" STREQUAL "ARM64")
  36. find_library(TAEF_COMMON_LIBRARY NAMES Te.Common.lib
  37. HINTS ${TAEF_INCLUDE_DIR}/../Library/arm64
  38. HINTS ${TAEF_INCLUDE_DIR}/../lib/arm64 )
  39. find_library(TAEF_WEX_COMMON_LIBRARY NAMES Wex.Common.lib
  40. HINTS ${TAEF_INCLUDE_DIR}/../Library/arm64
  41. HINTS ${TAEF_INCLUDE_DIR}/../lib/arm64 )
  42. find_library(TAEF_WEX_LOGGER_LIBRARY NAMES Wex.Logger.lib
  43. HINTS ${TAEF_INCLUDE_DIR}/../Library/arm64
  44. HINTS ${TAEF_INCLUDE_DIR}/../lib/arm64 )
  45. elseif ("${DXC_BUILD_ARCH}" STREQUAL "Win32" )
  46. find_library(TAEF_COMMON_LIBRARY NAMES Te.Common.lib
  47. HINTS ${TAEF_INCLUDE_DIR}/../Library/x86
  48. HINTS ${TAEF_INCLUDE_DIR}/../lib/x86 )
  49. find_library(TAEF_WEX_COMMON_LIBRARY NAMES Wex.Common.lib
  50. HINTS ${TAEF_INCLUDE_DIR}/../Library/x86
  51. HINTS ${TAEF_INCLUDE_DIR}/../lib/x86 )
  52. find_library(TAEF_WEX_LOGGER_LIBRARY NAMES Wex.Logger.lib
  53. HINTS ${TAEF_INCLUDE_DIR}/../Library/x86
  54. HINTS ${TAEF_INCLUDE_DIR}/../lib/x86 )
  55. endif ("${DXC_BUILD_ARCH}" STREQUAL "x64" )
  56. set(TAEF_LIBRARIES ${TAEF_COMMON_LIBRARY} ${TAEF_WEX_COMMON_LIBRARY} ${TAEF_WEX_LOGGER_LIBRARY})
  57. set(TAEF_INCLUDE_DIRS ${TAEF_INCLUDE_DIR})
  58. # Prefer the version that supports both x86 and x64, else prefer latest.
  59. if(EXISTS "${CMAKE_SOURCE_DIR}/external/taef/build/Binaries/amd64/te.exe")
  60. set(TAEF_BIN_DIR "${CMAKE_SOURCE_DIR}/external/taef/build/Binaries")
  61. elseif(EXISTS "${WINDOWS_KIT_10_PATH}/Testing/Runtimes/TAEF/x86/te.exe"
  62. AND EXISTS "${WINDOWS_KIT_10_PATH}/Testing/Runtimes/TAEF/x64/te.exe")
  63. set(TAEF_BIN_DIR "${WINDOWS_KIT_10_PATH}/Testing/Runtimes/TAEF")
  64. elseif(EXISTS "${WINDOWS_KIT_81_PATH}/Testing/Runtimes/TAEF/x86/te.exe"
  65. AND EXISTS "${WINDOWS_KIT_81_PATH}/Testing/Runtimes/TAEF/x64/te.exe")
  66. set(TAEF_BIN_DIR "${WINDOWS_KIT_81_PATH}/Testing/Runtimes/TAEF")
  67. elseif(EXISTS "${WINDOWS_KIT_10_PATH}")
  68. message(ERROR "Unable to find TAEF binaries under Windows 10 SDK.")
  69. elseif(EXISTS "${WINDOWS_KIT_81_PATH}")
  70. message(ERROR "Unable to find TAEF binaries under Windows 8.1 or 10 SDK.")
  71. else()
  72. message(ERROR "Unable to find TAEF binaries or Windows 8.1 or 10 SDK.")
  73. endif()
  74. include(FindPackageHandleStandardArgs)
  75. # handle the QUIETLY and REQUIRED arguments and set TAEF_FOUND to TRUE
  76. # if all listed variables are TRUE
  77. find_package_handle_standard_args(TAEF DEFAULT_MSG
  78. TAEF_COMMON_LIBRARY TAEF_INCLUDE_DIR)
  79. mark_as_advanced(TAEF_INCLUDE_DIR TAEF_LIBRARY)