1 |
# $MidnightBSD$ |
2 |
# $FreeBSD: ports/multimedia/ffmpeg/Makefile,v 1.135 2011/08/22 21:14:34 mm Exp $ |
3 |
|
4 |
PORTNAME= ffmpeg |
5 |
PORTVERSION= 0.7.17 |
6 |
PORTREVISION= 2 |
7 |
PORTEPOCH= 1 |
8 |
CATEGORIES= multimedia audio ipv6 net |
9 |
MASTER_SITES= http://ffmpeg.org/releases/ |
10 |
PKGNAMESUFFIX= 0 |
11 |
|
12 |
MAINTAINER= ports@MidnightBSD.org |
13 |
COMMENT= Realtime audio/video encoder/converter and streaming server |
14 |
|
15 |
LICENSE= gpl2 lgpl2.1 |
16 |
LICENSE_COMB= multi |
17 |
LICENSE_FILE_gpl2= ${WRKSRC}/COPYING.GPLv2 |
18 |
LICENSE_FILE_lgpl2.1= ${WRKSRC}/COPYING.LGPLv2.1 |
19 |
|
20 |
BUILD_DEPENDS= yasm:devel/yasm \ |
21 |
${LOCALBASE}/bin/as:devel/binutils \ |
22 |
${LOCALBASE}/bin/texi2html:textproc/texi2html |
23 |
|
24 |
PORTSCOUT= limit:^0\.7.* |
25 |
|
26 |
USES= cpe gmake perl5 pkgconfig tar:bzip2 shebangfix |
27 |
USE_LDCONFIG= ${PREFIX}/lib/ffmpeg${FFMPEG_SUFFIX} |
28 |
USE_PERL5= build |
29 |
|
30 |
FFMPEG_SUFFIX= 0 |
31 |
HAS_CONFIGURE= yes |
32 |
CONFIGURE_LOG= config.err |
33 |
CONFIGURE_ENV+= EXESUF="${FFMPEG_SUFFIX}" |
34 |
MAKE_ARGS+= EXESUF="${FFMPEG_SUFFIX}" |
35 |
PLIST_SUB+= SUFF="${FFMPEG_SUFFIX}" |
36 |
PROGS= ffmpeg ffprobe |
37 |
|
38 |
CONFIGURE_ENV+= COMPILER_PATH=${LOCALBASE}/bin |
39 |
MAKE_ENV+= COMPILER_PATH=${LOCALBASE}/bin V=1 |
40 |
|
41 |
CONFIGURE_ARGS+=--prefix="${PREFIX}" \ |
42 |
--mandir="${PREFIX}/man" \ |
43 |
--incdir="${PREFIX}/include/ffmpeg${FFMPEG_SUFFIX}" \ |
44 |
--libdir="${PREFIX}/lib/ffmpeg${FFMPEG_SUFFIX}" \ |
45 |
--shlibdir="${PREFIX}/lib/ffmpeg${FFMPEG_SUFFIX}" \ |
46 |
--datadir="${DATADIR}" \ |
47 |
--build-suffix="${FFMPEG_SUFFIX}" \ |
48 |
--enable-shared \ |
49 |
--enable-gpl \ |
50 |
--enable-postproc \ |
51 |
--enable-avfilter \ |
52 |
--enable-pthreads \ |
53 |
--enable-runtime-cpudetect \ |
54 |
--enable-memalign-hack \ |
55 |
--enable-pic \ |
56 |
--cc="${CC}" \ |
57 |
--extra-cflags="${FFMPEG_CFLAGS} -I${LOCALBASE}/include" \ |
58 |
--extra-ldflags="-L${LOCALBASE}/lib ${FFMPEG_LDFLAGS}" \ |
59 |
--extra-libs="-lpthread" |
60 |
|
61 |
SHLIB_VER= 1 |
62 |
PLIST_SUB+= SHLIB_VER=${SHLIB_VER} |
63 |
|
64 |
DATADIR= ${PREFIX}/share/${PORTNAME}${PKGNAMESUFFIX} |
65 |
DOCSDIR= ${PREFIX}/share/doc/${PORTNAME}${PKGNAMESUFFIX} |
66 |
|
67 |
OPTIONS_DEFINE= AACPLUS ALSA AMR_NB AMR_WB CELT DEBUG DIRAC FAAC \ |
68 |
FFSERVER FREETYPE FREI0R GSM LAME OPENCV OPENJPEG \ |
69 |
OPTIMIZED_CFLAGS RTMP SCHROEDINGER SDL SPEEX THEORA VAAPI \ |
70 |
VDPAU VO_AACENC VO_AMRWBENC VORBIS VPX X11GRAB X264 XVID DOCS |
71 |
OPTIONS_DEFAULT= FFSERVER FREETYPE FREI0R OPENCV SCHROEDINGER \ |
72 |
THEORA VORBIS VPX X264 XVID |
73 |
OPTIONS_SUB= yes |
74 |
|
75 |
FFSERVER_DESC= Build and install ffserver |
76 |
X11GRAB_DESC= Enable x11 grabbing |
77 |
|
78 |
ALSA_LIB_DEPENDS= libasound.so:audio/alsa-lib |
79 |
ALSA_CONFIGURE_OFF= --disable-indev=alsa \ |
80 |
--disable-outdev=alsa |
81 |
|
82 |
CELT_LIB_DEPENDS= libcelt0.so:audio/celt |
83 |
CELT_CONFIGURE_ENABLE= libcelt |
84 |
|
85 |
DIRAC_LIB_DEPENDS= libdirac_encoder.so:multimedia/dirac |
86 |
DIRAC_CONFIGURE_ENABLE= libdirac |
87 |
|
88 |
DEBUG_CONFIGURE_ON= --disable-stripping |
89 |
DEBUG_CONFIGURE_OFF= --disable-debug |
90 |
|
91 |
FFSERVER_CONFIGURE_OFF= --disable-ffserver |
92 |
|
93 |
FREETYPE_LIB_DEPENDS= libfreetype.so:print/freetype2 |
94 |
FREETYPE_CONFIGURE_ENABLE= libfreetype |
95 |
|
96 |
FREI0R_BUILD_DEPENDS= ${LOCALBASE}/include/frei0r.h:graphics/frei0r |
97 |
FREI0R_CONFIGURE_ENABLE= frei0r |
98 |
|
99 |
GSM_LIB_DEPENDS= libgsm.so:audio/gsm |
100 |
GSM_CONFIGURE_ENABLE= libgsm |
101 |
|
102 |
LAME_LIB_DEPENDS= libmp3lame.so:audio/lame |
103 |
LAME_CONFIGURE_ENABLE= libmp3lame |
104 |
|
105 |
OPENCV_LIB_DEPENDS= libopencv_imgproc.so:graphics/opencv-core |
106 |
OPENCV_CONFIGURE_ENABLE= libopencv |
107 |
|
108 |
OPENJPEG_LIB_DEPENDS= libopenjpeg.so:graphics/openjpeg15 |
109 |
OPENJPEG_CONFIGURE_ENABLE= libopenjpeg |
110 |
|
111 |
RTMP_USE= OPENSSL=yes |
112 |
|
113 |
SCHROEDINGER_LIB_DEPENDS= libschroedinger-1.0.so:multimedia/schroedinger |
114 |
SCHROEDINGER_CONFIGURE_ENABLE= libschroedinger |
115 |
|
116 |
SPEEX_LIB_DEPENDS= libspeex.so:audio/speex |
117 |
SPEEX_CONFIGURE_ENABLE= libspeex |
118 |
|
119 |
THEORA_LIB_DEPENDS= libtheora.so:multimedia/libtheora |
120 |
THEORA_CONFIGURE_ENABLE= libtheora |
121 |
|
122 |
X11GRAB_USE= XORG=x11,xext,xfixes |
123 |
X11GRAB_CONFIGURE_ON= --enable-x11grab |
124 |
|
125 |
X264_LIB_DEPENDS= libx264.so:multimedia/libx264 |
126 |
X264_CONFIGURE_ENABLE= libx264 |
127 |
|
128 |
XVID_LIB_DEPENDS= libxvidcore.so:multimedia/xvid |
129 |
XVID_CONFIGURE_ENABLE= libxvid |
130 |
|
131 |
VDPAU_BUILD_DEPENDS= ${LOCALBASE}/include/vdpau/vdpau.h:multimedia/libvdpau |
132 |
VDPAU_CONFIGURE_ENABLE= vdpau |
133 |
|
134 |
VPX_LIB_DEPENDS= libvpx.so:multimedia/libvpx |
135 |
VPX_CONFIGURE_ENABLE= libvpx |
136 |
|
137 |
COMPAT_HEADERS=libavcodec/avcodec.h \ |
138 |
libavcodec/opt.h \ |
139 |
libavcodec/vdpau.h \ |
140 |
libavcodec/xvmc.h \ |
141 |
libavdevice/avdevice.h \ |
142 |
libavfilter/avfilter.h \ |
143 |
libavformat/avformat.h \ |
144 |
libavformat/avio.h \ |
145 |
libavutil/adler32.h \ |
146 |
libavutil/avstring.h \ |
147 |
libavutil/avutil.h \ |
148 |
libavutil/base64.h \ |
149 |
libavutil/common.h \ |
150 |
libavutil/crc.h \ |
151 |
libavutil/fifo.h \ |
152 |
libavutil/intfloat_readwrite.h \ |
153 |
libavutil/log.h \ |
154 |
libavutil/lzo.h \ |
155 |
libavutil/mathematics.h \ |
156 |
libavutil/md5.h \ |
157 |
libavutil/mem.h \ |
158 |
libavutil/pixfmt.h \ |
159 |
libavutil/rational.h \ |
160 |
libavutil/sha1.h \ |
161 |
libpostproc/postprocess.h \ |
162 |
libswscale/swscale.h |
163 |
|
164 |
.include <bsd.port.pre.mk> |
165 |
|
166 |
.if ${OPSYS} == "FreeBSD" && ${OSVERSION} < 1000000 |
167 |
CONFIGURE_ARGS+= --enable-memalign-hack |
168 |
.endif |
169 |
|
170 |
.if ${ARCH} == armv6 |
171 |
CONFIGURE_ENV+= ASFLAGS=-no-integrated-as |
172 |
CFLAGS+= -no-integrated-as |
173 |
.endif |
174 |
|
175 |
DOC_FILES= CREDITS INSTALL LICENSE MAINTAINERS README RELEASE |
176 |
# under doc subdirectory |
177 |
DOC_DOCFILES= APIchanges RELEASE_NOTES TODO *.txt *.html |
178 |
|
179 |
.if ${PORT_OPTIONS:MFFSERVER} |
180 |
USE_RC_SUBR= ffserver${FFMPEG_SUFFIX} |
181 |
PROGS+= ffserver |
182 |
.endif |
183 |
|
184 |
# sse hardware vector support |
185 |
.if defined(MACHINE_CPU) && (${MACHINE_CPU:Msse} == "sse" || ${MACHINE_CPU:Mamd64} == "amd64") |
186 |
_BUILTIN_VECTOR= yes |
187 |
.else |
188 |
CONFIGURE_ARGS+= --disable-sse |
189 |
.endif |
190 |
|
191 |
# mmx support |
192 |
.if defined(MACHINE_CPU) && ${MACHINE_CPU:Mmmx} == "" && ${MACHINE_CPU:Mamd64} == "" |
193 |
CONFIGURE_ARGS+= --disable-mmx |
194 |
_NO_BUILTIN_VECTOR= yes |
195 |
.endif |
196 |
|
197 |
# builtin vector, requires mmx and sse |
198 |
.if !defined(_NO_BUILTIN_VECTOR) && defined(_BUILTIN_VECTOR) |
199 |
CFLAGS+= -msse |
200 |
.endif |
201 |
|
202 |
# optimizations |
203 |
.if ${PORT_OPTIONS:MOPTIMIZED_CFLAGS} |
204 |
CFLAGS+= -O3 -ffast-math -fno-finite-math-only -fomit-frame-pointer |
205 |
.endif |
206 |
|
207 |
#aacplus |
208 |
.if ${PORT_OPTIONS:MAACPLUS} |
209 |
FFMPEG_NONFREE= yes |
210 |
LIB_DEPENDS+= libaacplus.so:audio/libaacplus |
211 |
CONFIGURE_ARGS+= --enable-libaacplus |
212 |
.else |
213 |
CONFIGURE_ARGS+= --disable-libaacplus |
214 |
.endif |
215 |
|
216 |
# Opencore AMR NB |
217 |
.if ${PORT_OPTIONS:MAMR_NB} |
218 |
FFMPEG_LICENSE_GPL3= yes |
219 |
LIB_DEPENDS+= libopencore-amrnb.so:audio/opencore-amr |
220 |
CONFIGURE_ARGS+= --enable-libopencore-amrnb |
221 |
.else |
222 |
CONFIGURE_ARGS+= --disable-libopencore-amrnb |
223 |
.endif |
224 |
|
225 |
# Opencore AMR WB |
226 |
.if ${PORT_OPTIONS:MAMR_WB} |
227 |
FFMPEG_LICENSE_GPL3= yes |
228 |
LIB_DEPENDS+= libopencore-amrwb.so:audio/opencore-amr |
229 |
CONFIGURE_ARGS+= --enable-libopencore-amrwb |
230 |
.else |
231 |
CONFIGURE_ARGS+= --disable-libopencore-amrwb |
232 |
.endif |
233 |
|
234 |
# faac |
235 |
.if ${PORT_OPTIONS:MFAAC} |
236 |
FFMPEG_NONFREE= yes |
237 |
LIB_DEPENDS+= libfaac.so:audio/faac |
238 |
CONFIGURE_ARGS+= --enable-libfaac |
239 |
.else |
240 |
CONFIGURE_ARGS+= --disable-libfaac |
241 |
.endif |
242 |
|
243 |
# rtmp |
244 |
.if ${PORT_OPTIONS:MRTMP} |
245 |
LIB_DEPENDS+= librtmp.so:multimedia/librtmp |
246 |
CONFIGURE_ARGS+= --enable-librtmp |
247 |
. if ${OPENSSLBASE} != "/usr" |
248 |
FFMPEG_CFLAGS+= -I${OPENSSLINC} |
249 |
FFMPEG_LDFLAGS+= -L${OPENSSLLIB} |
250 |
. endif |
251 |
.else |
252 |
CONFIGURE_ARGS+= --disable-librtmp |
253 |
.endif |
254 |
|
255 |
# sdl |
256 |
.if ${PORT_OPTIONS:MSDL} |
257 |
USE_SDL+= sdl |
258 |
PLIST_FILES+= bin/ffplay${FFMPEG_SUFFIX} man/man1/ffplay${FFMPEG_SUFFIX}.1.gz |
259 |
PROGS+= ffplay |
260 |
.else |
261 |
CONFIGURE_ARGS+= --disable-ffplay |
262 |
.endif |
263 |
|
264 |
# vaapi |
265 |
.if ${PORT_OPTIONS:MVAAPI} |
266 |
FFMPEG_LICENSE_GPL3= yes |
267 |
LIB_DEPENDS+= libva.so:multimedia/libva |
268 |
CONFIGURE_ARGS+= --enable-vaapi |
269 |
.else |
270 |
CONFIGURE_ARGS+= --disable-vaapi |
271 |
.endif |
272 |
|
273 |
# vo-aacenc |
274 |
.if ${PORT_OPTIONS:MVO_AACENC} |
275 |
FFMPEG_LICENSE_GPL3= yes |
276 |
LIB_DEPENDS+= libvo-aacenc.so:audio/vo-aacenc |
277 |
CONFIGURE_ARGS+= --enable-libvo-aacenc |
278 |
.else |
279 |
CONFIGURE_ARGS+= --disable-libvo-aacenc |
280 |
.endif |
281 |
|
282 |
# vo-amrwbenc |
283 |
.if ${PORT_OPTIONS:MVO_AMRWBENC} |
284 |
FFMPEG_LICENSE_GPL3= yes |
285 |
LIB_DEPENDS+= libvo-amrwbenc.so:audio/vo-amrwbenc |
286 |
CONFIGURE_ARGS+= --enable-libvo-amrwbenc |
287 |
.else |
288 |
CONFIGURE_ARGS+= --disable-libvo-amrwbenc |
289 |
.endif |
290 |
|
291 |
# vorbis |
292 |
.if ${PORT_OPTIONS:MVORBIS} |
293 |
LIB_DEPENDS+= libvorbisenc.so:audio/libvorbis |
294 |
CONFIGURE_ARGS+= --enable-libvorbis |
295 |
FFMPEG_CFLAGS+= -I${LOCALBASE}/include/vorbis |
296 |
.else |
297 |
CONFIGURE_ARGS+= --disable-libvorbis |
298 |
.endif |
299 |
|
300 |
# License knobs |
301 |
.if defined(FFMPEG_NONFREE) |
302 |
RESTRICTED= linking to libfaac or libaacplus restricts redistribution |
303 |
CONFIGURE_ARGS+= --enable-nonfree |
304 |
.endif |
305 |
|
306 |
.if defined(FFMPEG_LICENSE_GPL3) |
307 |
LICENSE+= GPLv3 LGPL3 |
308 |
LICENSE_FILE_GPLv3= ${WRKSRC}/COPYING.GPLv3 |
309 |
LICENSE_FILE_LGPL3= ${WRKSRC}/COPYING.LGPLv3 |
310 |
CONFIGURE_ARGS+= --enable-version3 |
311 |
.endif |
312 |
|
313 |
post-patch: |
314 |
@${REINPLACE_CMD} -e 's|/usr/local/bin/perl|/usr/bin/perl|g' ${WRKSRC}/doc/texi2pod.pl |
315 |
# {C,LD}FLAGS safeness |
316 |
@${REINPLACE_CMD} -e 's|$$(LIBDIR)/pkgconfig|$$(DESTDIR)$$(prefix)/libdata/pkgconfig|' \ |
317 |
${WRKSRC}/subdir.mak |
318 |
@${REINPLACE_CMD} -e 's|/etc/ffserver.conf|${PREFIX}/etc/ffserver${FFMPEG_SUFFIX}.conf|' \ |
319 |
${WRKSRC}/ffserver.c |
320 |
@${REINPLACE_CMD} -E \ |
321 |
-e "s|(EXTRALIBS[[:space:]]*=)|\1-L${LOCALBASE}/lib |g; \ |
322 |
s|%%LOCALBASE%%|${LOCALBASE}|g; \ |
323 |
s|gsm/gsm.h|gsm.h|g" \ |
324 |
${CONFIGURE_WRKSRC}/${CONFIGURE_SCRIPT} |
325 |
@${REINPLACE_CMD} -e 's|-ldl||; s|$$(LIBMAJOR)|${SHLIB_VER}|g;' \ |
326 |
-e 's|opencv opencv/cxcore.h|opencv-core opencv2/core/core_c.h|g' \ |
327 |
-e 's|check_ldflags -Wl,--as-needed||' \ |
328 |
${CONFIGURE_WRKSRC}/${CONFIGURE_SCRIPT} |
329 |
.if ${PORT_OPTIONS:MSDL} |
330 |
@${REINPLACE_CMD} -E \ |
331 |
-e 's|sdl-config|${SDL_CONFIG}|g' \ |
332 |
${CONFIGURE_WRKSRC}/${CONFIGURE_SCRIPT} |
333 |
@${FIND} ${WRKSRC} -type f | \ |
334 |
${XARGS} -n 10 ${REINPLACE_CMD} -E \ |
335 |
-e 's|#include <SDL|#include <SDL/SDL|' |
336 |
.endif |
337 |
|
338 |
post-configure: |
339 |
.if empty(PORT_OPTIONS:MTHEORA) |
340 |
@${REINPLACE_CMD} -E \ |
341 |
-e 's|^(CONFIG_LIBTHEORA).*$$|\1=no|' \ |
342 |
${WRKSRC}/config.mak |
343 |
.endif |
344 |
@${REINPLACE_CMD} -E \ |
345 |
-e 's|\$$\(INSTALL\) -m 644 \$$\(MANPAGES\) "\$$\(MANDIR\)/man1"||g' \ |
346 |
${WRKSRC}/Makefile |
347 |
@${REINPLACE_CMD} -E \ |
348 |
-e 's|\$$\$$\(INSTALL\) -m 644 \$$\$$\^ "\$$\(DESTDIR\)\$$\(prefix\)/libdata/pkgconfig"|\$$\$$\(INSTALL\) -m 644 \$$\$$\^ "\$$\(DESTDIR\)\$$\(prefix\)/libdata/pkgconfig/lib\$$\(NAME\)0.pc"|' \ |
349 |
${WRKSRC}/subdir.mak |
350 |
|
351 |
post-install: |
352 |
.if ${PORT_OPTIONS:MFFSERVER} |
353 |
${INSTALL_DATA} ${WRKSRC}/doc/ffserver.conf ${STAGEDIR}${PREFIX}/etc/ffserver${FFMPEG_SUFFIX}.conf-dist |
354 |
.endif |
355 |
@${MKDIR} ${STAGEDIR}${DOCSDIR} |
356 |
.for FILE in ${DOC_FILES} |
357 |
${INSTALL_DATA} ${WRKSRC}/${FILE} ${STAGEDIR}${DOCSDIR} |
358 |
.endfor |
359 |
.for FILE in ${DOC_DOCFILES} |
360 |
${INSTALL_DATA} ${WRKSRC}/doc/${FILE} ${STAGEDIR}${DOCSDIR} |
361 |
.endfor |
362 |
.for i in ${PROGS} |
363 |
${INSTALL_MAN} ${WRKSRC}/doc/${i}.1 ${STAGEDIR}${MANPREFIX}/man/man1/${i}0.1 |
364 |
.endfor |
365 |
@${REINPLACE_CMD} \ |
366 |
-e 's|libavcodec|libavcodec0|' \ |
367 |
${STAGEDIR}${PREFIX}/libdata/pkgconfig/libavformat0.pc |
368 |
@${REINPLACE_CMD} \ |
369 |
-e 's|libavutil|libavutil0|' \ |
370 |
${STAGEDIR}${PREFIX}/libdata/pkgconfig/libavcodec0.pc \ |
371 |
${STAGEDIR}${PREFIX}/libdata/pkgconfig/libpostproc0.pc \ |
372 |
${STAGEDIR}${PREFIX}/libdata/pkgconfig/libswscale0.pc |
373 |
@${REINPLACE_CMD} \ |
374 |
-e 's|libavformat|libavformat0|' \ |
375 |
${STAGEDIR}${PREFIX}/libdata/pkgconfig/libavdevice0.pc |
376 |
@${RM} ${STAGEDIR}${PREFIX}/libdata/pkgconfig/libavcodec0.pc.bak \ |
377 |
${STAGEDIR}${PREFIX}/libdata/pkgconfig/libpostproc0.pc.bak \ |
378 |
${STAGEDIR}${PREFIX}/libdata/pkgconfig/libswscale0.pc.bak \ |
379 |
${STAGEDIR}${PREFIX}/libdata/pkgconfig/libavformat0.pc.bak \ |
380 |
${STAGEDIR}${PREFIX}/libdata/pkgconfig/libavdevice0.pc.bak |
381 |
|
382 |
.include <bsd.port.post.mk> |