diff --git a/multimedia/libx264/Makefile b/multimedia/libx264/Makefile index 26e47c4246b1..1b696cbcda28 100644 --- a/multimedia/libx264/Makefile +++ b/multimedia/libx264/Makefile @@ -1,41 +1,55 @@ # # Updating notes: see multimedia/x264/Makefile. PORTREVISION= 0 PKGNAMEPREFIX= lib COMMENT= H.264/MPEG-4 AVC Video Encoding (Library) MASTERDIR= ${.CURDIR}/../x264 # Clear dependency on libx264 (itself), see x264/Makefile LIB_DEPENDS= USE_LDCONFIG= yes CFLAGS_riscv64= -fPIC LDFLAGS_i386= -Wl,-znotext LDFLAGS_armv6= -Wl,-znotext LDFLAGS_armv7= -Wl,-znotext # Don't import PLIST_FILES from multimedia/x264 PLIST_FILES= PLIST_SUB+= X264BUILD=${DISTVERSION:R:E} PLIST= ${.CURDIR}/pkg-plist MESON_ARGS= -Dcli=false OPTIONS_DEFINE_aarch64= ASM LTO OPTIMIZED_CFLAGS OPTIONS_DEFINE_amd64= ASM LTO OPTIMIZED_CFLAGS +OPTIONS_DEFINE_powerpc64= ASM LTO OPTIMIZED_CFLAGS +OPTIONS_DEFINE_powerpc64le= ASM LTO OPTIMIZED_CFLAGS OPTIONS_DEFAULT_aarch64=ASM LTO OPTIMIZED_CFLAGS OPTIONS_DEFAULT_amd64= ASM LTO OPTIMIZED_CFLAGS +OPTIONS_DEFAULT_powerpc64le= ASM LTO OPTIMIZED_CFLAGS +# ASM needs VSX (x264 AltiVec kernels hard-require it); default on with CPUTYPE>=power7 +.if !empty(MACHINE_CPU:Mvsx) +OPTIONS_DEFAULT_powerpc64= ASM LTO OPTIMIZED_CFLAGS +.else +OPTIONS_DEFAULT_powerpc64= LTO OPTIMIZED_CFLAGS +.endif OPTIONS_EXCLUDE= BASH FFMS GPAC LAVF LSMASH SWSCALE ASM_BUILD_DEPENDS= ${ASM_BUILD_DEPENDS_${ARCH}} ASM_BUILD_DEPENDS_amd64=nasm>=2.13:devel/nasm ASM_MESON_ENABLED= asm LTO_MESON_TRUE= b_lto OPTIMIZED_CFLAGS_CFLAGS=-O3 +.if !empty(MACHINE_ARCH:Mpowerpc64*) +ASM_VARS= MESON_ARGS+=-Dvsx=enabled +ASM_VARS_OFF= MESON_ARGS+=-Dvsx=disabled +.endif + .include "${MASTERDIR}/Makefile" diff --git a/multimedia/x264/Makefile b/multimedia/x264/Makefile index bfcaa6d32b64..1cd1e1c91140 100644 --- a/multimedia/x264/Makefile +++ b/multimedia/x264/Makefile @@ -1,80 +1,84 @@ PORTNAME= x264 DISTVERSION= 0.165.3223 CATEGORIES= multimedia MAINTAINER= multimedia@FreeBSD.org COMMENT?= H.264/MPEG-4 AVC Video Encoding (CLI utility) WWW= https://www.videolan.org/x264.html LICENSE= GPLv2 LICENSE_FILE= ${WRKSRC}/COPYING LIB_DEPENDS?= libx264.so:multimedia/libx264 USES+= meson pkgconfig python:build shebangfix SHEBANG_GLOB= *.py USE_GITLAB= yes GL_SITE= https://gitlab.freedesktop.org/gstreamer GL_ACCOUNT= meson-ports GL_PROJECT= x264 GL_TAGNAME= 00852f599572d10798b2dafd2c5286213d0ce795 PLIST_FILES?= bin/x264 OPTIONS_DEFINE+= BASH FFMS LAVF SWSCALE OPTIONS_DEFAULT+= BASH FFMS LAVF LSMASH SWSCALE OPTIONS_RADIO= MP4 #OPTIONS_RADIO_MP4= GPAC LSMASH OPTIONS_RADIO_MP4= LSMASH FFMS_DESC= FFmpeg Source input 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_PLIST_FILES= share/bash-completion/completions/x264 FFMS_LIB_DEPENDS= libffms2.so:multimedia/ffms2 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 LSMASH_LIB_DEPENDS= liblsmash.so:multimedia/l-smash LSMASH_MESON_ENABLED= lsmash SWSCALE_LIB_DEPENDS= libswscale.so:multimedia/ffmpeg SWSCALE_MESON_ENABLED= swscale .include -.if !defined(PKGNAMEPREFIX) || (${ARCH} != "aarch64" && ${ARCH} != "amd64") +.if !defined(PKGNAMEPREFIX) || (${ARCH} != "aarch64" && ${ARCH} != "amd64" && empty(ARCH:Mpowerpc64*)) MESON_ARGS+= -Dasm=disabled -Dvsx=disabled .endif +.if defined(PKGNAMEPREFIX) && ${ARCH} == "powerpc64" && ${PORT_OPTIONS:MASM} && empty(MACHINE_CPU:Mvsx) +IGNORE= ASM requires VSX on powerpc64; set CPUTYPE=power7 or newer, or disable the ASM option +.endif + 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/files/patch-meson.build b/multimedia/x264/files/patch-meson.build index 8f4895e42207..3a4445583ffb 100644 --- a/multimedia/x264/files/patch-meson.build +++ b/multimedia/x264/files/patch-meson.build @@ -1,19 +1,55 @@ ---- meson.build.orig 2026-08-04 22:20:30 UTC +--- meson.build.orig 2026-08-06 13:57:36 UTC +++ meson.build -@@ -1,13 +1,13 @@ project('x264', 'c', +@@ -1,13 +1,13 @@ 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) +@@ -218,20 +218,20 @@ + asflags += ['-DARCH_X86_64=1'] + stack_alignment = 16 + endif +-elif host_cpu.startswith('ppc') +- cdata.set10('altivec', true) ++elif host_cpu.startswith('ppc') and asm_allowed ++ cdata.set10('HAVE_ALTIVEC', true) + + if host_system == 'darwin' + add_project_arguments('-faltivec', '-fastf', '-mcpu=G4', language: 'c') + else +- add_project_arguments('-maltivec', '-mabi=altivec', language: 'c') +- cdata.set10('altivec_h', true) ++ add_project_arguments('-maltivec', language: 'c') ++ cdata.set10('HAVE_ALTIVEC_H', true) + endif + + if not get_option('vsx').disabled() +- if cc.has_argument('-mvsx') ++ if cc.compiles('int main(void){return 0;}', args: ['-maltivec', '-mvsx'], name: 'VSX with AltiVec') + add_project_arguments('-mvsx', language: 'c') +- cdata.set10('vsx', true) ++ cdata.set10('HAVE_VSX', true) + endif + endif + elif host_cpu == 'aarch64' +@@ -955,7 +955,7 @@ + elif host_cpu.startswith('ppc') + sources_x += files( + 'common/ppc/dct.c', +- 'common/ppc/debloc4k.c', ++ 'common/ppc/deblock.c', + 'common/ppc/mc.c', + 'common/ppc/pixel.c', + 'common/ppc/predict.c',