Browse Source

Use D3D12 headers from the same Windows 10 SDK version as cmake is using (#3586)

* Use D3D12 headers from the same Windows 10 SDK version as cmake is using (cmake variable CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION)

* For ARM64EC builds detect SDK version from VSDevCmd environment variable instead of a fixed version in hctbuild.cmd

* Add option -show-cmake-log to hctbuild and enable it in AppVeyor
Helena Kotas 4 years ago
parent
commit
ce6c6f709b
3 changed files with 29 additions and 7 deletions
  1. 1 1
      appveyor.yml
  2. 3 4
      cmake/modules/FindD3D12.cmake
  3. 25 2
      utils/hct/hctbuild.cmd

+ 1 - 1
appveyor.yml

@@ -38,7 +38,7 @@ before_build:
 - cmd: call utils\hct\hctstart %HLSL_SRC_DIR% %HLSL_BLD_DIR%
 - cmd: call utils\hct\hctstart %HLSL_SRC_DIR% %HLSL_BLD_DIR%
 
 
 build_script:
 build_script:
-- cmd: call utils\hct\hctbuild -%PLATFORM% -%CONFIGURATION% -spirvtest
+- cmd: call utils\hct\hctbuild -%PLATFORM% -%CONFIGURATION% -show-cmake-log -spirvtest
 - sh: mkdir build && cd build
 - sh: mkdir build && cd build
 - sh: cmake .. -GNinja $(cat ../utils/cmake-predefined-config-params) -DSPIRV_BUILD_TESTS=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_CXX_FLAGS=-Werror
 - sh: cmake .. -GNinja $(cat ../utils/cmake-predefined-config-params) -DSPIRV_BUILD_TESTS=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_CXX_FLAGS=-Werror
 - sh: ninja
 - sh: ninja

+ 3 - 4
cmake/modules/FindD3D12.cmake

@@ -1,8 +1,7 @@
-# Find the win10 SDK path.
+# Find the Win10 SDK path.
 if ("$ENV{WIN10_SDK_PATH}$ENV{WIN10_SDK_VERSION}" STREQUAL "" )
 if ("$ENV{WIN10_SDK_PATH}$ENV{WIN10_SDK_VERSION}" STREQUAL "" )
-  get_filename_component(WIN10_SDK_PATH "[HKEY_LOCAL_MACHINE\\SOFTWARE\\WOW6432Node\\Microsoft\\Microsoft SDKs\\Windows\\v10.0;InstallationFolder]" ABSOLUTE CACHE)
-  get_filename_component(TEMP_WIN10_SDK_VERSION "[HKEY_LOCAL_MACHINE\\SOFTWARE\\WOW6432Node\\Microsoft\\Microsoft SDKs\\Windows\\v10.0;ProductVersion]" ABSOLUTE CACHE)
-  get_filename_component(WIN10_SDK_VERSION ${TEMP_WIN10_SDK_VERSION} NAME)
+  get_filename_component(WIN10_SDK_PATH "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows Kits\\Installed Roots;KitsRoot10]" ABSOLUTE CACHE)
+  set (WIN10_SDK_VERSION ${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION})
 elseif(TRUE)
 elseif(TRUE)
   set (WIN10_SDK_PATH $ENV{WIN10_SDK_PATH})
   set (WIN10_SDK_PATH $ENV{WIN10_SDK_PATH})
   set (WIN10_SDK_VERSION $ENV{WIN10_SDK_VERSION})
   set (WIN10_SDK_VERSION $ENV{WIN10_SDK_VERSION})

+ 25 - 2
utils/hct/hctbuild.cmd

@@ -52,6 +52,8 @@ set VENDOR=
 set SPIRV=OFF
 set SPIRV=OFF
 set SPV_TEST=OFF
 set SPV_TEST=OFF
 set DXILCONV=ON
 set DXILCONV=ON
+set DXC_CMAKE_SYSTEM_VERSION=10.0.14393.0
+set SHOW_CMAKE_LOG=0
 
 
 if "%1"=="-s" (
 if "%1"=="-s" (
   set DO_BUILD=0
   set DO_BUILD=0
@@ -187,6 +189,11 @@ if "%1"=="-dxc-cmake" (
   shift /1
   shift /1
 )
 )
 
 
+if "%1"=="-show-cmake-log" (
+  set SHOW_CMAKE_LOG=1
+  shift /1
+)  
+
 if "%CMAKE_PATH%"=="" (
 if "%CMAKE_PATH%"=="" (
   where cmake.exe 1>nul 2>nul
   where cmake.exe 1>nul 2>nul
   if errorlevel 1 (
   if errorlevel 1 (
@@ -210,6 +217,12 @@ if "%1"=="-spirvtest" (
 )
 )
 rem End SPIRV change
 rem End SPIRV change
 
 
+rem Get SDK version from VSDevCmd (needed for ARM64X builds), strip the backslash at the end
+set ENV_SDK_VERSION=%WindowsSDKVersion%
+if "%ENV_SDK_VERSION:~-1%"=="\" (
+  set "ENV_SDK_VERSION=%ENV_SDK_VERSION:~0,-1%"
+)
+
 set BUILD_ARM_CROSSCOMPILING=0
 set BUILD_ARM_CROSSCOMPILING=0
 
 
 if /i "%BUILD_ARCH%"=="Win32" (
 if /i "%BUILD_ARCH%"=="Win32" (
@@ -250,7 +263,12 @@ if /i "%BUILD_ARCH%"=="arm64ec" (
   set BUILD_GENERATOR_PLATFORM=ARM64EC
   set BUILD_GENERATOR_PLATFORM=ARM64EC
   set BUILD_ARM_CROSSCOMPILING=1
   set BUILD_ARM_CROSSCOMPILING=1
   set VS2019ARCH=-AARM64EC
   set VS2019ARCH=-AARM64EC
-  set CMAKE_OPTS=%CMAKE_OPTS% -DCMAKE_SYSTEM_VERSION=10.0.20207.0 -DMSVC_BUILD_AS_X=1
+  if "%ENV_SDK_VERSION%"=="" (
+    set DXC_CMAKE_SYSTEM_VERSION=10.0.21330.0
+  ) else (
+    set DXC_CMAKE_SYSTEM_VERSION=%ENV_SDK_VERSION%
+  )
+  set CMAKE_OPTS=%CMAKE_OPTS% -DMSVC_BUILD_AS_X=1
 )
 )
 
 
 if "%1"=="-ninja" (
 if "%1"=="-ninja" (
@@ -289,7 +307,7 @@ set CMAKE_OPTS=%CMAKE_OPTS% -DLLVM_DEFAULT_TARGET_TRIPLE:STRING=dxil-ms-dx
 set CMAKE_OPTS=%CMAKE_OPTS% -DCLANG_BUILD_EXAMPLES:BOOL=OFF
 set CMAKE_OPTS=%CMAKE_OPTS% -DCLANG_BUILD_EXAMPLES:BOOL=OFF
 set CMAKE_OPTS=%CMAKE_OPTS% -DLLVM_REQUIRES_RTTI:BOOL=ON
 set CMAKE_OPTS=%CMAKE_OPTS% -DLLVM_REQUIRES_RTTI:BOOL=ON
 set CMAKE_OPTS=%CMAKE_OPTS% -DCLANG_CL:BOOL=OFF
 set CMAKE_OPTS=%CMAKE_OPTS% -DCLANG_CL:BOOL=OFF
-set CMAKE_OPTS=%CMAKE_OPTS% -DCMAKE_SYSTEM_VERSION=10.0.14393.0
+set CMAKE_OPTS=%CMAKE_OPTS% -DCMAKE_SYSTEM_VERSION=%DXC_CMAKE_SYSTEM_VERSION%
 set CMAKE_OPTS=%CMAKE_OPTS% -DDXC_BUILD_ARCH=%BUILD_ARCH%
 set CMAKE_OPTS=%CMAKE_OPTS% -DDXC_BUILD_ARCH=%BUILD_ARCH%
 
 
 rem ARM cross-compile setup
 rem ARM cross-compile setup
@@ -407,6 +425,11 @@ if "%DO_SETUP%"=="1" (
     echo Running "%CMAKE_PATH%" %CMAKE_OPTS% -G %4 %5 %HLSL_SRC_DIR% > %3\cmake-log.txt
     echo Running "%CMAKE_PATH%" %CMAKE_OPTS% -G %4 %5 %HLSL_SRC_DIR% > %3\cmake-log.txt
     "%CMAKE_PATH%" %CMAKE_OPTS% -G %4 %5 %HLSL_SRC_DIR% >> %3\cmake-log.txt 2>&1
     "%CMAKE_PATH%" %CMAKE_OPTS% -G %4 %5 %HLSL_SRC_DIR% >> %3\cmake-log.txt 2>&1
   )
   )
+  if %SHOW_CMAKE_LOG%==1 (
+    echo ------- Start of %3\cmake-log.txt -------
+    type %3\cmake-log.txt
+    echo -------- End of %3\cmake-log.txt --------
+  )
   if errorlevel 1 (
   if errorlevel 1 (
     echo Failed to configure cmake projects.
     echo Failed to configure cmake projects.
     echo ===== begin cmake-log.txt =====
     echo ===== begin cmake-log.txt =====