From 11111e7dd963c241fad7dd1a82c672be720e228c Mon Sep 17 00:00:00 2001 From: crueter Date: Sat, 20 Sep 2025 21:04:17 -0400 Subject: [PATCH] android fixes Signed-off-by: crueter --- CMakeLists.txt | 6 ++-- cpmfile.json | 2 +- externals/CMakeLists.txt | 2 ++ externals/ffmpeg/CMakeLists.txt | 35 +++++++++++---------- src/android/app/src/main/jni/CMakeLists.txt | 2 +- 5 files changed, 26 insertions(+), 21 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 6b88ddac67..3b42bce364 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -230,12 +230,13 @@ if (ENABLE_OPENSSL) endif() if (ANDROID AND YUZU_DOWNLOAD_ANDROID_VVL) - set(vvl_version "sdk-1.3.261.1") + # TODO(crueter): CPM this + set(vvl_version "1.4.321.0") set(vvl_zip_file "${CMAKE_BINARY_DIR}/externals/vvl-android.zip") if (NOT EXISTS "${vvl_zip_file}") # Download and extract validation layer release to externals directory set(vvl_base_url "https://github.com/KhronosGroup/Vulkan-ValidationLayers/releases/download") - file(DOWNLOAD "${vvl_base_url}/${vvl_version}/android-binaries-${vvl_version}-android.zip" + file(DOWNLOAD "${vvl_base_url}/vulkan-sdk-${vvl_version}/android-binaries-${vvl_version}.zip" "${vvl_zip_file}" SHOW_PROGRESS) execute_process(COMMAND ${CMAKE_COMMAND} -E tar xf "${vvl_zip_file}" WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/externals") @@ -378,6 +379,7 @@ if (YUZU_USE_CPM) set(BUILD_SHARED_LIBS OFF) set(BUILD_TESTING OFF) + set(ENABLE_TESTING OFF) # TODO(crueter): renderdoc? diff --git a/cpmfile.json b/cpmfile.json index 887e958533..f1fd5ce1cf 100644 --- a/cpmfile.json +++ b/cpmfile.json @@ -4,7 +4,7 @@ "package": "OpenSSL", "name": "openssl", "repo": "crueter-ci/OpenSSL", - "version": "3.5.2", + "version": "3.5.3", "min_version": "1.1.1" }, "boost": { diff --git a/externals/CMakeLists.txt b/externals/CMakeLists.txt index b46e624fb9..754ba61a0b 100644 --- a/externals/CMakeLists.txt +++ b/externals/CMakeLists.txt @@ -101,6 +101,8 @@ if (YUZU_USE_EXTERNAL_FFMPEG OR YUZU_USE_BUNDLED_FFMPEG) set(FFmpeg_LIBRARIES "${FFmpeg_LIBRARIES}" PARENT_SCOPE) set(FFmpeg_LIBRARY_DIR "${FFmpeg_LIBRARY_DIR}" PARENT_SCOPE) set(FFmpeg_INCLUDE_DIR "${FFmpeg_INCLUDE_DIR}" PARENT_SCOPE) + + message(STATUS "FFmpeg Libraries: ${FFmpeg_LIBRARIES}") endif() # TZDB (Time Zone Database) diff --git a/externals/ffmpeg/CMakeLists.txt b/externals/ffmpeg/CMakeLists.txt index 1b21dd711d..59397f6acb 100644 --- a/externals/ffmpeg/CMakeLists.txt +++ b/externals/ffmpeg/CMakeLists.txt @@ -8,7 +8,12 @@ include(CPMUtil) # TODO(crueter, MaranBr): Externals FFmpeg 8.0 -if (UNIX) +set(FFmpeg_HWACCEL_LIBRARIES) +set(FFmpeg_HWACCEL_FLAGS) +set(FFmpeg_HWACCEL_INCLUDE_DIRS) +set(FFmpeg_HWACCEL_LDFLAGS) + +if (UNIX AND NOT ANDROID) find_package(PkgConfig REQUIRED) if (NOT ANDROID) pkg_check_modules(LIBVA libva) @@ -17,11 +22,6 @@ if (UNIX) pkg_check_modules(VDPAU vdpau) endif() - set(FFmpeg_HWACCEL_LIBRARIES) - set(FFmpeg_HWACCEL_FLAGS) - set(FFmpeg_HWACCEL_INCLUDE_DIRS) - set(FFmpeg_HWACCEL_LDFLAGS) - if (NOT APPLE) # In Solaris needs explicit linking for ffmpeg which links to /lib/amd64/libX11.so if(PLATFORM_SUN) @@ -61,7 +61,7 @@ if (UNIX) message(STATUS "ffmpeg: va-api libraries version ${LIBVA_VERSION} found") else() list(APPEND FFmpeg_HWACCEL_FLAGS --disable-vaapi) - message(WARNING "ffmpeg: libva-dev not found, disabling Video Aceleraion API (VA-API)...") + message(WARNING "ffmpeg: libva-dev not found, disabling Video Acceleration API (VA-API)...") endif() if (FFNVCODEC_FOUND) @@ -78,14 +78,14 @@ if (UNIX) list(APPEND FFmpeg_HWACCEL_LDFLAGS ${FFNVCODEC_LDFLAGS}) message(STATUS "ffmpeg: ffnvcodec libraries version ${FFNVCODEC_VERSION} found") # ffnvenc could load CUDA libraries at the runtime using dlopen/dlsym or LoadLibrary/GetProcAddress - # here we handle the hard-linking senario where CUDA is linked during compilation + # here we handle the hard-linking scenario where CUDA is linked during compilation if (CUDA_FOUND) # This line causes build error if CUDA_INCLUDE_DIRS is anything but a single non-empty value #list(APPEND FFmpeg_HWACCEL_FLAGS --extra-cflags=-I${CUDA_INCLUDE_DIRS}) list(APPEND FFmpeg_HWACCEL_LIBRARIES ${CUDA_LIBRARIES}) list(APPEND FFmpeg_HWACCEL_INCLUDE_DIRS ${CUDA_INCLUDE_DIRS}) list(APPEND FFmpeg_HWACCEL_LDFLAGS ${CUDA_LDFLAGS}) - message(STATUS "ffmpeg: CUDA libraries found, hard-linking will be performed") + message(STATUS "ffmpeg: CUDA libraries version ${CUDA_VERSION} found, hard-linking will be performed") endif(CUDA_FOUND) endif() @@ -107,8 +107,14 @@ endif() if (YUZU_USE_BUNDLED_FFMPEG) # MSVC conflicts with ksuser otherwise + # Android needs some deps to be compiled with PIC (TODO) # TODO(crueter) fix - set(BUILD_SHARED_LIBS ${MSVC}) + if (MSVC OR ANDROID) + set(BUILD_SHARED_LIBS ON) + else() + set(BUILD_SHARED_LIBS OFF) + endif() + AddJsonPackage(ffmpeg-ci) set(FFmpeg_INCLUDE_DIR @@ -127,13 +133,8 @@ if (YUZU_USE_BUNDLED_FFMPEG) ) set(FFmpeg_LIBRARIES - cubeb::cubeb - ksuser - FFmpeg::swscale - FFmpeg::avutil - FFmpeg::avcodec - FFmpeg::avfilter - ${FFMPEG_HWACCEL_LIBRARIES} + FFmpeg::FFmpeg + ${FFmpeg_HWACCEL_LIBRARIES} PARENT_SCOPE ) else() diff --git a/src/android/app/src/main/jni/CMakeLists.txt b/src/android/app/src/main/jni/CMakeLists.txt index 1390d2854c..0557236394 100644 --- a/src/android/app/src/main/jni/CMakeLists.txt +++ b/src/android/app/src/main/jni/CMakeLists.txt @@ -30,4 +30,4 @@ if (ENABLE_OPENSSL OR ENABLE_WEB_SERVICE) target_link_libraries(yuzu-android PRIVATE OpenSSL::SSL cpp-jwt::cpp-jwt) endif() - set(CPACK_PACKAGE_EXECUTABLES ${CPACK_PACKAGE_EXECUTABLES} yuzu-android) +set(CPACK_PACKAGE_EXECUTABLES ${CPACK_PACKAGE_EXECUTABLES} yuzu-android)