78 lines
2.1 KiB
CMake
78 lines
2.1 KiB
CMake
# Finds the Microsoft DIA SDK and sets DIASDK_FOUND and related variables.
|
|
#
|
|
# This module is intended to be used both internally by LLVM's build system and
|
|
# by consuming projects when loading LLVMConfig.cmake.
|
|
#
|
|
# LLVM_WINSYSROOT may be set for locating the DIA SDK.
|
|
#
|
|
# If successful, the following variables will be defined:
|
|
# DIASDK_FOUND
|
|
# DIASDK_INCLUDE_DIR
|
|
# DIASDK_LIBRARIES
|
|
#
|
|
# Additionally, the following import target will be defined:
|
|
# DIASDK::Diaguids
|
|
|
|
if(NOT WIN32)
|
|
set(DIASDK_FOUND FALSE)
|
|
return()
|
|
endif()
|
|
|
|
if(LLVM_WINSYSROOT)
|
|
set(MSVC_DIA_SDK_DIR "${LLVM_WINSYSROOT}/DIA SDK" CACHE PATH
|
|
"Path to the DIA SDK")
|
|
elseif($ENV{VSINSTALLDIR})
|
|
set(MSVC_DIA_SDK_DIR "$ENV{VSINSTALLDIR}DIA SDK" CACHE PATH
|
|
"Path to the DIA SDK")
|
|
elseif(NOT DEFINED MSVC_DIA_SDK_DIR)
|
|
message(STATUS "MSVC_DIA_SDK_DIR not set, and could not be inferred. DIA SDK "
|
|
"may not be found.")
|
|
endif()
|
|
|
|
find_path(DIASDK_INCLUDE_DIR
|
|
NAMES dia2.h
|
|
PATHS "${MSVC_DIA_SDK_DIR}/include"
|
|
NO_DEFAULT_PATH
|
|
NO_CMAKE_FIND_ROOT_PATH
|
|
)
|
|
|
|
if(IS_DIRECTORY "${MSVC_DIA_SDK_DIR}")
|
|
set(_DIA_SDK_LIB_DIR "${MSVC_DIA_SDK_DIR}/lib")
|
|
|
|
if("$ENV{VSCMD_ARG_TGT_ARCH}" STREQUAL "arm64")
|
|
set(_DIA_SDK_LIB_DIR "${_DIA_SDK_LIB_DIR}/arm64")
|
|
elseif("$ENV{VSCMD_ARG_TGT_ARCH}" STREQUAL "arm")
|
|
set(_DIA_SDK_LIB_DIR "${_DIA_SDK_LIB_DIR}/arm")
|
|
elseif(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
|
set(_DIA_SDK_LIB_DIR "${_DIA_SDK_LIB_DIR}/amd64")
|
|
endif()
|
|
|
|
find_library(DIASDK_LIBRARIES
|
|
NAMES diaguids
|
|
PATHS "${_DIA_SDK_LIB_DIR}"
|
|
NO_DEFAULT_PATH
|
|
NO_CMAKE_FIND_ROOT_PATH
|
|
)
|
|
endif()
|
|
|
|
include(FindPackageHandleStandardArgs)
|
|
find_package_handle_standard_args(
|
|
DIASDK
|
|
FOUND_VAR
|
|
DIASDK_FOUND
|
|
REQUIRED_VARS
|
|
DIASDK_INCLUDE_DIR
|
|
DIASDK_LIBRARIES
|
|
)
|
|
mark_as_advanced(DIASDK_INCLUDE_DIR DIASDK_LIBRARIES)
|
|
|
|
if(DIASDK_FOUND)
|
|
if(NOT TARGET DIASDK::Diaguids)
|
|
add_library(DIASDK::Diaguids UNKNOWN IMPORTED)
|
|
set_target_properties(DIASDK::Diaguids PROPERTIES
|
|
IMPORTED_LOCATION "${DIASDK_LIBRARIES}"
|
|
INTERFACE_INCLUDE_DIRECTORIES "${DIASDK_INCLUDE_DIR}"
|
|
)
|
|
endif()
|
|
endif()
|