summaryrefslogtreecommitdiffstats
path: root/meson.build
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--meson.build293
1 files changed, 166 insertions, 127 deletions
diff --git a/meson.build b/meson.build
index fdfc526..2c2246b 100644
--- a/meson.build
+++ b/meson.build
@@ -7,7 +7,7 @@ project('mpv',
'buildtype=debugoptimized',
'b_lundef=false',
'c_std=c11',
- 'warning_level=1',
+ 'warning_level=2',
]
)
@@ -23,7 +23,8 @@ libavutil = dependency('libavutil', version: '>= 56.70.100')
libswresample = dependency('libswresample', version: '>= 3.9.100')
libswscale = dependency('libswscale', version: '>= 5.9.100')
-libplacebo = dependency('libplacebo', version: '>=6.338.0')
+libplacebo = dependency('libplacebo', version: '>=6.338.2',
+ default_options: ['default_library=static', 'demos=false'])
libass = dependency('libass', version: '>= 0.12.2')
@@ -46,7 +47,6 @@ features = {
'jpegxl': libavformat.version().version_compare('>= 59.27.100'),
'avif-muxer': libavformat.version().version_compare('>= 59.24.100'),
'libass': true,
- 'threads': true,
'libplacebo': true,
}
@@ -133,10 +133,12 @@ sources = files(
'misc/bstr.c',
'misc/charset_conv.c',
'misc/dispatch.c',
+ 'misc/io_utils.c',
'misc/json.c',
'misc/language.c',
'misc/natural_sort.c',
'misc/node.c',
+ 'misc/path_utils.c',
'misc/random.c',
'misc/rendezvous.c',
'misc/thread_pool.c',
@@ -246,7 +248,7 @@ sources = files(
## osdep
'osdep/io.c',
- 'osdep/semaphore_osx.c',
+ 'osdep/semaphore-mac.c',
'osdep/subprocess.c',
'osdep/timer.c',
@@ -260,10 +262,14 @@ sources = files(
# compiler stuff
cc = meson.get_compiler('c')
-flags = ['-D_GNU_SOURCE', '-D_FILE_OFFSET_BITS=64']
+flags = ['-D_FILE_OFFSET_BITS=64']
link_flags = []
test_flags = ['-Werror=implicit-function-declaration',
+ '-Wno-missing-field-initializers',
+ '-Wno-sign-compare',
+ '-Wno-unused-parameter',
+ '-Wno-cast-function-type',
'-Wempty-body',
'-Wdisabled-optimization',
'-Wstrict-prototypes',
@@ -304,30 +310,30 @@ features += {'darwin': darwin}
features += {'posix': posix}
features += {'dos-paths': win32, 'win32': win32}
-mswin_flags = ['-D_WIN32_WINNT=0x0602', '-DUNICODE', '-DCOBJMACROS',
- '-DINITGUID', '-U__STRICT_ANSI__']
+mswin_flags = ['-D_WIN32_WINNT=0x0602', '-DWINVER=0x0602', '-DUNICODE',
+ '-DCOBJMACROS', '-DINITGUID', '-U__STRICT_ANSI__', '-DNOMINMAX',
+ '-D_USE_MATH_DEFINES', '-DWIN32_LEAN_AND_MEAN']
if host_machine.system() == 'windows'
- flags += [mswin_flags, '-D__USE_MINGW_ANSI_STDIO=1']
+ flags += [mswin_flags]
endif
if host_machine.system() == 'cygwin'
flags += [mswin_flags, '-mwin32']
endif
-noexecstack = false
+if posix
+ flags += ['-D_GNU_SOURCE']
+endif
+
if cc.has_link_argument('-Wl,-z,noexecstack')
link_flags += '-Wl,-z,noexecstack'
- noexecstack = true
endif
if cc.has_link_argument('-Wl,--nxcompat,--no-seh,--dynamicbase')
link_flags += '-Wl,--nxcompat,--no-seh,--dynamicbase'
- noexecstack = true
endif
-features += {'noexecstack': noexecstack}
-
features += {'build-date': get_option('build-date')}
if not features['build-date']
flags += '-DNO_BUILD_TIMESTAMPS'
@@ -362,6 +368,7 @@ if not features['win32-threads']
features += {'pthread-condattr-setclock':
cc.has_header_symbol('pthread.h',
'pthread_condattr_setclock',
+ args: '-D_GNU_SOURCE',
dependencies: pthreads)}
dependencies += pthreads
endif
@@ -373,6 +380,7 @@ pthread_debug = get_option('pthread-debug').require(
features += {'pthread-debug': pthread_debug.allowed()}
add_project_arguments(flags, language: 'c')
+add_project_arguments(['-Wno-unused-parameter'], language: 'objc')
add_project_link_arguments(link_flags, language: ['c', 'objc'])
@@ -382,18 +390,20 @@ cocoa = dependency('appleframeworks', modules: ['Cocoa', 'IOKit', 'QuartzCore'],
features += {'cocoa': cocoa.found()}
if features['cocoa']
dependencies += cocoa
- sources += files('osdep/apple_utils.c',
- 'osdep/language-apple.c',
- 'osdep/macosx_application.m',
- 'osdep/macosx_events.m',
- 'osdep/macosx_menubar.m',
- 'osdep/main-fn-cocoa.c',
- 'osdep/path-macosx.m')
+ sources += files('osdep/language-mac.c',
+ 'osdep/path-mac.m',
+ 'osdep/utils-mac.c',
+ 'osdep/mac/app_bridge.m')
+ main_fn_source = files('osdep/main-fn-mac.c')
endif
if posix
path_source = files('osdep/path-unix.c')
- subprocess_source = files('osdep/subprocess-posix.c')
+ if cc.has_function('fork', prefix : '#include <unistd.h>')
+ subprocess_source = files('osdep/subprocess-posix.c')
+ else
+ subprocess_source = files('osdep/subprocess-dummy.c')
+ endif
sources += files('input/ipc-unix.c',
'osdep/poll_wrapper.c',
'osdep/terminal-unix.c',
@@ -401,8 +411,8 @@ if posix
endif
if posix and not features['cocoa']
- sources += files('osdep/main-fn-unix.c',
- 'osdep/language-posix.c')
+ sources += files('osdep/language-posix.c')
+ main_fn_source = files('osdep/main-fn-unix.c')
endif
if darwin
@@ -479,21 +489,23 @@ if features['win32-desktop']
win32_desktop_libs = [cc.find_library('avrt'),
cc.find_library('dwmapi'),
cc.find_library('gdi32'),
+ cc.find_library('imm32'),
+ cc.find_library('ntdll'),
cc.find_library('ole32'),
cc.find_library('uuid'),
cc.find_library('uxtheme'),
- cc.find_library('version'),
- cc.find_library('winmm')]
+ cc.find_library('version')]
dependencies += win32_desktop_libs
path_source = files('osdep/path-win.c')
subprocess_source = files('osdep/subprocess-win.c')
sources += files('input/ipc-win.c',
'osdep/language-win.c',
- 'osdep/main-fn-win.c',
'osdep/terminal-win.c',
'video/out/w32_common.c',
'video/out/win32/displayconfig.c',
- 'video/out/win32/droptarget.c')
+ 'video/out/win32/droptarget.c',
+ 'video/out/win32/menu.c')
+ main_fn_source = files('osdep/main-fn-win.c')
endif
if not posix and not features['win32-desktop']
@@ -504,7 +516,7 @@ endif
features += {'glob-posix': cc.has_function('glob', prefix: '#include <glob.h>')}
-features += {'glob-win32': win32 and not posix}
+features += {'glob-win32': win32 and not features['glob-posix']}
if features['glob-win32']
sources += files('osdep/glob-win.c')
endif
@@ -516,16 +528,16 @@ features += {'vt.h': cc.has_header_symbol('sys/vt.h', 'VT_GETMODE')}
features += {'consio.h': not features['vt.h'] and cc.has_header_symbol('sys/consio.h', 'VT_GETMODE')}
# macOS's pthread_setname_np is a special snowflake and differs from literally every other platform.
-features += {'osx-thread-name': darwin}
+features += {'mac-thread-name': darwin}
features += {'glibc-thread-name': false}
-if not features['osx-thread-name']
+if not features['mac-thread-name']
features += {'glibc-thread-name': posix and cc.has_function('pthread_setname_np', args: '-D_GNU_SOURCE',
dependencies: pthreads, prefix: '#include <pthread.h>')}
endif
features += {'bsd-thread-name': false}
-if not features['osx-thread-name'] and not features['glibc-thread-name']
+if not features['mac-thread-name'] and not features['glibc-thread-name']
features += {'bsd-thread-name': posix and cc.has_function('pthread_set_name_np', dependencies: pthreads,
prefix: '#include <pthread.h>\n#include <pthread_np.h>')}
endif
@@ -593,11 +605,12 @@ if features['cdda']
sources += files('stream/stream_cdda.c')
endif
-dvbin = get_option('dvbin').require(
+dvbin_opt = get_option('dvbin').require(
get_option('gpl'),
error_message: 'the build is not GPL!',
)
-features += {'dvbin': dvbin.allowed()}
+dvbin = cc.has_header('linux/dvb/frontend.h', required: dvbin_opt)
+features += {'dvbin': dvbin}
if features['dvbin']
sources += files('stream/dvb_tune.c',
'stream/stream_dvb.c')
@@ -657,14 +670,12 @@ if features['libbluray']
endif
libm = cc.find_library('m', required: false)
-features += {'libm': libm.found()}
-if features['libm']
+if libm.found()
dependencies += libm
endif
librt = cc.find_library('rt', required: false)
-features += {'librt': librt.found()}
-if features['librt']
+if librt.found()
dependencies += librt
endif
@@ -701,13 +712,13 @@ if features['lua']
sources += files('player/lua.c')
endif
if not features['lua'] and lua_opt == 'enabled'
- error('lua enabled but no suitable lua version could be found!')
+ error('Lua enabled but no suitable Lua version could be found!')
endif
rubberband = dependency('rubberband', version: '>= 1.8.0', required: get_option('rubberband'))
features += {'rubberband': rubberband.found()}
-features += {'rubberband-3': rubberband.version().version_compare('>= 3.0.0')}
if features['rubberband']
+ features += {'rubberband-3': rubberband.version().version_compare('>= 3.0.0')}
dependencies += rubberband
sources += files('audio/filter/af_rubberband.c')
endif
@@ -775,11 +786,12 @@ if features['alsa']
sources += files('audio/out/ao_alsa.c')
endif
+audiounit_opt = get_option('audiounit').require(darwin)
audiounit = {
'deps': dependency('appleframeworks', modules: ['Foundation', 'AudioToolbox'],
- required: get_option('audiounit')),
+ required: audiounit_opt),
'symbol': cc.has_header_symbol('AudioToolbox/AudioToolbox.h', 'kAudioUnitSubType_RemoteIO',
- required: get_option('audiounit')),
+ required: audiounit_opt),
}
features += {'audiounit': audiounit['deps'].found() and audiounit['symbol']}
if features['audiounit']
@@ -787,6 +799,14 @@ if features['audiounit']
sources += files('audio/out/ao_audiounit.m')
endif
+avfoundation = dependency('appleframeworks', modules: ['CoreMedia', 'AVFoundation'],
+ required: get_option('avfoundation'))
+features += {'avfoundation': avfoundation.found()}
+if features['avfoundation']
+ dependencies += avfoundation
+ sources += files('audio/out/ao_avfoundation.m')
+endif
+
coreaudio = dependency('appleframeworks', modules: ['CoreFoundation', 'CoreAudio',
'AudioUnit', 'AudioToolbox'], required: get_option('coreaudio'))
features += {'coreaudio': coreaudio.found()}
@@ -797,9 +817,10 @@ if features['coreaudio']
'audio/out/ao_coreaudio_properties.c')
endif
-if features['audiounit'] or features['coreaudio']
+if features['audiounit'] or features['coreaudio'] or features['avfoundation']
sources += files('audio/out/ao_coreaudio_chmap.c',
- 'audio/out/ao_coreaudio_utils.c')
+ 'audio/out/ao_coreaudio_utils.c',
+ 'audio/out/ao_coreaudio_properties.c')
endif
jack_opt = get_option('jack').require(
@@ -868,7 +889,8 @@ if features['sndio']
sources += files('audio/out/ao_sndio.c')
endif
-wasapi = cc.has_header_symbol('audioclient.h', 'IAudioClient', required: get_option('wasapi'))
+wasapi = cc.has_header_symbol('audioclient.h', 'IAudioClient', required:
+ get_option('wasapi').require(win32))
features += {'wasapi': wasapi}
if features['wasapi']
sources += files('audio/out/ao_wasapi.c',
@@ -912,7 +934,11 @@ if features['drm']
'video/out/vo_drm.c')
endif
-gbm = dependency('gbm', version: '>=17.1.0', required: get_option('gbm'))
+gbm_opt = get_option('gbm').require(
+ features['drm'],
+ error_message: 'drm was not found!'
+)
+gbm = dependency('gbm', version: '>= 17.1.0', required: gbm_opt)
features += {'gbm': gbm.found()}
if features['gbm']
dependencies += gbm
@@ -933,7 +959,8 @@ if features['sdl2-video']
sources += files('video/out/vo_sdl.c')
endif
-shaderc = dependency('shaderc', required: get_option('shaderc'))
+shaderc = dependency('shaderc', required:
+ get_option('shaderc').require(features['win32-desktop']))
features += {'shaderc': shaderc.found()}
if features['shaderc']
dependencies += shaderc
@@ -952,7 +979,8 @@ if features['posix']
features += {'posix-shm': cc.has_function('shm_open', prefix: '#include <sys/mman.h>')}
endif
-spirv_cross = dependency('spirv-cross-c-shared', required: get_option('spirv-cross'))
+spirv_cross = dependency('spirv-cross-c-shared', required:
+ get_option('spirv-cross').require(features['win32-desktop']))
features += {'spirv-cross': spirv_cross.found()}
if features['spirv-cross']
dependencies += spirv_cross
@@ -1049,7 +1077,7 @@ if features['xv']
sources += files('video/out/vo_xv.c')
endif
-if features['wayland'] or features['x11']
+if features['wayland'] or features['x11'] or features['drm']
sources += ('video/out/present_sync.c')
endif
@@ -1099,12 +1127,11 @@ if features['gl-x11']
sources += files('video/out/opengl/context_glx.c')
endif
-gl_dxinterop_d3d = gl_win32.allowed() and \
- cc.has_header_symbol('GL/wglext.h', 'WGL_ACCESS_READ_ONLY_NV',
- prefix: '#include <GL/gl.h>')
-gl_dxinterop_gl = features['gl-win32'] and cc.has_header_symbol('d3d9.h', 'IDirect3D9Ex')
gl_dxinterop = get_option('gl-dxinterop').require(
- gl_dxinterop_d3d and gl_dxinterop_gl and gl_win32.allowed(),
+ features['gl-win32'] and
+ cc.has_header_symbol('GL/wglext.h', 'WGL_ACCESS_READ_ONLY_NV',
+ prefix: '#include <GL/gl.h>') and
+ cc.has_header_symbol('d3d9.h', 'IDirect3D9Ex'),
error_message: 'gl-dxinterop could not be found!',
)
features += {'gl-dxinterop': gl_dxinterop.allowed()}
@@ -1128,9 +1155,10 @@ if features['egl-angle']
sources += files('video/out/opengl/angle_dynamic.c')
endif
-egl_dep = cc.find_library('EGL', required: get_option('egl-angle-lib'))
+egl_dep = cc.find_library('EGL', required:
+ get_option('egl-angle-lib').require(features['egl-angle']))
egl_angle_lib = get_option('egl-angle-lib').require(
- features['egl-angle'] and cc.has_function('eglCreateWindowSurface',
+ egl_dep.found() and cc.has_function('eglCreateWindowSurface',
dependencies: egl_dep,
prefix: '#include <EGL/egl.h>'),
error_message: 'egl-angle-lib could not be found!',
@@ -1153,7 +1181,7 @@ if features['d3d11'] or features['egl-angle-win32']
sources += files('video/out/gpu/d3d11_helpers.c')
endif
-egl = dependency('egl', version: '> 1.4.0', required: get_option('egl'))
+egl = dependency('egl', version: '>= 1.4.0', required: get_option('egl'))
features += {'egl': egl.found() and gl_allowed}
if features['egl']
dependencies += egl
@@ -1172,7 +1200,7 @@ if features['egl-android']
endif
egl_drm = get_option('egl-drm').require(
- features['drm'] and features['egl'] and gbm.found() and gl_allowed,
+ features['drm'] and features['egl'] and features['gbm'] and gl_allowed,
error_message: 'either drm, egl, or gbm could not be found!',
)
features += {'egl-drm': egl_drm.allowed()}
@@ -1181,8 +1209,12 @@ if features['egl-drm']
sources += files('video/out/opengl/context_drm_egl.c')
endif
-egl_wayland = dependency('wayland-egl', version: '>= 9.0.0', required: get_option('egl-wayland'))
-features += {'egl-wayland': features['egl'] and egl_wayland.found() and gl_allowed and features['wayland']}
+egl_wayland_opt = get_option('egl-wayland').require(
+ features['egl'] and features['wayland'] and gl_allowed,
+ error_message: 'either egl or wayland could not be found!',
+)
+egl_wayland = dependency('wayland-egl', version: '>= 9.0.0', required: egl_wayland_opt)
+features += {'egl-wayland': egl_wayland.found()}
if features['egl-wayland']
dependencies += egl_wayland
features += {'gl': true}
@@ -1207,21 +1239,11 @@ if plain_gl.allowed()
features += {'gl': true}
endif
-rpi = dependency('/opt/vc/lib/pkgconfig/brcmegl.pc', 'brcmegl', required: get_option('rpi'))
-features += {'rpi': gl_allowed and rpi.found()}
-if features['rpi']
- dependencies += rpi
- features += {'gl': true}
- sources += files('video/out/opengl/context_rpi.c')
-endif
-
-features += {'egl-helpers': features['egl'] or egl_android.found() or
- egl_angle_win32.allowed() or features['rpi']}
-if features['egl-helpers']
+if features['egl'] or features['egl-android'] or features['egl-angle-win32']
sources += files('video/out/opengl/egl_helpers.c')
endif
-if features['egl'] and features['egl-helpers']
+if features['gl'] and features['egl']
sources += files('video/filter/vf_gpu.c')
endif
@@ -1281,15 +1303,6 @@ if features['ffnvcodec']
sources += files('video/cuda.c')
endif
-android_media_ndk = get_option('android-media-ndk').require(
- features['android'] and cc.has_header_symbol('media/NdkImageReader.h', 'AIMAGE_FORMAT_PRIVATE')
-)
-features += {'android-media-ndk': android_media_ndk.allowed()}
-if features['android-media-ndk']
- # header only, library is dynamically loaded
- sources += files('video/out/hwdec/hwdec_aimagereader.c')
-endif
-
cuda_hwaccel = get_option('cuda-hwaccel').require(
features['ffnvcodec'],
error_message: 'ffnvcodec was not found!',
@@ -1303,7 +1316,7 @@ cuda_interop = get_option('cuda-interop').require(
features['cuda-hwaccel'] and (features['gl'] or features['vulkan']),
error_message: 'cuda-hwaccel and either gl or vulkan were not found!',
)
-features += {'cuda-interop': cuda_interop.allowed() and (features['gl'] or features['vulkan'])}
+features += {'cuda-interop': cuda_interop.allowed()}
if features['cuda-interop'] and features['gl']
sources += files('video/out/hwdec/hwdec_cuda_gl.c')
endif
@@ -1311,13 +1324,22 @@ if features['cuda-interop'] and features['vulkan']
sources += files('video/out/hwdec/hwdec_cuda_vk.c')
endif
+android_media_ndk = get_option('android-media-ndk').require(
+ features['android'] and cc.has_header_symbol('media/NdkImageReader.h', 'AIMAGE_FORMAT_PRIVATE')
+)
+features += {'android-media-ndk': android_media_ndk.allowed()}
+if features['android-media-ndk']
+ # header only, library is dynamically loaded
+ sources += files('video/out/hwdec/hwdec_aimagereader.c')
+endif
+
vulkan_interop = get_option('vulkan-interop').require(
features['vulkan'] and vulkan.version().version_compare('>=1.3.238') and
libavutil.version().version_compare('>=58.11.100'),
error_message: 'Vulkan Interop requires vulkan headers >= 1.3.238, and libavutil >= 58.11.100',
)
features += {'vulkan-interop': vulkan_interop.allowed()}
-if vulkan_interop.allowed()
+if features['vulkan-interop']
sources += files('video/out/hwdec/hwdec_vulkan.c')
endif
@@ -1331,7 +1353,7 @@ if features['d3d-hwaccel']
'video/filter/vf_d3d11vpp.c')
endif
-if features['d3d-hwaccel'] and egl_angle.allowed()
+if features['d3d-hwaccel'] and features['egl-angle']
sources += files('video/out/opengl/hwdec_d3d11egl.c')
endif
if features['d3d-hwaccel'] and features['d3d11']
@@ -1359,50 +1381,48 @@ if features['gl-dxinterop-d3d9']
sources += files('video/out/opengl/hwdec_dxva2gldx.c')
endif
-ios_gl = cc.has_header_symbol('OpenGLES/ES3/glext.h', 'GL_RGB32F', required: get_option('ios-gl'))
+# this is an arbitrary GLES 3.x symbol
+ios_gl = cc.has_header_symbol('OpenGLES/ES3/glext.h', 'GL_RGB32F', required:
+ get_option('ios-gl').require(darwin))
features += {'ios-gl': ios_gl}
if features['ios-gl']
sources += files('video/out/hwdec/hwdec_ios_gl.m')
endif
-rpi_mmal_opt = get_option('rpi-mmal').require(
- features['rpi'],
- error_message: 'rpi was not found!',
-)
-rpi_mmal = dependency('/opt/vc/lib/pkgconfig/mmal.pc', 'mmal', required: rpi_mmal_opt)
-features += {'rpi-mmal': rpi_mmal.found()}
-if features['rpi-mmal']
- dependencies += rpi_mmal
- sources += files('video/out/opengl/hwdec_rpi.c',
- 'video/out/vo_rpi.c')
-endif
-
libva = dependency('libva', version: '>= 1.1.0', required: get_option('vaapi'))
-vaapi_drm = dependency('libva-drm', version: '>= 1.1.0',
- required: get_option('vaapi-drm').require(libva.found() and features['drm']))
+vaapi_drm = dependency('libva-drm', version: '>= 1.1.0', required:
+ get_option('vaapi-drm').require(libva.found() and features['drm']))
features += {'vaapi-drm': vaapi_drm.found()}
if features['vaapi-drm']
dependencies += vaapi_drm
endif
-vaapi_wayland = dependency('libva-wayland', version: '>= 1.1.0',
- required: get_option('vaapi-wayland').require(libva.found() and features['wayland']))
+vaapi_wayland = dependency('libva-wayland', version: '>= 1.1.0', required:
+ get_option('vaapi-wayland').require(libva.found() and features['wayland']))
features += {'vaapi-wayland': vaapi_wayland.found()}
if features['vaapi-wayland']
dependencies += vaapi_wayland
endif
-vaapi_x11 = dependency('libva-x11', version: '>= 1.1.0',
- required: get_option('vaapi-x11').require(libva.found() and features['x11']))
+vaapi_x11 = dependency('libva-x11', version: '>= 1.1.0', required:
+ get_option('vaapi-x11').require(libva.found() and features['x11']))
features += {'vaapi-x11': vaapi_x11.found()}
if features['vaapi-x11']
dependencies += vaapi_x11
sources += files('video/out/vo_vaapi.c')
endif
+vaapi_win32 = dependency('libva-win32', required:
+ get_option('vaapi-win32').require(libva.found() and win32))
+features += {'vaapi-win32': vaapi_win32.found()}
+if features['vaapi-win32']
+ dependencies += vaapi_win32
+endif
+
vaapi = get_option('vaapi').require(libva.found() and (features['vaapi-drm'] or
- features['vaapi-wayland'] or features['vaapi-x11']))
+ features['vaapi-wayland'] or features['vaapi-x11'] or
+ features['vaapi-win32']))
features += {'vaapi': vaapi.allowed()}
if features['vaapi']
@@ -1413,8 +1433,7 @@ if features['vaapi']
'video/out/hwdec/dmabuf_interop_pl.c')
endif
-dmabuf_interop_gl = features['egl'] and features['drm']
-features += {'dmabuf-interop-gl': dmabuf_interop_gl}
+features += {'dmabuf-interop-gl': features['egl'] and features['drm']}
if features['dmabuf-interop-gl']
sources += files('video/out/hwdec/dmabuf_interop_gl.c')
endif
@@ -1433,7 +1452,7 @@ if features['vdpau']
'video/vdpau_mixer.c')
endif
-features += {'vdpau-gl-x11': vdpau.found() and gl_x11.allowed()}
+features += {'vdpau-gl-x11': features['vdpau'] and gl_x11.allowed()}
if features['vdpau'] and features['vdpau-gl-x11']
sources += files('video/out/opengl/hwdec_vdpau.c')
endif
@@ -1443,13 +1462,14 @@ videotoolbox_gl = get_option('videotoolbox-gl').require(
error_message: 'gl-cocoa nor ios-gl could be found!',
)
features += {'videotoolbox-gl': videotoolbox_gl.allowed()}
-corevideo = dependency('appleframeworks', modules: ['CoreVideo'], required: get_option('videotoolbox-pl'))
+corevideo = dependency('appleframeworks', modules: ['CoreVideo'], required:
+ get_option('videotoolbox-pl').require(darwin))
videotoolbox_pl = get_option('videotoolbox-pl').require(
features['vulkan'] and corevideo.found(),
error_message: 'vulkan or CV metal support could be found!',
)
features += {'videotoolbox-pl': videotoolbox_pl.allowed()}
-if features['videotoolbox-gl'] or features['videotoolbox-pl']
+if features['videotoolbox-gl'] or features['videotoolbox-pl'] or features['ios-gl']
sources += files('video/out/hwdec/hwdec_vt.c')
endif
if features['videotoolbox-gl']
@@ -1512,12 +1532,19 @@ features += {'swift': swift.allowed()}
swift_sources = []
if features['cocoa'] and features['swift']
- swift_sources += files('osdep/macos/libmpv_helper.swift',
- 'osdep/macos/log_helper.swift',
- 'osdep/macos/mpv_helper.swift',
- 'osdep/macos/precise_timer.swift',
- 'osdep/macos/swift_compat.swift',
- 'osdep/macos/swift_extensions.swift',
+ swift_sources += files('osdep/mac/application.swift',
+ 'osdep/mac/app_hub.swift',
+ 'osdep/mac/event_helper.swift',
+ 'osdep/mac/input_helper.swift',
+ 'osdep/mac/libmpv_helper.swift',
+ 'osdep/mac/log_helper.swift',
+ 'osdep/mac/menu_bar.swift',
+ 'osdep/mac/option_helper.swift',
+ 'osdep/mac/precise_timer.swift',
+ 'osdep/mac/presentation.swift',
+ 'osdep/mac/swift_compat.swift',
+ 'osdep/mac/swift_extensions.swift',
+ 'osdep/mac/type_helper.swift',
'video/out/mac/common.swift',
'video/out/mac/title_bar.swift',
'video/out/mac/view.swift',
@@ -1545,11 +1572,7 @@ macos_media_player = get_option('macos-media-player').require(
)
features += {'macos-media-player': macos_media_player.allowed()}
if features['macos-media-player']
- swift_sources += files('osdep/macos/remote_command_center.swift')
-endif
-
-if features['swift'] and swift_sources.length() > 0
- subdir('osdep')
+ swift_sources += files('osdep/mac/remote_command_center.swift')
endif
macos_touchbar = get_option('macos-touchbar').require(
@@ -1558,15 +1581,18 @@ macos_touchbar = get_option('macos-touchbar').require(
)
features += {'macos-touchbar': macos_touchbar.allowed()}
if features['macos-touchbar']
- sources += files('osdep/macosx_touchbar.m')
+ swift_sources += files('osdep/mac/touch_bar.swift')
+endif
+
+if features['swift'] and swift_sources.length() > 0
+ subdir('osdep/mac')
endif
# manpages
manpage = 'DOCS/man/mpv.rst'
rst2man = find_program('rst2man', 'rst2man.py', required: get_option('manpage-build'))
-features += {'manpage-build': rst2man.found()}
-if features['manpage-build']
+if rst2man.found()
mandir = get_option('mandir')
custom_target('manpages',
input: manpage,
@@ -1583,8 +1609,7 @@ if features['manpage-build']
endif
rst2html = find_program('rst2html', 'rst2html.py', required: get_option('html-build'))
-features += {'html-build': rst2html.found()}
-if features['html-build']
+if rst2html.found()
datadir = get_option('datadir')
custom_target('html-manpages',
input: manpage,
@@ -1600,8 +1625,7 @@ if features['html-build']
endif
rst2pdf = find_program('rst2pdf', required: get_option('pdf-build'))
-features += {'pdf-build': rst2pdf.found()}
-if features['pdf-build']
+if rst2pdf.found()
dependency_file = rst2pdf.version().version_compare('>=0.100')
datadir = get_option('datadir')
custom_target('pdf-manpages',
@@ -1746,8 +1770,23 @@ if get_option('cplayer')
rename: 'mpv.svg')
install_data('etc/mpv-symbolic.svg', install_dir: join_paths(hicolor_dir, 'symbolic', 'apps'))
- mpv = executable('mpv', objects: libmpv.extract_all_objects(recursive: true), dependencies: dependencies,
+ mpv = executable('mpv', main_fn_source, objects: libmpv.extract_all_objects(recursive: true), dependencies: dependencies,
win_subsystem: 'windows,6.0', install: true)
+
+ # Older meson versions generate this in the player subdirectory.
+ if win32 and meson.version().version_compare('>= 1.3.0')
+ wrapper_sources= 'osdep/win32-console-wrapper.c'
+ executable('mpv', wrapper_sources, c_args: '-municode', link_args: '-municode',
+ name_suffix: 'com', install: true)
+ endif
+
+ if darwin
+ osxbundle = find_program(join_paths(tools_directory, 'osxbundle.py'), required: true)
+ custom_target('macos-bundle',
+ output: 'mpv.app',
+ command: [osxbundle, mpv.full_path(), '@SOURCE_ROOT@'],
+ )
+ endif
endif
if get_option('tests')