mame/3rdparty/portaudio/cmake/modules/FindJACK.cmake
arbee 645bbe989b PortAudio: sync to upstream GitHub revision 0e9b386a1053261340bc8bb32335484ef77b258b [R. Belmont, PortAudio team]
* Tested and works on Windows, macOS, and Linux.
* Fixes compatibility with macOS Ventura and bugfixes WASAPI and WDM-KS on Windows.
2023-04-01 19:03:31 -04:00

68 lines
1.8 KiB
CMake

#[=======================================================================[.rst:
FindJACK
--------
Finds the JACK Audio Connection Kit library.
Imported Targets
^^^^^^^^^^^^^^^^
This module provides the following imported targets, if found:
``JACK::jack``
The JACK library
#]=======================================================================]
# Prefer finding the libraries from pkgconfig rather than find_library. This is
# required to build with PipeWire's reimplementation of the JACK library.
#
# This also enables using PortAudio with the jack2 port in vcpkg. That only
# builds JackWeakAPI (not the JACK server) which dynamically loads the real
# JACK library and forwards API calls to it. JackWeakAPI requires linking `dl`
# in addition to jack, as specified in the pkgconfig file in vcpkg.
find_package(PkgConfig QUIET)
if(PkgConfig_FOUND)
pkg_check_modules(JACK jack)
else()
find_library(JACK_LINK_LIBRARIES
NAMES jack
DOC "JACK library"
)
find_path(JACK_INCLUDEDIR
NAMES jack/jack.h
DOC "JACK header"
)
endif()
find_package(Regex)
list(APPEND JACK_LINK_LIBRARIES Regex::regex)
if(NOT CMAKE_USE_PTHREADS_INIT)
# This CMake find module is provided by the pthreads port in vcpkg.
find_package(pthreads)
list(APPEND JACK_LINK_LIBRARIES PThreads4W::PThreads4W)
endif()
if(CMAKE_USE_PTHREADS_INIT OR TARGET PThreads4W::PThreads4W)
set(PTHREADS_AVAILABLE TRUE)
else()
set(PTHREADS_AVAILABLE FALSE)
endif()
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(
JACK
DEFAULT_MSG
JACK_LINK_LIBRARIES
JACK_INCLUDEDIR
PTHREADS_AVAILABLE
Regex_FOUND
)
if(JACK_FOUND AND NOT TARGET JACK::jack)
add_library(JACK::jack INTERFACE IMPORTED)
target_link_libraries(JACK::jack INTERFACE "${JACK_LINK_LIBRARIES}" Regex::regex)
target_include_directories(JACK::jack INTERFACE "${JACK_INCLUDEDIR}")
endif()