4 # Finds the Pipewire library
6 # This will define the following variables::
8 # PIPEWIRE_FOUND - system has the Pipewire library
9 # PIPEWIRE_INCLUDE_DIRS - the Pipewire include directory
10 # PIPEWIRE_LIBRARIES - the libraries needed to use Pipewire
11 # PIPEWIRE_DEFINITIONS - the definitions needed to use Pipewire
15 pkg_check_modules(PC_PIPEWIRE libpipewire-0.3>=0.3.50 QUIET)
16 pkg_check_modules(PC_SPA libspa-0.2>=0.2 QUIET)
19 find_path(PIPEWIRE_INCLUDE_DIR NAMES pipewire/pipewire.h
20 PATHS ${PC_PIPEWIRE_INCLUDEDIR}
21 PATH_SUFFIXES pipewire-0.3)
23 find_path(SPA_INCLUDE_DIR NAMES spa/support/plugin.h
24 PATHS ${PC_SPA_INCLUDEDIR}
25 PATH_SUFFIXES spa-0.2)
27 find_library(PIPEWIRE_LIBRARY NAMES pipewire-0.3
28 PATHS ${PC_PIPEWIRE_LIBDIR})
30 if(PC_PIPEWIRE_VERSION)
31 set(PIPEWIRE_VERSION_STRING ${PC_PIPEWIRE_VERSION})
32 elseif(PIPEWIRE_INCLUDE_DIR AND EXISTS ${PIPEWIRE_INCLUDE_DIR}/pipewire/version.h)
33 file(STRINGS ${PIPEWIRE_INCLUDE_DIR}/pipewire/version.h PIPEWIRE_STRINGS)
34 string(REGEX MATCH "#define PW_MAJOR \([0-9]+\)" MAJOR_VERSION "${PIPEWIRE_STRINGS}")
35 set(MAJOR_VERSION ${CMAKE_MATCH_1})
36 string(REGEX MATCH "#define PW_MINOR \([0-9]+\)" MINOR_VERSION "${PIPEWIRE_STRINGS}")
37 set(MINOR_VERSION ${CMAKE_MATCH_1})
38 string(REGEX MATCH "#define PW_MICRO \([0-9]+\)" MICRO_VERSION "${PIPEWIRE_STRINGS}")
39 set(MICRO_VERSION ${CMAKE_MATCH_1})
40 set(PIPEWIRE_VERSION_STRING ${MAJOR_VERSION}.${MINOR_VERSION}.${MICRO_VERSION})
43 include(FindPackageHandleStandardArgs)
44 find_package_handle_standard_args(Pipewire
45 REQUIRED_VARS PIPEWIRE_LIBRARY PIPEWIRE_INCLUDE_DIR SPA_INCLUDE_DIR
46 VERSION_VAR PIPEWIRE_VERSION_STRING)
49 set(PIPEWIRE_INCLUDE_DIRS ${PIPEWIRE_INCLUDE_DIR} ${SPA_INCLUDE_DIR})
50 set(PIPEWIRE_LIBRARIES ${PIPEWIRE_LIBRARY})
51 set(PIPEWIRE_DEFINITIONS -DHAS_PIPEWIRE=1)
54 mark_as_advanced(PIPEWIRE_INCLUDE_DIR PIPEWIRE_LIBRARY)