cmake: check for optional libsigrokdecode features (send EOF)

Implement a feature check for the srd_session_send_eof() routine which
depends on the libsigrokdecode version. This test implementation is a
little more redundant than necessary, check_symbol_exists() would be
preferred instead but would not work in my local setup.
This commit is contained in:
Gerhard Sittig 2021-12-26 07:54:36 +01:00
parent 22dc404045
commit fe94bf8255
2 changed files with 26 additions and 0 deletions

View File

@ -188,6 +188,29 @@ else()
endif() endif()
endif() endif()
# Check availability of features which depend on library versions.
# TODO Ideally use check_symbol_exists() instead, reduce boilerplate.
if(ENABLE_DECODE)
include(CheckCSourceCompiles)
include(CMakePushCheckState)
cmake_push_check_state()
set(CMAKE_REQUIRED_INCLUDES "${PKGDEPS_INCLUDE_DIRS}")
set(CMAKE_REQUIRED_LIBRARIES "sigrokdecode")
foreach (LPATH ${PKGDEPS_LIBRARY_DIRS})
list(APPEND CMAKE_REQUIRED_LINK_OPTIONS "-L${LPATH}")
endforeach ()
check_c_source_compiles("
#include <libsigrokdecode/libsigrokdecode.h>
int main(int argc, char *argv[])
{
(void)argc;
(void)argv;
return srd_session_send_eof(NULL);
}
" HAVE_SRD_SESSION_SEND_EOF)
cmake_pop_check_state()
endif()
#=============================================================================== #===============================================================================
#= System Introspection #= System Introspection
#------------------------------------------------------------------------------- #-------------------------------------------------------------------------------

View File

@ -34,6 +34,9 @@
/* Platform properties */ /* Platform properties */
#cmakedefine HAVE_UNALIGNED_LITTLE_ENDIAN_ACCESS #cmakedefine HAVE_UNALIGNED_LITTLE_ENDIAN_ACCESS
/* Presence of features which depend on library versions. */
#cmakedefine HAVE_SRD_SESSION_SEND_EOF 1
#define PV_GLIBMM_VERSION "@PV_GLIBMM_VERSION@" #define PV_GLIBMM_VERSION "@PV_GLIBMM_VERSION@"
#endif #endif