1 # Created by: Andrew Thompson <andy@fud.org.nz>
7 MASTER_SITES= https://github.com/HandBrake/HandBrake/releases/download/${DISTVERSION}/
8 MASTER_SITES+= https://github.com/HandBrake/HandBrake-contribs/releases/download/contribs/:contrib
9 DISTNAME= HandBrake-${DISTVERSION}
10 DISTFILES= ${DISTNAME}-source.tar.bz2 ${CONTRIB_FILES:S/$/:contrib/}
11 DIST_SUBDIR= ${PORTNAME}
13 MAINTAINER= naito.yuichiro@gmail.com
14 COMMENT= Versatile DVD ripper and video transcoder
17 LICENSE_FILE= ${WRKSRC}/COPYING
19 ONLY_FOR_ARCHS= amd64 i386 powerpc powerpc64 powerpc64le
21 BUILD_DEPENDS= bash:shells/bash \
25 LIB_DEPENDS= libdbus-1.so:devel/dbus \
26 libgudev-1.0.so:devel/libgudev \
27 libharfbuzz.so:print/harfbuzz \
28 libfontconfig.so:x11-fonts/fontconfig \
29 libfreetype.so:print/freetype2 \
30 libfribidi.so:converters/fribidi \
31 libturbojpeg.so:graphics/libjpeg-turbo \
32 libxml2.so:textproc/libxml2 \
33 libass.so:multimedia/libass \
34 libspeex.so:audio/speex \
35 libogg.so:audio/libogg \
36 libvorbis.so:audio/libvorbis \
37 libvorbisenc.so:audio/libvorbis \
38 libtheoradec.so:multimedia/libtheora \
39 libtheoraenc.so:multimedia/libtheora \
40 libx264.so:multimedia/libx264 \
41 libvpx.so:multimedia/libvpx \
42 libmp3lame.so:audio/lame \
43 libopus.so:audio/opus \
44 libjansson.so:devel/jansson
46 USES= autoreconf:build compiler:c11 gmake iconv libtool:build \
47 localbase:ldflags ninja:build pkgconfig python:3.6+,build
49 CONTRIB_FILES= fdk-aac-2.0.1.tar.gz \
51 libbluray-1.3.0.tar.bz2 \
52 libdvdnav-6.1.1.tar.bz2 \
53 libdvdread-6.1.1.tar.bz2 \
58 .if !defined(PACKAGE_BUILDING)
59 # DVDCSS version hardcoded in contrib/libdvdread/libdvdread-5.0.0-6-gcb1ae87/src/dvd_input.c (dlopen'ed)
60 LIB_DEPENDS+= libdvdcss.so:multimedia/libdvdcss
64 MAKE_ENV= V=1 ACLOCAL=${LOCALBASE}/bin/aclocal
66 BINARY_ALIAS= python3=${PYTHON_VERSION}
68 CONFIGURE_ARGS= --force --enable-x265
69 CONFIGURE_TARGET= build
71 BUILD_WRKSRC= ${WRKSRC}/build
72 INSTALL_WRKSRC= ${WRKSRC}/build
75 INSTALL_TARGET= install-strip
77 NOPRECIOUSMAKEVARS= yes # for ffmpeg and x264
79 # Enforce linking to bundled libraries instead of system libraries
80 LDFLAGS+= -L${BUILD_WRKSRC}/contrib/lib
82 OPTIONS_DEFINE= FDK_AAC MFX X11
83 OPTIONS_DEFAULT= MFX X11
84 OPTIONS_EXCLUDE_powerpc= MFX
85 OPTIONS_EXCLUDE_powerpc64= MFX
86 OPTIONS_EXCLUDE_powerpc64le= MFX
90 FDK_AAC_DESC= Enable non-free Fraunhofer FDK AAC codec
91 MFX_DESC= Intel MediaSDK (aka Quick Sync Video)
92 X11_DESC= Build GTK+3 based GUI program
94 FDK_AAC_CONFIGURE_ENABLE= fdk-aac
95 FDK_AAC_VARS= LICENSE+=FDK_AAC LICENSE_COMB=multi
96 LICENSE_NAME_FDK_AAC= Software License for The Fraunhofer FDK AAC Codec Library for Android
97 LICENSE_FILE_FDK_AAC= ${WRKDIR}/${DISTFILES:Mfdk*:R:R}/NOTICE
98 LICENSE_PERMS_FDK_AAC= dist-mirror pkg-mirror auto-accept
100 MFX_LIB_DEPENDS= libmfx.so:multimedia/intel-media-sdk \
101 libva-drm.so:multimedia/libva
102 MFX_CONFIGURE_ON= --enable-qsv
104 X11_CONFIGURE_ENV= COMPILER_PATH=${LOCALBASE}/bin
105 X11_MAKE_ENV= COMPILER_PATH=${LOCALBASE}/bin
106 X11_CONFIGURE_ON= --disable-gtk-update-checks
107 X11_CONFIGURE_OFF= --disable-gtk
108 X11_LIB_DEPENDS= libvpx.so:multimedia/libvpx \
109 libnotify.so:devel/libnotify
110 X11_USES= gettext desktop-file-utils gnome
111 X11_USE= gstreamer1=gdkpixbuf,libav \
112 gnome=gtk30,intltool,cairo,gdkpixbuf2
114 # HandBrake tries to fetch its dependencies during build phase, which is not
115 # considered good in FreeBSD. Instead, we will provide the downloaded files.
116 post-extract: .SILENT
117 ${MKDIR} ${WRKSRC}/download
120 cd ${DISTDIR}/${DIST_SUBDIR} && \
121 ${INSTALL_DATA} ${CONTRIB_FILES} \
123 # Following patches reduces warnings with clang.
124 ${CP} ${FILESDIR}/P00-freebsd-libavutil-x86-asm-h.patch ${WRKSRC}/contrib/ffmpeg
125 ${CP} ${FILESDIR}/P01-freebsd-ifo_types.h.patch ${WRKSRC}/contrib/libdvdread
127 # picked from multimedia/ffmpeg/files/patch-libswscale_ppc_yuv2rgb__altivec.c
128 ${CP} ${FILESDIR}/P02-freebsd-ppc-libswscale.patch ${WRKSRC}/contrib/ffmpeg
131 ${LN} -sf ghb ${STAGEDIR}${PREFIX}/bin/HandBrake
133 .include <bsd.port.mk>