mirror of
				https://git.tardis.systems/mirrors/yuzu
				synced 2025-11-04 04:34:07 +01:00 
			
		
		
		
	CMakeLists: Use bundled FFmpeg as a fallback
Sets YUZU_USE_BUNDLED_FFMPEG as a CMake dependent option that is OFF on Linux and ON for WIN32 targets. If FFmpeg is not found when YUZU_USE_BUNDLED_FFMPEG is OFF, the bundled module/binaries are used instead. Reverts earlier changes to FindFFmpeg a bit, mostly to keep parity with it's Citra version a bit. Now _FFmpeg_ALL_COMPONENTS lists all components. We overwrite FFmpeg_LIBRARIES and FFmpeg_INCLUDE_DIR after using the module.
This commit is contained in:
		
							parent
							
								
									8b54e219c9
								
							
						
					
					
						commit
						527188391c
					
				@ -18,7 +18,7 @@ CMAKE_DEPENDENT_OPTION(YUZU_USE_BUNDLED_QT "Download bundled Qt binaries" ON "EN
 | 
			
		||||
 | 
			
		||||
option(ENABLE_WEB_SERVICE "Enable web services (telemetry, etc.)" ON)
 | 
			
		||||
 | 
			
		||||
option(YUZU_USE_BUNDLED_FFMPEG "Download/Build bundled yuzu" ON)
 | 
			
		||||
CMAKE_DEPENDENT_OPTION(YUZU_USE_BUNDLED_FFMPEG "Download/Build bundled yuzu" ON "WIN32" OFF)
 | 
			
		||||
 | 
			
		||||
option(YUZU_USE_QT_WEB_ENGINE "Use QtWebEngine for web applet implementation" OFF)
 | 
			
		||||
 | 
			
		||||
@ -386,6 +386,32 @@ if (NOT LIBUSB_FOUND)
 | 
			
		||||
    set(LIBUSB_LIBRARIES usb)
 | 
			
		||||
endif()
 | 
			
		||||
 | 
			
		||||
# List of all FFmpeg components required
 | 
			
		||||
set(FFmpeg_COMPONENTS
 | 
			
		||||
    avcodec
 | 
			
		||||
    avutil
 | 
			
		||||
    swscale)
 | 
			
		||||
 | 
			
		||||
if (NOT YUZU_USE_BUNDLED_FFMPEG)
 | 
			
		||||
    # Use system installed FFmpeg
 | 
			
		||||
    find_package(FFmpeg REQUIRED COMPONENTS ${FFmpeg_COMPONENTS})
 | 
			
		||||
 | 
			
		||||
    if (FFmpeg_FOUND)
 | 
			
		||||
        # Overwrite aggregate defines from FFmpeg module to avoid over-linking libraries.
 | 
			
		||||
        # Prevents shipping too many libraries with the AppImage.
 | 
			
		||||
        set(FFmpeg_LIBRARIES "")
 | 
			
		||||
        set(FFmpeg_INCLUDE_DIR "")
 | 
			
		||||
 | 
			
		||||
        foreach(COMPONENT ${FFmpeg_COMPONENTS})
 | 
			
		||||
            set(FFmpeg_LIBRARIES ${FFmpeg_LIBRARIES} ${FFmpeg_LIBRARY_${COMPONENT}} CACHE PATH "Paths to FFmpeg libraries" FORCE)
 | 
			
		||||
            set(FFmpeg_INCLUDE_DIR ${FFmpeg_INCLUDE_DIR} ${FFmpeg_INCLUDE_${COMPONENT}} CACHE PATH "Path to FFmpeg headers" FORCE)
 | 
			
		||||
        endforeach()
 | 
			
		||||
    else()
 | 
			
		||||
        message(WARNING "FFmpeg not found, falling back to externals")
 | 
			
		||||
        set(YUZU_USE_BUNDLED_FFMPEG ON)
 | 
			
		||||
    endif()
 | 
			
		||||
endif()
 | 
			
		||||
 | 
			
		||||
if (YUZU_USE_BUNDLED_FFMPEG)
 | 
			
		||||
    if (NOT WIN32)
 | 
			
		||||
        # Build FFmpeg from externals
 | 
			
		||||
@ -407,11 +433,6 @@ if (YUZU_USE_BUNDLED_FFMPEG)
 | 
			
		||||
            set(FFmpeg_FOUND YES)
 | 
			
		||||
        endif()
 | 
			
		||||
 | 
			
		||||
        set(FFmpeg_COMPONENTS
 | 
			
		||||
            avcodec
 | 
			
		||||
            avutil
 | 
			
		||||
            swscale)
 | 
			
		||||
 | 
			
		||||
        foreach(COMPONENT ${FFmpeg_COMPONENTS})
 | 
			
		||||
            set(FFmpeg_${COMPONENT}_PREFIX "${FFmpeg_BUILD_DIR}/lib${COMPONENT}")
 | 
			
		||||
            set(FFmpeg_${COMPONENT}_LIB_NAME "lib${COMPONENT}.a")
 | 
			
		||||
@ -496,15 +517,10 @@ if (YUZU_USE_BUNDLED_FFMPEG)
 | 
			
		||||
            ${FFmpeg_LIBRARY_DIR}/avutil.lib
 | 
			
		||||
            CACHE PATH "Paths to FFmpeg libraries" FORCE)
 | 
			
		||||
    endif()
 | 
			
		||||
else()
 | 
			
		||||
    # Use system installed FFmpeg
 | 
			
		||||
    find_package(FFmpeg REQUIRED)
 | 
			
		||||
 | 
			
		||||
    if (NOT FFmpeg_FOUND)
 | 
			
		||||
        message(FATAL_ERROR "FFmpeg not found")
 | 
			
		||||
    endif()
 | 
			
		||||
endif()
 | 
			
		||||
 | 
			
		||||
unset(FFmpeg_COMPONENTS)
 | 
			
		||||
 | 
			
		||||
# Prefer the -pthread flag on Linux.
 | 
			
		||||
set(THREADS_PREFER_PTHREAD_FLAG ON)
 | 
			
		||||
find_package(Threads REQUIRED)
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										21
									
								
								externals/find-modules/FindFFmpeg.cmake
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										21
									
								
								externals/find-modules/FindFFmpeg.cmake
									
									
									
									
										vendored
									
									
								
							@ -22,19 +22,24 @@
 | 
			
		||||
#
 | 
			
		||||
# <component> can be one of:
 | 
			
		||||
#   avcodec
 | 
			
		||||
#   avdevice # Disabled
 | 
			
		||||
#   avfilter # Disabled
 | 
			
		||||
#   avformat # Disabled
 | 
			
		||||
#   avdevice
 | 
			
		||||
#   avfilter
 | 
			
		||||
#   avformat
 | 
			
		||||
#   avutil
 | 
			
		||||
#   postproc # Disabled
 | 
			
		||||
#   swresample # Disabled
 | 
			
		||||
#   postproc
 | 
			
		||||
#   swresample
 | 
			
		||||
#   swscale
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
set(_FFmpeg_ALL_COMPONENTS
 | 
			
		||||
  avcodec
 | 
			
		||||
  avutil
 | 
			
		||||
  swscale
 | 
			
		||||
    avcodec
 | 
			
		||||
    avdevice
 | 
			
		||||
    avfilter
 | 
			
		||||
    avformat
 | 
			
		||||
    avutil
 | 
			
		||||
    postproc
 | 
			
		||||
    swresample
 | 
			
		||||
    swscale
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
set(_FFmpeg_DEPS_avcodec avutil)
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user