| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- # Filename: FindDirect3D9.cmake
- # Authors: CFSworks (26 Oct, 2018)
- #
- # Usage:
- # find_package(Direct3D9 [REQUIRED] [QUIET])
- #
- # This supports the following components:
- # d3dx9
- # dxerr
- # dxguid
- #
- # Once done this will define:
- # DIRECT3D9_FOUND - system has Direct3D 9.x
- # DIRECT3D9_INCLUDE_DIR - the include directory containing d3d9.h - note that
- # this will be empty if it's part of the Windows SDK.
- # DIRECT3D9_LIBRARY - the path to d3d9.lib
- # DIRECT3D9_LIBRARIES - the path to d3d9.lib and all extra component
- # libraries
- #
- include(CheckIncludeFile)
- if(Direct3D9_FIND_QUIETLY)
- if(DEFINED CMAKE_REQUIRED_QUIET)
- set(_OLD_CMAKE_REQUIRED_QUIET ${CMAKE_REQUIRED_QUIET})
- endif()
- # Suppress check_include_file messages
- set(CMAKE_REQUIRED_QUIET ON)
- endif()
- check_include_file("d3d9.h" SYSTEM_INCLUDE_D3D9_H)
- mark_as_advanced(SYSTEM_INCLUDE_D3D9_H)
- if(Direct3D9_FIND_QUIETLY)
- if(DEFINED _OLD_CMAKE_REQUIRED_QUIET)
- set(CMAKE_REQUIRED_QUIET ${_OLD_CMAKE_REQUIRED_QUIET})
- unset(_OLD_CMAKE_REQUIRED_QUIET)
- else()
- unset(CMAKE_REQUIRED_QUIET)
- endif()
- endif()
- if(SYSTEM_INCLUDE_D3D9_H
- AND NOT Direct3D9_FIND_REQUIRED_d3dx9
- AND NOT Direct3D9_FIND_REQUIRED_dxerr)
- # It's available as #include <d3d9.h> - easy enough. We'll use "." as a way
- # of saying "We found it, but please erase this variable later."
- set(DIRECT3D9_INCLUDE_DIR ".")
- # Since d3d9.h is on the search path, we can pretty much assume d3d9.lib is
- # as well.
- set(DIRECT3D9_LIBRARY "d3d9.lib")
- # And dxguid.lib, why not
- set(DIRECT3D9_dxguid_LIBRARY "dxguid.lib")
- else()
- # We could not find it easily - maybe it's installed separately as part of
- # the DirectX SDK?
- find_path(DIRECT3D9_INCLUDE_DIR
- NAMES d3d9.h
- PATHS "$ENV{DXSDK_DIR}/Include")
- if(CMAKE_SIZEOF_VOID_P EQUAL 8)
- set(dx_lib_path "$ENV{DXSDK_DIR}/Lib/x64/")
- else()
- set(dx_lib_path "$ENV{DXSDK_DIR}/Lib/x86/")
- endif()
- find_library(DIRECT3D9_LIBRARY d3d9 "${dx_lib_path}" NO_DEFAULT_PATH)
- find_library(DIRECT3D9_d3dx9_LIBRARY d3dx9 "${dx_lib_path}" NO_DEFAULT_PATH)
- find_library(DIRECT3D9_dxerr_LIBRARY dxerr "${dx_lib_path}" NO_DEFAULT_PATH)
- find_library(DIRECT3D9_dxguid_LIBRARY dxguid "${dx_lib_path}" NO_DEFAULT_PATH)
- unset(dx_lib_path)
- endif()
- mark_as_advanced(DIRECT3D9_INCLUDE_DIR DIRECT3D9_LIBRARY)
- set(DIRECT3D9_LIBRARIES "${DIRECT3D9_LIBRARY}")
- foreach(_component d3dx9 dxerr dxguid)
- if(DIRECT3D9_${_component}_LIBRARY)
- set(Direct3D9_${_component}_FOUND ON)
- list(FIND Direct3D9_FIND_COMPONENTS "${_component}" _index)
- if(${_index} GREATER -1)
- list(APPEND DIRECT3D9_LIBRARIES "${DIRECT3D9_${_component}_LIBRARY}")
- endif()
- unset(_index)
- endif()
- endforeach(_component)
- unset(_component)
- include(FindPackageHandleStandardArgs)
- find_package_handle_standard_args(Direct3D9 HANDLE_COMPONENTS
- REQUIRED_VARS DIRECT3D9_INCLUDE_DIR DIRECT3D9_LIBRARY DIRECT3D9_LIBRARIES)
- # See above - if we found the include as part of the system path, we don't want
- # to actually modify the include search path, but we need a non-empty string to
- # satisfy find_package_handle_standard_args()
- if(DIRECT3D9_INCLUDE_DIR STREQUAL ".")
- set(DIRECT3D9_INCLUDE_DIR "")
- endif()
|