wireshark/cmake/modules/FindSMI.cmake

73 lines
2.1 KiB
CMake

#
# - Find smi
# Find the native SMI includes and library
#
# SMI_INCLUDE_DIRS - where to find smi.h, etc.
# SMI_LIBRARIES - List of libraries when using smi.
# SMI_FOUND - True if smi found.
# SMI_DLL_DIR - (Windows) Path to the SMI DLL.
# SMI_DLL - (Windows) Name of the SMI DLL.
# SMI_SHARE_DIR - (Windows) Path to the SMI MIBs.
IF (SMI_INCLUDE_DIR)
# Already in cache, be silent
SET(SMI_FIND_QUIETLY TRUE)
ENDIF (SMI_INCLUDE_DIR)
INCLUDE(FindWSWinLibs)
FindWSWinLibs("libsmi-.*" "SMI_HINTS")
FIND_PATH(SMI_INCLUDE_DIR smi.h HINTS "${SMI_HINTS}/include" )
IF(MSVC)
SET(SMI_NAMES libsmi-2)
ELSE()
SET(SMI_NAMES smi libsmi-2)
ENDIF()
FIND_LIBRARY(SMI_LIBRARY NAMES ${SMI_NAMES} HINTS "${SMI_HINTS}/lib" )
# handle the QUIETLY and REQUIRED arguments and set SMI_FOUND to TRUE if
# all listed variables are TRUE
INCLUDE(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(SMI DEFAULT_MSG SMI_LIBRARY SMI_INCLUDE_DIR)
IF(SMI_FOUND)
SET( SMI_LIBRARIES ${SMI_LIBRARY} )
SET( SMI_INCLUDE_DIRS ${SMI_INCLUDE_DIR} )
if (WIN32)
set ( SMI_DLL_DIR "${SMI_HINTS}/bin"
CACHE PATH "Path to the SMI DLL"
)
set ( SMI_SHARE_DIR "${SMI_HINTS}/share"
CACHE PATH "Path to the SMI MIBs"
)
file( GLOB _smi_dll RELATIVE "${SMI_DLL_DIR}"
"${SMI_DLL_DIR}/libsmi-*.dll"
)
set ( SMI_DLL ${_smi_dll}
# We're storing filenames only. Should we use STRING instead?
CACHE FILEPATH "SMI DLL file name"
)
mark_as_advanced( SMI_DLL_DIR SMI_DLL )
endif()
include(CheckSymbolExists)
cmake_push_check_state()
set(CMAKE_REQUIRED_INCLUDES ${SMI_INCLUDE_DIRS})
set(CMAKE_REQUIRED_LIBRARIES ${SMI_LIBRARIES})
# On Windows symbol visibility for global variables defaults to hidden
# and libsmi doesn't use any visibility decorators.
check_symbol_exists("smi_version_string" "smi.h" HAVE_SMI_VERSION_STRING)
cmake_pop_check_state()
ELSE(SMI_FOUND)
SET( SMI_LIBRARIES )
SET( SMI_INCLUDE_DIRS )
SET( SMI_DLL_DIR )
SET( SMI_SHARE_DIR )
SET( SMI_DLL )
ENDIF(SMI_FOUND)
MARK_AS_ADVANCED( SMI_LIBRARIES SMI_INCLUDE_DIRS )