diff options
Diffstat (limited to 'cmake/modules/FindPipewire.cmake')
-rw-r--r-- | cmake/modules/FindPipewire.cmake | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/cmake/modules/FindPipewire.cmake b/cmake/modules/FindPipewire.cmake new file mode 100644 index 0000000..4fff9b0 --- /dev/null +++ b/cmake/modules/FindPipewire.cmake @@ -0,0 +1,54 @@ +#.rst: +# FindPipewire +# -------------- +# Finds the Pipewire library +# +# This will define the following variables:: +# +# PIPEWIRE_FOUND - system has the Pipewire library +# PIPEWIRE_INCLUDE_DIRS - the Pipewire include directory +# PIPEWIRE_LIBRARIES - the libraries needed to use Pipewire +# PIPEWIRE_DEFINITIONS - the definitions needed to use Pipewire +# + +if(PKG_CONFIG_FOUND) + pkg_check_modules(PC_PIPEWIRE libpipewire-0.3>=0.3.24 QUIET) + pkg_check_modules(PC_SPA libspa-0.2>=0.2 QUIET) +endif() + +find_path(PIPEWIRE_INCLUDE_DIR NAMES pipewire/pipewire.h + PATHS ${PC_PIPEWIRE_INCLUDEDIR} + PATH_SUFFIXES pipewire-0.3) + +find_path(SPA_INCLUDE_DIR NAMES spa/support/plugin.h + PATHS ${PC_SPA_INCLUDEDIR} + PATH_SUFFIXES spa-0.2) + +find_library(PIPEWIRE_LIBRARY NAMES pipewire-0.3 + PATHS ${PC_PIPEWIRE_LIBDIR}) + +if(PC_PIPEWIRE_VERSION) + set(PIPEWIRE_VERSION_STRING ${PC_PIPEWIRE_VERSION}) +elseif(PIPEWIRE_INCLUDE_DIR AND EXISTS ${PIPEWIRE_INCLUDE_DIR}/pipewire/version.h) + file(STRINGS ${PIPEWIRE_INCLUDE_DIR}/pipewire/version.h PIPEWIRE_STRINGS) + string(REGEX MATCH "#define PW_MAJOR \([0-9]+\)" MAJOR_VERSION "${PIPEWIRE_STRINGS}") + set(MAJOR_VERSION ${CMAKE_MATCH_1}) + string(REGEX MATCH "#define PW_MINOR \([0-9]+\)" MINOR_VERSION "${PIPEWIRE_STRINGS}") + set(MINOR_VERSION ${CMAKE_MATCH_1}) + string(REGEX MATCH "#define PW_MICRO \([0-9]+\)" MICRO_VERSION "${PIPEWIRE_STRINGS}") + set(MICRO_VERSION ${CMAKE_MATCH_1}) + set(PIPEWIRE_VERSION_STRING ${MAJOR_VERSION}.${MINOR_VERSION}.${MICRO_VERSION}) +endif() + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(Pipewire + REQUIRED_VARS PIPEWIRE_LIBRARY PIPEWIRE_INCLUDE_DIR SPA_INCLUDE_DIR + VERSION_VAR PIPEWIRE_VERSION_STRING) + +if(PIPEWIRE_FOUND) + set(PIPEWIRE_INCLUDE_DIRS ${PIPEWIRE_INCLUDE_DIR} ${SPA_INCLUDE_DIR}) + set(PIPEWIRE_LIBRARIES ${PIPEWIRE_LIBRARY}) + set(PIPEWIRE_DEFINITIONS -DHAS_PIPEWIRE=1) +endif() + +mark_as_advanced(PIPEWIRE_INCLUDE_DIR PIPEWIRE_LIBRARY) |