From 2cce7933fbf3c7e3f9891551076bd77a90a5ffcb Mon Sep 17 00:00:00 2001 From: Marcelo Lopez Ruiz Date: Mon, 10 Apr 2017 22:53:37 -0700 Subject: [PATCH] Add support for an inline TAEF install rather than requiring WDK (#196) Adds support for SDK 10.0.15063.0. Adds support for TAEF download into external dir, no WDK required. --- .gitignore | 1 + cmake/modules/FindTAEF.cmake | 14 +++++++++++++- utils/hct/hctgettaef.py | 17 +++++++++++++++++ utils/hct/hctstart.cmd | 8 +++++++- 4 files changed, 38 insertions(+), 2 deletions(-) create mode 100644 utils/hct/hctgettaef.py diff --git a/.gitignore b/.gitignore index 9a37b09ad..9011c0e3c 100644 --- a/.gitignore +++ b/.gitignore @@ -49,6 +49,7 @@ autoconf/autom4te.cache # Directories to ignore (do not add trailing '/'s, they skip symlinks). #==============================================================================# # External projects that are tracked independently. +external/* projects/* !projects/*.* !projects/Makefile diff --git a/cmake/modules/FindTAEF.cmake b/cmake/modules/FindTAEF.cmake index 63c74caea..4d19dd0a5 100644 --- a/cmake/modules/FindTAEF.cmake +++ b/cmake/modules/FindTAEF.cmake @@ -7,6 +7,7 @@ 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 "${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" @@ -15,24 +16,33 @@ find_path(TAEF_INCLUDE_DIR # Set variable TAEF_INCLUDE_DIR if (CMAKE_GENERATOR MATCHES "Visual Studio.*Win64" ) 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 ) elseif (CMAKE_GENERATOR MATCHES "Visual Studio.*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 ) else (CMAKE_GENERATOR MATCHES "Visual Studio.*Win64" ) 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 ) endif (CMAKE_GENERATOR MATCHES "Visual Studio.*Win64" ) @@ -40,7 +50,9 @@ set(TAEF_LIBRARIES ${TAEF_COMMON_LIBRARY} ${TAEF_WEX_COMMON_LIBRARY} ${TAEF_WEX_ set(TAEF_INCLUDE_DIRS ${TAEF_INCLUDE_DIR}) # Prefer the version that supports both x86 and x64, else prefer latest. -if(EXISTS "${WINDOWS_KIT_10_PATH}/Testing/Runtimes/TAEF/x86/te.exe" +if(EXISTS "${CMAKE_SOURCE_DIR}/external/taef/build/Binaries/amd64/te.exe") + set(TAEF_BIN_DIR "${WINDOWS_KIT_10_PATH}/Testing/Runtimes/TAEF") +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" diff --git a/utils/hct/hctgettaef.py b/utils/hct/hctgettaef.py new file mode 100644 index 000000000..65411af88 --- /dev/null +++ b/utils/hct/hctgettaef.py @@ -0,0 +1,17 @@ +import urllib +import os +import zipfile + +url = "https://github.com/Microsoft/WinObjC/raw/develop/deps/prebuilt/nuget/taef.redist.wlk.1.0.170206001-nativetargets.nupkg" +zipfile_name = os.path.join(os.environ['TEMP'], "taef.redist.wlk.1.0.170206001-nativetargets.nupkg.zip") +src_dir = os.environ['HLSL_SRC_DIR'] +taef_dir = os.path.join(src_dir, "external", "taef") + +if not os.path.isdir(taef_dir): + os.mkdir(taef_dir) + +urllib.urlretrieve(url, zipfile_name) +z = zipfile.ZipFile(zipfile_name) +z.extractall(taef_dir) +z.close() + diff --git a/utils/hct/hctstart.cmd b/utils/hct/hctstart.cmd index f37bb6f23..cbc307552 100644 --- a/utils/hct/hctstart.cmd +++ b/utils/hct/hctstart.cmd @@ -134,10 +134,12 @@ if exist "%programfiles%\windows kits\10\Testing\Runtimes\TAEF\Te.exe" set path= if exist "%programfiles(x86)%\windows kits\10\Testing\Runtimes\TAEF\Te.exe" set path=%path%;%programfiles(x86)%\windows kits\10\Testing\Runtimes\TAEF if exist "%programfiles%\windows kits\8.1\Testing\Runtimes\TAEF\Te.exe" set path=%path%;%programfiles%\windows kits\8.1\Testing\Runtimes\TAEF if exist "%programfiles(x86)%\windows kits\8.1\Testing\Runtimes\TAEF\Te.exe" set path=%path%;%programfiles(x86)%\windows kits\8.1\Testing\Runtimes\TAEF +if exist "%HLSL_SRC_DIR%\external\taef\build\Binaries\amd64\TE.exe" set path=%path%;%HLSL_SRC_DIR%\external\taef\build\Binaries\amd64 where te.exe 1>nul 2>nul if errorlevel 1 ( echo Unable to find TAEF te.exe on path - you will have to add this before running tests. echo WDK includes TAEF and is available from https://msdn.microsoft.com/en-us/windows/hardware/dn913721.aspx + echo Alternatively, consider a project-local install by running %HLSL_SRC_DIR%\utils\hct\hctgettaef.py echo Please see the README.md instructions in the project root. exit /b 1 ) @@ -178,7 +180,11 @@ if not exist "%kit_root%" ( echo Windows 10 SDK was installed but is not accessible. exit /b 1 ) -rem 10.0.14393.0 will work properly. Reject 10586 and 10240 explicitly. +rem 10.0.15063.0 and 10.0.14393.0 will work properly. Reject 10586 and 10240 explicitly. +if exist "%kit_root%\include\10.0.15063.0\um\d3d12.h" ( + echo Found Windows SDK 10.0.15063.0 + goto :eof +) if exist "%kit_root%\include\10.0.14393.0\um\d3d12.h" ( echo Found Windows SDK 10.0.14393.0 goto :eof