Update multimedia/ffmpeg to version 3.2.2_4,1
[dports.git] / multimedia / ffmpeg / Makefile
1 # Created by: Martin Matuska <mm@FreeBSD.org>
2 # $FreeBSD$
3
4 PORTNAME=       ffmpeg
5 PORTVERSION=    3.2.2
6 PORTREVISION=   4
7 PORTEPOCH=      1
8 CATEGORIES=     multimedia audio ipv6 net
9 MASTER_SITES=   http://ffmpeg.org/releases/
10
11 MAINTAINER=     multimedia@FreeBSD.org
12 COMMENT=        Realtime audio/video encoder/converter and streaming server
13
14 LICENSE=        GPLv2+ LGPL21+
15 LICENSE_COMB=   multi
16
17 BUILD_DEPENDS=  yasm:devel/yasm \
18                 ${LOCALBASE}/bin/as:devel/binutils
19
20 HAS_CONFIGURE=  yes
21 USES=           compiler:c11 cpe gmake localbase:ldflags perl5 \
22                 pkgconfig shebangfix tar:bzip2
23 USE_LDCONFIG=   yes
24 USE_PERL5=      build
25 SHEBANG_FILES=  doc/texi2pod.pl
26 NOPRECIOUSMAKEVARS=     yes # ARCH
27
28 PORTSCOUT=      limit:^3\.
29
30 OPTIONS_DEFINE= ALSA AMR_NB AMR_WB ASS BS2B CACA CDIO CELT CHROMAPRINT DC1394 \
31                 DEBUG DOCS EBUR128 FDK_AAC FFSERVER FLITE FONTCONFIG \
32                 FREETYPE FREI0R FRIBIDI GME GSM ICONV ILBC JACK KVAZAAR LADSPA \
33                 LAME LIBBLURAY MODPLUG NETCDF OPENAL OPENCL OPENCV OPENGL \
34                 OPENH264 OPENJPEG OPTIMIZED_CFLAGS OPUS PULSEAUDIO \
35                 RUBBERBAND RTCPU SCHROEDINGER SDL SMB SNAPPY SNDIO SOXR SPEEX SSH \
36                 TESSERACT THEORA TWOLAME V4L VAAPI VDPAU VIDSTAB VORBIS \
37                 VO_AMRWBENC VPX WAVPACK WEBP X11GRAB X264 X265 XCB XVID \
38                 XVIDEO ZIMG ZMQ ZVBI
39
40 OPTIONS_DEFAULT=        FFSERVER FONTCONFIG FREETYPE FREI0R GMP GNUTLS ICONV \
41                         OPENCV OPTIMIZED_CFLAGS RTCPU SCHROEDINGER THEORA V4L VAAPI VDPAU \
42                         VORBIS VPX X264 XVID
43
44 OPTIONS_RADIO=  RTMP SSL
45 OPTIONS_RADIO_RTMP=     GCRYPT GMP LIBRTMP
46 OPTIONS_RADIO_SSL=      GNUTLS OPENSSL
47 OPTIONS_GROUP=  LICENSE
48 OPTIONS_GROUP_LICENSE=  GPL3 NONFREE
49
50 OPTIONS_DEFINE_x86_64=  MMX SSE
51 OPTIONS_DEFINE_armv6=   VFP NEON
52 OPTIONS_DEFINE_armv6hf= VFP NEON
53 OPTIONS_DEFINE_i386=    MMX SSE
54 OPTIONS_DEFAULT_x86_64= MMX SSE
55 OPTIONS_DEFAULT_i386=   MMX SSE
56
57 ASS_DESC=       Subtitles rendering via libass
58 BS2B_DESC=      Bauer Stereophonic-to-Binaural filter
59 CDIO_DESC=      Audio CD grabbing with libcdio
60 CHROMAPRINT_DESC=       Audio fingerprinting with chromaprint
61 DC1394_DESC=    IIDC-1394 grabbing using libdc1394
62 EBUR128_DESC=   EBU R128 measurement for loudnorm filter
63 FDK_AAC_DESC=   AAC audio encoding via Fraunhofer FDK
64 FFSERVER_DESC=  Build and install ffserver
65 FLITE_DESC=     Voice synthesis support via libflite
66 GME_DESC=       Game Music Emu demuxer
67 GPL3_DESC=      Allow (L)GPL version 3 code(cs)
68 ILBC_DESC=      Internet Low Bit Rate codec
69 KVAZAAR_DESC=   H.265 video codec support via Kvazaar
70 LICENSE_DESC=   Licensing options
71 NEON_DESC=      Enable Media Processing Engine instructions
72 NETCDF_DESC=    SOFAlizer binaural filter
73 NONFREE_DESC=   Allow use of nonfree code
74 OPENH264_DESC=  H.264 video codec support via OpenH264
75 RUBBERBAND_DESC=Time-stretching and pitch-shifting with librubberband
76 RTCPU_DESC=     Detect CPU capabilities at runtime
77 RTMP_DESC=      RTMP(T)E protocol support
78 LIBRTMP_DESC=   ${RTMP_DESC} via librtmp
79 TESSERACT_DESC= Optical Character Recognition via Tesseract
80 VFP_DESC=       Enable Vector Floating Point instructions
81 VIDSTAB_DESC=   Video stabilization filter
82 X11GRAB_DESC=   X11 grabbing (legacy)
83 XCB_DESC=       X11 grabbing using XCB
84 ZIMG_DESC=      "z" library video scaling filter
85 ZMQ_DESC=       Message passing via libzmq${ZMQ_VERSION}
86 ZVBI_DESC=      Teletext support via libzvbi
87
88 OPTIONS_SUB=    yes
89
90 # alsa
91 ALSA_CONFIGURE_OFF=     --disable-indev=alsa \
92                         --disable-outdev=alsa
93 ALSA_LIB_DEPENDS=       libasound.so:audio/alsa-lib
94
95 # Opencore AMR NB
96 AMR_NB_LIB_DEPENDS=     libopencore-amrnb.so:audio/opencore-amr
97 AMR_NB_CONFIGURE_ENABLE=        libopencore-amrnb
98 AMR_NB_IMPLIES=         GPL3
99
100 # Opencore AMR WB
101 AMR_WB_LIB_DEPENDS=     libopencore-amrwb.so:audio/opencore-amr
102 AMR_WB_CONFIGURE_ENABLE=        libopencore-amrwb
103 AMR_WB_IMPLIES=         GPL3
104
105 # ass
106 ASS_LIB_DEPENDS=        libass.so:multimedia/libass
107 ASS_CONFIGURE_ENABLE=   libass
108
109 # bs2b
110 BS2B_LIB_DEPENDS=       libbs2b.so:audio/libbs2b
111 BS2B_CONFIGURE_ENABLE=  libbs2b
112
113 # caca
114 CACA_LIB_DEPENDS=       libcaca.so:graphics/libcaca
115 CACA_CONFIGURE_ENABLE=  libcaca
116
117 # cdio
118 CDIO_LIB_DEPENDS=       libcdio_paranoia.so:sysutils/libcdio-paranoia
119 CDIO_CONFIGURE_ENABLE=  libcdio
120
121 # celt
122 CELT_LIB_DEPENDS=       libcelt0.so:audio/celt
123 CELT_CONFIGURE_ENABLE=  libcelt
124
125 # chromaprint
126 CHROMAPRINT_BROKEN=             Dependency loop
127 CHROMAPRINT_LIB_DEPENDS=        libchromaprint.so:audio/chromaprint
128 CHROMAPRINT_CONFIGURE_ENABLE=   chromaprint
129
130 # dc1394
131 DC1394_LIB_DEPENDS=     libdc1394.so:multimedia/libdc1394
132 DC1394_CONFIGURE_ENABLE=        libdc1394
133
134 # debugging
135 DEBUG_CONFIGURE_ON=     --disable-stripping
136 DEBUG_CONFIGURE_OFF=    --disable-debug
137
138 # docs
139 DOCS_BUILD_DEPENDS=     texi2html:textproc/texi2html
140 DOCS_CONFIGURE_ENABLE=  htmlpages
141
142 # ebur128
143 EBUR128_LIB_DEPENDS=    libebur128.so:audio/libebur128
144 EBUR128_CONFIGURE_ENABLE=       libebur128
145
146 # fdk_aac
147 FDK_AAC_LIB_DEPENDS=    libfdk-aac.so:audio/fdk-aac
148 FDK_AAC_CONFIGURE_ENABLE=       libfdk-aac
149 FDK_AAC_IMPLIES=        NONFREE
150
151 # ffserver
152 FFSERVER_CONFIGURE_ENABLE=      ffserver
153 FFSERVER_VARS=          USE_RC_SUBR+=ffserver
154
155 # flite
156 FLITE_LIB_DEPENDS=      libflite.so:audio/flite
157 FLITE_CONFIGURE_ENABLE= libflite
158
159 # fontconfig
160 FONTCONFIG_LIB_DEPENDS= libfontconfig.so:x11-fonts/fontconfig
161 FONTCONFIG_CONFIGURE_ENABLE=    fontconfig
162
163 # freetype
164 FREETYPE_LIB_DEPENDS=   libfreetype.so:print/freetype2
165 FREETYPE_CONFIGURE_ENABLE=      libfreetype
166
167 # frei0r
168 FREI0R_BUILD_DEPENDS=   ${LOCALBASE}/include/frei0r.h:graphics/frei0r
169 FREI0R_CONFIGURE_ENABLE=        frei0r
170
171 # fribidi
172 FRIBIDI_LIB_DEPENDS=    libfribidi.so:converters/fribidi
173 FRIBIDI_CONFIGURE_ENABLE=       libfribidi
174
175 # gcrypt
176 GCRYPT_LIB_DEPENDS=     libgcrypt.so:security/libgcrypt
177 GCRYPT_CONFIGURE_ENABLE=        gcrypt
178
179 # gnutls
180 GNUTLS_LIB_DEPENDS=     libgnutls.so:security/gnutls
181 GNUTLS_CONFIGURE_ENABLE=        gnutls
182
183 # gme
184 GME_LIB_DEPENDS=        libgme.so:audio/libgme
185 GME_CONFIGURE_ENABLE=   libgme
186
187 # gmp
188 GMP_LIB_DEPENDS=        libgmp.so:math/gmp
189 GMP_CONFIGURE_ENABLE=   gmp
190 GMP_IMPLIES=            GPL3
191
192 # gsm
193 GSM_LIB_DEPENDS=        libgsm.so:audio/gsm
194 GSM_CONFIGURE_ENABLE=   libgsm
195
196 # iconv
197 ICONV_USES=     iconv
198 ICONV_CONFIGURE_ENABLE= iconv
199
200 # ilbc
201 ILBC_LIB_DEPENDS=       libilbc.so:net/libilbc
202 ILBC_CONFIGURE_ENABLE=  libilbc
203
204 # jack
205 JACK_LIB_DEPENDS=       libjack.so:audio/jack
206 JACK_CONFIGURE_OFF=     --disable-indev=jack
207
208 # kvazaar
209 KVAZAAR_LIB_DEPENDS=    libkvazaar.so:multimedia/kvazaar
210 KVAZAAR_CONFIGURE_ENABLE=       libkvazaar
211
212 # ladspa
213 LADSPA_BUILD_DEPENDS=   ${LOCALBASE}/include/ladspa.h:audio/ladspa
214 LADSPA_RUN_DEPENDS=     ${LOCALBASE}/lib/ladspa/amp.so:audio/ladspa
215 LADSPA_CONFIGURE_ENABLE=        ladspa
216
217 # lame
218 LAME_LIB_DEPENDS=       libmp3lame.so:audio/lame
219 LAME_CONFIGURE_ENABLE=  libmp3lame
220
221 # libbluray
222 LIBBLURAY_LIB_DEPENDS=  libbluray.so:multimedia/libbluray
223 LIBBLURAY_CONFIGURE_ENABLE=     libbluray
224
225 # libv4l
226 V4L_BUILD_DEPENDS=      v4l_compat>0:multimedia/v4l_compat
227 V4L_LIB_DEPENDS=        libv4l2.so:multimedia/libv4l
228 V4L_CONFIGURE_ENABLE=   libv4l2
229 V4L_CONFIGURE_OFF=              --disable-indev=v4l2 \
230                                 --disable-outdev=v4l2
231
232 # mmx support
233 MMX_CONFIGURE_ENABLE=   mmx
234
235 # modplug
236 MODPLUG_LIB_DEPENDS=    libmodplug.so:audio/libmodplug
237 MODPLUG_CONFIGURE_ENABLE=       libmodplug
238
239 # netcdf
240 NETCDF_LIB_DEPENDS=     libnetcdf.so:science/netcdf
241 NETCDF_CONFIGURE_ENABLE=        netcdf
242
243 # OpenAL
244 OPENAL_LIB_DEPENDS=     libopenal.so:audio/openal-soft
245 OPENAL_CONFIGURE_ENABLE=        openal
246 OPENAL_CONFIGURE_OFF=           --disable-indev=openal
247
248 # opencl
249 OPENCL_BUILD_DEPENDS=   ${LOCALBASE}/include/CL/opencl.h:devel/opencl
250 OPENCL_LIB_DEPENDS=     libOpenCL.so:devel/ocl-icd
251 OPENCL_CONFIGURE_ENABLE=        opencl
252
253 # opencv
254 OPENCV_LIB_DEPENDS=     libopencv_imgproc.so:graphics/opencv2-core
255 OPENCV_CONFIGURE_ENABLE=        libopencv
256
257 # opengl
258 OPENGL_USE=             GL=gl
259 OPENGL_CONFIGURE_ENABLE=        opengl
260
261 # openh264
262 OPENH264_LIB_DEPENDS=   libopenh264.so:multimedia/openh264
263 OPENH264_CONFIGURE_ENABLE=      libopenh264
264
265 # openjpeg
266 OPENJPEG_LIB_DEPENDS=   libopenjp2.so:graphics/openjpeg
267 OPENJPEG_CONFIGURE_ENABLE=      libopenjpeg
268
269 # openssl
270 OPENSSL_USE=            OPENSSL=yes
271 OPENSSL_CONFIGURE_ENABLE=       openssl
272 OPENSSL_IMPLIES=        NONFREE
273
274 # optimizations
275 OPTIMIZED_CFLAGS_CONFIGURE_ENABLE=      optimizations
276
277 # opus
278 OPUS_LIB_DEPENDS=       libopus.so:audio/opus
279 OPUS_CONFIGURE_ENABLE=  libopus
280
281 # pulseaudio
282 PULSEAUDIO_LIB_DEPENDS= libpulse.so:audio/pulseaudio
283 PULSEAUDIO_CONFIGURE_ENABLE=    libpulse
284 PULSEAUDIO_CONFIGURE_OFF=       --disable-indev=pulse \
285                                 --disable-outdev=pulse
286
287 # rubberband
288 RUBBERBAND_LIB_DEPENDS= librubberband.so:audio/rubberband
289 RUBBERBAND_CONFIGURE_ENABLE=    librubberband
290
291 # rtcpu
292 RTCPU_CONFIGURE_ENABLE= runtime-cpudetect
293
294 # rtmp
295 LIBRTMP_LIB_DEPENDS=    librtmp.so:multimedia/librtmp
296 LIBRTMP_CONFIGURE_ENABLE=       librtmp
297
298 # schroedinger
299 SCHROEDINGER_LIB_DEPENDS=       libschroedinger-1.0.so:multimedia/schroedinger
300 SCHROEDINGER_CONFIGURE_ENABLE=  libschroedinger
301
302 # sdl
303 SDL_USE=                SDL=sdl2
304 SDL_CONFIGURE_ENABLE=   ffplay
305 SDL_CONFIGURE_OFF=      --disable-outdev=sdl --disable-sdl2
306
307 # smbclient
308 SMB_LIB_DEPENDS=        libsmbclient.so:net/samba-libsmbclient
309 SMB_CONFIGURE_ENABLE=   libsmbclient
310 SMB_IMPLIES=            GPL3
311
312 # snappy
313 SNAPPY_LIB_DEPENDS=     libsnappy.so:archivers/snappy
314 SNAPPY_CONFIGURE_ENABLE=        libsnappy
315
316 # sndio
317 SNDIO_CONFIGURE_OFF=    --disable-indev=sndio \
318                         --disable-outdev=sndio
319 SNDIO_LIB_DEPENDS=      libsndio.so:audio/sndio
320
321 # soxr
322 SOXR_LIB_DEPENDS=       libsoxr.so:audio/libsoxr
323 SOXR_CONFIGURE_ENABLE=  libsoxr
324
325 # speex
326 SPEEX_LIB_DEPENDS=      libspeex.so:audio/speex
327 SPEEX_CONFIGURE_ENABLE= libspeex
328
329 # sse support
330 SSE_CONFIGURE_ENABLE=   sse
331 SSE_IMPLIES=            MMX
332
333 # ssh
334 SSH_LIB_DEPENDS=        libssh.so:security/libssh
335 SSH_CONFIGURE_ENABLE=   libssh
336
337 # tesseract
338 TESSERACT_LIB_DEPENDS=  libtesseract.so:graphics/tesseract
339 TESSERACT_CONFIGURE_ENABLE=     libtesseract
340
341 # theora
342 THEORA_LIB_DEPENDS=     libtheora.so:multimedia/libtheora
343 THEORA_CONFIGURE_ENABLE=        libtheora
344
345 # twolame
346 TWOLAME_LIB_DEPENDS=    libtwolame.so:audio/twolame
347 TWOLAME_CONFIGURE_ENABLE=       libtwolame
348
349 # vaapi
350 VAAPI_LIB_DEPENDS=      libva.so:multimedia/libva
351 VAAPI_CONFIGURE_ENABLE= vaapi
352
353 # vdpau
354 VDPAU_LIB_DEPENDS=      libvdpau.so:multimedia/libvdpau
355 VDPAU_CONFIGURE_ENABLE= vdpau
356
357 # armv6
358 VFP_CONFIGURE_ENABLE=   vfp
359 NEON_CONFIGURE_ENABLE=  neon
360 .if ! ${CFLAGS:M-march*}
361 NEON_CONFIGURE_ON=      --cpu=armv7-a
362 .endif
363
364 # vo-amrwbenc
365 VO_AMRWBENC_LIB_DEPENDS=        libvo-amrwbenc.so:audio/vo-amrwbenc
366 VO_AMRWBENC_CONFIGURE_ENABLE=   libvo-amrwbenc
367 VO_AMRWBENC_IMPLIES=    GPL3
368
369 # vid.stab
370 VIDSTAB_LIB_DEPENDS=    libvidstab.so:multimedia/vid.stab
371 VIDSTAB_CONFIGURE_ENABLE=       libvidstab
372
373 # vorbis
374 VORBIS_LIB_DEPENDS=     libvorbisenc.so:audio/libvorbis
375 VORBIS_CONFIGURE_ENABLE=        libvorbis
376
377 # vp8
378 VPX_LIB_DEPENDS=        libvpx.so:multimedia/libvpx
379 VPX_CONFIGURE_ENABLE=   libvpx
380
381 # wavpack
382 WAVPACK_LIB_DEPENDS=    libwavpack.so:audio/wavpack
383 WAVPACK_CONFIGURE_ENABLE=       libwavpack
384
385 # webp
386 WEBP_LIB_DEPENDS=       libwebp.so:graphics/webp
387 WEBP_CONFIGURE_ENABLE=  libwebp
388
389 # x11grab
390 X11GRAB_USE=            XORG=x11,xext,xfixes
391 X11GRAB_CONFIGURE_ENABLE=       x11grab
392
393 # x264
394 X264_LIB_DEPENDS=       libx264.so:multimedia/libx264
395 X264_CONFIGURE_ENABLE=  libx264
396
397 # x265
398 X265_LIB_DEPENDS=       libx265.so:multimedia/x265
399 X265_CONFIGURE_ENABLE=  libx265
400
401 # xcb
402 XCB_USE=                XORG=xcb
403 XCB_CONFIGURE_ENABLE=   libxcb
404
405 # xvid
406 XVID_LIB_DEPENDS=       libxvidcore.so:multimedia/xvid
407 XVID_CONFIGURE_ENABLE=  libxvid
408
409 # xv
410 XVIDEO_USE=             XORG=xv
411 XVIDEO_CONFIGURE_OFF=   --disable-outdev=xv
412
413 # zimg
414 ZIMG_LIB_DEPENDS=       libzimg.so:graphics/sekrit-twc-zimg
415 ZIMG_CONFIGURE_ENABLE=  libzimg
416
417 # zmq
418 ZMQ_LIB_DEPENDS=        libzmq.so:net/libzmq${ZMQ_VERSION}
419 ZMQ_CONFIGURE_ENABLE=   libzmq
420 ZMQ_VERSION?=           4
421
422 # zvbi
423 ZVBI_LIB_DEPENDS=       libzvbi.so:devel/libzvbi
424 ZVBI_CONFIGURE_ENABLE=  libzvbi
425
426 # License knobs
427 GPL3_CONFIGURE_ENABLE=  version3
428 GPL3_VARS=              LICENSE="GPLv3+ LGPL3+"
429 LICENSE_FILE_GPLv3=     ${WRKSRC}/COPYING.GPLv3
430 LICENSE_FILE_LGPL3=     ${WRKSRC}/COPYING.LGPLv3
431
432 NONFREE_CONFIGURE_ENABLE=nonfree
433 NONFREE_VARS=           RESTRICTED="enabling OPENSSL or FDK_AAC restricts redistribution"
434
435 INSTALL_TARGET= install-progs install-doc install-data \
436                 install-libs install-headers
437
438 DATADIR=        ${PREFIX}/share/${PORTNAME}${PKGNAMESUFFIX}
439
440 DATADIR=        ${PREFIX}/share/${PORTNAME}${PKGNAMESUFFIX}
441 DOCSDIR=        ${PREFIX}/share/doc/${PORTNAME}${PKGNAMESUFFIX}
442 CONFIGURE_ENV+= COMPILER_PATH=${LOCALBASE}/bin
443 MAKE_ENV+=      COMPILER_PATH=${LOCALBASE}/bin
444
445 CONFIGURE_ARGS+=--prefix="${PREFIX}" \
446                 --mandir="${PREFIX}/man" \
447                 --datadir="${DATADIR}" \
448                 --pkgconfigdir="${PREFIX}/libdata/pkgconfig" \
449                 --enable-shared \
450                 --enable-gpl \
451                 --enable-postproc \
452                 --enable-avfilter \
453                 --enable-avresample \
454                 --enable-pthreads \
455                 --cc="${CC}"
456
457 CONFIGURE_ENV_armv6_clang=      ASFLAGS=-no-integrated-as
458 CONFIGURE_ARGS_armv6=           --disable-fast-unaligned
459 CONFIGURE_ARGS_FreeBSD_9=       --enable-memalign-hack
460
461 DOC_FILES=      Changelog CREDITS INSTALL.md LICENSE.md MAINTAINERS \
462                 README.md RELEASE_NOTES
463 # under doc subdirectory
464 DOC_DOCFILES=   APIchanges *.txt
465 PORTDOCS=       *
466
467 # Custom helpers. FOO_${ARCH} style from bsd.port.mk
468 CONFIGURE_ENV+= ${CONFIGURE_ENV_${ARCH}_${CHOSEN_COMPILER_TYPE}}
469 CONFIGURE_ARGS+=${CONFIGURE_ARGS_${OPSYS}_${OSREL:R}}
470 CONFIGURE_ARGS+=${CONFIGURE_ARGS_${ARCH}}
471
472 post-patch:
473 # {C,LD}FLAGS safeness
474         @${REINPLACE_CMD} -e 's|/etc/ffserver.conf|${PREFIX}/etc/ffserver.conf|' \
475                 ${WRKSRC}/ffserver.c
476         @${REINPLACE_CMD} -E \
477                 -e 's|require_pkg_config opencv|require_pkg_config opencv-core|g' \
478                 ${CONFIGURE_WRKSRC}/${CONFIGURE_SCRIPT}
479
480 post-install:
481         (cd ${WRKSRC} && ${COPYTREE_SHARE} \
482                 "${DOC_FILES}" ${STAGEDIR}${DOCSDIR})
483         (cd ${WRKSRC}/doc && ${COPYTREE_SHARE} \
484                 "${DOC_DOCFILES}" ${STAGEDIR}${DOCSDIR})
485
486 post-install-FFSERVER-on:
487         ${INSTALL_DATA} ${WRKSRC}/doc/ffserver.conf \
488                 ${STAGEDIR}${PREFIX}/etc/ffserver.conf.sample
489
490 .include <bsd.port.mk>