323 lines
7.5 KiB
CMake
323 lines
7.5 KiB
CMake
# - try to find part of DirectX SDK
|
|
#
|
|
# Cache Variables: (probably not for direct use in your scripts)
|
|
# DIRECTX_INCLUDE_DIR
|
|
#
|
|
# Variables you should use in your CMakeLists.txt:
|
|
# DIRECTX_DXGUID_LIBRARY - deprecated, see below
|
|
# DIRECTX_DXERR_LIBRARY - deprecated, see http://blogs.msdn.com/b/chuckw/archive/2012/04/24/where-s-dxerr-lib.aspx
|
|
# DIRECTX_DINPUT_LIBRARY
|
|
# DIRECTX_DINPUT_INCLUDE_DIR
|
|
# DIRECTX_D3D9_LIBRARY
|
|
# DIRECTX_D3DXOF_LIBRARY
|
|
# DIRECTX_D3DX9_LIBRARIES
|
|
# DIRECTX_INCLUDE_DIRS
|
|
# DIRECTX_FOUND - if this is not true, do not attempt to use this library
|
|
#
|
|
# Defines these macros:
|
|
# find_directx_include - wrapper for find_path that provides PATHS, HINTS, and PATH_SUFFIXES.
|
|
# find_directx_library - wrapper for find_library that provides PATHS, HINTS, and PATH_SUFFIXES.
|
|
# Requires these CMake modules:
|
|
# FindPackageHandleStandardArgs (known included with CMake >=2.6.2)
|
|
# SelectLibraryConfigurations
|
|
#
|
|
# Original Author:
|
|
# 2012 Ryan Pavlik <rpavlik@iastate.edu> <abiryan@ryand.net>
|
|
# http://academic.cleardefinition.com
|
|
# Iowa State University HCI Graduate Program/VRAC
|
|
#
|
|
# Copyright Iowa State University 2012.
|
|
# Distributed under the Boost Software License, Version 1.0.
|
|
# (See accompanying file LICENSE_1_0.txt or copy at
|
|
# http://www.boost.org/LICENSE_1_0.txt)
|
|
|
|
|
|
set(DIRECTX_ROOT_DIR
|
|
"${DIRECTX_ROOT_DIR}"
|
|
CACHE
|
|
PATH
|
|
"Root directory to search for DirectX")
|
|
|
|
if(MSVC)
|
|
file(TO_CMAKE_PATH "$ENV{ProgramFiles}" _PROG_FILES)
|
|
set(_PF86 "ProgramFiles(x86)")
|
|
file(TO_CMAKE_PATH "$ENV{${_PF86}}" _PROG_FILES_X86)
|
|
if(_PROG_FILES_X86)
|
|
set(_PROG_FILES "${_PROG_FILES_X86}")
|
|
endif()
|
|
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
|
set(_dx_lib_suffixes lib/x64 lib)
|
|
else()
|
|
set(_dx_lib_suffixes lib/x86 lib)
|
|
endif()
|
|
set(DXSDK_DIRS)
|
|
|
|
set(_dx_quiet)
|
|
if(DirectX_FIND_QUIETLY)
|
|
set(_dx_quiet QUIET)
|
|
endif()
|
|
find_package(WindowsSDK ${_dx_quiet})
|
|
if(WINDOWSSDK_FOUND)
|
|
foreach(_dir ${WINDOWSSDK_DIRS})
|
|
get_windowssdk_include_dirs(${_dir} _include_dirs)
|
|
if(_include_dirs)
|
|
list(APPEND DXSDK_DIRS ${_include_dirs})
|
|
endif()
|
|
endforeach()
|
|
endif()
|
|
|
|
macro(_append_dxsdk_in_inclusive_range _low _high)
|
|
if((NOT MSVC_VERSION LESS ${_low}) AND (NOT MSVC_VERSION GREATER ${_high}))
|
|
list(APPEND DXSDK_DIRS ${ARGN})
|
|
endif()
|
|
endmacro()
|
|
_append_dxsdk_in_inclusive_range(1500 1600 "${_PROG_FILES}/Microsoft DirectX SDK (June 2010)")
|
|
_append_dxsdk_in_inclusive_range(1400 1600
|
|
"${_PROG_FILES}/Microsoft DirectX SDK (February 2010)"
|
|
"${_PROG_FILES}/Microsoft DirectX SDK (August 2009)"
|
|
"${_PROG_FILES}/Microsoft DirectX SDK (March 2009)"
|
|
"${_PROG_FILES}/Microsoft DirectX SDK (November 2008)"
|
|
"${_PROG_FILES}/Microsoft DirectX SDK (August 2008)"
|
|
"${_PROG_FILES}/Microsoft DirectX SDK (June 2008)"
|
|
"${_PROG_FILES}/Microsoft DirectX SDK (March 2008)")
|
|
_append_dxsdk_in_inclusive_range(1310 1500
|
|
"${_PROG_FILES}/Microsoft DirectX SDK (November 2007)"
|
|
"${_PROG_FILES}/Microsoft DirectX SDK (August 2007)"
|
|
"${_PROG_FILES}/Microsoft DirectX SDK (June 2007)"
|
|
"${_PROG_FILES}/Microsoft DirectX SDK (April 2007)"
|
|
"${_PROG_FILES}/Microsoft DirectX SDK (February 2007)"
|
|
"${_PROG_FILES}/Microsoft DirectX SDK (December 2006)"
|
|
"${_PROG_FILES}/Microsoft DirectX SDK (October 2006)"
|
|
"${_PROG_FILES}/Microsoft DirectX SDK (August 2006)"
|
|
"${_PROG_FILES}/Microsoft DirectX SDK (June 2006)"
|
|
"${_PROG_FILES}/Microsoft DirectX SDK (April 2006)"
|
|
"${_PROG_FILES}/Microsoft DirectX SDK (February 2006)")
|
|
|
|
file(TO_CMAKE_PATH "$ENV{DXSDK_DIR}" ENV_DXSDK_DIR)
|
|
if(ENV_DXSDK_DIR)
|
|
list(APPEND DXSDK_DIRS ${ENV_DXSDK_DIR})
|
|
endif()
|
|
else()
|
|
set(_dx_lib_suffixes lib)
|
|
set(DXSDK_DIRS /mingw)
|
|
endif()
|
|
|
|
find_path(DIRECTX_INCLUDE_DIR
|
|
NAMES
|
|
dxdiag.h
|
|
dinput.h
|
|
dxerr8.h
|
|
PATHS
|
|
${DXSDK_DIRS}
|
|
HINTS
|
|
"${DIRECTX_ROOT_DIR}"
|
|
PATH_SUFFIXES
|
|
include)
|
|
find_path(DIRECTX_DINPUT_INCLUDE_DIR
|
|
NAMES
|
|
dinput.h
|
|
PATHS
|
|
${DXSDK_DIRS}
|
|
HINTS
|
|
"${DIRECTX_ROOT_DIR}"
|
|
PATH_SUFFIXES
|
|
include)
|
|
|
|
set(DXLIB_HINTS)
|
|
if(WINDOWSSDK_FOUND AND DIRECTX_INCLUDE_DIR)
|
|
get_windowssdk_from_component("${DIRECTX_INCLUDE_DIR}" _winsdk)
|
|
if(_winsdk)
|
|
get_windowssdk_library_dirs("${_winsdk}" _libdirs)
|
|
if(_libdirs)
|
|
list(APPEND DXLIB_HINTS ${_libdirs})
|
|
endif()
|
|
endif()
|
|
endif()
|
|
|
|
if(WINDOWSSDK_FOUND AND DIRECTX_DINPUT_INCLUDE_DIR)
|
|
get_windowssdk_from_component("${DIRECTX_DINPUT_INCLUDE_DIR}" _winsdk)
|
|
if(_winsdk)
|
|
get_windowssdk_library_dirs("${_winsdk}" _includes)
|
|
if(_includes)
|
|
list(APPEND DXLIB_HINTS ${_includes})
|
|
endif()
|
|
endif()
|
|
endif()
|
|
|
|
find_library(DIRECTX_DXGUID_LIBRARY
|
|
NAMES
|
|
dxguid
|
|
PATHS
|
|
${DXLIB_HINTS}
|
|
${DXSDK_DIRS}
|
|
HINTS
|
|
"${DIRECTX_ROOT_DIR}"
|
|
PATH_SUFFIXES
|
|
${_dx_lib_suffixes})
|
|
|
|
if(DIRECTX_DXGUID_LIBRARY)
|
|
get_filename_component(_dxsdk_lib_dir ${DIRECTX_DXGUID_LIBRARY} PATH)
|
|
list(APPEND DXLIB_HINTS "${_dxsdk_lib_dir}")
|
|
endif()
|
|
|
|
find_library(DIRECTX_DINPUT_LIBRARY
|
|
NAMES
|
|
dinput8
|
|
dinput
|
|
PATHS
|
|
${DXSDK_DIRS}
|
|
HINTS
|
|
${DXLIB_HINTS}
|
|
"${DIRECTX_ROOT_DIR}"
|
|
PATH_SUFFIXES
|
|
${_dx_lib_suffixes})
|
|
|
|
find_library(DIRECTX_DXERR_LIBRARY
|
|
NAMES
|
|
dxerr
|
|
dxerr9
|
|
dxerr8
|
|
PATHS
|
|
${DXSDK_DIRS}
|
|
HINTS
|
|
${DXLIB_HINTS}
|
|
"${DIRECTX_ROOT_DIR}"
|
|
PATH_SUFFIXES
|
|
${_dx_lib_suffixes})
|
|
|
|
find_library(DIRECTX_D3D9_LIBRARY
|
|
NAMES
|
|
d3d9
|
|
PATHS
|
|
${DXSDK_DIRS}
|
|
HINTS
|
|
${DXLIB_HINTS}
|
|
"${DIRECTX_ROOT_DIR}"
|
|
PATH_SUFFIXES
|
|
${_dx_lib_suffixes})
|
|
|
|
find_library(DIRECTX_D3DXOF_LIBRARY
|
|
NAMES
|
|
d3dxof
|
|
PATHS
|
|
${DXSDK_DIRS}
|
|
HINTS
|
|
${DXLIB_HINTS}
|
|
"${DIRECTX_ROOT_DIR}"
|
|
PATH_SUFFIXES
|
|
${_dx_lib_suffixes})
|
|
|
|
find_library(DIRECTX_D3DX9_LIBRARY_RELEASE
|
|
NAMES
|
|
d3dx9
|
|
PATHS
|
|
${DXSDK_DIRS}
|
|
HINTS
|
|
${DXLIB_HINTS}
|
|
"${DIRECTX_ROOT_DIR}"
|
|
PATH_SUFFIXES
|
|
${_dx_lib_suffixes})
|
|
|
|
find_library(DIRECTX_D3DX9_LIBRARY_DEBUG
|
|
NAMES
|
|
d3dx9d
|
|
PATHS
|
|
${DXSDK_DIRS}
|
|
HINTS
|
|
${DXLIB_HINTS}
|
|
"${DIRECTX_ROOT_DIR}"
|
|
PATH_SUFFIXES
|
|
${_dx_lib_suffixes})
|
|
|
|
find_library(DIRECTX_XINPUT_LIBRARY
|
|
NAMES
|
|
Xinput9_1_0
|
|
Xinput
|
|
PATHS
|
|
${DXSDK_DIRS}
|
|
HINTS
|
|
${DXLIB_HINTS}
|
|
"${DIRECTX_ROOT_DIR}"
|
|
PATH_SUFFIXES
|
|
${_dx_lib_suffixes})
|
|
|
|
include(SelectLibraryConfigurations)
|
|
select_library_configurations(DIRECTX_D3DX9)
|
|
|
|
set(DIRECTX_EXTRA_CHECK)
|
|
if(DIRECTX_INCLUDE_DIR)
|
|
if(MSVC80)
|
|
set(DXSDK_DEPRECATION_BUILD 1962)
|
|
endif()
|
|
|
|
if(DXSDK_DEPRECATION_BUILD)
|
|
include(CheckCSourceCompiles)
|
|
set(_dinput_old_includes ${CMAKE_REQUIRED_INCLUDES})
|
|
set(CMAKE_REQUIRED_INCLUDES "${DIRECTX_INCLUDE_DIR}")
|
|
check_c_source_compiles("
|
|
#include <dxsdkver.h>
|
|
#if _DXSDK_BUILD_MAJOR >= ${DXSDK_DEPRECATION_BUILD}
|
|
#error
|
|
#else
|
|
int main(int argc, char * argv[]) {
|
|
return 0;
|
|
}
|
|
#endif
|
|
"
|
|
DIRECTX_SDK_SUPPORTS_COMPILER)
|
|
set(DIRECTX_EXTRA_CHECK DIRECTX_SDK_SUPPORTS_COMPILER)
|
|
set(CMAKE_REQUIRED_INCLUDES "${_dinput_old_includes}")
|
|
else()
|
|
# Until proven otherwise.
|
|
set(DIRECTX_SDK_SUPPORTS_COMPILER TRUE)
|
|
endif()
|
|
endif()
|
|
|
|
include(FindPackageHandleStandardArgs)
|
|
find_package_handle_standard_args(DirectX
|
|
DEFAULT_MSG
|
|
DIRECTX_DXGUID_LIBRARY
|
|
DIRECTX_DINPUT_LIBRARY
|
|
DIRECTX_INCLUDE_DIR
|
|
${DIRECTX_EXTRA_CHECK})
|
|
|
|
if(DIRECTX_FOUND)
|
|
set(DIRECTX_LIBRARIES
|
|
"${DIRECTX_DXGUID_LIBRARY}"
|
|
"${DIRECTX_DINPUT_LIBRARY}")
|
|
|
|
set(DIRECTX_INCLUDE_DIRS "${DIRECTX_INCLUDE_DIR}")
|
|
|
|
mark_as_advanced(DIRECTX_ROOT_DIR)
|
|
endif()
|
|
|
|
macro(find_directx_library)
|
|
find_library(${ARGN}
|
|
PATHS
|
|
${DXSDK_DIRS}
|
|
HINTS
|
|
${DXLIB_HINTS}
|
|
"${DIRECTX_ROOT_DIR}"
|
|
PATH_SUFFIXES
|
|
${_dx_lib_suffixes})
|
|
endmacro()
|
|
macro(find_directx_include)
|
|
find_path(${ARGN}
|
|
PATHS
|
|
${DXSDK_DIRS}
|
|
HINTS
|
|
${DIRECTX_INCLUDE_DIR}
|
|
"${DIRECTX_ROOT_DIR}"
|
|
PATH_SUFFIXES
|
|
include)
|
|
endmacro()
|
|
|
|
mark_as_advanced(DIRECTX_DINPUT_LIBRARY
|
|
DIRECTX_DXGUID_LIBRARY
|
|
DIRECTX_DXERR_LIBRARY
|
|
DIRECTX_D3D9_LIBRARY
|
|
DIRECTX_D3DXOF_LIBRARY
|
|
DIRECTX_D3DX9_LIBRARY_RELEASE
|
|
DIRECTX_D3DX9_LIBRARY_DEBUG
|
|
DIRECTX_INCLUDE_DIR)
|