mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-29 21:21:12 +00:00
Add feature options for all plugins
The only automagic dependency left is C++ availability detection. https://bugzilla.gnome.org/show_bug.cgi?id=795107
This commit is contained in:
parent
af94a5550d
commit
c5cddfcec4
11 changed files with 55 additions and 40 deletions
|
@ -1,6 +1,14 @@
|
||||||
a52_dep = cc.find_library('a52', required : false)
|
if get_option('a52dec').disabled()
|
||||||
|
subdir_done()
|
||||||
|
endif
|
||||||
|
|
||||||
if a52_dep.found() and cc.has_header_symbol('a52dec/a52.h', 'a52_init', prefix : '#include <stdint.h>')
|
a52_dep = cc.find_library('a52', required : get_option('a52dec'))
|
||||||
|
have_a52_h = cc.has_header_symbol('a52dec/a52.h', 'a52_init', prefix : '#include <stdint.h>')
|
||||||
|
if not have_a52_h and get_option('a52dec').enabled()
|
||||||
|
error('a52dec plugin enabled but a52.h not found')
|
||||||
|
endif
|
||||||
|
|
||||||
|
if a52_dep.found() and have_a52_h
|
||||||
a52dec = library('gsta52dec',
|
a52dec = library('gsta52dec',
|
||||||
'gsta52dec.c',
|
'gsta52dec.c',
|
||||||
c_args : ugly_args,
|
c_args : ugly_args,
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
amrnb_dep = dependency('opencore-amrnb', version : '>= 0.1.3', required : false)
|
amrnb_dep = dependency('opencore-amrnb', version : '>= 0.1.3', required : get_option('amrnb'))
|
||||||
|
|
||||||
if amrnb_dep.found()
|
if amrnb_dep.found()
|
||||||
amrnb = library('gstamrnb',
|
amrnb = library('gstamrnb',
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
amrwb_dep = dependency('opencore-amrwb', version : '>= 0.1.3', required : false)
|
amrwb_dep = dependency('opencore-amrwb', version : '>= 0.1.3', required : get_option('amrwbdec'))
|
||||||
|
|
||||||
if amrwb_dep.found()
|
if amrwb_dep.found()
|
||||||
amrwbdec = library('gstamrwbdec',
|
amrwbdec = library('gstamrwbdec',
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
cdio_dep = dependency('libcdio', version : '>= 0.76', required : false)
|
cdio_dep = dependency('libcdio', version : '>= 0.76', required : get_option('cdio'))
|
||||||
|
|
||||||
if cdio_dep.found()
|
if cdio_dep.found()
|
||||||
cdio = library('gstcdio',
|
cdio = library('gstcdio',
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
gmodule_dep = dependency('gmodule-2.0', required : false)
|
gmodule_dep = dependency('gmodule-2.0', fallback : ['glib', 'libgmodule_dep'],
|
||||||
dvdread_dep = dependency('dvdread', version : '>= 0.5.0', required : false)
|
required : get_option('dvdread'))
|
||||||
|
dvdread_dep = dependency('dvdread', version : '>= 0.5.0', required : get_option('dvdread'))
|
||||||
|
|
||||||
if gmodule_dep.found() and dvdread_dep.found()
|
if gmodule_dep.found() and dvdread_dep.found()
|
||||||
dvdread = library('gstdvdread',
|
dvdread = library('gstdvdread',
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
mpeg2_dep = dependency('libmpeg2', version : '>= 0.4.0', required : false)
|
mpeg2_dep = dependency('libmpeg2', version : '>= 0.4.0', required : get_option('mpeg2dec'))
|
||||||
|
|
||||||
if mpeg2_dep.found()
|
if mpeg2_dep.found()
|
||||||
mpeg2dec = library('gstmpeg2dec',
|
mpeg2dec = library('gstmpeg2dec',
|
||||||
|
|
|
@ -1,21 +1,12 @@
|
||||||
# sidplay plugin works with libsidplay 1.36.x (not 2.x.x)
|
# sidplay plugin works with libsidplay 1.36.x (not 2.x.x)
|
||||||
have_sidplay = false
|
have_sidplay = false
|
||||||
if add_languages('cpp')
|
if have_cxx and not get_option('sidplay').disabled()
|
||||||
extra_args = []
|
|
||||||
cxx = meson.get_compiler('cpp')
|
|
||||||
if cxx.has_argument('-fvisibility=hidden')
|
|
||||||
extra_args += ['-fvisibility=hidden']
|
|
||||||
endif
|
|
||||||
if cxx.has_argument('-fno-strict-aliasing')
|
|
||||||
extra_args += ['-fno-strict-aliasing']
|
|
||||||
endif
|
|
||||||
|
|
||||||
if cxx.has_header('sidplay/player.h')
|
if cxx.has_header('sidplay/player.h')
|
||||||
sid_code = '''#include <sidplay/player.h>
|
sid_code = '''#include <sidplay/player.h>
|
||||||
void somefunc (void) {
|
void somefunc (void) {
|
||||||
sidTune tune = sidTune(0);
|
sidTune tune = sidTune(0);
|
||||||
}'''
|
}'''
|
||||||
sidplay_dep = cxx.find_library('sidplay', required: false)
|
sidplay_dep = cxx.find_library('sidplay', required: get_option('sidplay'))
|
||||||
if sidplay_dep.found()
|
if sidplay_dep.found()
|
||||||
have_sidplay = cxx.compiles(sid_code, dependencies: sidplay_dep, name : 'sidplay')
|
have_sidplay = cxx.compiles(sid_code, dependencies: sidplay_dep, name : 'sidplay')
|
||||||
endif
|
endif
|
||||||
|
@ -24,9 +15,11 @@ endif
|
||||||
|
|
||||||
if have_sidplay
|
if have_sidplay
|
||||||
shared_module('gstsid', 'gstsiddec.cc',
|
shared_module('gstsid', 'gstsiddec.cc',
|
||||||
cpp_args : ugly_args + extra_args,
|
cpp_args : ugly_args,
|
||||||
include_directories : [configinc],
|
include_directories : [configinc],
|
||||||
dependencies : [gstaudio_dep, sidplay_dep],
|
dependencies : [gstaudio_dep, sidplay_dep],
|
||||||
install : true,
|
install : true,
|
||||||
install_dir : plugins_install_dir)
|
install_dir : plugins_install_dir)
|
||||||
|
elif get_option('sidplay').enabled()
|
||||||
|
error('sidplay plugin enabled but dependencies not found')
|
||||||
endif
|
endif
|
||||||
|
|
|
@ -2,7 +2,7 @@ x264_sources = [
|
||||||
'gstx264enc.c',
|
'gstx264enc.c',
|
||||||
]
|
]
|
||||||
|
|
||||||
x264_dep = dependency('x264', required : false)
|
x264_dep = dependency('x264', required : get_option('x264'))
|
||||||
|
|
||||||
if x264_dep.found()
|
if x264_dep.found()
|
||||||
x264_libraries = get_option('x264_libraries')
|
x264_libraries = get_option('x264_libraries')
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
subdir('asfdemux')
|
foreach plugin : ['asfdemux', 'dvdlpcmdec', 'dvdsub', 'realmedia', 'xingmux']
|
||||||
subdir('dvdlpcmdec')
|
if not get_option(plugin).disabled()
|
||||||
subdir('dvdsub')
|
subdir(plugin)
|
||||||
subdir('realmedia')
|
endif
|
||||||
subdir('xingmux')
|
endforeach
|
||||||
|
|
23
meson.build
23
meson.build
|
@ -25,6 +25,9 @@ api_version = '1.0'
|
||||||
plugins_install_dir = '@0@/gstreamer-1.0'.format(get_option('libdir'))
|
plugins_install_dir = '@0@/gstreamer-1.0'.format(get_option('libdir'))
|
||||||
|
|
||||||
cc = meson.get_compiler('c')
|
cc = meson.get_compiler('c')
|
||||||
|
if have_cxx
|
||||||
|
cxx = meson.get_compiler('cpp')
|
||||||
|
endif
|
||||||
|
|
||||||
if cc.get_id() == 'msvc'
|
if cc.get_id() == 'msvc'
|
||||||
# Ignore several spurious warnings for things gstreamer does very commonly
|
# Ignore several spurious warnings for things gstreamer does very commonly
|
||||||
|
@ -47,15 +50,8 @@ endif
|
||||||
if cc.has_link_argument('-Wl,-Bsymbolic-functions')
|
if cc.has_link_argument('-Wl,-Bsymbolic-functions')
|
||||||
add_project_link_arguments('-Wl,-Bsymbolic-functions', language : 'c')
|
add_project_link_arguments('-Wl,-Bsymbolic-functions', language : 'c')
|
||||||
endif
|
endif
|
||||||
|
if have_cxx and cxx.has_link_argument('-Wl,-Bsymbolic-functions')
|
||||||
# Symbol visibility
|
add_project_link_arguments('-Wl,-Bsymbolic-functions', language : 'cpp')
|
||||||
if cc.has_argument('-fvisibility=hidden')
|
|
||||||
add_project_arguments('-fvisibility=hidden', language: 'c')
|
|
||||||
endif
|
|
||||||
|
|
||||||
# Disable strict aliasing
|
|
||||||
if cc.has_argument('-fno-strict-aliasing')
|
|
||||||
add_project_arguments('-fno-strict-aliasing', language: 'c')
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
cdata = configuration_data()
|
cdata = configuration_data()
|
||||||
|
@ -168,7 +164,7 @@ endif
|
||||||
gstcontroller_dep = dependency('gstreamer-controller-1.0', version : gst_req,
|
gstcontroller_dep = dependency('gstreamer-controller-1.0', version : gst_req,
|
||||||
fallback : ['gstreamer', 'gst_controller_dep'])
|
fallback : ['gstreamer', 'gst_controller_dep'])
|
||||||
|
|
||||||
orc_dep = dependency('orc-0.4', version : '>= 0.4.16', required : false)
|
orc_dep = dependency('orc-0.4', version : '>= 0.4.16', required : get_option('orc'))
|
||||||
if orc_dep.found()
|
if orc_dep.found()
|
||||||
cdata.set('HAVE_ORC', 1) # used by a52dec for cpu detection
|
cdata.set('HAVE_ORC', 1) # used by a52dec for cpu detection
|
||||||
else
|
else
|
||||||
|
@ -205,6 +201,9 @@ warning_flags = [
|
||||||
'-Wvla',
|
'-Wvla',
|
||||||
'-Wpointer-arith',
|
'-Wpointer-arith',
|
||||||
'-Waggregate-return',
|
'-Waggregate-return',
|
||||||
|
'-fno-strict-aliasing',
|
||||||
|
# Symbol visibility
|
||||||
|
'-fvisibility=hidden',
|
||||||
]
|
]
|
||||||
|
|
||||||
warning_c_flags = [
|
warning_c_flags = [
|
||||||
|
@ -214,10 +213,6 @@ warning_c_flags = [
|
||||||
'-Wnested-externs'
|
'-Wnested-externs'
|
||||||
]
|
]
|
||||||
|
|
||||||
if have_cxx
|
|
||||||
cxx = meson.get_compiler('cpp')
|
|
||||||
endif
|
|
||||||
|
|
||||||
foreach extra_arg : warning_flags
|
foreach extra_arg : warning_flags
|
||||||
if cc.has_argument (extra_arg)
|
if cc.has_argument (extra_arg)
|
||||||
add_project_arguments([extra_arg], language: 'c')
|
add_project_arguments([extra_arg], language: 'c')
|
||||||
|
|
|
@ -1,9 +1,27 @@
|
||||||
option('x264_libraries', type : 'string', value : '',
|
option('x264_libraries', type : 'string', value : '',
|
||||||
description : 'Colon separated list of additional x264 library paths, e.g. for 10-bit version')
|
description : 'Colon separated list of additional x264 library paths, e.g. for 10-bit version')
|
||||||
|
|
||||||
|
# Feature options for plugins without external deps
|
||||||
|
option('asfdemux', type : 'feature', value : 'auto')
|
||||||
|
option('dvdlpcmdec', type : 'feature', value : 'auto')
|
||||||
|
option('dvdsub', type : 'feature', value : 'auto')
|
||||||
|
option('realmedia', type : 'feature', value : 'auto')
|
||||||
|
option('xingmux', type : 'feature', value : 'auto')
|
||||||
|
|
||||||
|
# Feature options for plugins that need external deps
|
||||||
|
option('a52dec', type : 'feature', value : 'auto', description : 'Dolby Digital (AC-3) audio decoder plugin')
|
||||||
|
option('amrnb', type : 'feature', value : 'auto', description : 'Adaptive Multi-Rate Narrow-Band audio codec plugin')
|
||||||
|
option('amrwbdec', type : 'feature', value : 'auto', description : 'Adaptive Multi-Rate Wide-Band audio decoder plugin')
|
||||||
|
option('cdio', type : 'feature', value : 'auto', description : 'CD audio source plugin')
|
||||||
|
option('dvdread', type : 'feature', value : 'auto', description : 'DVD video source plugin')
|
||||||
|
option('mpeg2dec', type : 'feature', value : 'auto', description : 'MPEG 2 video decoder plugin')
|
||||||
|
option('sidplay', type : 'feature', value : 'auto', description : 'Commodore 64 audio decoder plugin')
|
||||||
|
option('x264', type : 'feature', value : 'auto', description : 'H.264 video encoder plugin')
|
||||||
|
|
||||||
# Common options
|
# Common options
|
||||||
option('nls', type : 'feature', value : 'auto', yield: true,
|
option('nls', type : 'feature', value : 'auto', yield: true,
|
||||||
description : 'Enable native language support (translations)')
|
description : 'Enable native language support (translations)')
|
||||||
|
option('orc', type : 'feature', value : 'auto', yield : true)
|
||||||
option('package-name', type : 'string', yield : true,
|
option('package-name', type : 'string', yield : true,
|
||||||
description : 'package name to use in plugins')
|
description : 'package name to use in plugins')
|
||||||
option('package-origin', type : 'string', value : 'Unknown package origin', yield: true,
|
option('package-origin', type : 'string', value : 'Unknown package origin', yield: true,
|
||||||
|
|
Loading…
Reference in a new issue