FindD3D12.cmake 3.8 KB

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