Skip to content

Commit

Permalink
Add support for an inline TAEF install rather than requiring WDK (#196)
Browse files Browse the repository at this point in the history
Adds support for SDK 10.0.15063.0.
Adds support for TAEF download into external dir, no WDK required.
  • Loading branch information
marcelolr committed Apr 11, 2017
1 parent 892e795 commit 2cce793
Show file tree
Hide file tree
Showing 4 changed files with 38 additions and 2 deletions.
1 change: 1 addition & 0 deletions .gitignore
Expand Up @@ -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
Expand Down
14 changes: 13 additions & 1 deletion cmake/modules/FindTAEF.cmake
Expand Up @@ -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"
Expand All @@ -15,32 +16,43 @@ 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" )

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 "${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"
Expand Down
17 changes: 17 additions & 0 deletions 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()

8 changes: 7 additions & 1 deletion utils/hct/hctstart.cmd
Expand Up @@ -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
)
Expand Down Expand Up @@ -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
Expand Down

0 comments on commit 2cce793

Please sign in to comment.