1
0
mirror of https://github.com/f4exb/sdrangel.git synced 2026-07-17 16:24:08 -04:00
Files
sdrangel/cmake/Modules/FindCM256cc.cmake
T
Robin Getz 0f905d015a cmake: verify minimum libcm256cc version via pkg-config
libcm256cc does not expose its package version through its headers or
shared library, making it impossible to verify a minimum supported
version after discovery leading to errors when building.

When CM256CC_DIR is not specified, use pkg-config to verify that
libcm256cc >= 1.1.2 is available before searching for the headers and
library. If the required version is not found, disable CM256 support
and continue configuring the rest of the project.

When CM256CC_DIR is provided, treat it as an explicit user override and
search that installation directly and blindly (don't check version).

Also update the pkg-config hint variables to use the documented
*_INCLUDE_DIRS and *_LIBRARY_DIRS outputs from pkg_check_modules().
https://cmake.org/cmake/help/latest/module/FindPkgConfig.html

Signed-off-by: Robin Getz <rgetz503@gmail.com>
2026-07-10 20:02:08 -04:00

56 lines
2.1 KiB
CMake

# If CM256CC_DIR is specified, treat it as an explicit user override and
# search that installation directly. Otherwise, use pkg-config to verify
# the minimum supported libcm256cc version, since the library itself does
# not expose version information through its headers or shared library.
if (NOT CM256CC_FOUND)
if(CM256CC_DIR)
message(STATUS "Using CM256CC_DIR: ${CM256CC_DIR}")
else()
find_package(PkgConfig QUIET)
if(NOT PKG_CONFIG_FOUND)
message(STATUS "CM256CC support disabled: pkg-config is required to verify libcm256cc.")
return()
endif()
pkg_check_modules(PC_CM256CC QUIET libcm256cc>=1.1.2)
if(NOT PC_CM256CC_FOUND)
message(STATUS "CM256CC support disabled: libcm256cc >= 1.1.2 was not found.")
return()
endif()
endif()
FIND_PATH(CM256CC_INCLUDE_DIR
NAMES cm256cc/cm256.h
HINTS ${CM256CC_DIR}/include
${PC_CM256CC_INCLUDE_DIRS}
${CMAKE_INSTALL_PREFIX}/include
PATHS /usr/local/include
/usr/include
)
FIND_LIBRARY(CM256CC_LIBRARIES
NAMES cm256cc libcm256cc
HINTS ${CM256CC_DIR}/lib
${CM256CC_DIR}/lib64
${PC_CM256CC_LIBRARY_DIRS}
${CMAKE_INSTALL_PREFIX}/lib
${CMAKE_INSTALL_PREFIX}/lib64
PATHS /usr/local/lib
/usr/local/lib64
/usr/lib
/usr/lib64
)
if(CM256CC_INCLUDE_DIR AND CM256CC_LIBRARIES)
set(CM256CC_FOUND TRUE CACHE INTERNAL "CM256CC found")
message(STATUS "Found CM256cc: ${CM256CC_INCLUDE_DIR}, ${CM256CC_LIBRARIES}")
else(CM256CC_INCLUDE_DIR AND CM256CC_LIBRARIES)
set(CM256CC_FOUND FALSE CACHE INTERNAL "CM256CC found")
message(STATUS "CM256cc not found")
endif(CM256CC_INCLUDE_DIR AND CM256CC_LIBRARIES)
INCLUDE(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(CM256CC DEFAULT_MSG CM256CC_LIBRARIES CM256CC_INCLUDE_DIR)
MARK_AS_ADVANCED(CM256CC_LIBRARIES CM256CC_INCLUDE_DIR)
endif (NOT CM256CC_FOUND)