From c18cd941aaa4c16ac713bc4f1e16ada5281d689e Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Sun, 17 Mar 2019 23:36:52 +0100 Subject: [PATCH] lib/xiph: disable Tremor detection if libvorbis was found And disable libvorbis detection if Tremor was explicitly enabled. This fixes a crash bug caused by libvorbis/Tremor ABI conflict caused by commit 4f7d52dbf2eaee15a517363c846650d76f45739f --- NEWS | 1 + src/lib/xiph/meson.build | 17 +++++++++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/NEWS b/NEWS index 29a697bfc..e9aad5a9c 100644 --- a/NEWS +++ b/NEWS @@ -8,6 +8,7 @@ ver 0.21.6 (not yet released) * decoder - opus: fix replay gain when there are no other tags - opus: fix seeking to beginning of song + - vorbis: fix Tremor conflict resulting in crash * output - pulse: work around error with unusual channel count - osx: fix build failure diff --git a/src/lib/xiph/meson.build b/src/lib/xiph/meson.build index 432958fee..4f3f46e64 100644 --- a/src/lib/xiph/meson.build +++ b/src/lib/xiph/meson.build @@ -1,7 +1,20 @@ libflac_dep = dependency('flac', version: '>= 1.2', required: get_option('flac')) libopus_dep = dependency('opus', required: get_option('opus')) -libvorbis_dep = dependency('vorbis', required: get_option('vorbis')) -libvorbisidec_dep = dependency('vorbisidec', required: get_option('tremor')) + +if get_option('tremor').enabled() + # no libvorbis if Tremor was explicitly enabled + libvorbis_dep = dependency('', required: false) +else + libvorbis_dep = dependency('vorbis', required: get_option('vorbis')) +endif + +if libvorbis_dep.found() + # no Tremor if libvorbis is used + libvorbisidec_dep = dependency('', required: false) +else + # attempt to auto-detect Tremor only if libvorbis was disabled or not found + libvorbisidec_dep = dependency('vorbisidec', required: get_option('tremor')) +endif if get_option('vorbis').enabled() and get_option('tremor').enabled() error('Cannot build both, the Vorbis decoder AND the Tremor (Vorbis fixed-point) decoder')