mirror of
https://github.com/holub/mame
synced 2025-06-21 03:36:33 +03:00

* Tested and works on Windows, macOS, and Linux. * Fixes compatibility with macOS Ventura and bugfixes WASAPI and WDM-KS on Windows.
68 lines
1.8 KiB
CMake
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()
|