From 3880772eb0e78f95ddec48fafa6833b45bf45dd0 Mon Sep 17 00:00:00 2001 From: Steve Lhomme <robux4@ycbcr.xyz> Date: Wed, 9 Oct 2024 11:45:07 +0200 Subject: [PATCH] buildsystem: use 16k max page size By passing "-z max-page-size=16384" to the linker. Newer Android devices use 16KB and require a recompilation with this flag. See https://developer.android.com/guide/practices/page-sizes Neither VLC nor the contribs (used by Android) use PAGE_SIZE directly so it should be fine. This flag is needed regardless the use of the NDK 27 or not. --- buildsystem/build-libvlc.sh | 7 +++++-- libvlc/jni/libvlc.mk | 1 + libvlc/jni/libvlcjni.mk | 1 + 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/buildsystem/build-libvlc.sh b/buildsystem/build-libvlc.sh index 236210b..f445233 100755 --- a/buildsystem/build-libvlc.sh +++ b/buildsystem/build-libvlc.sh @@ -167,8 +167,9 @@ fi # cf. GLOBAL_CFLAGS from ${ANDROID_NDK}/build/core/default-build-commands.mk VLC_CFLAGS="${VLC_CFLAGS} -fPIC -fdata-sections -ffunction-sections -funwind-tables \ - -fstack-protector-strong -no-canonical-prefixes" -VLC_CXXFLAGS="-fexceptions -frtti" + -fstack-protector-strong -no-canonical-prefixes -Wl,-z,max-page-size=16384" +VLC_CXXFLAGS="-fexceptions -frtti -Wl,-z,max-page-size=16384" +VLC_LDFLAGS="-z max-page-size=16384" # Release or not? if [ "$AVLC_RELEASE" = 1 ]; then @@ -187,6 +188,7 @@ echo "API: $ANDROID_API" echo "PATH: $PATH" echo "VLC_CFLAGS: ${VLC_CFLAGS}" echo "VLC_CXXFLAGS: ${VLC_CXXFLAGS}" +echo "VLC_LDFLAGS: ${VLC_LDFLAGS}" if [ -z "$ANDROID_NDK" ]; then echo "Please set the ANDROID_NDK environment variable with its path." @@ -501,6 +503,7 @@ else echo "EXTRA_CFLAGS=${VLC_CFLAGS}" >> $VLC_CONTRIB_DIR/config.mak echo "EXTRA_CXXFLAGS=${VLC_CXXFLAGS}" >> $VLC_CONTRIB_DIR/config.mak + echo "EXTRA_LDFLAGS=${VLC_LDFLAGS}" >> $VLC_CONTRIB_DIR/config.mak echo "CC=${CROSS_CLANG}" >> $VLC_CONTRIB_DIR/config.mak echo "CXX=${CROSS_CLANG}++" >> $VLC_CONTRIB_DIR/config.mak echo "AR=${CROSS_TOOLS}ar" >> $VLC_CONTRIB_DIR/config.mak diff --git a/libvlc/jni/libvlc.mk b/libvlc/jni/libvlc.mk index cc1279c..2de85b8 100644 --- a/libvlc/jni/libvlc.mk +++ b/libvlc/jni/libvlc.mk @@ -34,6 +34,7 @@ LOCAL_LDLIBS := \ -ljpeg \ -Wl,-Bsymbolic LOCAL_CXXFLAGS := -std=c++17 +LOCAL_LDFLAGS += "-Wl,-z,max-page-size=16384" # This duplicates the libvlc* link flags, but it propagates the dependency # on the native build which is what we want overall LOCAL_STATIC_LIBRARIES := libvlccore libvlccompat libvlc-native diff --git a/libvlc/jni/libvlcjni.mk b/libvlc/jni/libvlcjni.mk index aed9b32..10dab50 100644 --- a/libvlc/jni/libvlcjni.mk +++ b/libvlc/jni/libvlcjni.mk @@ -17,6 +17,7 @@ LOCAL_SRC_FILES += std_logger.c LOCAL_C_INCLUDES := $(VLC_SRC_DIR)/include $(VLC_BUILD_DIR)/include LOCAL_CFLAGS := -std=c17 LOCAL_LDLIBS := -llog +LOCAL_LDFLAGS += "-Wl,-z,max-page-size=16384" LOCAL_SHARED_LIBRARIES := libvlc include $(BUILD_SHARED_LIBRARY) -- GitLab