fix(build): FFmpeg links into the Linux prx and without Windows libraries there

The MinGW FFmpeg package needs bcrypt, ole32 and user32; linking them
unconditionally broke libSceAjm.native.prx on Linux. The Linux package's
x86 assembly references its constants PC32, which ld refuses in a shared
object unless the archives' symbols stay local: --exclude-libs,ALL keeps
them out of the prx's dynamic symbols.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
STL1te 2026-09-30 09:34:56 +03:00
parent 03465e769c
commit d252a3c72c
1 changed files with 5 additions and 1 deletions

View File

@ -36,7 +36,11 @@ add_subdirectory(3rdparty/SDL2)
set(CMAKE_EXE_LINKER_FLAGS "${ANYPS5_EXE_LINKER_FLAGS}")
set(ARCHITECTURE x86_64)
add_subdirectory(3rdparty/ffmpeg-core)
target_link_libraries(ffmpeg INTERFACE bcrypt ole32 user32)
if(MINGW)
target_link_libraries(ffmpeg INTERFACE bcrypt ole32 user32)
elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux")
target_link_options(ffmpeg INTERFACE LINKER:--exclude-libs,ALL)
endif()
set(FT_DISABLE_ZLIB ON CACHE BOOL "" FORCE)
set(FT_DISABLE_BZIP2 ON CACHE BOOL "" FORCE)