diff --git a/multimedia/libx264/Makefile b/multimedia/libx264/Makefile index 487cb9514621..26e47c4246b1 100644 --- a/multimedia/libx264/Makefile +++ b/multimedia/libx264/Makefile @@ -1,43 +1,41 @@ # # Updating notes: see multimedia/x264/Makefile. 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,135 +1,80 @@ -# -# 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= bofh@FreeBSD.org -COMMENT?= H.264/MPEG-4 AVC Video Encoding (Front End CLI) +MAINTAINER= multimedia@FreeBSD.org +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 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 +.include -.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 +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 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?= -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 - #include - #include -+#include - - #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)