FindD3D12.cmake 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. # Find the win10 SDK path.
  2. get_filename_component(WIN10_SDK_PATH "[HKEY_LOCAL_MACHINE\\SOFTWARE\\WOW6432Node\\Microsoft\\Microsoft SDKs\\Windows\\v10.0;InstallationFolder]" ABSOLUTE CACHE)
  3. get_filename_component(TEMP_WIN10_SDK_VERSION "[HKEY_LOCAL_MACHINE\\SOFTWARE\\WOW6432Node\\Microsoft\\Microsoft SDKs\\Windows\\v10.0;ProductVersion]" ABSOLUTE CACHE)
  4. get_filename_component(WIN10_SDK_VERSION ${TEMP_WIN10_SDK_VERSION} NAME)
  5. # WIN10_SDK_PATH will be something like C:\Program Files (x86)\Windows Kits\10
  6. # WIN10_SDK_VERSION will be something like 10.0.14393 or 10.0.14393.0; we need the
  7. # one that matches the directory name.
  8. if (IS_DIRECTORY "${WIN10_SDK_PATH}/Include/${WIN10_SDK_VERSION}.0")
  9. set(WIN10_SDK_VERSION "${WIN10_SDK_VERSION}.0")
  10. endif (IS_DIRECTORY "${WIN10_SDK_PATH}/Include/${WIN10_SDK_VERSION}.0")
  11. # Find the d3d12 and dxgi include path, it will typically look something like this.
  12. # C:\Program Files (x86)\Windows Kits\10\Include\10.0.10586.0\um\d3d12.h
  13. # C:\Program Files (x86)\Windows Kits\10\Include\10.0.10586.0\shared\dxgi1_4.h
  14. find_path(D3D12_INCLUDE_DIR # Set variable D3D12_INCLUDE_DIR
  15. d3d12.h # Find a path with d3d12.h
  16. HINTS "${WIN10_SDK_PATH}/Include/${WIN10_SDK_VERSION}/um"
  17. DOC "path to WIN10 SDK header files"
  18. HINTS
  19. )
  20. find_path(DXGI_INCLUDE_DIR # Set variable DXGI_INCLUDE_DIR
  21. dxgi1_4.h # Find a path with dxgi1_4.h
  22. HINTS "${WIN10_SDK_PATH}/Include/${WIN10_SDK_VERSION}/shared"
  23. DOC "path to WIN10 SDK header files"
  24. HINTS
  25. )
  26. if ("${DXC_BUILD_ARCH}" STREQUAL "x64" )
  27. find_library(D3D12_LIBRARY NAMES d3d12.lib
  28. HINTS ${WIN10_SDK_PATH}/Lib/${WIN10_SDK_VERSION}/um/x64 )
  29. elseif (CMAKE_GENERATOR MATCHES "Visual Studio.*ARM" )
  30. find_library(D3D12_LIBRARY NAMES d3d12.lib
  31. HINTS ${WIN10_SDK_PATH}/Lib/${WIN10_SDK_VERSION}/um/arm )
  32. elseif (CMAKE_GENERATOR MATCHES "Visual Studio.*ARM64" )
  33. find_library(D3D12_LIBRARY NAMES d3d12.lib
  34. HINTS ${WIN10_SDK_PATH}/Lib/${WIN10_SDK_VERSION}/um/arm64 )
  35. elseif ("${DXC_BUILD_ARCH}" STREQUAL "Win32" )
  36. find_library(D3D12_LIBRARY NAMES d3d12.lib
  37. HINTS ${WIN10_SDK_PATH}/Lib/${WIN10_SDK_VERSION}/um/x86 )
  38. endif ("${DXC_BUILD_ARCH}" STREQUAL "x64" )
  39. if ("${DXC_BUILD_ARCH}" STREQUAL "x64" )
  40. find_library(DXGI_LIBRARY NAMES dxgi.lib
  41. HINTS ${WIN10_SDK_PATH}/Lib/${WIN10_SDK_VERSION}/um/x64 )
  42. elseif (CMAKE_GENERATOR MATCHES "Visual Studio.*ARM" )
  43. find_library(DXGI_LIBRARY NAMES dxgi.lib
  44. HINTS ${WIN10_SDK_PATH}/Lib/${WIN10_SDK_VERSION}/um/arm )
  45. elseif (CMAKE_GENERATOR MATCHES "Visual Studio.*ARM64" )
  46. find_library(DXGI_LIBRARY NAMES dxgi.lib
  47. HINTS ${WIN10_SDK_PATH}/Lib/${WIN10_SDK_VERSION}/um/arm64 )
  48. elseif ("${DXC_BUILD_ARCH}" STREQUAL "Win32" )
  49. find_library(DXGI_LIBRARY NAMES dxgi.lib
  50. HINTS ${WIN10_SDK_PATH}/Lib/${WIN10_SDK_VERSION}/um/x86 )
  51. endif ("${DXC_BUILD_ARCH}" STREQUAL "x64" )
  52. set(D3D12_LIBRARIES ${D3D12_LIBRARY} ${DXGI_LIBRARY})
  53. set(D3D12_INCLUDE_DIRS ${D3D12_INCLUDE_DIR} ${DXGI_INCLUDE_DIR})
  54. include(FindPackageHandleStandardArgs)
  55. # handle the QUIETLY and REQUIRED arguments and set D3D12_FOUND to TRUE
  56. # if all listed variables are TRUE
  57. find_package_handle_standard_args(D3D12 DEFAULT_MSG
  58. D3D12_INCLUDE_DIRS D3D12_LIBRARIES)
  59. mark_as_advanced(D3D12_INCLUDE_DIRS D3D12_LIBRARIES)