git: c4b338b45f35 - main - multimedia/*x264: Update to 0.165.3223 and transfer maintainership
Daniel Engberg <[email protected]>
| Newsgroups | gmane.os.freebsd.devel.cvs.ports |
|---|---|
| Message-ID | <6a774f77.30c05.40d27189__42707.8959228069$1786204062$gmane$org@gitrepo.freebsd.org> |
The branch main has been updated by diizzy: URL: https://cgit.FreeBSD.org/ports/commit/?id=c4b338b45f35bae119515258f73789d40533c218 commit c4b338b45f35bae119515258f73789d40533c218 Author: Daniel Engberg <[email protected]> AuthorDate: 2026-08-08 11:00:25 +0000 Commit: Daniel Engberg <[email protected]> CommitDate: 2026-08-08 15:46:10 +0000 multimedia/*x264: Update to 0.165.3223 and transfer maintainership * Switch to GStreamer's meson branch as it simplifies builds and is faster * Transfer maintainership to multimedia * Remove DEBUG, GPAC, OPENCL and PGO options By switching to Meson we can utilize the framework for debug builds GPAC is broken upstream OPENCL (lookahead) has very little advantage now that core count for CPUs are much higher than a decade ago and with x264's limited parallelization. It's also much simplier than x264's other code paths. PGO pulls in GCC with no to little benefit * Add LTO and OPTIMIZED_CFLAGS options Available only on aarch64 and amd64, enabled by default Reviewed by: bofh (previous iteration and discussed on Matrix) --- multimedia/libx264/Makefile | 42 +++--- multimedia/libx264/pkg-plist | 3 +- multimedia/x264/Makefile | 147 +++++++-------------- multimedia/x264/distinfo | 8 +- .../32c3b801191522961102d4bea292cdb61068d0dd.patch | 38 ------ multimedia/x264/files/patch-configure | 97 -------------- multimedia/x264/files/patch-meson.build | 19 +++ 7 files changed, 89 insertions(+), 265 deletions(-) diff --git a/multimedia/libx264/Makefile b/multimedia/libx264/Makefile index 487cb9514621..26e47c4246b1 100644 --- a/multimedia/libx264/Makefile +++ b/multimedia/libx264/Makefile @@ -3,41 +3,39 @@ PORTREVISION= 0 PKGNAMEPREFIX= lib + COMMENT= H.264/MPEG-4 AVC Video Encoding (Library) MASTERDIR= ${.CURDIR}/../x264 -PLIST= ${.CURDIR}/pkg-plist # Clear dependency on libx264 (itself), see x264/Makefile -LIB_DEPENDS= # +LIB_DEPENDS= + +USE_LDCONFIG= yes -USES= pathfix -CFLAGS_riscv64=-fPIC +CFLAGS_riscv64= -fPIC LDFLAGS_i386= -Wl,-znotext LDFLAGS_armv6= -Wl,-znotext LDFLAGS_armv7= -Wl,-znotext -OPTIONS_DEFINE= ASM OPENCL -OPTIONS_DEFAULT= ASM OPENCL -OPTIONS_EXCLUDE= BASH FFMS GPAC LAVF LSMASH SWSCALE - -ASM_BUILD_DEPENDS= ${ASM_BUILD_DEPENDS_${ARCH}} -ASM_BUILD_DEPENDS_amd64=${ASM_BUILD_DEPENDS_i386} -ASM_BUILD_DEPENDS_i386= nasm>=2.13:devel/nasm -ASM_CONFIGURE_ENABLE= asm +# Don't import PLIST_FILES from multimedia/x264 +PLIST_FILES= +PLIST_SUB+= X264BUILD=${DISTVERSION:R:E} +PLIST= ${.CURDIR}/pkg-plist -OPENCL_BUILD_DEPENDS= ${LOCALBASE}/include/CL/opencl.h:devel/opencl -OPENCL_CONFIGURE_ENABLE=opencl +MESON_ARGS= -Dcli=false -CONFIGURE_ARGS= \ - --enable-static \ - --enable-shared \ - --disable-cli +OPTIONS_DEFINE_aarch64= ASM LTO OPTIMIZED_CFLAGS +OPTIONS_DEFINE_amd64= ASM LTO OPTIMIZED_CFLAGS +OPTIONS_DEFAULT_aarch64=ASM LTO OPTIMIZED_CFLAGS +OPTIONS_DEFAULT_amd64= ASM LTO OPTIMIZED_CFLAGS +OPTIONS_EXCLUDE= BASH FFMS GPAC LAVF LSMASH SWSCALE -PATHFIX_MAKEFILEIN= Makefile +ASM_BUILD_DEPENDS= ${ASM_BUILD_DEPENDS_${ARCH}} +ASM_BUILD_DEPENDS_amd64=nasm>=2.13:devel/nasm +ASM_MESON_ENABLED= asm -PLIST_FILES= # -PLIST_SUB+= X264_BUILD=${X264_BUILD} +LTO_MESON_TRUE= b_lto -pre-build: +OPTIMIZED_CFLAGS_CFLAGS=-O3 .include "${MASTERDIR}/Makefile" diff --git a/multimedia/libx264/pkg-plist b/multimedia/libx264/pkg-plist index b90796fd6d0f..5aed5eafd24a 100644 --- a/multimedia/libx264/pkg-plist +++ b/multimedia/libx264/pkg-plist @@ -1,6 +1,5 @@ include/x264.h include/x264_config.h -lib/libx264.a lib/libx264.so -lib/libx264.so.%%X264_BUILD%% +lib/libx264.so.%%X264BUILD%% libdata/pkgconfig/x264.pc diff --git a/multimedia/x264/Makefile b/multimedia/x264/Makefile index d01cc5876758..bfcaa6d32b64 100644 --- a/multimedia/x264/Makefile +++ b/multimedia/x264/Makefile @@ -1,76 +1,35 @@ -# -# NOTES FOR UPDATING PORT: -# -# We use tarballs from the *stable* branch of the upstream git repository. -# -# X264_BUILD is the "core" number, and can be found in x264.h. -# -# X264_REV requires a checkout the git revision for the version the port -# is being updated to. Then run version.sh against it. -# -# Bumping PORTREVISION for dependent ports? This is useful: -# fgrep -lr --include='*/Makefile*' :multimedia/libx264 $PORTSDIR | -# sed 's,/Makefile.*,,' | xargs $PORTSDIR/Tools/scripts/bump-revision.sh -# or -# rg -l :multimedia/libx264 $PORTSDIR | xargs -n1 portedit bump-revision -i - PORTNAME= x264 -PORTVERSION= 0.${X264_BUILD}.${X264_REV} -PORTREVISION?= 3 +DISTVERSION= 0.165.3223 CATEGORIES= multimedia -MASTER_SITES= https://samples.mplayerhq.hu/yuv4mpeg2/:pgo -DIST_SUBDIR= x264 -EXTRACT_ONLY= ${DISTNAME}${EXTRACT_SUFX} -MAINTAINER= [email protected] -COMMENT?= H.264/MPEG-4 AVC Video Encoding (Front End CLI) +MAINTAINER= [email protected] +COMMENT?= H.264/MPEG-4 AVC Video Encoding (CLI utility) WWW= https://www.videolan.org/x264.html -EXTRA_PATCHES= ${FILESDIR}/32c3b801191522961102d4bea292cdb61068d0dd.patch:-p1 - LICENSE= GPLv2 -LICENSE_NAME_PGO= PGO LICENSE_FILE= ${WRKSRC}/COPYING -LICENSE_PERMS_PGO= auto-accept -# ${Y4M_VIDEO_DISTFILE} file may not be mirrored -LICENSE_DISTFILES_PGO= ${Y4M_VIDEO_DISTFILE} -BUILD_DEPENDS= bash:shells/bash LIB_DEPENDS?= libx264.so:multimedia/libx264 -X264_BUILD= 164 -X264_REV= 3095 -X264_GITVER= ${GL_TAGNAME:C/^(.{7}).*/\1/} +USES+= meson pkgconfig python:build shebangfix +SHEBANG_GLOB= *.py -USES?= pkgconfig -USES+= compiler:c11 gmake localbase shebangfix USE_GITLAB= yes -GL_SITE= https://code.videolan.org -GL_ACCOUNT= videolan -GL_TAGNAME= baee400fa9ced6f5481a728138fed6e867b0ff7f -USE_LDCONFIG= yes - -SHEBANG_FILES= configure - -HAS_CONFIGURE= yes -CONFIGURE_ARGS?= --system-libx264 -CONFIGURE_ARGS+= --prefix="${PREFIX}" \ - --extra-cflags="${CPPFLAGS} ${CFLAGS}" \ - --extra-ldflags="${LDFLAGS}" +GL_SITE= https://gitlab.freedesktop.org/gstreamer +GL_ACCOUNT= meson-ports +GL_PROJECT= x264 +GL_TAGNAME= 00852f599572d10798b2dafd2c5286213d0ce795 PLIST_FILES?= bin/x264 -OPTIONS_DEFINE+= BASH DEBUG FFMS LAVF PGO SWSCALE +OPTIONS_DEFINE+= BASH FFMS LAVF SWSCALE OPTIONS_DEFAULT+= BASH FFMS LAVF LSMASH SWSCALE -OPTIONS_RADIO+= MP4 -OPTIONS_RADIO_MP4+= GPAC LSMASH - -.if make(makesum) # for optional distfiles -.MAKEFLAGS: WITH="${OPTIONS_DEFINE}" -.endif +OPTIONS_RADIO= MP4 +#OPTIONS_RADIO_MP4= GPAC LSMASH +OPTIONS_RADIO_MP4= LSMASH FFMS_DESC= FFmpeg Source input support -GPAC_DESC= GPAC library support +#GPAC_DESC= GPAC library support LAVF_DESC= libav* format input support (requires FFmpeg) LSMASH_DESC= L-SMASH library support MP4_DESC= MPEG-4 output @@ -78,58 +37,44 @@ SWSCALE_DESC= Resize video filter BASH_BUILD_DEPENDS= bash-completion>0:shells/bash-completion BASH_RUN_DEPENDS= bash-completion>0:shells/bash-completion -BASH_CONFIGURE_ENABLE= bashcompletion BASH_PLIST_FILES= share/bash-completion/completions/x264 -DEBUG_CONFIGURE_OFF= --enable-strip -DEBUG_CONFIGURE_ENABLE= debug -FFMS_IMPLIES= SWSCALE + FFMS_LIB_DEPENDS= libffms2.so:multimedia/ffms2 -FFMS_CONFIGURE_ENABLE= ffms -GPAC_LIB_DEPENDS= libgpac.so:multimedia/gpac -GPAC_CONFIGURE_ENABLE= gpac +FFMS_MESON_ENABLED= ffms +FFMS_IMPLIES= SWSCALE + +#GPAC_LIB_DEPENDS= libgpac.so:multimedia/gpac +#GPAC_USES= localbase:ldflags +#GPAC_MESON_ENABLED= gpac + +LAVF_LIB_DEPENDS= libavformat.so:multimedia/ffmpeg +LAVF_MESON_ENABLED= lavf LAVF_IMPLIES= SWSCALE -LAVF_LIB_DEPENDS= libavcodec.so:multimedia/ffmpeg \ - libavformat.so:multimedia/ffmpeg \ - libavutil.so:multimedia/ffmpeg -LAVF_CONFIGURE_ENABLE= lavf + LSMASH_LIB_DEPENDS= liblsmash.so:multimedia/l-smash -LSMASH_CONFIGURE_ENABLE=lsmash -PGO_DISTFILES= ${Y4M_VIDEO_DISTFILE}:pgo -PGO_MAKE_ENV= VIDS="${WRKDIR}/${Y4M_VIDEO}" -PGO_ALL_TARGET= fprofiled -PGO_USE= GCC=yes -PGO_VARS= LICENSE+=PGO LICENSE_COMB=multi -SWSCALE_LIB_DEPENDS= libavutil.so:multimedia/ffmpeg \ - libswscale.so:multimedia/ffmpeg -SWSCALE_CONFIGURE_ENABLE= swscale - -# y4m sample video -Y4M_VIDEO= example.y4m -Y4M_VIDEO_DISTFILE= example.y4m.bz2 - -post-extract-PGO-on: - @${BZIP2_CMD} -dc ${DISTDIR}/${DIST_SUBDIR}/${Y4M_VIDEO_DISTFILE} \ - >${WRKDIR}/${Y4M_VIDEO} +LSMASH_MESON_ENABLED= lsmash -post-patch: - @${REINPLACE_CMD} -e ' \ - s|gpac_static|gpac|g' \ - ${WRKSRC}/configure - @${REINPLACE_CMD} -e ' \ - s|bash|sh|; \ - s|VER="x"|VER="${X264_REV} ${X264_GITVER}"|; \ - s|VERSION=""|VERSION=" r${X264_REV} ${X264_GITVER}"|' \ - ${WRKSRC}/version.sh - -.if !target(pre-build) -pre-build: - @(${RM} ${WRKSRC}/x264_config.h) -.endif +SWSCALE_LIB_DEPENDS= libswscale.so:multimedia/ffmpeg +SWSCALE_MESON_ENABLED= swscale -.include <bsd.port.pre.mk> +.include <bsd.port.options.mk> -.if ${COMPILER_TYPE} == clang && !${PORT_OPTIONS:MPGO} -CFLAGS+= -Wno-error=incompatible-function-pointer-types +.if !defined(PKGNAMEPREFIX) || (${ARCH} != "aarch64" && ${ARCH} != "amd64") +MESON_ARGS+= -Dasm=disabled -Dvsx=disabled .endif -.include <bsd.port.post.mk> +post-patch: + @${REINPLACE_CMD} -e 's|%%DISTVERSION%%|${DISTVERSION}|g' \ + ${PATCH_WRKSRC}/meson.build + @${REINPLACE_CMD} -e 's|%%GIT_COMMIT_HASH%%|${GL_TAGNAME}|g' \ + ${PATCH_WRKSRC}/meson.build + +.if !defined(PKGNAMEPREFIX) +do-install: + ${INSTALL_PROGRAM} ${WRKSRC}/${MESON_BUILD_DIR}/${PORTNAME} ${STAGEDIR}${PREFIX}/bin +.endif + +do-install-BASH-on: + ${INSTALL_SCRIPT} ${WRKSRC}/tools/bash-autocomplete.sh ${STAGEDIR}${PREFIX}/share/bash-completion/completions/x264 + +.include <bsd.port.mk> diff --git a/multimedia/x264/distinfo b/multimedia/x264/distinfo index 779d8fd7da16..13cce6c24ab5 100644 --- a/multimedia/x264/distinfo +++ b/multimedia/x264/distinfo @@ -1,5 +1,3 @@ -TIMESTAMP = 1654122710 -SHA256 (x264/example.y4m.bz2) = a5bec9d37362bd9d7773fbd0644643f9ec096d654d20823004e88d5df32bbff7 -SIZE (x264/example.y4m.bz2) = 4910029 -SHA256 (x264/videolan-x264-baee400fa9ced6f5481a728138fed6e867b0ff7f_GL0.tar.gz) = 436a2be54d8bc0cb05dd33ecbbcb7df9c3b57362714fcdaa3a5991189a33319b -SIZE (x264/videolan-x264-baee400fa9ced6f5481a728138fed6e867b0ff7f_GL0.tar.gz) = 942829 +TIMESTAMP = 1786192615 +SHA256 (meson-ports-x264-00852f599572d10798b2dafd2c5286213d0ce795_GL0.tar.gz) = b50a394f63fa9d59bb3cb2344444d91ab5d2571a83ee2a17a550f6346a6b3612 +SIZE (meson-ports-x264-00852f599572d10798b2dafd2c5286213d0ce795_GL0.tar.gz) = 1055671 diff --git a/multimedia/x264/files/32c3b801191522961102d4bea292cdb61068d0dd.patch b/multimedia/x264/files/32c3b801191522961102d4bea292cdb61068d0dd.patch deleted file mode 100644 index 31ea7fc63bd6..000000000000 --- a/multimedia/x264/files/32c3b801191522961102d4bea292cdb61068d0dd.patch +++ /dev/null @@ -1,38 +0,0 @@ -From 32c3b801191522961102d4bea292cdb61068d0dd Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Martin=20Storsj=C3=B6?= <[email protected]> -Date: Fri, 4 Apr 2025 16:59:34 +0300 -Subject: [PATCH] lavf: Update the code to work with the latest libavutil API - ---- - input/lavf.c | 6 ++++++ - 1 file changed, 6 insertions(+) - -diff --git a/input/lavf.c b/input/lavf.c -index 90f4cec5..e2489963 100644 ---- a/input/lavf.c -+++ b/input/lavf.c -@@ -33,6 +33,7 @@ - #include <libavutil/error.h> - #include <libavutil/mem.h> - #include <libavutil/pixdesc.h> -+#include <libavutil/version.h> - - #define FAIL_IF_ERROR( cond, ... ) FAIL_IF_ERR( cond, "lavf", __VA_ARGS__ ) - -@@ -141,8 +142,13 @@ static int read_frame_internal( cli_pic_t *p_pic, lavf_hnd_t *h, int i_frame, vi - if( info ) - { - info->fullrange = is_fullrange; -+#if LIBAVUTIL_VERSION_MAJOR < 60 - info->interlaced = h->frame->interlaced_frame; - info->tff = h->frame->top_field_first; -+#else -+ info->interlaced = !!(h->frame->flags & AV_FRAME_FLAG_INTERLACED); -+ info->tff = !!(h->frame->flags & AV_FRAME_FLAG_TOP_FIELD_FIRST); -+#endif - } - - if( h->vfr_input ) --- -GitLab - diff --git a/multimedia/x264/files/patch-configure b/multimedia/x264/files/patch-configure deleted file mode 100644 index 07d1103cdc7a..000000000000 --- a/multimedia/x264/files/patch-configure +++ /dev/null @@ -1,97 +0,0 @@ ---- configure.orig 2024-01-05 22:26:57 UTC -+++ configure -@@ -744,12 +744,6 @@ case $host_cpu in - AS_EXT=".asm" - ASFLAGS="$ASFLAGS -DARCH_X86_64=0 -I\$(SRCPATH)/common/x86/" - if [ $compiler = GNU ]; then -- if [[ "$asm" == auto && "$CFLAGS" != *-march* ]]; then -- CFLAGS="$CFLAGS -march=i686" -- fi -- if [[ "$asm" == auto && "$CFLAGS" != *-mfpmath* ]]; then -- CFLAGS="$CFLAGS -mfpmath=sse -msse -msse2" -- fi - CFLAGS="-m32 $CFLAGS" - LDFLAGS="-m32 $LDFLAGS" - fi -@@ -764,7 +758,7 @@ case $host_cpu in - ASFLAGS="$ASFLAGS -f elf32" - fi - ;; -- x86_64) -+ amd64|x86_64) - ARCH="X86_64" - AS="${AS-nasm}" - AS_EXT=".asm" -@@ -801,7 +795,7 @@ case $host_cpu in - if [ $SYS = MACOSX ] ; then - CFLAGS="$CFLAGS -faltivec -fastf -mcpu=G4" - else -- CFLAGS="$CFLAGS -maltivec -mabi=altivec" -+ CFLAGS="$CFLAGS -maltivec" - define HAVE_ALTIVEC_H - fi - if [ "$vsx" != "no" ] ; then -@@ -958,7 +952,7 @@ fi - fi - fi - --if [ $asm = auto -a \( $ARCH = X86 -o $ARCH = X86_64 \) ] ; then -+if [ $cli_libx264 != system -a $asm = auto -a \( $ARCH = X86 -o $ARCH = X86_64 \) ] ; then - if ! as_check "vmovdqa32 [eax]{k1}{z}, zmm0" ; then - VER="$( ($AS --version || echo no assembler) 2>/dev/null | head -n 1 )" - echo "Found $VER" -@@ -971,9 +965,6 @@ if [ $asm = auto -a $ARCH = ARM ] ; then - fi - - if [ $asm = auto -a $ARCH = ARM ] ; then -- # set flags so neon is built by default -- [ $compiler == CL ] || echo $CFLAGS | grep -Eq '(-mcpu|-march|-mfpu)' || CFLAGS="$CFLAGS -mcpu=cortex-a8 -mfpu=neon" -- - cc_check '' '' '__asm__("add r0, r1, r2");' && define HAVE_ARM_INLINE_ASM - if [ $compiler = CL ] && cpp_check '' '' 'defined(_M_ARM) && _M_ARM >= 7' ; then - define HAVE_ARMV6 -@@ -984,9 +975,8 @@ if [ $asm = auto -a $ARCH = ARM ] ; then - cc_check '' '' '__asm__("vadd.i16 q0, q0, q0");' && define HAVE_NEON - ASFLAGS="$ASFLAGS -c" - else -- echo "You specified a pre-ARMv6 or Thumb-1 CPU in your CFLAGS." -- echo "If you really want to run on such a CPU, configure with --disable-asm." -- exit 1 -+ echo "No usable SIMD found, assuming --disable-asm." -+ asm="no" - fi - fi - -@@ -1018,9 +1008,8 @@ if [ $asm = auto -a $ARCH = MIPS ] ; then - if cc_check '' '' '__asm__("addvi.b $w0, $w1, 1");' ; then - define HAVE_MSA - else -- echo "You specified a pre-MSA CPU in your CFLAGS." -- echo "If you really want to run on such a CPU, configure with --disable-asm." -- exit 1 -+ echo "No usable SIMD found, assuming --disable-asm." -+ asm="no" - fi - fi - -@@ -1368,10 +1357,6 @@ fi - CFLAGS="-Wshadow $CFLAGS" - fi - --if cc_check '' -Wmaybe-uninitialized ; then -- CFLAGS="-Wno-maybe-uninitialized $CFLAGS" --fi -- - if [ $compiler = GNU ] && cc_check '' -fvisibility=hidden ; then - CFLAGS="$CFLAGS -fvisibility=hidden" - fi -@@ -1411,6 +1396,9 @@ if [ "$opencl" = "yes" ]; then - opencl="yes" - define HAVE_OPENCL "(BIT_DEPTH==8)" - libdl="-ldl" -+ else -+ opencl="yes" -+ define HAVE_OPENCL "(BIT_DEPTH==8)" - fi - LDFLAGS="$LDFLAGS $libdl" - fi diff --git a/multimedia/x264/files/patch-meson.build b/multimedia/x264/files/patch-meson.build new file mode 100644 index 000000000000..8f4895e42207 --- /dev/null +++ b/multimedia/x264/files/patch-meson.build @@ -0,0 +1,19 @@ +--- meson.build.orig 2026-08-04 22:20:30 UTC ++++ meson.build +@@ -1,13 +1,13 @@ project('x264', 'c', + project('x264', 'c', +- version: run_command(find_program('version.py'), '--package-version', check: true).stdout().strip(), +- default_options: ['optimization=2', 'c_std=c11'], ++ version: '%%DISTVERSION%%', ++ default_options: ['c_std=c11'], + meson_version: '>= 1.6.0' + ) + + x264_ver = meson.project_version() + x264_rev = meson.project_version().split('.')[2] + x264_build = meson.project_version().split('.')[1] +-x264_commit = run_command(find_program('version.py'), '--commit-hash', check: true).stdout().strip() ++x264_commit = '%%GIT_COMMIT_HASH%%' + + message('build: ' + x264_build) + message('commit: ' + x264_commit)