2014-01-20 16:58:58 +01:00
#-------------------------------------------------------------------
# This file is part of the CMake build system for OGRE
# (Object-oriented Graphics Rendering Engine)
# For the latest info, see http://www.ogre3d.org/
#
# The contents of this file are placed in the public domain. Feel
# free to make use of it in any way you like.
#-------------------------------------------------------------------
# -----------------------------------------------------------------------------
# Find DirectX SDK
# Define:
# DirectX_FOUND
# DirectX_INCLUDE_DIR
# DirectX_LIBRARY
# DirectX_ROOT_DIR
if ( DirectX_D3D10_INCLUDE_DIR AND DirectX_D3D10_LIBRARY )
2014-01-29 14:56:40 +01:00
set ( DirectX_D3D10_FOUND TRUE )
2014-01-20 16:58:58 +01:00
endif ( )
if ( DirectX_D3D11_INCLUDE_DIR AND DirectX_D3D11_LIBRARY )
2014-01-29 14:56:40 +01:00
set ( DirectX_D3D11_FOUND TRUE )
2014-01-20 16:58:58 +01:00
endif ( )
if ( DirectX_INCLUDE_DIR AND DirectX_LIBRARY )
2014-01-29 14:56:40 +01:00
set ( DirectX_FOUND TRUE )
return ( )
2014-01-20 16:58:58 +01:00
endif ( )
macro ( findpkg_begin PREFIX )
if ( NOT ${ PREFIX } _FIND_QUIETLY )
message ( STATUS "Looking for ${PREFIX}..." )
endif ( )
endmacro ( findpkg_begin )
macro ( getenv_path VAR )
set ( ENV_ ${ VAR } $ENV{ ${VAR } } )
# replace won't work if var is blank
if ( ENV_ ${ VAR } )
string ( REGEX REPLACE "\\\\" "/" ENV_ ${ VAR } ${ ENV_${VAR } } )
endif ( )
endmacro ( getenv_path )
macro ( create_search_paths PREFIX )
foreach ( dir ${ ${PREFIX } _PREFIX_PATH} )
set ( ${ PREFIX } _INC_SEARCH_PATH ${ ${PREFIX } _INC_SEARCH_PATH}
$ { d i r } / i n c l u d e $ { d i r } / i n c l u d e / $ { P R E F I X } $ { d i r } / H e a d e r s $ { d i r } / I n c l u d e / u m )
set ( ${ PREFIX } _LIB_SEARCH_PATH ${ ${PREFIX } _LIB_SEARCH_PATH}
2014-01-29 14:56:40 +01:00
$ { d i r } / l i b $ { d i r } / l i b / $ { P R E F I X } $ { d i r } / L i b s $ { d i r } / L i b / w i n v 6 . 3 / u m $ { d i r } / L i b / w i n 8 / u m )
2014-01-20 16:58:58 +01:00
endforeach ( dir )
set ( ${ PREFIX } _FRAMEWORK_SEARCH_PATH ${ ${PREFIX } _PREFIX_PATH} )
endmacro ( create_search_paths )
macro ( clear_if_changed TESTVAR )
# test against internal check variable
if ( NOT "${${TESTVAR}}" STREQUAL "${${TESTVAR}_INT_CHECK}" )
message ( STATUS "${TESTVAR} changed." )
foreach ( var ${ ARGN } )
set ( ${ var } "NOTFOUND" CACHE STRING "x" FORCE )
endforeach ( var )
endif ( )
set ( ${ TESTVAR } _INT_CHECK ${ ${TESTVAR } } CACHE INTERNAL "x" FORCE )
endmacro ( clear_if_changed )
macro ( findpkg_finish PREFIX )
# skip if already processed during this run
if ( NOT ${ PREFIX } _FOUND )
if ( ${ PREFIX } _INCLUDE_DIR AND ${ PREFIX } _LIBRARY )
set ( ${ PREFIX } _FOUND TRUE )
set ( ${ PREFIX } _INCLUDE_DIRS ${ ${PREFIX } _INCLUDE_DIR} )
set ( ${ PREFIX } _LIBRARIES ${ ${PREFIX } _LIBRARY} )
if ( NOT ${ PREFIX } _FIND_QUIETLY )
message ( STATUS "Found ${PREFIX}: ${${PREFIX}_LIBRARIES}" )
endif ( )
else ( )
if ( NOT ${ PREFIX } _FIND_QUIETLY )
message ( STATUS "Could not locate ${PREFIX}" )
endif ( )
if ( ${ PREFIX } _FIND_REQUIRED )
message ( FATAL_ERROR "Required library ${PREFIX} not found! Install the library (including dev packages) and try again. If the library is already installed, set the missing variables manually in cmake." )
endif ( )
endif ( )
mark_as_advanced ( ${ PREFIX } _INCLUDE_DIR ${ PREFIX } _LIBRARY ${ PREFIX } _LIBRARY_REL ${ PREFIX } _LIBRARY_DBG ${ PREFIX } _LIBRARY_FWK )
endif ( )
endmacro ( findpkg_finish )
if ( WIN32 ) # The only platform it makes sense to check for DirectX SDK
findpkg_begin ( DirectX )
# Get path, convert backslashes as ${ENV_DXSDK_DIR}
getenv_path ( DXSDK_DIR )
getenv_path ( DIRECTX_HOME )
getenv_path ( DIRECTX_ROOT )
getenv_path ( DIRECTX_BASE )
getenv_path ( WindowsSDK80Path )
getenv_path ( WindowsSDK81Path )
# construct search paths
set ( DirectX_PREFIX_PATH
" $ { W i n d o w s S D K 8 1 P a t h } " " $ { E N V _ W i n d o w s S D K 8 1 P a t h } "
" $ { W i n d o w s S D K 8 0 P a t h } " " $ { E N V _ W i n d o w s S D K 8 0 P a t h } "
2014-01-29 14:56:40 +01:00
" C : / P r o g r a m F i l e s / W i n d o w s K i t s / 8 . 1 "
" C : / P r o g r a m Files ( x86 ) / W i n d o w s K i t s / 8 . 1 "
" C : / P r o g r a m F i l e s / W i n d o w s K i t s / 8 . 0 "
" C : / P r o g r a m Files ( x86 ) / W i n d o w s K i t s / 8 . 0 "
2014-01-20 16:58:58 +01:00
" $ { D X S D K _ D I R } " " $ { E N V _ D X S D K _ D I R } "
" $ { D I R E C T X _ H O M E } " " $ { E N V _ D I R E C T X _ H O M E } "
" $ { D I R E C T X _ R O O T } " " $ { E N V _ D I R E C T X _ R O O T } "
" $ { D I R E C T X _ B A S E } " " $ { E N V _ D I R E C T X _ B A S E } "
" C : / a p p s _ x 8 6 / M i c r o s o f t D i r e c t X S D K * "
" C : / P r o g r a m Files ( x86 ) / M i c r o s o f t D i r e c t X S D K * "
" C : / a p p s / M i c r o s o f t D i r e c t X S D K * "
" C : / P r o g r a m F i l e s / M i c r o s o f t D i r e c t X S D K * "
2014-01-29 14:56:40 +01:00
" $ E N V { P r o g r a m F i l e s } / M i c r o s o f t D i r e c t X S D K * "
2014-01-20 16:58:58 +01:00
)
create_search_paths ( DirectX )
# redo search if prefix path changed
clear_if_changed ( DirectX_PREFIX_PATH
D i r e c t X _ L I B R A R Y
2014-01-29 14:56:40 +01:00
D i r e c t X _ I N C L U D E _ D I R
D i r e c t X _ R O O T _ D I R
2014-01-20 16:58:58 +01:00
)
find_path ( DirectX_INCLUDE_DIR NAMES d3d9.h HINTS ${ DirectX_INC_SEARCH_PATH } )
# dlls are in DirectX_ROOT_DIR/Developer Runtime/x64|x86
# lib files are in DirectX_ROOT_DIR/Lib/x64|x86
if ( CMAKE_SIZEOF_VOID_P EQUAL 8 )
set ( DirectX_LIBPATH_SUFFIX "x64" )
else ( )
set ( DirectX_LIBPATH_SUFFIX "x86" )
endif ( )
find_library ( DirectX_LIBRARY NAMES d3d9 HINTS ${ DirectX_LIB_SEARCH_PATH } PATH_SUFFIXES ${ DirectX_LIBPATH_SUFFIX } )
find_library ( DirectX_D3DX9_LIBRARY NAMES d3dx9 HINTS ${ DirectX_LIB_SEARCH_PATH } PATH_SUFFIXES ${ DirectX_LIBPATH_SUFFIX } )
find_library ( DirectX_DXERR9_LIBRARY NAMES dxerr HINTS ${ DirectX_LIB_SEARCH_PATH } PATH_SUFFIXES ${ DirectX_LIBPATH_SUFFIX } )
find_library ( DirectX_DXGUID_LIBRARY NAMES dxguid HINTS ${ DirectX_LIB_SEARCH_PATH } PATH_SUFFIXES ${ DirectX_LIBPATH_SUFFIX } )
find_library ( DirectX_DINPUT8_LIBRARY NAMES dinput8 HINTS ${ DirectX_LIB_SEARCH_PATH } PATH_SUFFIXES ${ DirectX_LIBPATH_SUFFIX } )
find_library ( DirectX_XINPUT_LIBRARY NAMES xinput HINTS ${ DirectX_LIB_SEARCH_PATH } PATH_SUFFIXES ${ DirectX_LIBPATH_SUFFIX } )
find_library ( DirectX_DXGI_LIBRARY NAMES dxgi HINTS ${ DirectX_LIB_SEARCH_PATH } PATH_SUFFIXES ${ DirectX_LIBPATH_SUFFIX } )
find_library ( DirectX_D3DCOMPILER_LIBRARY NAMES d3dcompiler HINTS ${ DirectX_LIB_SEARCH_PATH } PATH_SUFFIXES ${ DirectX_LIBPATH_SUFFIX } )
if ( DirectX_INCLUDE_DIR )
set ( DirectX_ROOT_DIR "${DirectX_INCLUDE_DIR}/.." )
endif ( DirectX_INCLUDE_DIR )
findpkg_finish ( DirectX )
set ( DirectX_LIBRARIES
2014-01-29 14:56:40 +01:00
$ { D i r e c t X _ L I B R A R I E S }
2014-01-20 16:58:58 +01:00
$ { D i r e c t X _ D 3 D X 9 _ L I B R A R Y }
$ { D i r e c t X _ D X E R R 9 _ L I B R A R Y }
$ { D i r e c t X _ D X G U I D _ L I B R A R Y }
$ { D i r e c t X _ D I N P U T 8 _ L I B R A R Y }
$ { D i r e c t X _ D X G I _ L I B R A R Y }
$ { D i r e c t X _ D 3 D C O M P I L E R _ L I B R A R Y }
)
# look for D3D10.1 components
if ( DirectX_FOUND )
find_path ( DirectX_D3D10_INCLUDE_DIR NAMES d3d10_1shader.h HINTS ${ DirectX_INC_SEARCH_PATH } NO_DEFAULT_PATH )
2014-01-29 14:56:40 +01:00
get_filename_component ( DirectX_LIBRARY_DIR "${DirectX_LIBRARY}" PATH )
message ( STATUS "DX lib dir: ${DirectX_LIBRARY_DIR}" )
find_library ( DirectX_D3D10_LIBRARY NAMES d3d10 HINTS ${ DirectX_LIB_SEARCH_PATH } PATH_SUFFIXES ${ DirectX_LIBPATH_SUFFIX } )
find_library ( DirectX_D3DX10_LIBRARY NAMES d3dx10 HINTS ${ DirectX_LIB_SEARCH_PATH } PATH_SUFFIXES ${ DirectX_LIBPATH_SUFFIX } )
if ( DirectX_D3D10_INCLUDE_DIR AND DirectX_D3D10_LIBRARY )
set ( DirectX_D3D10_FOUND TRUE )
set ( DirectX_D3D10_INCLUDE_DIRS ${ DirectX_D3D10_INCLUDE_DIR } CACHE PATH "D3D10 Include Dirs" )
set ( DirectX_D3D10_LIBRARIES ${ DirectX_D3D10_LIBRARY } CACHE STRING "D3D10 Libraries" )
endif ( )
2014-01-20 16:58:58 +01:00
endif ( )
# look for D3D11 components
if ( DirectX_FOUND )
find_path ( DirectX_D3D11_INCLUDE_DIR NAMES D3D11Shader.h HINTS ${ DirectX_INC_SEARCH_PATH } NO_DEFAULT_PATH )
2014-01-29 14:56:40 +01:00
get_filename_component ( DirectX_LIBRARY_DIR "${DirectX_LIBRARY}" PATH )
message ( STATUS "DX lib dir: ${DirectX_LIBRARY_DIR}" )
find_library ( DirectX_D3D11_LIBRARY NAMES d3d11 d3d11_beta HINTS ${ DirectX_LIB_SEARCH_PATH } PATH_SUFFIXES ${ DirectX_LIBPATH_SUFFIX } )
find_library ( DirectX_D3DX11_LIBRARY NAMES d3dx11 HINTS ${ DirectX_LIB_SEARCH_PATH } PATH_SUFFIXES ${ DirectX_LIBPATH_SUFFIX } )
if ( DirectX_D3D11_INCLUDE_DIR AND DirectX_D3D11_LIBRARY )
set ( DirectX_D3D11_FOUND TRUE )
set ( DirectX_D3D11_INCLUDE_DIRS ${ DirectX_D3D11_INCLUDE_DIR } CACHE PATH "D3D11 Include Dirs" )
set ( DirectX_D3D11_LIBRARIES ${ DirectX_D3D11_LIBRARY } CACHE STRING "D3D11 Libraries" )
endif ( )
2014-01-20 16:58:58 +01:00
endif ( )
endif ( WIN32 )