Преглед на файлове

TAEF cmake fixes (#3290)

- prioritize TAEF path from environment variable
- find TAEF binaries based on the header location
Helena Kotas преди 4 години
родител
ревизия
1eaf88b374
променени са 1 файла, в които са добавени 25 реда и са изтрити 52 реда
  1. 25 52
      cmake/modules/FindTAEF.cmake

+ 25 - 52
cmake/modules/FindTAEF.cmake

@@ -7,72 +7,46 @@ get_filename_component(WINDOWS_KIT_81_PATH "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Micro
 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"
-          HINTS "$ENV{TAEF_PATH}/../../../Include"
-          HINTS "$ENV{TAEF_PATH}/../../../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 ("${DXC_BUILD_ARCH}" STREQUAL "x64" )
-  find_library(TAEF_COMMON_LIBRARY NAMES Te.Common.lib
-               HINTS ${TAEF_INCLUDE_DIR}/../Library/x64
-               HINTS ${TAEF_INCLUDE_DIR}/../lib/x64 )
-  find_library(TAEF_WEX_COMMON_LIBRARY NAMES Wex.Common.lib
-               HINTS ${TAEF_INCLUDE_DIR}/../Library/x64
-               HINTS ${TAEF_INCLUDE_DIR}/../lib/x64 )
-  find_library(TAEF_WEX_LOGGER_LIBRARY NAMES Wex.Logger.lib
-               HINTS ${TAEF_INCLUDE_DIR}/../Library/x64
-               HINTS ${TAEF_INCLUDE_DIR}/../lib/x64 )
+  find_taef_libraries(x64)
 elseif (CMAKE_GENERATOR MATCHES "Visual Studio.*ARM" OR "${DXC_BUILD_ARCH}" STREQUAL "ARM")
-  find_library(TAEF_COMMON_LIBRARY NAMES Te.Common.lib
-               HINTS ${TAEF_INCLUDE_DIR}/../Library/arm
-               HINTS ${TAEF_INCLUDE_DIR}/../lib/arm )
-  find_library(TAEF_WEX_COMMON_LIBRARY NAMES Wex.Common.lib
-               HINTS ${TAEF_INCLUDE_DIR}/../Library/arm
-               HINTS ${TAEF_INCLUDE_DIR}/../lib/arm )
-  find_library(TAEF_WEX_LOGGER_LIBRARY NAMES Wex.Logger.lib
-               HINTS ${TAEF_INCLUDE_DIR}/../Library/arm
-               HINTS ${TAEF_INCLUDE_DIR}/../lib/arm )
+  find_taef_libraries(arm)
 elseif (CMAKE_GENERATOR MATCHES "Visual Studio.*ARM64" OR "${DXC_BUILD_ARCH}" MATCHES "ARM64.*")
-  find_library(TAEF_COMMON_LIBRARY NAMES Te.Common.lib
-               HINTS ${TAEF_INCLUDE_DIR}/../Library/arm64
-               HINTS ${TAEF_INCLUDE_DIR}/../lib/arm64 )
-  find_library(TAEF_WEX_COMMON_LIBRARY NAMES Wex.Common.lib
-               HINTS ${TAEF_INCLUDE_DIR}/../Library/arm64
-               HINTS ${TAEF_INCLUDE_DIR}/../lib/arm64 )
-  find_library(TAEF_WEX_LOGGER_LIBRARY NAMES Wex.Logger.lib
-               HINTS ${TAEF_INCLUDE_DIR}/../Library/arm64
-               HINTS ${TAEF_INCLUDE_DIR}/../lib/arm64 )
+  find_taef_libraries(arm64)
 elseif ("${DXC_BUILD_ARCH}" STREQUAL "Win32" )
-  find_library(TAEF_COMMON_LIBRARY NAMES Te.Common.lib
-               HINTS ${TAEF_INCLUDE_DIR}/../Library/x86
-               HINTS ${TAEF_INCLUDE_DIR}/../lib/x86 )
-  find_library(TAEF_WEX_COMMON_LIBRARY NAMES Wex.Common.lib
-               HINTS ${TAEF_INCLUDE_DIR}/../Library/x86
-               HINTS ${TAEF_INCLUDE_DIR}/../lib/x86 )
-  find_library(TAEF_WEX_LOGGER_LIBRARY NAMES Wex.Logger.lib
-               HINTS ${TAEF_INCLUDE_DIR}/../Library/x86
-               HINTS ${TAEF_INCLUDE_DIR}/../lib/x86 )
+  find_taef_libraries(x86)
 endif ("${DXC_BUILD_ARCH}" STREQUAL "x64" )
 
-set(TAEF_LIBRARIES ${TAEF_COMMON_LIBRARY} ${TAEF_WEX_COMMON_LIBRARY} ${TAEF_WEX_LOGGER_LIBRARY})
 set(TAEF_INCLUDE_DIRS ${TAEF_INCLUDE_DIR})
 
-# Prefer the version that supports both x86 and x64, else prefer latest.
-if(EXISTS "${CMAKE_SOURCE_DIR}/external/taef/build/Binaries/amd64/te.exe")
-  set(TAEF_BIN_DIR "${CMAKE_SOURCE_DIR}/external/taef/build/Binaries")
-elseif(EXISTS "${WINDOWS_KIT_10_PATH}/Testing/Runtimes/TAEF/x86/te.exe"
-   AND EXISTS "${WINDOWS_KIT_10_PATH}/Testing/Runtimes/TAEF/x64/te.exe")
-  set(TAEF_BIN_DIR "${WINDOWS_KIT_10_PATH}/Testing/Runtimes/TAEF")
-elseif(EXISTS "${WINDOWS_KIT_81_PATH}/Testing/Runtimes/TAEF/x86/te.exe"
-    AND EXISTS "${WINDOWS_KIT_81_PATH}/Testing/Runtimes/TAEF/x64/te.exe")
-  set(TAEF_BIN_DIR "${WINDOWS_KIT_81_PATH}/Testing/Runtimes/TAEF")
-elseif(EXISTS "${TAEF_PATH}/te.exe")
-  set(TAEF_BIN_DIR "${TAEF_PATH}/..")
-  message("TAEF_BIN_DIR=${TAEF_BIN_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(EXISTS "${TAEF_NUGET_BIN}/x64/te.exe" AND EXISTS "${TAEF_NUGET_BIN}/x86/te.exe")
+  set(TAEF_BIN_DIR "${TAEF_NUGET_BIN}")
+elseif(EXISTS "${TAEF_SDK_BIN}/x64/te.exe" AND EXISTS "${TAEF_SDK_BIN}/x86/te.exe")
+  set(TAEF_BIN_DIR "${TAEF_SDK_BIN}")
 elseif(EXISTS "${WINDOWS_KIT_10_PATH}")
   message(ERROR "Unable to find TAEF binaries under Windows 10 SDK.")
 elseif(EXISTS "${WINDOWS_KIT_81_PATH}")
@@ -88,4 +62,3 @@ find_package_handle_standard_args(TAEF  DEFAULT_MSG
                                   TAEF_COMMON_LIBRARY TAEF_INCLUDE_DIR)
 
 mark_as_advanced(TAEF_INCLUDE_DIR TAEF_LIBRARY)
-