mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-14 13:21:28 +00:00
7d789cc589
Only plugin entry points should be exported. Currently plugins might export more symbols with the meson build, as we don't have the exports regexp there that we pass to libtool.
203 lines
6.8 KiB
Meson
203 lines
6.8 KiB
Meson
project('gst-plugins-ugly', 'c',
|
|
version : '1.13.0.1',
|
|
meson_version : '>= 0.36.0',
|
|
default_options : [ 'warning_level=1',
|
|
'buildtype=debugoptimized' ])
|
|
|
|
gst_version = meson.project_version()
|
|
version_arr = gst_version.split('.')
|
|
gst_version_major = version_arr[0]
|
|
gst_version_minor = version_arr[1]
|
|
gst_version_micro = version_arr[2]
|
|
if version_arr.length() == 4
|
|
gst_version_nano = version_arr[3]
|
|
else
|
|
gst_version_nano = 0
|
|
endif
|
|
|
|
glib_req = '>= 2.40.0'
|
|
gst_req = '>= @0@.@1@.0'.format(gst_version_major, gst_version_minor)
|
|
|
|
api_version = '1.0'
|
|
|
|
plugins_install_dir = '@0@/gstreamer-1.0'.format(get_option('libdir'))
|
|
|
|
cc = meson.get_compiler('c')
|
|
|
|
if cc.get_id() == 'msvc'
|
|
# Ignore several spurious warnings for things gstreamer does very commonly
|
|
# If a warning is completely useless and spammy, use '/wdXXXX' to suppress it
|
|
# If a warning is harmless but hard to fix, use '/woXXXX' so it's shown once
|
|
# NOTE: Only add warnings here if you are sure they're spurious
|
|
add_project_arguments(
|
|
'/wd4018', # implicit signed/unsigned conversion
|
|
'/wd4146', # unary minus on unsigned (beware INT_MIN)
|
|
'/wd4244', # lossy type conversion (e.g. double -> int)
|
|
'/wd4305', # truncating type conversion (e.g. double -> float)
|
|
language : 'c')
|
|
# Disable SAFESEH with MSVC for plugins and libs that use external deps that
|
|
# are built with MinGW
|
|
noseh_link_args = ['/SAFESEH:NO']
|
|
else
|
|
noseh_link_args = []
|
|
endif
|
|
|
|
# Symbol visibility
|
|
if cc.has_argument('-fvisibility=hidden')
|
|
add_project_arguments('-fvisibility=hidden', language: 'c')
|
|
endif
|
|
|
|
cdata = configuration_data()
|
|
check_headers = [
|
|
['HAVE_DLFCN_H', 'dlfcn.h'],
|
|
['HAVE_INTTYPES_H', 'inttypes.h'],
|
|
['HAVE_MALLOC_H', 'malloc.h'],
|
|
['HAVE_MEMORY_H', 'memory.h'],
|
|
['HAVE_STDINT_H', 'stdint.h'],
|
|
['HAVE_STDLIB_H', 'stdlib.h'],
|
|
['HAVE_STRINGS_H', 'strings.h'],
|
|
['HAVE_STRING_H', 'string.h'],
|
|
['HAVE_SYS_STAT_H', 'sys/stat.h'],
|
|
['HAVE_SYS_TYPES_H', 'sys/types.h'],
|
|
['HAVE_UNISTD_H', 'unistd.h'],
|
|
['HAVE_WINSOCK2_H', 'winsock2.h'],
|
|
]
|
|
|
|
foreach h : check_headers
|
|
if cc.has_header(h.get(1))
|
|
cdata.set(h.get(0), 1)
|
|
endif
|
|
endforeach
|
|
|
|
check_functions = [
|
|
# check token HAVE_CPU_ALPHA
|
|
# check token HAVE_CPU_ARM
|
|
# check token HAVE_CPU_CRIS
|
|
# check token HAVE_CPU_CRISV32
|
|
# check token HAVE_CPU_HPPA
|
|
# check token HAVE_CPU_I386
|
|
# check token HAVE_CPU_IA64
|
|
# check token HAVE_CPU_M68K
|
|
# check token HAVE_CPU_MIPS
|
|
# check token HAVE_CPU_PPC
|
|
# check token HAVE_CPU_PPC64
|
|
# check token HAVE_CPU_S390
|
|
# check token HAVE_CPU_SPARC
|
|
# check token HAVE_CPU_X86_64
|
|
['HAVE_DCGETTEXT', 'dcgettext'],
|
|
# check token HAVE_EXPERIMENTAL
|
|
# check token HAVE_EXTERNAL
|
|
# check token HAVE_GETTEXT
|
|
# check token HAVE_VALGRIND
|
|
]
|
|
|
|
foreach f : check_functions
|
|
if cc.has_function(f.get(1))
|
|
cdata.set(f.get(0), 1)
|
|
endif
|
|
endforeach
|
|
|
|
cdata.set('SIZEOF_CHAR', cc.sizeof('char'))
|
|
cdata.set('SIZEOF_INT', cc.sizeof('int'))
|
|
cdata.set('SIZEOF_LONG', cc.sizeof('long'))
|
|
cdata.set('SIZEOF_SHORT', cc.sizeof('short'))
|
|
cdata.set('SIZEOF_VOIDP', cc.sizeof('void*'))
|
|
|
|
cdata.set('VERSION', '"@0@"'.format(gst_version))
|
|
cdata.set('PACKAGE', '"gst-plugins-ugly"')
|
|
cdata.set('GETTEXT_PACKAGE', '"gst-plugins-ugly-1.0"')
|
|
cdata.set('GST_LICENSE', '"LGPL"')
|
|
|
|
# GStreamer package name and origin url
|
|
gst_package_name = get_option('with-package-name')
|
|
if gst_package_name == ''
|
|
if gst_version_nano == 0
|
|
gst_package_name = 'GStreamer Ugly Plug-ins source release'
|
|
elif gst_version_nano == 1
|
|
gst_package_name = 'GStreamer Ugly Plug-ins git'
|
|
else
|
|
gst_package_name = 'GStreamer Ugly Plug-ins prerelease'
|
|
endif
|
|
endif
|
|
cdata.set_quoted('GST_PACKAGE_NAME', gst_package_name)
|
|
cdata.set_quoted('GST_PACKAGE_ORIGIN', get_option('with-package-origin'))
|
|
|
|
# Mandatory GST deps
|
|
gst_dep = dependency('gstreamer-1.0', version : gst_req,
|
|
fallback : ['gstreamer', 'gst_dep'])
|
|
gstapp_dep = dependency('gstreamer-app-1.0', version : gst_req,
|
|
fallback : ['gst-plugins-base', 'app_dep'])
|
|
gstvideo_dep = dependency('gstreamer-video-1.0', version : gst_req,
|
|
fallback : ['gst-plugins-base', 'video_dep'])
|
|
gstpbutils_dep = dependency('gstreamer-pbutils-1.0', version : gst_req,
|
|
fallback : ['gst-plugins-base', 'pbutils_dep'])
|
|
gsttag_dep = dependency('gstreamer-tag-1.0', version : gst_req,
|
|
fallback : ['gst-plugins-base', 'tag_dep'])
|
|
gstfft_dep = dependency('gstreamer-fft-1.0', version : gst_req,
|
|
fallback : ['gst-plugins-base', 'fft_dep'])
|
|
gstaudio_dep = dependency('gstreamer-audio-1.0', version : gst_req,
|
|
fallback : ['gst-plugins-base', 'audio_dep'])
|
|
gstbase_dep = dependency('gstreamer-base-1.0', version : gst_req,
|
|
fallback : ['gstreamer', 'gst_base_dep'])
|
|
gstriff_dep = dependency('gstreamer-riff-1.0', version : gst_req,
|
|
fallback : ['gst-plugins-base', 'riff_dep'])
|
|
gstrtp_dep = dependency('gstreamer-rtp-1.0', version : gst_req,
|
|
fallback : ['gst-plugins-base', 'rtp_dep'])
|
|
gstnet_dep = dependency('gstreamer-net-1.0', version : gst_req,
|
|
fallback : ['gstreamer', 'gst_net_dep'])
|
|
gstsdp_dep = dependency('gstreamer-sdp-1.0', version : gst_req,
|
|
fallback : ['gst-plugins-base', 'sdp_dep'])
|
|
gstrtsp_dep = dependency('gstreamer-rtsp-1.0', version : gst_req,
|
|
fallback : ['gst-plugins-base', 'rtsp_dep'])
|
|
if host_machine.system() != 'windows'
|
|
gstcheck_dep = dependency('gstreamer-check-1.0', version : gst_req,
|
|
fallback : ['gstreamer', 'gst_check_dep'])
|
|
endif
|
|
gstcontroller_dep = dependency('gstreamer-controller-1.0', version : gst_req,
|
|
fallback : ['gstreamer', 'gst_controller_dep'])
|
|
|
|
orc_dep = dependency('orc-0.4', version : '>= 0.4.16', required : false)
|
|
if orc_dep.found()
|
|
cdata.set('HAVE_ORC', 1) # used by a52dec for cpu detection
|
|
else
|
|
cdata.set('DISABLE_ORC', 1)
|
|
endif
|
|
|
|
configure_file(output : 'config.h', configuration : cdata)
|
|
|
|
ugly_args = ['-DHAVE_CONFIG_H']
|
|
configinc = include_directories('.')
|
|
libsinc = include_directories('gst-libs')
|
|
|
|
if gst_dep.type_name() == 'internal'
|
|
gst_proj = subproject('gstreamer')
|
|
|
|
if gst_proj.get_variable('disable_gst_debug')
|
|
message('GStreamer debug system is disabled')
|
|
add_project_arguments('-Wno-unused', language: 'c')
|
|
else
|
|
message('GStreamer debug system is enabled')
|
|
endif
|
|
else
|
|
# We can't check that in the case of subprojects as we won't
|
|
# be able to build against an internal dependency (which is not built yet)
|
|
if not cc.compiles('''
|
|
#include <gst/gstconfig.h>
|
|
#ifdef GST_DISABLE_GST_DEBUG
|
|
#error "debugging disabled, make compiler fail"
|
|
#endif''' , dependencies: gst_dep)
|
|
message('GStreamer debug system is disabled')
|
|
add_global_arguments('-Wno-unused', language: 'c')
|
|
else
|
|
message('GStreamer debug system is enabled')
|
|
endif
|
|
endif
|
|
|
|
presetdir = join_paths(get_option('datadir'), 'gstreamer-' + api_version, 'presets')
|
|
subdir('gst')
|
|
subdir('ext')
|
|
subdir('tests')
|
|
subdir('po')
|
|
|
|
python3 = import('python3').find_python()
|
|
run_command(python3, '-c', 'import shutil; shutil.copy("hooks/pre-commit.hook", ".git/hooks/pre-commit")')
|