Something went wrong. Try again.
🎥 Command line media player
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242$ErrorActionPreference = "Stop"Set-StrictMode -Version Latest
$subprojects = "subprojects"if (-not (Test-Path $subprojects)) { New-Item -Path $subprojects -ItemType Directory | Out-Null}
# Wrap shaderc to run git-sync-deps and patch unsupported generator expressionif (-not (Test-Path "$subprojects/shaderc_cmake")) { git clone https://github.com/google/shaderc --depth 1 $subprojects/shaderc_cmake Set-Content -Path "$subprojects/shaderc_cmake/p.diff" -Value @'diff --git a/third_party/CMakeLists.txt b/third_party/CMakeLists.txtindex d44f62a..54d4719 100644--- a/third_party/CMakeLists.txt+++ b/third_party/CMakeLists.txt@@ -87,7 +87,11 @@ if (NOT TARGET glslang) # Glslang tests are off by default. Turn them on if testing Shaderc. set(GLSLANG_TESTS ON) endif()- set(GLSLANG_ENABLE_INSTALL $<NOT:${SKIP_GLSLANG_INSTALL}>)+ if (SKIP_GLSLANG_INSTALL)+ set(GLSLANG_ENABLE_INSTALL OFF)+ else()+ set(GLSLANG_ENABLE_INSTALL ON)+ endif() add_subdirectory(${SHADERC_GLSLANG_DIR} glslang) endif() if (NOT TARGET glslang)'@ git -C $subprojects/shaderc_cmake apply --ignore-whitespace p.diff}if (-not (Test-Path "$subprojects/shaderc")) { New-Item -Path "$subprojects/shaderc" -ItemType Directory | Out-Null}Set-Content -Path "$subprojects/shaderc/meson.build" -Value @"project('shaderc', 'cpp', version: '2024.1')
python = find_program('python3')run_command(python, '../shaderc_cmake/utils/git-sync-deps', check: true)
cmake = import('cmake')opts = cmake.subproject_options()opts.add_cmake_defines({ 'CMAKE_MSVC_RUNTIME_LIBRARY': 'MultiThreaded', 'CMAKE_POLICY_DEFAULT_CMP0091': 'NEW', 'SHADERC_SKIP_INSTALL': 'ON', 'SHADERC_SKIP_TESTS': 'ON', 'SHADERC_SKIP_EXAMPLES': 'ON', 'SHADERC_SKIP_COPYRIGHT_CHECK': 'ON'})shaderc_proj = cmake.subproject('shaderc_cmake', options: opts)shaderc_dep = declare_dependency(dependencies: [ shaderc_proj.dependency('shaderc'), shaderc_proj.dependency('shaderc_util'), shaderc_proj.dependency('SPIRV'), shaderc_proj.dependency('SPIRV-Tools-static'), shaderc_proj.dependency('SPIRV-Tools-opt'), shaderc_proj.dependency('glslang'), shaderc_proj.dependency('GenericCodeGen'), shaderc_proj.dependency('MachineIndependent'),])meson.override_dependency('shaderc', shaderc_dep)"@
# Manually wrap spirv-cross for CMAKE_MSVC_RUNTIME_LIBRARY option# This also allows us to link staticallyif (-not (Test-Path "$subprojects/spirv-cross-c-shared")) { New-Item -Path "$subprojects/spirv-cross-c-shared" -ItemType Directory | Out-Null}Set-Content -Path "$subprojects/spirv-cross-c-shared/meson.build" -Value @"project('spirv-cross', 'cpp', version: '0.59.0')cmake = import('cmake')opts = cmake.subproject_options()opts.add_cmake_defines({ 'CMAKE_MSVC_RUNTIME_LIBRARY': 'MultiThreaded', 'CMAKE_POLICY_DEFAULT_CMP0091': 'NEW', 'SPIRV_CROSS_EXCEPTIONS_TO_ASSERTIONS': 'ON', 'SPIRV_CROSS_CLI': 'OFF', 'SPIRV_CROSS_ENABLE_TESTS': 'OFF', 'SPIRV_CROSS_ENABLE_MSL': 'OFF', 'SPIRV_CROSS_ENABLE_CPP': 'OFF', 'SPIRV_CROSS_ENABLE_REFLECT': 'OFF', 'SPIRV_CROSS_ENABLE_UTIL': 'OFF',})spirv_cross_proj = cmake.subproject('spirv-cross', options: opts)spirv_cross_c_dep = declare_dependency(dependencies: [ spirv_cross_proj.dependency('spirv-cross-c'), spirv_cross_proj.dependency('spirv-cross-core'), spirv_cross_proj.dependency('spirv-cross-glsl'), spirv_cross_proj.dependency('spirv-cross-hlsl'),])meson.override_dependency('spirv-cross-c-shared', spirv_cross_c_dep)"@
# Manually wrap Vulkan-Loader for UPDATE_DEPS optionif (-not (Test-Path "$subprojects/vulkan")) { New-Item -Path "$subprojects/vulkan" -ItemType Directory | Out-Null}Set-Content -Path "$subprojects/vulkan/meson.build" -Value @"project('vulkan', 'cpp', version: '1.3.285')cmake = import('cmake')opts = cmake.subproject_options()opts.add_cmake_defines({ 'UPDATE_DEPS': 'ON', 'USE_GAS': 'ON',})opts.append_link_args(['-lcfgmgr32', '-Wl,/def:../subprojects/vulkan-loader/loader/vulkan-1.def'], target: 'vulkan')vulkan_proj = cmake.subproject('vulkan-loader', options: opts)vulkan_dep = vulkan_proj.dependency('vulkan')meson.override_dependency('vulkan', vulkan_dep)"@
# Manually wrap libjxl for CMAKE_MSVC_RUNTIME_LIBRARY optionif (-not (Test-Path "$subprojects/libjxl")) { New-Item -Path "$subprojects/libjxl" -ItemType Directory | Out-Null}Set-Content -Path "$subprojects/libjxl/meson.build" -Value @"project('libjxl', 'cpp', version: '0.12.0')cmake = import('cmake')opts = cmake.subproject_options()opts.add_cmake_defines({ 'CMAKE_MSVC_RUNTIME_LIBRARY': 'MultiThreaded', 'BUILD_SHARED_LIBS': 'OFF',})libjxl_proj = cmake.subproject('libjxl-cmake', options: opts)libjxl_dep = libjxl_proj.dependency('jxl')meson.override_dependency('libjxl', libjxl_dep)"@
$projects = @( @{ Path = "$subprojects/ffmpeg.wrap" URL = "https://gitlab.freedesktop.org/gstreamer/meson-ports/ffmpeg.git" Revision = "meson-7.1" Provides = @( "libavcodec = libavcodec_dep", "libavdevice = libavdevice_dep", "libavfilter = libavfilter_dep", "libavformat = libavformat_dep", "libavutil = libavutil_dep", "libswresample = libswresample_dep", "libswscale = libswscale_dep" ) }, @{ Path = "$subprojects/libass.wrap" URL = "https://github.com/libass/libass" Revision = "master" }, @{ Path = "$subprojects/libplacebo.wrap" URL = "https://code.videolan.org/videolan/libplacebo.git" Revision = "master" }, @{ Path = "$subprojects/dav1d.wrap" URL = "https://code.videolan.org/videolan/dav1d" Revision = "master" Provides = @( "dav1d = dav1d_dep" ) }, @{ Path = "$subprojects/spirv-cross.wrap" URL = "https://github.com/KhronosGroup/SPIRV-Cross" Revision = "main" Method = "cmake" }, @{ Path = "$subprojects/vulkan-loader.wrap" URL = "https://github.com/KhronosGroup/Vulkan-Loader" Revision = "main" Method = "cmake" }, @{ Path = "$subprojects/libjxl-cmake.wrap" URL = "https://github.com/libjxl/libjxl" Revision = "main" })
foreach ($project in $projects) { $content = @"[wrap-git]url = $($project.URL)revision = $($project.Revision)depth = 1clone-recursive = true"@ if ($project.ContainsKey('Method')) { $content += "`nmethod = $($project.Method)" } if ($project.ContainsKey('Provides')) { $provide = "[provide]`n$($project.Provides -join "`n")" $content += "`n$provide" } Set-Content -Path $project.Path -Value $content}
meson setup build ` --wrap-mode=forcefallback ` -Ddefault_library=static ` -Dlibmpv=true ` -Dtests=true ` -Dgpl=true ` -Dffmpeg:gpl=enabled ` -Dffmpeg:tests=enabled ` -Dffmpeg:programs=disabled ` -Dffmpeg:sdl2=disabled ` -Dffmpeg:vulkan=auto ` -Dffmpeg:libdav1d=enabled ` -Dffmpeg:libjxl=enabled ` -Dlcms2:fastfloat=true ` -Dlcms2:jpeg=disabled ` -Dlcms2:tiff=disabled ` -Dlibass:test=enabled ` -Dlibusb:tests=false ` -Dlibusb:examples=false ` -Dlibplacebo:demos=false ` -Dlibplacebo:lcms=enabled ` -Dlibplacebo:shaderc=enabled ` -Dlibplacebo:tests=true ` -Dlibplacebo:vulkan=enabled ` -Dlibplacebo:d3d11=enabled ` -Dxxhash:inline-all=true ` -Dxxhash:cli=false ` -Dluajit:amalgam=true ` -Dd3d11=enabled ` -Dvulkan=enabled ` -Djavascript=enabled ` -Dwin32-smtc=enabled ` -Dlua=luajit ` -Ddrm=disabled ` -Dlibarchive=disabled ` -Drubberband=disabled ` -Dwayland=disabled ` -Dx11=disabledninja -C build mpv.exe mpv.com libmpv.acp ./build/subprojects/vulkan-loader/vulkan.dll ./build/vulkan-1.dll./build/mpv.com -v --no-config