forked from AuroraMiddleware/gtk
5383d11bb4
We need to override _GLIB_EXTERN to export the required symbols for the GIO module on Visual Studio, so that the media modules can be successfully loaded.
63 lines
2.1 KiB
Meson
63 lines
2.1 KiB
Meson
all_media_backends = [
|
|
'ffmpeg',
|
|
'gstreamer'
|
|
]
|
|
|
|
enabled_media_backends = get_option('media').split(',')
|
|
|
|
if enabled_media_backends.contains('none')
|
|
media_backends = []
|
|
elif enabled_media_backends.contains('all')
|
|
media_backends = all_media_backends
|
|
else
|
|
media_backends = []
|
|
foreach b: enabled_media_backends
|
|
if all_media_backends.contains(b)
|
|
media_backends += b
|
|
else
|
|
error('No media backend named "@0@" exists.'.format (b))
|
|
endif
|
|
endforeach
|
|
endif
|
|
|
|
media_subdir = 'gtk-4.0/@0@/media'.format(gtk_binary_version)
|
|
media_install_dir = join_paths(get_option('libdir'), media_subdir)
|
|
|
|
extra_c_args = ['-DGTK_COMPILATION']
|
|
|
|
# Detect and set symbol visibility
|
|
if cc.get_id() == 'msvc'
|
|
extra_c_args += ['-D_GLIB_EXTERN=__declspec (dllexport) extern']
|
|
endif
|
|
|
|
if media_backends.contains('ffmpeg')
|
|
libavfilter_dep = dependency('libavfilter', version: '>= 6.47.100', required: true)
|
|
libavformat_dep = dependency('libavformat', version: '>= 57.41.100', required: true)
|
|
libavcodec_dep = dependency('libavcodec', version: '>= 57.48.101', required: true)
|
|
libavutil_dep = dependency('libavutil', version: '>= 55.28.100', required: true)
|
|
libswscale_dep = dependency('libswscale', version: '>= 4.6.100', required: true)
|
|
ffmpeg_deps = [libavfilter_dep, libavformat_dep, libavcodec_dep, libavutil_dep, libswscale_dep]
|
|
cdata.set('HAVE_FFMPEG', 1)
|
|
|
|
shared_module('media-ffmpeg',
|
|
'gtkffmediafile.c',
|
|
c_args: extra_c_args,
|
|
dependencies: [ libgtk_dep, ffmpeg_deps ],
|
|
install_dir: media_install_dir,
|
|
install : true)
|
|
endif
|
|
|
|
if media_backends.contains('gstreamer')
|
|
gstplayer_dep = dependency('gstreamer-player-1.0', version: '>= 1.12.3', required: true)
|
|
cdata.set('HAVE_GSTREAMER', 1)
|
|
|
|
shared_module('media-gstreamer',
|
|
'gtkgstmediafile.c',
|
|
'gtkgstpaintable.c',
|
|
'gtkgstsink.c',
|
|
c_args: extra_c_args,
|
|
dependencies: [ libgtk_dep, gstplayer_dep ],
|
|
install_dir: media_install_dir,
|
|
install : true)
|
|
endif
|