11include (ExternalProject )
22
33set (DEFAULT_PARENT_DIR ${CMAKE_CURRENT_SOURCE_DIR} /../)
4- set (ffmpeg_BUILD_INSTALL_PREFIX ${DEFAULT_PARENT_DIR} /.ext)
4+
5+ # Make installation directory architecture-specific
6+ # Use target architecture from CMAKE_OSX_ARCHITECTURES for cross-compilation
7+ if (APPLE )
8+ if (CMAKE_OSX_ARCHITECTURES MATCHES "arm64" )
9+ set (ffmpeg_INSTALL_DIR "${DEFAULT_PARENT_DIR} /.ext-arm64" )
10+ set (ffmpeg_BUILD_INSTALL_PREFIX ${DEFAULT_PARENT_DIR} /.ext-arm64)
11+ set (ffmpeg_SOURCE_DIR ${DEFAULT_PARENT_DIR} /.ext-arm64/ffmpeg)
12+ elseif (CMAKE_OSX_ARCHITECTURES MATCHES "x86_64" )
13+ set (ffmpeg_INSTALL_DIR "${DEFAULT_PARENT_DIR} /.ext-x86_64" )
14+ set (ffmpeg_BUILD_INSTALL_PREFIX ${DEFAULT_PARENT_DIR} /.ext-x86_64)
15+ set (ffmpeg_SOURCE_DIR ${DEFAULT_PARENT_DIR} /.ext-x86_64/ffmpeg)
16+ endif ()
17+ elseif (UNIX )
18+ if (${CMAKE_HOST_SYSTEM_PROCESSOR} STREQUAL aarch64)
19+ set (ffmpeg_INSTALL_DIR "${DEFAULT_PARENT_DIR} /.ext-aarch64" )
20+ set (ffmpeg_BUILD_INSTALL_PREFIX ${DEFAULT_PARENT_DIR} /.ext-aarch64)
21+ set (ffmpeg_SOURCE_DIR ${DEFAULT_PARENT_DIR} /.ext-aarch64/ffmpeg)
22+ elseif (${CMAKE_HOST_SYSTEM_PROCESSOR} STREQUAL x86_64)
23+ set (ffmpeg_INSTALL_DIR "${DEFAULT_PARENT_DIR} /.ext-x86_64" )
24+ set (ffmpeg_BUILD_INSTALL_PREFIX ${DEFAULT_PARENT_DIR} /.ext-x86_64)
25+ set (ffmpeg_SOURCE_DIR ${DEFAULT_PARENT_DIR} /.ext-x86_64/ffmpeg)
26+ endif ()
27+ endif ()
28+
529set (ffmpeg_URL "https://github.com/FFmpeg/FFmpeg/archive/refs/tags/n7.1.tar.gz" )
6- set (ffmpeg_SOURCE_DIR ${DEFAULT_PARENT_DIR} /.ext/ffmpeg)
730set (ffmpeg_SHA256_HASH 7ddad2d992bd250a6c56053c26029f7e728bebf0f37f80cf3f8a0e6ec706431a)
8- set (ffmpeg_INSTALL_DIR "${DEFAULT_PARENT_DIR} /.ext" )
931
10- set (ffmpeg_PKG_CONFIG_PATH "${VCPKG_INSTALLED_DIR} /${VCPKG_TARGET_TRIPLET} /lib/pkgconfig:${DEFAULT_PARENT_DIR} /.ext /lib/pkgconfig" )
32+ set (ffmpeg_PKG_CONFIG_PATH "${VCPKG_INSTALLED_DIR} /${VCPKG_TARGET_TRIPLET} /lib/pkgconfig:${ffmpeg_INSTALL_DIR} /lib/pkgconfig" )
1133
1234macro (check_lib_existence LIB_NAME )
1335 find_path (${LIB_NAME} _EXISTS
@@ -37,9 +59,9 @@ macro(build_ffmpeg_once)
3759 set (EXTRA_ARGUMENTS)
3860 if (APPLE )
3961 list (APPEND EXTRA_ARGUMENTS "--target-os=darwin" )
40- if (CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL arm64)
62+ if (CMAKE_OSX_ARCHITECTURES MATCHES " arm64" )
4163 list (APPEND EXTRA_ARGUMENTS "--arch=arm64" )
42- elseif (CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL x86_64)
64+ elseif (CMAKE_OSX_ARCHITECTURES MATCHES " x86_64" )
4365 list (APPEND EXTRA_ARGUMENTS "--arch=x86_64" )
4466 endif ()
4567 elseif (UNIX )
@@ -54,13 +76,21 @@ macro(build_ffmpeg_once)
5476 set (FFMPEG_EP_DEPENDS)
5577
5678 message (STATUS "Building FFmpeg with extra arguments: ${EXTRA_ARGUMENTS} " )
79+ message (STATUS "FFmpeg target architecture: ${CMAKE_OSX_ARCHITECTURES} " )
80+ message (STATUS "VCPKG_TARGET_TRIPLET: ${VCPKG_TARGET_TRIPLET} " )
81+ message (STATUS "FFmpeg install directory: ${ffmpeg_INSTALL_DIR} " )
5782
5883 ExternalProject_Add (ffmpeg_ep
5984 SOURCE_DIR ${ffmpeg_SOURCE_DIR}
6085 URL ${ffmpeg_URL}
6186 URL_HASH SHA256=${ffmpeg_SHA256_HASH}
6287 CONFIGURE_COMMAND
63- ${CMAKE_COMMAND} -E env PKG_CONFIG_PATH=${ffmpeg_PKG_CONFIG_PATH} ${ffmpeg_SOURCE_DIR} /configure
88+ ${CMAKE_COMMAND} -E env
89+ PKG_CONFIG_PATH=${ffmpeg_PKG_CONFIG_PATH}
90+ VCPKG_TARGET_TRIPLET=${VCPKG_TARGET_TRIPLET}
91+ VCPKG_HOST_TRIPLET=${VCPKG_HOST_TRIPLET}
92+ CMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}
93+ ${ffmpeg_SOURCE_DIR} /configure
6494 --quiet
6595 --prefix =${ffmpeg_INSTALL_DIR}
6696 --disable-programs
@@ -90,8 +120,18 @@ macro(build_ffmpeg_once)
90120 BUILD_IN_SOURCE TRUE
91121 PATCH_COMMAND
92122 patch -p1 < ${DEFAULT_PARENT_DIR} /cmake/modules/url_max_length_fix.patch
93- BUILD_COMMAND $(MAKE)
94- INSTALL_COMMAND $(MAKE) install
123+ BUILD_COMMAND
124+ ${CMAKE_COMMAND} -E env
125+ VCPKG_TARGET_TRIPLET=${VCPKG_TARGET_TRIPLET}
126+ VCPKG_HOST_TRIPLET=${VCPKG_HOST_TRIPLET}
127+ CMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}
128+ $(MAKE)
129+ INSTALL_COMMAND
130+ ${CMAKE_COMMAND} -E env
131+ VCPKG_TARGET_TRIPLET=${VCPKG_TARGET_TRIPLET}
132+ VCPKG_HOST_TRIPLET=${VCPKG_HOST_TRIPLET}
133+ CMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}
134+ $(MAKE) install
95135 DEPENDS ${FFMPEG_EP_DEPENDS}
96136 ${EP_LOG_OPTIONS}
97137 )
0 commit comments