freebsd-ports/multimedia/ffmpeg/Makefile
Doug Barton ffde46cbf9 Now that new style rc.d scripts are being run as part of the
base rcorder, hard coded variable values in these scripts
are overriding the values in /etc/rc.conf[.local] (due to
the way that variables from the latter are read at boot time).

Therefore, change the boot scripts to set default values only
if the variable is unset in /etc/rc.conf[.local]. This will
allow the service to start at boot time if it's been enabled
as the user would expect.

This change will be a noop for users who have systems that
have not yet been upgraded to the new rc.d code in the base.

In many cases there are other variables in the scripts that
should get similar treatment, however I did not change
anything other than the _enable lines. I'll leave the rest
up to the maintainers to do as they see fit.

Bump PORTREVISION to make sure that users and packages
pick up this change.
2006-01-07 06:29:57 +00:00

426 lines
11 KiB
Makefile

# New ports collection makefile for: ffmpeg
# Date created: Tue Sep 25 15:52:09 BRT 2001
# Whom: Mario Sergio Fujikawa Ferreira <lioux@FreeBSD.org>
#
# $FreeBSD$
#
PORTNAME= ffmpeg
DISTVERSION= 0.4.9-pre1
PORTREVISION= 5
CATEGORIES= multimedia audio net
MASTER_SITES= ${MASTER_SITE_SOURCEFORGE_EXTENDED}
MASTER_SITE_SUBDIR= ffmpeg
MAINTAINER= lioux@FreeBSD.org
COMMENT= Hyper fast realtime audio/video encoder/converter, streaming server
USE_GETOPT_LONG= yes
HAS_CONFIGURE= yes
USE_GMAKE= yes
USE_REINPLACE= yes
WANT_SDL= yes
CONFIGURE_ARGS= --cc="${CC}" --prefix="${PREFIX}" \
--make="${GMAKE}" --enable-shared \
--extra-ldflags="-L${WRKSRC}/libavcodec -L${WRKSRC}/libavcodec/libpostproc \
-L${LOCALBASE}/lib -L${X11BASE}/lib " \
--extra-libs="-lm" \
--disable-debug
PLIST_SUB= SHLIB_VERSION=${SHLIB_VERSION}
INSTALLS_SHLIB= yes
CONFLICTS= ffmpeg-devel*
SHLIB_VERSION= 1
#
DOC_FILES= COPYING Changelog README
# under subdir doc
DOC_DOCFILES= TODO faq.html ffmpeg-doc.html \
ffplay-doc.html ffserver-doc.html \
hooks.html optimization.txt
PORTDOCS= ${DOC_FILES} ${DOC_DOCFILES}
HEADER_FILES= libavcodec/avcodec.h libavcodec/common.h \
libavcodec/dsputil.h
LIB_FILES= libavcodec/libavcodec.a libavformat/libavformat.a
MAN1= ffmpeg.1
.include <bsd.port.pre.mk>
.if ${ARCH} == "alpha"
BROKEN= "Does not compile on alpha"
.endif
.if exists(${LOCALBASE}/lib/libavformat.so.0)
BROKEN= Please remove previous version of ${PORTNAME} to continue build
.endif
##
## arch detection
##
.if ${ARCH} != "i386"
WITHOUT_MMX= yes
.else
# only for i386
EXTRA_PATCHES+= ${FILESDIR}/extra-bktr-patch-libavformat::Makefile
#. if ${OSVERSION} >= 502000 && !defined(WITH_OPTIMIZED_CFLAGS)
#CFLAGS+=-fomit-frame-pointer
#WITH_OPTIMIZED_CFLAGS=yes
#. endif
.endif
##
## system version
##
.if ${OSVERSION} < 500000
# postprocess libraries cannot be built
OSVERSION4_DONT_WORK=yes
.endif
## lib detection
##
##
## SDL
.if ${HAVE_SDL:Msdl}
WITH_SDL=yes
.endif
## faac
.if exists(${LOCALBASE}/lib/libfaac.so.0)
WITH_FAAC=yes
.endif
## freetype2
.if exists(${LOCALBASE}/lib/libfreetype.so)
WITH_FREETYPE2=yes
.endif
## imlib2
.if exists(${X11BASE}/lib/libImlib2.so)
WITH_IMLIB2=yes
.endif
## lame mp3
.if exists(${LOCALBASE}/lib/libmp3lame.so.0)
WITH_MP3=yes
.endif
## vorbis
.if exists(${LOCALBASE}/lib/libvorbisenc.so.2)
WITH_VORBIS=yes
.endif
.if exists(${LOCALBASE}/lib/libfaad.so.0)
WITH_FAAD=yes
.endif
## support activation
##
## PORTDOCS
.ifndef(NOPORTDOCS)
BUILD_DEPENDS+= texi2html:${PORTSDIR}/textproc/texi2html
.endif
## disable a52
#.ifndef(WITHOUT_LIBA52)
#LIB_DEPENDS+= a52.0:${PORTSDIR}/audio/liba52
#
#CONFIGURE_ARGS+= --enable-a52 \
# --enable-a52bin
#.else
#CONFIGURE_ARGS+= --enable-a52 \
# --disable-a52bin
#.endif
GPLLIBS= yes
# --enable-a52bin breaks build
CONFIGURE_ARGS+= --enable-a52
## enable freetype2
.if defined(WITH_FREETYPE2)
LIB_DEPENDS+= freetype.9:${PORTSDIR}/print/freetype2
PLIST_SUB+= DRAWTEXT=""
.else
PLIST_SUB+= DRAWTEXT="@comment "
.endif
## enable imlib2
.if !defined(WITHOUT_VHOOK) && defined(WITH_IMLIB2)
LIB_DEPENDS+= Imlib2.3:${PORTSDIR}/graphics/imlib2
PLIST_SUB+= IMLIB2=""
.else
PLIST_SUB+= IMLIB2="@comment "
.endif
## disable mmx
.ifdef(WITHOUT_MMX)
CONFIGURE_ARGS+= --disable-mmx
.endif
## SDL
.ifdef(WITH_SDL)
USE_SDL= sdl
MAN1+= ffplay.1
PLIST_SUB+= SDL=""
.else
PLIST_SUB+= SDL="@comment "
.endif
## mp3
.ifdef(WITH_MP3)
LIB_DEPENDS+= mp3lame.0:${PORTSDIR}/audio/lame
CONFIGURE_ARGS+= --enable-mp3lame
.endif
## optimization
# breaks ffmpeg build if defined
CFLAGS+= -fno-force-addr
.if ${OSVERSION} > 502124
. ifdef(WITH_OPTIMIZED_CFLAGS)
CONFIGURE_ARGS+= --extra-cflags="-fPIC -DPIC -I${LOCALBASE}/include \
${CFLAGS} \
-I${X11BASE}/include \
-ffast-math -fomit-frame-pointer -fno-unit-at-a-time"
. else
CONFIGURE_ARGS+= --extra-cflags="-fPIC -DPIC -I${LOCALBASE}/include \
-I${X11BASE}/include \
-fomit-frame-pointer -fno-unit-at-a-time"
. endif
.else
. ifdef(WITH_OPTIMIZED_CFLAGS)
CONFIGURE_ARGS+= --extra-cflags="-fPIC -DPIC -I${LOCALBASE}/include \
${CFLAGS} \
-I${X11BASE}/include \
-ffast-math -fomit-frame-pointer"
. else
CONFIGURE_ARGS+= --extra-cflags="-fPIC -DPIC -I${LOCALBASE}/include \
-I${X11BASE}/include"
. endif
.endif
## vhook
.ifndef(WITHOUT_VHOOK)
PLIST_SUB+= VHOOK=""
.else
CONFIGURE_ARGS+= -disable-vhook
PLIST_SUB+= VHOOK="@comment "
.endif
## vorbis
.ifdef(WITH_VORBIS)
LIB_DEPENDS+= vorbisenc.2:${PORTSDIR}/audio/libvorbis
CONFIGURE_ARGS+= --enable-vorbis
.endif
## faac
.ifdef(WITH_FAAC)
LIB_DEPENDS+= faac.0:${PORTSDIR}/audio/faac
CONFIGURE_ARGS+= --enable-faac
.endif
## faad
.ifdef(WITH_FAAD)
LIB_DEPENDS+= faad.0:${PORTSDIR}/audio/faad
CONFIGURE_ARGS+= --enable-faad --enable-faadbin
GPLLIBS= yes
.endif
## GPLLIBS
.ifdef(GPLLIBS)
CONFIGURE_ARGS+= --enable-gpl
.endif
## post processing
.ifndef(WITHOUT_POSTPROCESS)
CONFIGURE_ARGS+= --enable-shared-pp
PLIST_FILES+= include/ffmpeg/postproc/postprocess.h
PLIST_DIRS+= include/ffmpeg/postproc
. ifdef(GPLLIBS)
. ifndef(OSVERSION4_DONT_WORK)
CONFIGURE_ARGS+= --enable-pp
LIB_POSTPROC= lib/libpostproc.a \
lib/libpostproc.so \
lib/libpostproc.so.0 \
lib/libpostproc.so.${SHLIB_VERSION}
PLIST_FILES+= ${LIB_POSTPROC}
. endif # OSVERSION4_DONT_WORK
. endif
.endif
## ffserver
.ifdef(WITHOUT_FFMPEG_FFSERVER)
CONFIGURE_ARGS+= --disable-ffserver
PLIST_SUB+= FFSERVER="@comment "
.else
USE_RC_SUBR= yes
MAN1+= ffserver.1
PLIST_SUB+= FFSERVER=""
.endif
PLIST_DIRS+= include/ffmpeg
pre-everything::
.ifndef(WITH_FREETYPE2)
@${ECHO_MSG} 'Define WITH_FREETYPE2 to enable drawtext FREETYPE2 codec'
@${ECHO_MSG}
.endif
.ifndef(WITHOUT_LIBA52)
@${ECHO_MSG} "You can disable liba52 support by defining WITHOUT_LIBA52"
@${ECHO_MSG}
.endif
.ifndef(WITHOUT_MMX)
@${ECHO_MSG} "Define WITHOUT_MMX if your system does not support MMX"
@${ECHO_MSG}
.endif
.ifndef(WITH_SDL)
@${ECHO_MSG} 'Define WITH_SDL to enable ffplay SDL version'
@${ECHO_MSG}
.endif
.ifndef(WITH_MP3)
@${ECHO_MSG} 'Define WITH_MP3 to enable lame MP3 codec'
@${ECHO_MSG}
.endif
.ifndef(WITH_OPTIMIZED_CFLAGS)
@${ECHO_MSG} 'You can enable additional compilation optimizations'
@${ECHO_MSG} 'by defining WITH_OPTIMIZED_CFLAGS'
@${ECHO_MSG}
.endif
.ifndef(WITHOUT_POSTPROCESS)
@${ECHO_MSG} 'You can disable post process support by defining'
@${ECHO_MSG} 'WITHOUT_POSTPROCESS'
@${ECHO_MSG} 'Beware that this might break some ports that require it'
@${ECHO_MSG}
.endif
.ifndef(WITHOUT_VHOOK)
@${ECHO_MSG} 'You can disable vhook support by defining WITHOUT_VHOOK'
@${ECHO_MSG}
.endif
.ifndef(WITH_VORBIS)
@${ECHO_MSG} 'Define WITH_VORBIS to enable libvorbisenc VORBIS codec'
@${ECHO_MSG}
.endif
.ifndef(WITH_FAAC)
@${ECHO_MSG} 'Define WITH_FAAC to enable libfaac'
@${ECHO_MSG}
.endif
.ifndef(WITH_FAAD)
@${ECHO_MSG} 'Define WITH_FAAD to enable libfaad codec'
@${ECHO_MSG}
.endif
.ifndef(WITHOUT_FFMPEG_FFSERVER)
@${ECHO_MSG} 'Define WITHOUT_FFMPEG_FFSERVER to disable ffserver build'
@${ECHO_MSG}
.endif
.if ${ARCH} == "i386"
.if !(defined(WITH_BKTR_FORMAT) && defined(WITH_BKTR_DEV))
@${ECHO_MSG}
@${ECHO_MSG} 'If you want to capture from a bktr(4) supported card'
@${ECHO_MSG} 'you will probably need to set the input device and format'
@${ECHO_MSG} 'You can set WITH_BKTR_FORMAT to NTSC or PAL and you can set'
@${ECHO_MSG} 'WITH_BKTR_DEV to 0, 1, 2 or 3 (1 is usually the tuner)'
@${ECHO_MSG} 'so for a PAL tuner make WITH_BKTR_FORMAT=PAL WITH_BKTR_DEV=1'
@${ECHO_MSG}
@${ECHO_MSG} 'Warning: invalid settings will probably dump cores'
@${ECHO_MSG}
.endif
.endif # ${ARCH} == i386
post-extract:
.if ${ARCH} == "i386"
# install booktree extension
@${CP} ${FILESDIR}/grab_bsdbktr.c ${WRKSRC}/libavformat/
.endif # ${ARCH} == i386
post-patch:
# force detection of texi2html
.ifndef(NOPORTDOCS)
@${REINPLACE_CMD} -E \
-e 's|^(texi2html=)no|\1yes|' \
${CONFIGURE_WRKSRC}/${CONFIGURE_SCRIPT}
.endif
.ifndef(WITHOUT_FFMPEG_FFSERVER)
@${SED} -e 's|%%PREFIX%%|${PREFIX}|; s|%%RC_SUBR%%|${RC_SUBR}|' \
${FILESDIR}/ffserver.sh >${WRKDIR}/ffserver.sh
@${REINPLACE_CMD} -e "s!/etc/ffserver.conf!${PREFIX}/etc/ffserver.conf!g" \
${WRKSRC}/ffserver.c ${WRKSRC}/doc/ffserver-doc.texi
@${REINPLACE_CMD} -e 's!NoDaemon!# NoDaemon!g' \
${WRKSRC}/doc/ffserver.conf
.endif
.if ${ARCH} == "i386"
# we support "v4l" per default through Steve O'Hara-Smith's bktr(4)
# patch
@${REINPLACE_CMD} -E -e \
's|^(v4l).*$$|\1="yes"|' \
${WRKSRC}/configure
.ifdef(WITH_BKTR_FORMAT)
@${REINPLACE_CMD} -e \
"s!VIDEO_FORMAT NTSC!VIDEO_FORMAT ${WITH_BKTR_FORMAT}!" \
${WRKSRC}/libavformat/grab_bsdbktr.c
.endif
.ifdef(WITH_BKTR_DEV)
@${REINPLACE_CMD} -e \
"s!idev = 0!idev = ${WITH_BKTR_DEV}!" \
${WRKSRC}/libavformat/grab_bsdbktr.c
.endif
.endif # ${ARCH} == i386
# malloc.h was deprecated in favor of stdlib.h
@${FIND} ${WRKSRC} -type f | \
${XARGS} -n 10 ${REINPLACE_CMD} -e \
's|malloc\.h|stdlib\.h|'
.ifndef(WITHOUT_LIBA52)
@${REINPLACE_CMD} -e 's|-ldl||' \
${WRKSRC}/configure
.endif
.ifdef(WITH_SDL)
@${REINPLACE_CMD} -E \
-e 's|sdl-config|${SDL_CONFIG}|g' \
${CONFIGURE_WRKSRC}/${CONFIGURE_SCRIPT}
@${FIND} ${WRKSRC} -type f | \
${XARGS} -n 10 ${REINPLACE_CMD} -E \
-e 's|#include <SDL|#include <SDL11/SDL|'
.endif
pre-build:
.ifndef(WITHOUT_POSTPROCESS)
. ifndef(OSVERSION4_DONT_WORK)
@cd ${WRKSRC}/libavcodec/libpostproc && ${GMAKE}
. endif # OSVERSION4_DONT_WORK
.endif
post-install:
.ifndef(NOPORTDOCS)
@${MKDIR} ${DOCSDIR}
.for file in ${DOC_FILES}
@${INSTALL_DATA} ${WRKSRC}/${file} ${DOCSDIR}
.endfor
.for file in ${DOC_DOCFILES}
@${INSTALL_DATA} ${WRKSRC}/doc/${file} ${DOCSDIR}
.endfor
.endif
.ifndef(WITHOUT_FFMPEG_FFSERVER)
@${INSTALL_DATA} ${WRKSRC}/doc/ffserver.conf \
${PREFIX}/etc/ffserver.conf.sample
@${INSTALL_SCRIPT} ${WRKDIR}/ffserver.sh ${PREFIX}/etc/rc.d
.endif
.for file in ${HEADER_FILES}
# fix header references prior to installation
@${REINPLACE_CMD} -e 's|"common.h"|<ffmpeg/common.h>|; \
s|"avcodec.h"|<ffmpeg/avcodec.h>|' \
${WRKSRC}/${file}
@${INSTALL_DATA} ${WRKSRC}/${file} \
${PREFIX}/include/ffmpeg/${file:T}
# change headers back so reinstall target works
@${REINPLACE_CMD} -e 's|<ffmpeg/common.h>|"common.h"|; \
s|<ffmpeg/avcodec.h>|"avcodec.h"|' \
${WRKSRC}/${file}
.endfor
.for file in ${LIB_FILES}
@${INSTALL_DATA} ${WRKSRC}/${file} ${PREFIX}/lib/${file:T}
.endfor
.ifndef(WITHOUT_POSTPROCESS)
@${MKDIR} ${PREFIX}/include/ffmpeg/postproc
@${INSTALL_DATA} ${WRKSRC}/libavcodec/libpostproc/postprocess.h \
${PREFIX}/include/ffmpeg/postproc/postprocess.h
. ifdef(GPLLIBS)
. ifndef(OSVERSION4_DONT_WORK)
. for lib in libpostproc.a libpostproc.so
@${INSTALL_DATA} ${WRKSRC}/libavcodec/libpostproc/${lib} \
${PREFIX}/lib
. endfor
@${LN} -sf libpostproc.so ${PREFIX}/lib/libpostproc.so.0
@${LN} -sf libpostproc.so ${PREFIX}/lib/libpostproc.so.${SHLIB_VERSION}
. endif # OSVERSION4_DONT_WORK
. endif
.endif
.include <bsd.port.post.mk>