@ -34,8 +34,8 @@ if (NOT YUZU_USE_BUNDLED_FFMPEG)
# U s e r a t t e m p t s t o d o a F F m p e g c r o s s c o m p i l a t i o n b e c a u s e . . .
# U s e r a t t e m p t s t o d o a F F m p e g c r o s s c o m p i l a t i o n b e c a u s e . . .
# H e r e w e j u s t q u i c k l y t e s t a g a i n s t h o s t / s y s t e m p r o c e s s o r s n o t m a t c h i n g
# H e r e w e j u s t q u i c k l y t e s t a g a i n s t h o s t / s y s t e m p r o c e s s o r s n o t m a t c h i n g
# T O D O : T e s t f o r v e r s i o n s n o t m a t c h i n g a s w e l l ?
# T O D O : T e s t f o r v e r s i o n s n o t m a t c h i n g a s w e l l ?
elseif ( NOT ( CMAKE_HOST_SYSTEM_PROCESSOR MATCHES CMAKE_SYSTEM_PROCESSOR
A N D C M A K E _ H O S T _ S Y S T E M _ N A M E M A T C H E S C M A K E _ S Y S T E M _ N A M E ) )
elseif ( NOT ( "${CMAKE_HOST_SYSTEM_PROCESSOR}" STREQUAL "${CMAKE_SYSTEM_PROCESSOR}"
A N D " $ { C M A K E _ H O S T _ S Y S T E M _ N A M E } " S T R E Q U A L " $ { C M A K E _ S Y S T E M _ N A M E } " ) )
string ( TOLOWER "${CMAKE_SYSTEM_NAME}" FFmpeg_SYSTEM_NAME )
string ( TOLOWER "${CMAKE_SYSTEM_NAME}" FFmpeg_SYSTEM_NAME )
if ( FFmpeg_SYSTEM_NAME STREQUAL "openorbis" OR FFmpeg_SYSTEM_NAME STREQUAL "managarm" )
if ( FFmpeg_SYSTEM_NAME STREQUAL "openorbis" OR FFmpeg_SYSTEM_NAME STREQUAL "managarm" )
set ( FFmpeg_SYSTEM_NAME "none" )
set ( FFmpeg_SYSTEM_NAME "none" )
@ -50,7 +50,10 @@ if (NOT YUZU_USE_BUNDLED_FFMPEG)
if ( DEFINED FFmpeg_CROSS_PREFIX )
if ( DEFINED FFmpeg_CROSS_PREFIX )
list ( APPEND FFmpeg_CROSS_COMPILE_FLAGS --cross-prefix= "${FFmpeg_CROSS_PREFIX}" )
list ( APPEND FFmpeg_CROSS_COMPILE_FLAGS --cross-prefix= "${FFmpeg_CROSS_PREFIX}" )
else ( )
else ( )
message ( WARNING "Please set FFmpeg_CROSS_PREFIX to your cross toolchain prefix, for example: \${CMAKE_STAGING_PREFIX}/bin/${CMAKE_SYSTEM_PROCESSOR}-${CMAKE_SYSTEM_NAME}-" )
message ( FATAL_ERROR "Please set FFmpeg_CROSS_PREFIX to your cross toolchain prefix, for example: \${CMAKE_STAGING_PREFIX}/bin/${CMAKE_SYSTEM_PROCESSOR}-${CMAKE_SYSTEM_NAME}-"
" I f t h i s i s n o t i n t e n d e d , c h e c k t h a t : "
" $ { C M A K E _ H O S T _ S Y S T E M _ P R O C E S S O R } = $ { C M A K E _ S Y S T E M _ P R O C E S S O R } "
" $ { C M A K E _ H O S T _ S Y S T E M _ N A M E } = $ { C M A K E _ S Y S T E M _ N A M E } " )
endif ( )
endif ( )
set ( FFmpeg_IS_CROSS_COMPILING TRUE )
set ( FFmpeg_IS_CROSS_COMPILING TRUE )
endif ( )
endif ( )
@ -65,8 +68,10 @@ elseif (UNIX AND NOT DEFINED FFmpeg_IS_CROSS_COMPILING)
pkg_check_modules ( CUDA cuda )
pkg_check_modules ( CUDA cuda )
pkg_check_modules ( FFNVCODEC ffnvcodec )
pkg_check_modules ( FFNVCODEC ffnvcodec )
pkg_check_modules ( VDPAU vdpau )
pkg_check_modules ( VDPAU vdpau )
pkg_check_modules ( VULKAN vulkan )
find_package ( spirv-headers )
find_package ( X11 )
find_package ( X11 )
if ( X11_FOUND )
if ( X11_FOUND )
if ( NOT APPLE )
if ( NOT APPLE )
# I n S o l a r i s n e e d s e x p l i c i t l i n k i n g f o r f f m p e g w h i c h l i n k s t o / l i b / a m d 6 4 / l i b X 1 1 . s o
# I n S o l a r i s n e e d s e x p l i c i t l i n k i n g f o r f f m p e g w h i c h l i n k s t o / l i b / a m d 6 4 / l i b X 1 1 . s o
@ -137,7 +142,7 @@ elseif (UNIX AND NOT DEFINED FFmpeg_IS_CROSS_COMPILING)
endif ( CUDA_FOUND )
endif ( CUDA_FOUND )
endif ( )
endif ( )
if ( VDPAU_FOUND AND NOT APPLE )
if ( VDPAU_FOUND )
list ( APPEND FFmpeg_HWACCEL_FLAGS
list ( APPEND FFmpeg_HWACCEL_FLAGS
- - e n a b l e - v d p a u
- - e n a b l e - v d p a u
- - e n a b l e - h w a c c e l = h 2 6 4 _ v d p a u
- - e n a b l e - h w a c c e l = h 2 6 4 _ v d p a u
@ -151,6 +156,21 @@ elseif (UNIX AND NOT DEFINED FFmpeg_IS_CROSS_COMPILING)
list ( APPEND FFmpeg_HWACCEL_FLAGS --disable-vdpau )
list ( APPEND FFmpeg_HWACCEL_FLAGS --disable-vdpau )
message ( WARNING "ffmpeg: libvdpau-dev not found, disabling Video Decode and Presentation API for Unix (VDPAU)..." )
message ( WARNING "ffmpeg: libvdpau-dev not found, disabling Video Decode and Presentation API for Unix (VDPAU)..." )
endif ( )
endif ( )
if ( VULKAN_FOUND )
list ( APPEND FFmpeg_HWACCEL_FLAGS --enable-vulkan )
list ( APPEND FFmpeg_HWACCEL_LIBRARIES ${ VULKAN_LIBRARIES } )
list ( APPEND FFmpeg_HWACCEL_INCLUDE_DIRS ${ VULKAN_INCLUDE_DIRS } )
list ( APPEND FFmpeg_HWACCEL_LDFLAGS ${ VULKAN_LDFLAGS } )
message ( STATUS "ffmpeg: vulkan libraries version ${VULKAN_VERSION} found" )
endif ( )
if ( SPIRV_HEADERS_FOUND )
list ( APPEND FFmpeg_HWACCEL_LIBRARIES ${ SPIRV_HEADERS_LIBRARIES } )
list ( APPEND FFmpeg_HWACCEL_INCLUDE_DIRS ${ SPIRV_HEADERS_INCLUDE_DIRS } )
list ( APPEND FFmpeg_HWACCEL_LDFLAGS ${ SPIRV_HEADERS_LDFLAGS } )
message ( STATUS "ffmpeg: spirv-headers libraries version ${SPIRV_HEADERS_VERSION} found" )
endif ( )
endif ( )
endif ( )
if ( PLATFORM_PS4 )
if ( PLATFORM_PS4 )
@ -247,8 +267,15 @@ else()
# ` c o n f i g u r e ` p a r a m e t e r s b u i l d s o n l y e x a c t l y w h a t y u z u n e e d s f r o m F F m p e g
# ` c o n f i g u r e ` p a r a m e t e r s b u i l d s o n l y e x a c t l y w h a t y u z u n e e d s f r o m F F m p e g
# ` - - d i s a b l e - v d p a u ` i s n e e d e d t o a v o i d l i n k i n g i s s u e s
# ` - - d i s a b l e - v d p a u ` i s n e e d e d t o a v o i d l i n k i n g i s s u e s
set ( FFmpeg_CC ${ CMAKE_C_COMPILER_LAUNCHER } ${ CMAKE_C_COMPILER } )
set ( FFmpeg_CXX ${ CMAKE_CXX_COMPILER_LAUNCHER } ${ CMAKE_CXX_COMPILER } )
set ( FFmpeg_CC ${ CMAKE_C_COMPILER_LAUNCHER } ${ CMAKE_C_COMPILER } )
set ( FFmpeg_CXX ${ CMAKE_CXX_COMPILER_LAUNCHER } ${ CMAKE_CXX_COMPILER } )
# A C + + c o m p i l e r o u g h t t o m a k e C + + b i n a r i e s , u n f o r t u n e l y u s i n g r a w ` l d ` o f t e n
# d o e s n ' t p r o p e r l y l i n k l i b c / l i b s t d c + + , w e d o n ' t e x a c t l y h a v e ` L D _ C + L D _ C X X ` t o d i f f
# b e t w e e n t h e m , s o u s e t h e C + + c o m p i l e r w r a p p e r l a u n c h e r a s a f o r m o f . . w e l l . . .
# a v o i d i n g t h e i s s u e o f s t d c + + n o t b e i n g l i n k e d , y e s , t h i s a f f e c t s C l i b r a r i e s
# b u t d u e t o t h e f a c t 9 9 % o f L D l i n k e r s u s e G C n o w a d a y s , t h i s b a s i c a l l y s h o u l d r e s o l v e
# i n t o a n o p , MSVC u n t e s t e d .
set ( FFmpeg_LD ${ CMAKE_CXX_COMPILER_LAUNCHER } ${ CMAKE_CXX_COMPILER } )
add_custom_command (
add_custom_command (
O U T P U T
O U T P U T
$ { F F m p e g _ M A K E F I L E }
$ { F F m p e g _ M A K E F I L E }
@ -269,7 +296,7 @@ else()
- - e n a b l e - p i c
- - e n a b l e - p i c
- - c c = $ { F F m p e g _ C C }
- - c c = $ { F F m p e g _ C C }
- - c x x = $ { F F m p e g _ C X X }
- - c x x = $ { F F m p e g _ C X X }
- - l d = $ { C M A K E _ L I N K E R }
- - l d = $ { F F m p e g _ L D }
- - e x t r a - c f l a g s = $ { C M A K E _ C _ F L A G S }
- - e x t r a - c f l a g s = $ { C M A K E _ C _ F L A G S }
- - e x t r a - c x x f l a g s = $ { C M A K E _ C X X _ F L A G S }
- - e x t r a - c x x f l a g s = $ { C M A K E _ C X X _ F L A G S }
- - e x t r a - l d f l a g s = $ { C M A K E _ C _ L I N K _ F L A G S }
- - e x t r a - l d f l a g s = $ { C M A K E _ C _ L I N K _ F L A G S }
@ -280,6 +307,7 @@ else()
)
)
unset ( FFmpeg_CC )
unset ( FFmpeg_CC )
unset ( FFmpeg_CXX )
unset ( FFmpeg_CXX )
unset ( FFmpeg_LD )
unset ( FFmpeg_HWACCEL_FLAGS )
unset ( FFmpeg_HWACCEL_FLAGS )
unset ( FFmpeg_CROSS_COMPILE_FLAGS )
unset ( FFmpeg_CROSS_COMPILE_FLAGS )