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