mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-26 19:51:11 +00:00
jack: Add support for detecting libjack on Windows
No source code changes were necessary to get the plugin working on Windows with MSVC. Run QJackCtl and audiotestsrc ! jackaudiosink just works. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2497>
This commit is contained in:
parent
24527856cb
commit
4865f36344
1 changed files with 93 additions and 13 deletions
|
@ -6,17 +6,97 @@ jack_sources = [
|
||||||
'gstjackutil.c',
|
'gstjackutil.c',
|
||||||
]
|
]
|
||||||
|
|
||||||
libjack_dep = dependency('jack', version : '>= 1.9.7', required : get_option('jack'))
|
jack_option = get_option('jack')
|
||||||
|
if jack_option.disabled()
|
||||||
if libjack_dep.found()
|
subdir_done()
|
||||||
gstjack = library('gstjack',
|
|
||||||
jack_sources,
|
|
||||||
c_args : gst_plugins_good_args + ['-DHAVE_JACK_1_9_7'],
|
|
||||||
include_directories : [configinc, libsinc],
|
|
||||||
dependencies : [gst_dep, gstbase_dep, gstaudio_dep, libjack_dep],
|
|
||||||
install : true,
|
|
||||||
install_dir : plugins_install_dir,
|
|
||||||
)
|
|
||||||
pkgconfig.generate(gstjack, install_dir : plugins_pkgconfig_install_dir)
|
|
||||||
plugins += [gstjack]
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
jack_incdirs = [configinc, libsinc]
|
||||||
|
|
||||||
|
libjack_dep = dependency('jack', version : '>= 1.9.7', required : false)
|
||||||
|
|
||||||
|
if not libjack_dep.found()
|
||||||
|
fs = import('fs')
|
||||||
|
host_cpu = host_machine.cpu_family()
|
||||||
|
jack_maybe_installed = false
|
||||||
|
error_msg = '"jack" option is enabled but '
|
||||||
|
if (host_system == 'windows' and build_machine.system() == 'windows')
|
||||||
|
# Need to detect whether we're running on 64-bit Windows or not.
|
||||||
|
# If `C:/Program Files (x86)/` exists, we're running on 64-bit Windows, and
|
||||||
|
# C:/Program Files/ contains 64-bit programs. Else, we're on 32-bit Windows
|
||||||
|
# and C:/Program Files/ contains 32-bit programs.
|
||||||
|
#
|
||||||
|
# The user could either have a 32-bit JACK installation or a 64-bit one.
|
||||||
|
# When building for 32-bit x86, we need to check for both.
|
||||||
|
if fs.is_dir('C:/Program Files (x86)')
|
||||||
|
jack64_install_dir = 'C:/Program Files/JACK2'
|
||||||
|
jack32_install_dir = 'C:/Program Files (x86)/JACK2'
|
||||||
|
else
|
||||||
|
jack64_install_dir = ''
|
||||||
|
jack32_install_dir = 'C:/Program Files/JACK2'
|
||||||
|
endif
|
||||||
|
|
||||||
|
if host_cpu == 'x86'
|
||||||
|
jack_install_dir = jack32_install_dir
|
||||||
|
jack_maybe_installed = fs.is_dir(jack32_install_dir / 'include')
|
||||||
|
if not jack_maybe_installed and jack64_install_dir != ''
|
||||||
|
jack_maybe_installed = fs.is_dir(jack64_install_dir / 'include')
|
||||||
|
jack_install_dir = jack64_install_dir
|
||||||
|
endif
|
||||||
|
elif jack64_install_dir != ''
|
||||||
|
jack_maybe_installed = import('fs').is_dir(jack64_install_dir / 'include')
|
||||||
|
jack_install_dir = jack64_install_dir
|
||||||
|
endif
|
||||||
|
|
||||||
|
error_msg += 'JACK2 installation could not be found'
|
||||||
|
else
|
||||||
|
error_msg += 'JACK dependency could not be found'
|
||||||
|
endif
|
||||||
|
|
||||||
|
if not jack_maybe_installed
|
||||||
|
if jack_option.enabled()
|
||||||
|
error(error_msg)
|
||||||
|
endif
|
||||||
|
subdir_done()
|
||||||
|
endif
|
||||||
|
|
||||||
|
if not host_cpu.startswith('x86')
|
||||||
|
if jack_option.enabled()
|
||||||
|
error('On Windows, JACK only supports x86 32-bit and 64-bit')
|
||||||
|
endif
|
||||||
|
subdir_done()
|
||||||
|
endif
|
||||||
|
|
||||||
|
if host_cpu == 'x86'
|
||||||
|
jack_libname = 'libjack'
|
||||||
|
if jack_install_dir == jack64_install_dir
|
||||||
|
jack_libdir = jack_install_dir / 'lib32'
|
||||||
|
else
|
||||||
|
jack_libdir = jack_install_dir / 'lib'
|
||||||
|
endif
|
||||||
|
else
|
||||||
|
jack_libname = 'libjack64'
|
||||||
|
jack_libdir = jack_install_dir / 'lib'
|
||||||
|
endif
|
||||||
|
|
||||||
|
inc = include_directories(jack_install_dir / 'include')
|
||||||
|
libjack_dep = cc.find_library(jack_libname,
|
||||||
|
dirs: jack_libdir,
|
||||||
|
has_headers: 'jack/jack.h',
|
||||||
|
header_include_directories: inc,
|
||||||
|
required: jack_option)
|
||||||
|
# This won't be needed once we require a meson version that includes this:
|
||||||
|
# https://github.com/mesonbuild/meson/pull/10428
|
||||||
|
jack_incdirs += inc
|
||||||
|
endif
|
||||||
|
|
||||||
|
gstjack = library('gstjack',
|
||||||
|
jack_sources,
|
||||||
|
c_args : gst_plugins_good_args + ['-DHAVE_JACK_1_9_7'],
|
||||||
|
include_directories : jack_incdirs,
|
||||||
|
dependencies : [gst_dep, gstbase_dep, gstaudio_dep, libjack_dep],
|
||||||
|
install : true,
|
||||||
|
install_dir : plugins_install_dir,
|
||||||
|
)
|
||||||
|
pkgconfig.generate(gstjack, install_dir : plugins_pkgconfig_install_dir)
|
||||||
|
plugins += [gstjack]
|
||||||
|
|
Loading…
Reference in a new issue