blob: f3133d29de3b2d3aaaa85878c0bd87c1b6836b78 [file] [edit]
# 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()