From 9f60bb40a27bd73c542d5f4e10387a213d82f33f Mon Sep 17 00:00:00 2001 From: akallabeth Date: Sat, 22 Feb 2025 14:58:11 +0100 Subject: [PATCH 1/3] [cmake,android] enable LTO if CMake >= 3.20.0 --- cmake/CommonConfigOptions.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/CommonConfigOptions.cmake b/cmake/CommonConfigOptions.cmake index 31a2ef3a6..9c807e237 100644 --- a/cmake/CommonConfigOptions.cmake +++ b/cmake/CommonConfigOptions.cmake @@ -14,7 +14,7 @@ endif() # known issue on android, thus disabled until we support newer CMake # https://github.com/android/ndk/issues/1444 -if(NOT ANDROID) +if(NOT ANDROID OR ("${CMAKE_VERSION}" GREATER_EQUAL "3.20.0")) if(POLICY CMP0069) cmake_policy(SET CMP0069 NEW) endif() From 12764b1ebe5891fdf0b6a3406add36dc1c3c7409 Mon Sep 17 00:00:00 2001 From: akallabeth Date: Sat, 22 Feb 2025 15:16:32 +0100 Subject: [PATCH 2/3] [warnings,android] fix build warnings --- channels/audin/client/opensles/audin_opensl_es.c | 8 +++----- channels/rdpsnd/client/opensles/rdpsnd_opensles.c | 8 +++----- libfreerdp/primitives/prim_copy.c | 2 +- winpr/libwinpr/comm/comm_io.c | 10 ++++++++-- 4 files changed, 15 insertions(+), 13 deletions(-) diff --git a/channels/audin/client/opensles/audin_opensl_es.c b/channels/audin/client/opensles/audin_opensl_es.c index 9885b033a..d68c4330c 100644 --- a/channels/audin/client/opensles/audin_opensl_es.c +++ b/channels/audin/client/opensles/audin_opensl_es.c @@ -295,10 +295,8 @@ static UINT audin_opensles_parse_addin_args(AudinOpenSLESDevice* device, const A FREERDP_ENTRY_POINT(UINT VCAPITYPE opensles_freerdp_audin_client_subsystem_entry( PFREERDP_AUDIN_DEVICE_ENTRY_POINTS pEntryPoints)) { - const ADDIN_ARGV* args; - AudinOpenSLESDevice* opensles; - UINT error; - opensles = (AudinOpenSLESDevice*)calloc(1, sizeof(AudinOpenSLESDevice)); + UINT error = ERROR_INTERNAL_ERROR; + AudinOpenSLESDevice* opensles = (AudinOpenSLESDevice*)calloc(1, sizeof(AudinOpenSLESDevice)); if (!opensles) { @@ -313,7 +311,7 @@ FREERDP_ENTRY_POINT(UINT VCAPITYPE opensles_freerdp_audin_client_subsystem_entry opensles->iface.Close = audin_opensles_close; opensles->iface.Free = audin_opensles_free; opensles->rdpcontext = pEntryPoints->rdpcontext; - args = pEntryPoints->args; + const ADDIN_ARGV* args = pEntryPoints->args; if ((error = audin_opensles_parse_addin_args(opensles, args))) { diff --git a/channels/rdpsnd/client/opensles/rdpsnd_opensles.c b/channels/rdpsnd/client/opensles/rdpsnd_opensles.c index 1417899ef..e6c3b7934 100644 --- a/channels/rdpsnd/client/opensles/rdpsnd_opensles.c +++ b/channels/rdpsnd/client/opensles/rdpsnd_opensles.c @@ -335,11 +335,9 @@ static int rdpsnd_opensles_parse_addin_args(rdpsndDevicePlugin* device, ADDIN_AR FREERDP_ENTRY_POINT(UINT VCAPITYPE opensles_freerdp_rdpsnd_client_subsystem_entry( PFREERDP_RDPSND_DEVICE_ENTRY_POINTS pEntryPoints)) { - ADDIN_ARGV* args; - rdpsndopenslesPlugin* opensles; - UINT error; + UINT error = ERROR_INTERNAL_ERROR; DEBUG_SND("pEntryPoints=%p", (void*)pEntryPoints); - opensles = (rdpsndopenslesPlugin*)calloc(1, sizeof(rdpsndopenslesPlugin)); + rdpsndopenslesPlugin* opensles = (rdpsndopenslesPlugin*)calloc(1, sizeof(rdpsndopenslesPlugin)); if (!opensles) return CHANNEL_RC_NO_MEMORY; @@ -352,7 +350,7 @@ FREERDP_ENTRY_POINT(UINT VCAPITYPE opensles_freerdp_rdpsnd_client_subsystem_entr opensles->device.Play = rdpsnd_opensles_play; opensles->device.Close = rdpsnd_opensles_close; opensles->device.Free = rdpsnd_opensles_free; - args = pEntryPoints->args; + const ADDIN_ARGV* args = pEntryPoints->args; rdpsnd_opensles_parse_addin_args((rdpsndDevicePlugin*)opensles, args); if (!opensles->device_name) diff --git a/libfreerdp/primitives/prim_copy.c b/libfreerdp/primitives/prim_copy.c index 27b472d5d..d5a26b698 100644 --- a/libfreerdp/primitives/prim_copy.c +++ b/libfreerdp/primitives/prim_copy.c @@ -237,7 +237,7 @@ pstatus_t generic_image_copy_no_overlap_convert( &pDstData[dstVMultiplier * (y + nYDst) * nDstStep + dstVOffset]; SSIZE_T x = 0; - WINPR_PRAGMA_UNROLL_LOOP + // WINPR_PRAGMA_UNROLL_LOOP for (; x < width; x++) { const UINT32 color = FreeRDPReadColor_int(&srcLine[(x + nXSrc) * srcByte], SrcFormat); diff --git a/winpr/libwinpr/comm/comm_io.c b/winpr/libwinpr/comm/comm_io.c index fa953ba1a..fd1526212 100644 --- a/winpr/libwinpr/comm/comm_io.c +++ b/winpr/libwinpr/comm/comm_io.c @@ -226,7 +226,10 @@ BOOL CommReadFile(HANDLE hDevice, LPVOID lpBuffer, DWORD nNumberOfBytesToRead, * there is no eventfd_read() but this not the case. */ /* discard a possible and no more relevant event */ #if defined(WINPR_HAVE_SYS_EVENTFD_H) - eventfd_read(pComm->fd_read_event, NULL); + { + eventfd_t val = 0; + (void)eventfd_read(pComm->fd_read_event, &val); + } #endif biggestFd = pComm->fd_read; @@ -400,7 +403,10 @@ BOOL CommWriteFile(HANDLE hDevice, LPCVOID lpBuffer, DWORD nNumberOfBytesToWrite /* discard a possible and no more relevant event */ #if defined(WINPR_HAVE_SYS_EVENTFD_H) - eventfd_read(pComm->fd_write_event, NULL); + { + eventfd_t val = 0; + (void)eventfd_read(pComm->fd_write_event, &val); + } #endif /* ms */ From 505e919feccd4a517562390abf258b5af17c29f0 Mon Sep 17 00:00:00 2001 From: akallabeth Date: Sat, 22 Feb 2025 16:02:33 +0100 Subject: [PATCH 3/3] [build,android] fix x86_64 build --- scripts/android-build-ffmpeg.sh | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/scripts/android-build-ffmpeg.sh b/scripts/android-build-ffmpeg.sh index 647629936..e851696fe 100755 --- a/scripts/android-build-ffmpeg.sh +++ b/scripts/android-build-ffmpeg.sh @@ -103,11 +103,15 @@ function build { set_toolchain_clang_paths LDFLAGS=$(get_arch_specific_ldflags) - PATH=$ANDROID_NDK:$PATH + CARCH=$TARGET_ARCH + if [ "$CARCH" == "x86_64" ]; then + CARCH="x86-64" + fi + PATH=$ANDROID_NDK:$PATH common_run ./configure \ --cross-prefix="${BUILD_HOST}-" \ --sysroot="${ANDROID_NDK}/toolchains/llvm/prebuilt/${TOOLCHAIN}/sysroot" \ - --arch="${TARGET_ARCH}" \ + --arch="${CARCH}" \ --cpu="${TARGET_CPU}" \ --cc="${CC}" \ --cxx="${CXX}" \ @@ -122,6 +126,7 @@ function build { ${ARCH_OPTIONS} \ --enable-cross-compile \ --enable-pic \ + --enable-lto \ --enable-jni \ --enable-mediacodec \ --enable-shared \