| # 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(DEFINED 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() |