aboutsummaryrefslogtreecommitdiff
path: root/multimedia/mpv/Makefile
blob: 9aacf87061196c22e2e4711c138ffbb7e1f8645a (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
PORTNAME=	mpv
DISTVERSIONPREFIX=	v
DISTVERSION=	0.36.0
PORTREVISION=	3
PORTEPOCH=	1
CATEGORIES=	multimedia audio

PATCH_SITES=	https://github.com/${GH_ACCOUNT}/${GH_PROJECT}/commit/
PATCHFILES+=	3bdf702b1de8.patch:-p1 # https://github.com/mpv-player/mpv/pull/10871
PATCHFILES+=	48eb77207bff.patch:-p1 # https://github.com/mpv-player/mpv/pull/12012

MAINTAINER=	multimedia@FreeBSD.org
COMMENT=	Free and open-source general-purpose video player
WWW=		https://mpv.io

LICENSE=	GPLv2+ LGPL21+
LICENSE_COMB=	multi
LICENSE_FILE_GPLv2+ =	${WRKSRC}/LICENSE.GPL
LICENSE_FILE_LGPL21+ =	${WRKSRC}/LICENSE.LGPL

BUILD_DEPENDS=	ffmpeg>=4.0.2,1:multimedia/ffmpeg
LIB_DEPENDS=	libavcodec.so:multimedia/ffmpeg \
		libass.so:multimedia/libass

USES=		compiler:c11 cpe desktop-file-utils iconv jpeg \
		meson pkgconfig python:build shebangfix tar:bz2
USE_LDCONFIG=	yes
SHEBANG_FILES=	*.py TOOLS/*.py

USE_GITHUB=	yes
GH_ACCOUNT=	mpv-player
MESON_ARGS=	--auto-features=auto \
		-Dshaderc=disabled \
		-Dlibmpv=true

OPTIONS_DEFINE=		ARCHIVE DOCS LCMS2 MANPAGES MUJS RUBBERBAND UCHARDET EXAMPLES ZIMG
OPTIONS_DEFAULT=	ARCHIVE DVDNAV LCMS2 LUAJIT MANPAGES NVDEC OPENGL UCHARDET \
			V4L VAAPI VDPAU VULKAN WAYLAND X11 YTDLP
OPTIONS_GROUP=		IN VO AO
OPTIONS_GROUP_IN=	CDIO DVDNAV LIBBLURAY V4L VAPOURSYNTH
OPTIONS_GROUP_VO=	CACA NVDEC OPENGL SIXEL VAAPI VDPAU VULKAN WAYLAND X11
OPTIONS_GROUP_AO=	ALSA JACK OPENAL PIPEWIRE PULSEAUDIO SDL SNDIO
OPTIONS_RADIO=		YOUTUBE
OPTIONS_RADIO_YOUTUBE=	YTDL YTDLP
OPTIONS_SINGLE=		LUA
OPTIONS_SINGLE_LUA=	LUA LUAJIT LUA_NONE
OPTIONS_SUB=		yes

DVDNAV_DESC=		DVD menu navigation
LUA_NONE_DESC=		Disable Lua scripting language support
LUAJIT_DESC=		Use LuaJIT instead of Lua scripting language support
MUJS_DESC=		Use MuJS for Javascript language support
NVDEC_DESC=		NVIDIA decoder with CUDA support
RUBBERBAND_DESC=	High quality pitch correction with librubberband
SIXEL_DESC=		Sixel graphics support
UCHARDET_DESC=		Guess subtitle encoding via uchardet
VAPOURSYNTH_DESC=	VapourSynth filter bridge
VULKAN_DESC=		Vulkan output support
YTDLP_DESC=		Install yt-dlp (youtube-dl fork)
YTDL_DESC=		Install youtube-dl
ZIMG_DESC=		High quality software scaling via "z" library
IN_DESC=		Input
VO_DESC=		Video Output
AO_DESC=		Audio Output

ALSA_LIB_DEPENDS=		libasound.so:audio/alsa-lib
ALSA_MESON_ENABLED=		alsa

ARCHIVE_USES=			libarchive
ARCHIVE_MESON_ENABLED=		libarchive

CACA_LIB_DEPENDS=		libcaca.so:graphics/libcaca
CACA_MESON_ENABLED=		caca

CDIO_LIB_DEPENDS=		libcdio_paranoia.so:sysutils/libcdio-paranoia
CDIO_MESON_ENABLED=		cdda

DOCS_BUILD_DEPENDS=		rst2html:textproc/py-docutils
DOCS_MESON_ENABLED=		html-build

DVDNAV_LIB_DEPENDS=		libdvdnav.so:multimedia/libdvdnav
DVDNAV_MESON_ENABLED=		dvdnav

JACK_LIB_DEPENDS=		libjack.so:audio/jack
JACK_MESON_ENABLED=		jack

LCMS2_LIB_DEPENDS=		liblcms2.so:graphics/lcms2
LCMS2_MESON_ENABLED=		lcms2

LIBBLURAY_LIB_DEPENDS=		libbluray.so:multimedia/libbluray
LIBBLURAY_MESON_ENABLED=	libbluray

LUA_USES=			lua:51-52
LUA_MESON_ON=			-Dlua=lua-${LUA_VER}

LUAJIT_USES=			luajit
LUAJIT_MESON_ON=		-Dlua=luajit

LUA_NONE_MESON_ON=		-Dlua=disabled

MANPAGES_BUILD_DEPENDS=		rst2man:textproc/py-docutils
MANPAGES_MESON_ENABLED=		manpage-build

MUJS_LIB_DEPENDS=		libmujs.so:lang/mujs
MUJS_MESON_ENABLED=		javascript

NVDEC_BUILD_DEPENDS=		${LOCALBASE}/include/ffnvcodec/dynlink_loader.h:multimedia/ffnvcodec-headers
NVDEC_RUN_DEPENDS=		${LOCALBASE}/include/ffnvcodec/dynlink_loader.h:multimedia/ffnvcodec-headers
NVDEC_MESON_ENABLED=		cuda-hwaccel

OPENAL_USES=			openal
OPENAL_MESON_ENABLED=		openal
OPENAL_LDFLAGS=			${_OPENAL_LDFLAGS_${ARCH}}
_OPENAL_LDFLAGS_i386=		-Wl,-znotext

OPENGL_USES=			gl
OPENGL_USE=			GL=egl,gbm
OPENGL_MESON_ENABLED=		gl

PIPEWIRE_LIB_DEPENDS=		libpipewire-0.3.so:multimedia/pipewire
PIPEWIRE_MESON_ENABLED=		pipewire

PULSEAUDIO_LIB_DEPENDS=		libpulse.so:audio/pulseaudio
PULSEAUDIO_MESON_ENABLED=	pulse

RUBBERBAND_LIB_DEPENDS=		librubberband.so:audio/rubberband
RUBBERBAND_MESON_ENABLED=	rubberband

SDL_USES=			sdl
SDL_USE=			SDL=sdl2
SDL_MESON_ENABLED=		sdl2

SIXEL_LIB_DEPENDS=		libsixel.so:graphics/libsixel
SIXEL_MESON_ENABLED=		sixel

SNDIO_LIB_DEPENDS=		libsndio.so:audio/sndio
SNDIO_MESON_ENABLED=		sndio

UCHARDET_LIB_DEPENDS=		libuchardet.so:textproc/uchardet
UCHARDET_MESON_ENABLED=		uchardet

V4L_BUILD_DEPENDS=		${LOCALBASE}/include/linux/dvb/dmx.h:multimedia/v4l_compat
V4L_MESON_ENABLED=		dvbin

VAAPI_LIB_DEPENDS=		libva.so:multimedia/libva
VAAPI_MESON_ENABLED=		vaapi

VAPOURSYNTH_LIB_DEPENDS=	libvapoursynth-script.so:multimedia/vapoursynth
VAPOURSYNTH_MESON_ENABLED=	vapoursynth

VDPAU_LIB_DEPENDS=		libvdpau.so:multimedia/libvdpau
VDPAU_MESON_ENABLED=		vdpau
VDPAU_IMPLIES=			X11

VULKAN_BUILD_DEPENDS=		${LOCALBASE}/include/vulkan/vulkan.h:graphics/vulkan-headers
VULKAN_LIB_DEPENDS=		libplacebo.so:graphics/libplacebo \
				libvulkan.so:graphics/vulkan-loader
VULKAN_MESON_ENABLED=		vulkan libplacebo

WAYLAND_CATEGORIES=		wayland
WAYLAND_BUILD_DEPENDS=		wayland-protocols>=1.15:graphics/wayland-protocols \
				${LOCALBASE}/include/linux/input-event-codes.h:devel/evdev-proto
WAYLAND_LIB_DEPENDS=		libwayland-client.so:graphics/wayland \
				libwayland-cursor.so:graphics/wayland \
				libxkbcommon.so:x11/libxkbcommon
WAYLAND_RUN_DEPENDS=		wayland-protocols>=1.15:graphics/wayland-protocols # pkg-config
WAYLAND_MESON_ENABLED=		wayland
WAYLAND_IMPLIES=		OPENGL

X11_USES=			gnome xorg
X11_USE=			XORG=x11,xext,xinerama,xorgproto,xpresent,xrandr,xscrnsaver,xv,xxf86vm
X11_MESON_ENABLED=		x11

YTDLP_RUN_DEPENDS=		yt-dlp:www/yt-dlp

YTDL_RUN_DEPENDS=		youtube-dl:www/youtube_dl

ZIMG_LIB_DEPENDS=		libzimg.so:graphics/sekrit-twc-zimg
ZIMG_MESON_ENABLED=		zimg

.include <bsd.port.options.mk>

.if ${PORT_OPTIONS:MVAAPI} && ${PORT_OPTIONS:MWAYLAND}
MESON_ARGS+=		-Dvaapi-wayland=enabled
LIB_DEPENDS+=		libva-wayland.so:multimedia/libva
.else
MESON_ARGS+=		-Dvaapi-wayland=disabled
.endif

post-patch-MANPAGES-on:
	@${FIND} ${WRKSRC}/DOCS/man -name '*.rst' | ${XARGS} ${REINPLACE_CMD} \
		-e 's|/usr/local|${PREFIX}|g'

pre-test:
	@if [ ! -e ${WRKDIR}/.meson_build_tests ]; then \
		${RM} ${CONFIGURE_COOKIE} ${BUILD_COOKIE}; \
		${MAKE} -C${.CURDIR} build MESON_ARGS="${MESON_ARGS} --reconfigure -Dtests=true"; \
		${TOUCH} ${WRKDIR}/.meson_build_tests; \
	fi

.include <bsd.port.mk>