Add options to build with additional system libraries in place of bundled modules

This commit is contained in:
Kevin Reinholz 2026-04-02 17:21:21 -07:00
parent 3066887ff4
commit f43bd7eb80
4 changed files with 51 additions and 19 deletions

View File

@ -105,7 +105,10 @@ foreach(_opt IN LISTS _LIBRETRO_INCOMPATIBLE_OPTIONS)
endforeach()
option(ENABLE_SDL2 "Enable using SDL2" ON)
option(USE_SYSTEM_FAAD "Use the system faad2 lib (instead of the bundled one)" OFF)
option(USE_SYSTEM_SDL2 "Use the system SDL2 lib (instead of the bundled one)" OFF)
option(USE_SYSTEM_SPIRV_TOOLS "Use the system SPIRV-Tools lib (instead of the bundled one)" OFF)
option(USE_SYSTEM_XXHASH "Use the system xxHash lib (instead of the bundled one)" OFF)
# Set bundled qt as dependent options.
option(ENABLE_QT "Enable the Qt frontend" ON)
@ -541,6 +544,20 @@ if (USE_SYSTEM_SOUNDTOUCH)
target_include_directories(SoundTouch INTERFACE "${SOUNDTOUCH_INCLUDE_DIRS}")
endif()
if (USE_SYSTEM_XXHASH)
find_package(PkgConfig)
if(PkgConfig_FOUND)
pkg_check_modules(libxxhash_PKGCONFIG IMPORTED_TARGET xxhash)
endif()
endif()
if (USE_SYSTEM_FAAD)
find_package(PkgConfig)
if(PkgConfig_FOUND)
pkg_check_modules(libfaad_PKGCONFIG IMPORTED_TARGET faad)
endif()
endif()
add_subdirectory(src)
set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT citra_meta)

View File

@ -176,7 +176,9 @@ endif()
add_subdirectory(open_source_archives)
# faad2
add_subdirectory(faad2 EXCLUDE_FROM_ALL)
if(NOT USE_SYSTEM_FAAD)
add_subdirectory(faad2 EXCLUDE_FROM_ALL)
endif()
# Dynamic library headers
add_library(library-headers INTERFACE)
@ -447,9 +449,12 @@ if (ENABLE_VULKAN)
endif()
# spirv-tools
# TODO: Implement USE_SYSTEM_SPIRV_TOOLS -OS
set(SPIRV_SKIP_EXECUTABLES ON)
add_subdirectory(spirv-tools EXCLUDE_FROM_ALL)
if(USE_SYSTEM_SPIRV_TOOLS)
find_package(SPIRV-Tools REQUIRED)
else()
set(SPIRV_SKIP_EXECUTABLES ON)
add_subdirectory(spirv-tools EXCLUDE_FROM_ALL)
endif()
# glslang
if(USE_SYSTEM_GLSLANG)
@ -507,16 +512,18 @@ if (ENABLE_VULKAN)
endif()
endif()
set(XXHASH_BUILD_XXHSUM OFF)
add_subdirectory(xxHash/cmake_unofficial EXCLUDE_FROM_ALL)
target_compile_definitions(xxhash PRIVATE XXH_FORCE_MEMORY_ACCESS=2)
if(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64|AMD64")
target_compile_definitions(xxhash PRIVATE XXH_VECTOR=XXH_SSE2)
message(STATUS "Enabling SSE2 for xxHash")
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64|ARM64|armv8")
target_compile_definitions(xxhash PRIVATE XXH_VECTOR=XXH_NEON)
message(STATUS "Enabling NEON for xxHash")
else()
target_compile_definitions(xxhash PRIVATE XXH_VECTOR=XXH_SCALAR)
message(STATUS "Disabling SIMD for xxHash")
endif()
if(NOT USE_SYSTEM_XXHASH)
set(XXHASH_BUILD_XXHSUM OFF)
add_subdirectory(xxHash/cmake_unofficial EXCLUDE_FROM_ALL)
target_compile_definitions(xxhash PRIVATE XXH_FORCE_MEMORY_ACCESS=2)
if(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64|AMD64")
target_compile_definitions(xxhash PRIVATE XXH_VECTOR=XXH_SSE2)
message(STATUS "Enabling SSE2 for xxHash")
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64|ARM64|armv8")
target_compile_definitions(xxhash PRIVATE XXH_VECTOR=XXH_NEON)
message(STATUS "Enabling NEON for xxHash")
else()
target_compile_definitions(xxhash PRIVATE XXH_VECTOR=XXH_SCALAR)
message(STATUS "Disabling SIMD for xxHash")
endif()
endif()

View File

@ -45,7 +45,11 @@ add_library(audio_core STATIC
create_target_directory_groups(audio_core)
target_link_libraries(audio_core PUBLIC citra_common citra_core)
target_link_libraries(audio_core PRIVATE faad2 SoundTouch teakra)
if(USE_SYSTEM_FAAD)
target_link_libraries(audio_core PRIVATE faad SoundTouch teakra)
else()
target_link_libraries(audio_core PRIVATE faad2 SoundTouch teakra)
endif()
if(ENABLE_SDL2)
target_link_libraries(audio_core PRIVATE SDL2::SDL2)

View File

@ -176,4 +176,8 @@ if (SSE42_COMPILE_OPTION)
target_compile_options(citra_common PRIVATE ${SSE42_COMPILE_OPTION})
endif()
target_link_libraries(citra_common PUBLIC xxHash::xxhash)
if (USE_SYSTEM_XXHASH)
target_link_libraries(citra_common PUBLIC xxhash)
else()
target_link_libraries(citra_common PUBLIC xxHash::xxhash)
endif()