From: Gerhard Sittig Date: Sun, 26 Dec 2021 06:54:36 +0000 (+0100) Subject: cmake: check for optional libsigrokdecode features (send EOF) X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=commitdiff_plain;h=fe94bf8255145410d1673880932d59573c829b0e 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. --- diff --git a/CMakeLists.txt b/CMakeLists.txt index add9c02f..7791b1b1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -188,6 +188,29 @@ else() 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 + 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 #------------------------------------------------------------------------------- diff --git a/config.h.in b/config.h.in index 7720001a..f5855d18 100644 --- a/config.h.in +++ b/config.h.in @@ -34,6 +34,9 @@ /* Platform properties */ #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@" #endif