From 5dcecebca6a6f582ff7523d1f265166f71028303 Mon Sep 17 00:00:00 2001 From: Scott M Anderson Date: Tue, 18 Aug 2026 14:13:47 -0600 Subject: [PATCH 1/6] cmakeup: CMake updates - Update minimum CMake version from 3.31 to 4.3 - Remove xproinc.cmake inclusion (now part of CMakePresets) - Package name and Target Namespace now match (FFmpeg, not ffmpeg) - xpExternPackage with NO_EXPORT option (pre-built msw, native unix) - Drop 'xpuse-' from [yasm|openh264]_DIR - Use openh264::openh264 for dependency (OPENH264_LIBRARIES cmake-found only) openh264::openh264 should work whether openh264 found via cmake or cps --- CMakeLists.txt | 12 +++++------- cmake/FFmpeg-targets.cmake | 17 ++++++++--------- 2 files changed, 13 insertions(+), 16 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1ee4396e46958..6868210b92c97 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,4 @@ -cmake_minimum_required(VERSION 3.31) -set(CMAKE_PROJECT_TOP_LEVEL_INCLUDES .devcontainer/cmake/xproinc.cmake) +cmake_minimum_required(VERSION 4.3) project(FFmpeg) set(libs # libraries, in linking order # https://github.com/FFmpeg/FFmpeg/blob/n2.6.2/configure#L2667-L2675 @@ -37,9 +36,8 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Windows") ) endif() set(targetsFile ${PROJECT_NAME}-targets) -xpExternPackage(NAMESPACE ffmpeg - TARGETS_FILE ${targetsFile} LIBRARIES ${libs} - BASE n2.6.2 XPDIFF "bin(msw), native(unix)" DEPS openh264 PVT_DEPS yasm +xpExternPackage(TARGETS_FILE ${targetsFile} LIBRARIES ${libs} NO_EXPORT + BASE n2.6.2 XPDIFF "bin[msw], native[unix]" DEPS openh264 PVT_DEPS yasm WEB "https://www.ffmpeg.org/" UPSTREAM "github.com/FFmpeg/FFmpeg" DESC "complete, cross-platform solution to record, convert and stream audio and video" LICENSE "[LGPL-2.1-or-later](https://www.ffmpeg.org/legal.html 'LGPL version 2.1 or later')" @@ -61,8 +59,8 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Windows") else() find_package(openh264) find_package(yasm) - get_filename_component(yasmBinDir ${xpuse-yasm_DIR}/../../bin ABSOLUTE) - configure_file(${xpuse-openh264_DIR}/openh264.pc.in ${CMAKE_BINARY_DIR}/openh264.pc @ONLY) + get_filename_component(yasmBinDir ${yasm_DIR}/../../bin ABSOLUTE) + configure_file(${openh264_DIR}/../cmake/openh264.pc.in ${CMAKE_BINARY_DIR}/openh264.pc @ONLY) set(XP_CONFIGURE ${CMAKE_COMMAND} -E env PKG_CONFIG_PATH=${CMAKE_BINARY_DIR} PATH=${yasmBinDir}:$ENV{PATH} # prepend path to yasm /configure --prefix= #--enable-shared --disable-static diff --git a/cmake/FFmpeg-targets.cmake b/cmake/FFmpeg-targets.cmake index a3fc7fb09b711..104ea4de331fb 100644 --- a/cmake/FFmpeg-targets.cmake +++ b/cmake/FFmpeg-targets.cmake @@ -10,8 +10,7 @@ endfunction() # _ffmpeg_*_libs checkLibraryConcat(asound snd_strerror _ffmpeg_avdevice_libs) checkLibraryConcat(Xext XShmDetach _ffmpeg_avdevice_libs) -xpGetPkgVar(openh264 LIBRARIES) # sets OPENH264_LIBRARIES -set(_ffmpeg_avcodec_libs ${OPENH264_LIBRARIES}) +set(_ffmpeg_avcodec_libs openh264::openh264) # _ffmpeg_*_deps set(_ffmpeg_avdevice_deps avfilter avformat) if(CMAKE_SYSTEM_NAME STREQUAL "Darwin") @@ -39,27 +38,27 @@ get_filename_component(XP_ROOTDIR ${CMAKE_CURRENT_LIST_DIR}/../.. ABSOLUTE) get_filename_component(XP_ROOTDIR ${XP_ROOTDIR} ABSOLUTE) # remove relative parts set(includeDirs ${XP_ROOTDIR}/include ${XP_ROOTDIR}/include/ffmpeg) foreach(lib ${ffmpeg_all_libs}) - if(NOT TARGET ffmpeg::${lib}) - add_library(ffmpeg::${lib} STATIC IMPORTED) + if(NOT TARGET FFmpeg::${lib}) + add_library(FFmpeg::${lib} STATIC IMPORTED) set(${lib}_RELEASE ${XP_ROOTDIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}${lib}${CMAKE_STATIC_LIBRARY_SUFFIX}) if(EXISTS "${${lib}_RELEASE}") - set_property(TARGET ffmpeg::${lib} APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) - set_target_properties(ffmpeg::${lib} PROPERTIES + set_property(TARGET FFmpeg::${lib} APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) + set_target_properties(FFmpeg::${lib} PROPERTIES IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "ASM_NASM;C;CXX" IMPORTED_LOCATION_RELEASE "${${lib}_RELEASE}" ) - set_target_properties(ffmpeg::${lib} PROPERTIES + set_target_properties(FFmpeg::${lib} PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${includeDirs}" ) if(_ffmpeg_${lib}_deps OR _ffmpeg_${lib}_libs) unset(linkLibs) foreach(dep ${_ffmpeg_${lib}_deps}) - list(APPEND linkLibs \$) + list(APPEND linkLibs \$) endforeach() foreach(dep ${_ffmpeg_${lib}_libs}) list(APPEND linkLibs \$) endforeach() - set_target_properties(ffmpeg::${lib} PROPERTIES + set_target_properties(FFmpeg::${lib} PROPERTIES INTERFACE_LINK_LIBRARIES "${linkLibs}" ) endif() From 7d633df9cf1b807b0c47d849b2a7f18a5b906ba9 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 18 Aug 2026 20:21:20 +0000 Subject: [PATCH 2/6] externpro 26.01.5-3-gbfaa434 --- .devcontainer | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.devcontainer b/.devcontainer index 5e2385eed8fe1..bfaa434c3a332 160000 --- a/.devcontainer +++ b/.devcontainer @@ -1 +1 @@ -Subproject commit 5e2385eed8fe1fbc2da53d40f3173ab1a7cc4bfa +Subproject commit bfaa434c3a33235aa0af246cb786f7e3daf63571 From 547dbda4b57a2b70cd9386ceae595ddabed4cfb0 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 18 Aug 2026 20:21:21 +0000 Subject: [PATCH 3/6] sync GitHub Actions workflows --- .github/workflows/xpbuild.yml | 19 ++++++++++--------- .github/workflows/xprelease.yml | 2 +- .github/workflows/xptag.yml | 4 ++-- 3 files changed, 13 insertions(+), 12 deletions(-) diff --git a/.github/workflows/xpbuild.yml b/.github/workflows/xpbuild.yml index fd31fce02a4d3..c539349ee0605 100644 --- a/.github/workflows/xpbuild.yml +++ b/.github/workflows/xpbuild.yml @@ -14,17 +14,18 @@ jobs: contents: read pull-requests: write packages: write - uses: externpro/externpro/.github/workflows/build-linux.yml@25.07.6 + uses: externpro/externpro/.github/workflows/build-linux.yml@26.01.5 + secrets: + automation_token: ${{ secrets.GHCR_TOKEN }} with: - cmake-workflow-preset: LinuxRelease - secrets: inherit + cmake_workflow_preset_suffix: Release macos: - uses: externpro/externpro/.github/workflows/build-macos.yml@25.07.6 - with: - cmake-workflow-preset: DarwinRelease + uses: externpro/externpro/.github/workflows/build-macos.yml@26.01.5 secrets: inherit - windows: - uses: externpro/externpro/.github/workflows/build-windows.yml@25.07.6 with: - cmake-workflow-preset: WindowsRelease + cmake_workflow_preset_suffix: Release + windows: + uses: externpro/externpro/.github/workflows/build-windows.yml@26.01.5 secrets: inherit + with: + cmake_workflow_preset_suffix: Release diff --git a/.github/workflows/xprelease.yml b/.github/workflows/xprelease.yml index a2eb28224cada..5181b8f71800c 100644 --- a/.github/workflows/xprelease.yml +++ b/.github/workflows/xprelease.yml @@ -34,7 +34,7 @@ jobs: # Upload build artifacts as release assets release-from-build: if: github.event_name == 'workflow_dispatch' - uses: externpro/externpro/.github/workflows/release-from-build.yml@25.07.6 + uses: externpro/externpro/.github/workflows/release-from-build.yml@26.01.5 with: workflow_run_url: ${{ github.event.inputs.workflow_run_url }} permissions: diff --git a/.github/workflows/xptag.yml b/.github/workflows/xptag.yml index b5ce9503a2a76..1f6b0193f2d9e 100644 --- a/.github/workflows/xptag.yml +++ b/.github/workflows/xptag.yml @@ -8,9 +8,9 @@ on: jobs: tag: if: ${{ github.event.pull_request.merged == true && github.event.pull_request.base.ref == 'xpro' && contains(github.event.pull_request.labels.*.name, 'release:tag') }} - uses: externpro/externpro/.github/workflows/tag-release.yml@25.07.6 + uses: externpro/externpro/.github/workflows/tag-release.yml@26.01.5 with: merge_sha: ${{ github.event.pull_request.merge_commit_sha }} pr_number: ${{ github.event.pull_request.number }} secrets: - workflow_write_token: ${{ secrets.XPUPDATE_TOKEN }} + automation_token: ${{ secrets.XPRO_TOKEN }} From b656cbe7eb1bda5f2b2ad817cb10e86fedce33e1 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 18 Aug 2026 20:21:21 +0000 Subject: [PATCH 4/6] update .github/release-tag.json --- .github/release-tag.json | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 .github/release-tag.json diff --git a/.github/release-tag.json b/.github/release-tag.json new file mode 100644 index 0000000000000..5e180734a6e63 --- /dev/null +++ b/.github/release-tag.json @@ -0,0 +1,4 @@ +{ + "message": "xpro version 2.6.2.5 tag", + "tag": "xpv2.6.2.5" +} From 3203527049daa1b9d928b0467b51ee905b04efb4 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 18 Aug 2026 20:21:21 +0000 Subject: [PATCH 5/6] dependency updates --- xprodeps.md | 9 +++++---- xprodeps.svg | 54 ++++++++++++++++++++++++++++++++-------------------- 2 files changed, 38 insertions(+), 25 deletions(-) diff --git a/xprodeps.md b/xprodeps.md index 9de3a6a5f6df3..3a2a3cf3ae901 100644 --- a/xprodeps.md +++ b/xprodeps.md @@ -2,13 +2,14 @@ |project|license [^_l]|description [dependencies]|version|source|diff [^_d]| |-------|-------------|--------------------------|-------|------|----------| -|[ffmpeg](https://www.ffmpeg.org/)|[LGPL-2.1](https://www.ffmpeg.org/legal.html 'LGPL version 2.1 or later')|complete, cross-platform solution to record, convert and stream audio and video [deps: _openh264_] [pvt deps: _yasm_]| |[upstream](https://github.com/FFmpeg/FFmpeg 'github.com/FFmpeg/FFmpeg')| [bin(msw), native(unix)]| -|[openh264](http://www.openh264.org/)|[BSD-2-Clause](http://www.openh264.org/faq.html 'BSD 2-Clause Simplified License')|a codec library which supports H.264 encoding and decoding [pvt deps: _yasm_]|[xpv1.4.0.3](https://github.com/externpro/openh264/releases/tag/xpv1.4.0.3 'release')|[repo](https://github.com/externpro/openh264 'github.com/externpro/openh264') [upstream](https://github.com/cisco/openh264 'github.com/cisco/openh264')|[diff](https://github.com/externpro/openh264/compare/v1.4.0...xpv1.4.0.3 'github.com/externpro/openh264/compare/v1.4.0...xpv1.4.0.3') [intro]| -|[yasm](http://yasm.tortall.net/)|[BSD-2-Clause](https://github.com/yasm/yasm/blob/v1.3.0/COPYING 'BSD 2-Clause Simplified License')|assembler and disassembler for the Intel x86 architecture|[xpv1.3.0.3](https://github.com/externpro/yasm/releases/tag/xpv1.3.0.3 'release')|[repo](https://github.com/externpro/yasm 'github.com/externpro/yasm') [upstream](https://github.com/yasm/yasm 'github.com/yasm/yasm')|[diff](https://github.com/externpro/yasm/compare/v1.3.0...xpv1.3.0.3 'github.com/externpro/yasm/compare/v1.3.0...xpv1.3.0.3') [patch]| +|[FFmpeg](https://www.ffmpeg.org/)|[LGPL-2.1-or-later](https://www.ffmpeg.org/legal.html 'LGPL version 2.1 or later')|complete, cross-platform solution to record, convert and stream audio and video [deps: _openh264_] [pvt deps: _yasm_]| |[upstream](https://github.com/FFmpeg/FFmpeg 'github.com/FFmpeg/FFmpeg')| [bin[msw], native[unix]]| +|[openh264](http://www.openh264.org/)|[BSD-2-Clause](http://www.openh264.org/faq.html 'BSD 2-Clause Simplified License')|a codec library which supports H.264 encoding and decoding [deps: _Threads_] [pvt deps: _yasm_]|[xpv1.4.0.4](https://github.com/externpro/openh264/releases/tag/xpv1.4.0.4 'release')|[repo](https://github.com/externpro/openh264 'github.com/externpro/openh264') [upstream](https://github.com/cisco/openh264 'github.com/cisco/openh264')|[diff](https://github.com/externpro/openh264/compare/v1.4.0...xpv1.4.0.4 'github.com/externpro/openh264/compare/v1.4.0...xpv1.4.0.4') [intro]| +|[yasm](http://yasm.tortall.net/)|[BSD-2-Clause](https://github.com/yasm/yasm/blob/v1.3.0/COPYING 'BSD 2-Clause Simplified License')|assembler and disassembler for the Intel x86 architecture|[xpv1.3.0.4](https://github.com/externpro/yasm/releases/tag/xpv1.3.0.4 'release')|[repo](https://github.com/externpro/yasm 'github.com/externpro/yasm') [upstream](https://github.com/yasm/yasm 'github.com/yasm/yasm')|[diff](https://github.com/externpro/yasm/compare/v1.3.0...xpv1.3.0.4 'github.com/externpro/yasm/compare/v1.3.0...xpv1.3.0.4') [patch]| +|[Threads](https://cmake.org/cmake/help/latest/module/FindThreads.html)|[LGPL-2.1-or-later](https://spdx.org/licenses/LGPL-2.1-or-later.html 'GNU Lesser General Public License v2.1 or later')|Finds and determines the thread library of the system for multithreading support|[xpv1.0.4](https://github.com/externpro/Threads/releases/tag/xpv1.0.4 'release')|[repo](https://github.com/externpro/Threads 'github.com/externpro/Threads')|[diff](https://github.com/externpro/Threads/compare/v0...xpv1.0.4 'github.com/externpro/Threads/compare/v0...xpv1.0.4') [bin]| ![deps](xprodeps.svg 'dependencies') -Dependency version check: all 3 parent-manifest versions match pinned versions. +Dependency version check: all 4 parent-manifest versions match pinned versions. |diff |description| |------|-----------| diff --git a/xprodeps.svg b/xprodeps.svg index b5102b77a5189..78d91e8c515cb 100644 --- a/xprodeps.svg +++ b/xprodeps.svg @@ -4,45 +4,57 @@ - + GG - + -ffmpeg - -ffmpeg +FFmpeg + +FFmpeg openh264 - -openh264 + +openh264 - + -ffmpeg->openh264 - - +FFmpeg->openh264 + + yasm - -yasm + +yasm - + -ffmpeg->yasm - - +FFmpeg->yasm + + - + openh264->yasm - - + + + + + +Threads + +Threads + + + +openh264->Threads + + From 8432acc45b02fef978fbf7df98f1a7d15fec9fa0 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 18 Aug 2026 20:21:21 +0000 Subject: [PATCH 6/6] externpro 26.01.5-3-gbfaa434 updates --- .github/release-tag.yml | 2 -- CMakePresets.json | 3 ++- 2 files changed, 2 insertions(+), 3 deletions(-) delete mode 100644 .github/release-tag.yml diff --git a/.github/release-tag.yml b/.github/release-tag.yml deleted file mode 100644 index 0e02eb0a9175a..0000000000000 --- a/.github/release-tag.yml +++ /dev/null @@ -1,2 +0,0 @@ -tag: xpv2.6.2.4 -message: "xpro version 2.6.2.4 tag" diff --git a/CMakePresets.json b/CMakePresets.json index f82cfdd2cf630..28efa3978f891 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -3,6 +3,7 @@ "include": [ ".devcontainer/cmake/presets/xpLinuxNinja.json", ".devcontainer/cmake/presets/xpDarwinNinja.json", - ".devcontainer/cmake/presets/xpWindowsVs2022.json" + ".devcontainer/cmake/presets/xpMswVs2022.json", + ".devcontainer/cmake/presets/xpMswVs2026.json" ] }