diff --git a/multimedia/handbrake/Makefile b/multimedia/handbrake/Makefile index cceb5faa3782..3b5e9238b9f3 100644 --- a/multimedia/handbrake/Makefile +++ b/multimedia/handbrake/Makefile @@ -1,132 +1,139 @@ PORTNAME= handbrake DISTVERSION= 1.11.1 CATEGORIES= multimedia MASTER_SITES= https://github.com/HandBrake/HandBrake/releases/download/${DISTVERSION}/ MASTER_SITES+= https://github.com/HandBrake/HandBrake-contribs/releases/download/contribs/:contrib MASTER_SITES+= https://github.com/HandBrake/HandBrake-contribs/releases/download/contribs2/:contrib DISTNAME= HandBrake-${DISTVERSION} DISTFILES= ${DISTNAME}-source.tar.bz2 ${CONTRIB_FILES:S/$/:contrib/} DIST_SUBDIR= ${PORTNAME} MAINTAINER= naito.yuichiro@gmail.com COMMENT= Versatile DVD ripper and video transcoder WWW= https://handbrake.fr/ LICENSE= GPLv2 FDK_AAC LICENSE_COMB= multi LICENSE_NAME_FDK_AAC= Software License for The Fraunhofer FDK AAC Codec Library for Android LICENSE_FILE_FDK_AAC= ${WRKDIR}/${DISTFILES:Mfdk*:R:R}/NOTICE LICENSE_FILE_GPLv2= ${WRKSRC}/COPYING LICENSE_PERMS_FDK_AAC= dist-mirror pkg-mirror auto-accept ONLY_FOR_ARCHS= amd64 powerpc powerpc64 powerpc64le BUILD_DEPENDS= bash:shells/bash \ nasm:devel/nasm \ cmake:devel/cmake-core \ meson:devel/meson \ appstreamcli:devel/appstream \ git:devel/git@lite LIB_DEPENDS= libdrm.so:graphics/libdrm \ libturbojpeg.so:graphics/libjpeg-turbo \ libass.so:multimedia/libass \ libspeex.so:audio/speex \ libogg.so:audio/libogg \ libvorbis.so:audio/libvorbis \ libvorbisenc.so:audio/libvorbis \ libtheoradec.so:multimedia/libtheora \ libtheoraenc.so:multimedia/libtheora \ libx264.so:multimedia/libx264 \ libvpx.so:multimedia/libvpx \ libmp3lame.so:audio/lame \ libopus.so:audio/opus \ libjansson.so:devel/jansson USES= autoreconf:build compiler:c11 gmake iconv libtool:build \ localbase:ldflags ninja:build pkgconfig python:build CONTRIB_FILES= SVT-AV1-v4.0.1.tar.gz \ fdk-aac-2.0.3.tar.gz \ ffmpeg-8.0.1.tar.bz2 \ libbluray-1.4.0.tar.xz \ libdvdnav-7.0.0.tar.bz2 \ libdvdread-7.0.1.tar.bz2 \ dav1d-1.5.3.tar.bz2 \ dovi_tool-libdovi-3.3.2.tar.gz \ x265-snapshot-20260216-13309.tar.gz \ zimg-snapshot-20250624.tar.gz .if !defined(PACKAGE_BUILDING) # DVDCSS version hardcoded in contrib/libdvdread/libdvdread-5.0.0-6-gcb1ae87/src/dvd_input.c (dlopen'ed) LIB_DEPENDS+= libdvdcss.so:multimedia/libdvdcss .endif GNU_CONFIGURE= yes CONFIGURE_ARGS= --force --enable-x265 CONFIGURE_TARGET= build MAKEFILE= GNUmakefile MAKE_ENV= V=1 ACLOCAL=${LOCALBASE}/bin/aclocal ALL_TARGET= # INSTALL_TARGET= install-strip # Enforce linking to bundled libraries instead of system libraries LDFLAGS+= -L${BUILD_WRKSRC}/contrib/lib BINARY_ALIAS= python3=${PYTHON_VERSION} NOPRECIOUSMAKEVARS= yes # for ffmpeg and x264 BUILD_WRKSRC= ${WRKSRC}/build INSTALL_WRKSRC= ${WRKSRC}/build OPTIONS_DEFINE= FDK_AAC VPL X11 OPTIONS_DEFAULT= VPL X11 OPTIONS_EXCLUDE_powerpc= VPL OPTIONS_EXCLUDE_powerpc64= VPL OPTIONS_EXCLUDE_powerpc64le= VPL OPTIONS_SUB= yes FDK_AAC_DESC= Enable non-free Fraunhofer FDK AAC codec VPL_DESC= Intel oneVPL (aka Quick Sync Video) X11_DESC= Build GTK 3 based GUI program FDK_AAC_CONFIGURE_ENABLE= fdk-aac FDK_AAC_VARS= LICENSE+=FDK_AAC LICENSE_COMB=multi VPL_LIB_DEPENDS= libvpl.so:multimedia/onevpl \ libmfx.so:multimedia/intel-media-sdk \ libva-drm.so:multimedia/libva VPL_CONFIGURE_ON= --enable-qsv X11_USES= gettext desktop-file-utils gnome X11_USE= gnome=gtk40,intltool,gdkpixbuf,libxml2 X11_CONFIGURE_OFF= --disable-gtk X11_CONFIGURE_ENV= COMPILER_PATH=${LOCALBASE}/bin X11_MAKE_ENV= COMPILER_PATH=${LOCALBASE}/bin # HandBrake tries to fetch its dependencies during build phase, which is not # considered good in FreeBSD. Instead, we will provide the downloaded files. post-extract: .SILENT ${MKDIR} ${WRKSRC}/download pre-configure: cd ${DISTDIR}/${DIST_SUBDIR} && \ ${INSTALL_DATA} ${CONTRIB_FILES} \ ${WRKSRC}/download +# x265's CMakeLists.txt adds the GCC-only `-mabi=altivec` flag on POWER, which +# clang rejects. Hand it to HandBrake's contrib patch machinery, which applies +# `P??-freebsd*.patch` to the bundled x265 source at build time. +post-patch: + ${CP} ${FILESDIR}/P00-freebsd-x265-mabi-altivec.patch \ + ${WRKSRC}/contrib/x265 + # Some unbundled software uses a hardcoded `lib/pkgconfig` directory for .pc # files. But the unbundled software built by Meson correctly places the .pc # file in `libdata/pkgconfig` in the FreeBSD way. To handle these two kinds of # build systems, merge `lib` and `libdata` into the same directory. All the # unbundled software is linked statically. The library path is used at compile # time, not at runtime. post-configure: ${MKDIR} ${WRKSRC}/build/contrib/libdata ${LN} -s ${WRKSRC}/build/contrib/libdata ${WRKSRC}/build/contrib/lib post-install-X11-on: ${LN} -sf ghb ${STAGEDIR}${PREFIX}/bin/HandBrake .include diff --git a/multimedia/handbrake/files/P00-freebsd-x265-mabi-altivec.patch b/multimedia/handbrake/files/P00-freebsd-x265-mabi-altivec.patch new file mode 100644 index 000000000000..d6f6d3ce735d --- /dev/null +++ b/multimedia/handbrake/files/P00-freebsd-x265-mabi-altivec.patch @@ -0,0 +1,11 @@ +--- a/source/CMakeLists.txt ++++ b/source/CMakeLists.txt +@@ -780,7 +780,7 @@ if(POWER) + # IBM Power8 + option(ENABLE_ALTIVEC "Enable ALTIVEC profiling instrumentation" ON) + if(ENABLE_ALTIVEC) +- add_definitions(-DHAVE_ALTIVEC=1 -maltivec -mabi=altivec) ++ add_definitions(-DHAVE_ALTIVEC=1 -maltivec) + add_definitions(-flax-vector-conversions -fpermissive) + else() + add_definitions(-DHAVE_ALTIVEC=0) diff --git a/multimedia/handbrake/files/patch-contrib_x265__10bit_module.defs b/multimedia/handbrake/files/patch-contrib_x265__10bit_module.defs new file mode 100644 index 000000000000..94811a2deb51 --- /dev/null +++ b/multimedia/handbrake/files/patch-contrib_x265__10bit_module.defs @@ -0,0 +1,11 @@ +--- contrib/x265_10bit/module.defs.orig 2026-03-22 14:31:00 UTC ++++ contrib/x265_10bit/module.defs +@@ -16,7 +16,7 @@ + X265_10.CONFIGURE.deps = + X265_10.CONFIGURE.static = + X265_10.CONFIGURE.shared = -DENABLE_SHARED=OFF +-X265_10.CONFIGURE.extra = -DENABLE_CLI=OFF -DHIGH_BIT_DEPTH=ON -DEXPORT_C_API=OFF -DCMAKE_ASM_NASM_FLAGS=-w-macro-params-legacy ++X265_10.CONFIGURE.extra = -DENABLE_CLI=OFF -DHIGH_BIT_DEPTH=ON -DEXPORT_C_API=OFF -DENABLE_ALTIVEC=OFF -DCMAKE_ASM_NASM_FLAGS=-w-macro-params-legacy + + ifneq (1,$(FEATURE.numa)) + X265_10.CONFIGURE.extra += -DENABLE_LIBNUMA=OFF diff --git a/multimedia/handbrake/files/patch-contrib_x265__12bit_module.defs b/multimedia/handbrake/files/patch-contrib_x265__12bit_module.defs new file mode 100644 index 000000000000..8589bff70b84 --- /dev/null +++ b/multimedia/handbrake/files/patch-contrib_x265__12bit_module.defs @@ -0,0 +1,11 @@ +--- contrib/x265_12bit/module.defs.orig 2026-03-22 14:31:00 UTC ++++ contrib/x265_12bit/module.defs +@@ -16,7 +16,7 @@ + X265_12.CONFIGURE.deps = + X265_12.CONFIGURE.static = + X265_12.CONFIGURE.shared = -DENABLE_SHARED=OFF +-X265_12.CONFIGURE.extra = -DENABLE_CLI=OFF -DHIGH_BIT_DEPTH=ON -DEXPORT_C_API=OFF -DMAIN12=ON -DCMAKE_ASM_NASM_FLAGS=-w-macro-params-legacy ++X265_12.CONFIGURE.extra = -DENABLE_CLI=OFF -DHIGH_BIT_DEPTH=ON -DEXPORT_C_API=OFF -DENABLE_ALTIVEC=OFF -DMAIN12=ON -DCMAKE_ASM_NASM_FLAGS=-w-macro-params-legacy + + ifneq (1,$(FEATURE.numa)) + X265_12.CONFIGURE.extra += -DENABLE_LIBNUMA=OFF