FindDirectX.cmake 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. # TAKEN FROM HERE: https://github.com/apitrace/apitrace/blob/master/cmake/FindDirectX.cmake
  2. # - try to find DirectX include directories and libraries
  3. #
  4. # Once done this will define:
  5. #
  6. # DirectX_XYZ_INCLUDE_FOUND - system has the include for the XYZ API
  7. # DirectX_XYZ_INCLUDE_DIR - include directory for the XYZ API
  8. #
  9. # Where XYZ can be any of:
  10. #
  11. # DDRAW
  12. # D3D
  13. # D3D8
  14. # D3D9
  15. # D3D10
  16. # D3D10_1
  17. # D3D11
  18. # D3D11_1
  19. # D3D11_2
  20. # D2D1
  21. #
  22. include (CheckIncludeFileCXX)
  23. include (FindPackageMessage)
  24. if (WIN32)
  25. if (CMAKE_SIZEOF_VOID_P EQUAL 8)
  26. set (DirectX_ARCHITECTURE x64)
  27. else ()
  28. set (DirectX_ARCHITECTURE x86)
  29. endif ()
  30. # Can't use "$ENV{ProgramFiles(x86)}" to avoid violating CMP0053. See
  31. # http://public.kitware.com/pipermail/cmake-developers/2014-October/023190.html
  32. set (ProgramFiles_x86 "ProgramFiles(x86)")
  33. if ("$ENV{${ProgramFiles_x86}}")
  34. set (ProgramFiles "$ENV{${ProgramFiles_x86}}")
  35. else ()
  36. set (ProgramFiles "$ENV{ProgramFiles}")
  37. endif ()
  38. find_path (DirectX_ROOT_DIR
  39. Include/d3d9.h
  40. PATHS
  41. "$ENV{DXSDK_DIR}"
  42. "${ProgramFiles}/Microsoft DirectX SDK (June 2010)"
  43. "${ProgramFiles}/Microsoft DirectX SDK (February 2010)"
  44. "${ProgramFiles}/Microsoft DirectX SDK (March 2009)"
  45. "${ProgramFiles}/Microsoft DirectX SDK (August 2008)"
  46. "${ProgramFiles}/Microsoft DirectX SDK (June 2008)"
  47. "${ProgramFiles}/Microsoft DirectX SDK (March 2008)"
  48. "${ProgramFiles}/Microsoft DirectX SDK (November 2007)"
  49. "${ProgramFiles}/Microsoft DirectX SDK (August 2007)"
  50. "${ProgramFiles}/Microsoft DirectX SDK"
  51. DOC "DirectX SDK root directory"
  52. )
  53. if (DirectX_ROOT_DIR)
  54. set (DirectX_INC_SEARCH_PATH "${DirectX_ROOT_DIR}/Include")
  55. set (DirectX_LIB_SEARCH_PATH "${DirectX_ROOT_DIR}/Lib/${DirectX_ARCHITECTURE}")
  56. set (DirectX_BIN_SEARCH_PATH "${DirectX_ROOT_DIR}/Utilities/bin/x86")
  57. endif ()
  58. # With VS 2011 and Windows 8 SDK, the DirectX SDK is included as part of
  59. # the Windows SDK.
  60. #
  61. # See also:
  62. # - http://msdn.microsoft.com/en-us/library/windows/desktop/ee663275.aspx
  63. if (MSVC)
  64. set (USE_WINSDK_HEADERS TRUE)
  65. endif ()
  66. # Find a header in the DirectX SDK
  67. macro (find_dxsdk_header var_name header)
  68. set (include_dir_var "DirectX_${var_name}_INCLUDE_DIR")
  69. set (include_found_var "DirectX_${var_name}_INCLUDE_FOUND")
  70. find_path (${include_dir_var} ${header}
  71. HINTS ${DirectX_INC_SEARCH_PATH}
  72. DOC "The directory where ${header} resides"
  73. CMAKE_FIND_ROOT_PATH_BOTH
  74. )
  75. if (${include_dir_var})
  76. set (${include_found_var} TRUE)
  77. find_package_message (${var_name}_INC "Found ${header} header: ${${include_dir_var}}/${header}" "[${${include_dir_var}}]")
  78. endif ()
  79. mark_as_advanced (${include_found_var})
  80. endmacro ()
  81. # Find a header in the Windows SDK
  82. macro (find_winsdk_header var_name header)
  83. if (USE_WINSDK_HEADERS)
  84. # Windows SDK
  85. set (include_dir_var "DirectX_${var_name}_INCLUDE_DIR")
  86. set (include_found_var "DirectX_${var_name}_INCLUDE_FOUND")
  87. check_include_file_cxx (${header} ${include_found_var})
  88. set (${include_dir_var})
  89. mark_as_advanced (${include_found_var})
  90. else ()
  91. find_dxsdk_header (${var_name} ${header})
  92. endif ()
  93. endmacro ()
  94. find_winsdk_header (D3D d3d.h)
  95. if (MSVC)
  96. set (DirectX_D3D8_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/thirdparty/dxsdk_aug2007)
  97. set (DirectX_D3D8_INCLUDE_FOUND TRUE)
  98. mark_as_advanced (DirectX_D3D8_INCLUDE_FOUND)
  99. else ()
  100. find_dxsdk_header (D3D8 d3d8.h)
  101. endif ()
  102. find_winsdk_header (D3D9 d3d9.h)
  103. find_winsdk_header (D3D11_4 d3d11_4.h)
  104. find_winsdk_header (D2D1_1 d2d1_1.h)
  105. find_program (DirectX_FXC_EXECUTABLE fxc
  106. HINTS ${DirectX_BIN_SEARCH_PATH}
  107. DOC "Path to fxc.exe executable."
  108. )
  109. endif ()