diff --git a/buildsystem/build-libvlc.sh b/buildsystem/build-libvlc.sh index 236210b42d7f2461f3bf3f09c71c1a0dfa06b155..cb6bb89dbd628f875f21e030ce2f8b61c051e76e 100755 --- a/buildsystem/build-libvlc.sh +++ b/buildsystem/build-libvlc.sh @@ -119,13 +119,6 @@ fi VLC_BUILD_DIR="$(cd $VLC_SRC_DIR/; pwd)/build-android-${TARGET_TUPLE}" -if [ -z $VLC_TARBALLS ]; then - VLC_TARBALLS="$(cd $VLC_SRC_DIR/;pwd)/contrib/tarballs" -fi -if [ ! -d $VLC_TARBALLS ]; then - mkdir -p $VLC_TARBALLS -fi - VLC_OUT_PATH="$VLC_BUILD_DIR/ndk" mkdir -p $VLC_OUT_PATH @@ -165,11 +158,6 @@ else VLC_CFLAGS="-g -O2" 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" - # Release or not? if [ "$AVLC_RELEASE" = 1 ]; then VLC_CFLAGS="${VLC_CFLAGS} -DNDEBUG " @@ -178,6 +166,11 @@ else NDK_DEBUG=1 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="${VLC_CFLAGS} -fexceptions -frtti" + ############### # DISPLAY ABI # ############### @@ -247,12 +240,16 @@ avlc_pkgconfig() { # Enforce pkg-config files coming from VLC contribs PKG_CONFIG_PATH="$VLC_CONTRIB/lib/pkgconfig/" \ - PKG_CONFIG_LIBDIR="$VLC_CONTRIB/lib/pkgconfig/" \ pkg-config "$@" } avlc_build() { +# Set PKG_CONFIG_LIBDIR to an empty string to prevent +# pkg-config from finding dependencies on the build +# machine, so that it only finds deps in contribs +export PKG_CONFIG_LIBDIR="" + ########################### # VLC BOOTSTRAP ARGUMENTS # ########################### @@ -276,6 +273,7 @@ VLC_CONTRIB_ARGS="\ --disable-samplerate \ --disable-schroedinger \ --disable-sidplay2 \ + --disable-sqlite \ --disable-srt \ --disable-vnc \ --disable-vncclient \ @@ -456,12 +454,10 @@ fi echo "Building the contribs" -VLC_CONTRIB_DIR=$VLC_SRC_DIR/contrib/contrib-android-${TARGET_TUPLE} +VLC_CONTRIB_DIR=$VLC_SRC_DIR/contrib/contrib-${TARGET_TUPLE} VLC_CONTRIB_OUT_DIR=$VLC_SRC_DIR/contrib/${TARGET_TUPLE} mkdir -p $VLC_CONTRIB_OUT_DIR/lib/pkgconfig -avlc_gen_pc_file $VLC_CONTRIB_OUT_DIR/lib/pkgconfig EGL 1.1 -avlc_gen_pc_file $VLC_CONTRIB_OUT_DIR/lib/pkgconfig GLESv2 2 mkdir -p $VLC_CONTRIB_DIR/lib/pkgconfig @@ -491,9 +487,9 @@ if [ "$AVLC_USE_PREBUILT_CONTRIBS" -gt "0" ]; then avlc_checkfail "Fetching prebuilt contribs from ${VLC_PREBUILT_CONTRIBS_URL} failed" fi # list packages to be built - make -C $VLC_CONTRIB_DIR TARBALLS="$VLC_TARBALLS" list + make -C $VLC_CONTRIB_DIR list # build native tools - make -C $VLC_CONTRIB_DIR TARBALLS="$VLC_TARBALLS" tools + make -C $VLC_CONTRIB_DIR tools else # Some libraries have arm assembly which won't build in thumb mode # We append -marm to the CFLAGS of these libs to disable thumb mode @@ -511,14 +507,14 @@ else echo "STRIP=${CROSS_TOOLS}strip" >> $VLC_CONTRIB_DIR/config.mak # list packages to be built - make -C $VLC_CONTRIB_DIR TARBALLS="$VLC_TARBALLS" list + make -C $VLC_CONTRIB_DIR list - make -C $VLC_CONTRIB_DIR TARBALLS="$VLC_TARBALLS" $MAKEFLAGS fetch + make -C $VLC_CONTRIB_DIR $MAKEFLAGS fetch avlc_checkfail "contribs: make fetch failed" #export the PATH # Make - make -C $VLC_CONTRIB_DIR TARBALLS="$VLC_TARBALLS" $MAKEFLAGS -k || make -C $VLC_CONTRIB_DIR TARBALLS="$VLC_TARBALLS" $MAKEFLAGS -j1 + make -C $VLC_CONTRIB_DIR $MAKEFLAGS -k || make -C $VLC_CONTRIB_DIR $MAKEFLAGS -j1 avlc_checkfail "contribs: make failed" # Make prebuilt contribs package @@ -540,11 +536,6 @@ if [ ${ANDROID_API} -lt "26" ]; then export ac_cv_header_sys_shm_h=no fi -# always use fixups for search.h and tdestroy -export ac_cv_header_search_h=no -export ac_cv_func_tdestroy=no -export ac_cv_func_tfind=no - if [ ! -e $VLC_BUILD_DIR/config.h -o "$AVLC_RELEASE" = 1 ]; then VLC_CONFIGURE_DEBUG="" if [ ! "$AVLC_RELEASE" = 1 ]; then @@ -554,7 +545,7 @@ if [ ! -e $VLC_BUILD_DIR/config.h -o "$AVLC_RELEASE" = 1 ]; then BEFORE_VLC_BUILD_DIR=$(pwd -P) cd $VLC_BUILD_DIR CFLAGS="${VLC_CFLAGS}" \ - CXXFLAGS="${VLC_CFLAGS} ${VLC_CXXFLAGS}" \ + CXXFLAGS="${VLC_CXXFLAGS}" \ CC="${CROSS_CLANG}" \ CXX="${CROSS_CLANG}++" \ NM="${CROSS_TOOLS}nm" \ @@ -562,7 +553,6 @@ if [ ! -e $VLC_BUILD_DIR/config.h -o "$AVLC_RELEASE" = 1 ]; then RANLIB="${CROSS_TOOLS}ranlib" \ AR="${CROSS_TOOLS}ar" \ AS="${CROSS_TOOLS}as" \ - PKG_CONFIG_LIBDIR=$VLC_SRC_DIR/contrib/$TARGET_TUPLE/lib/pkgconfig \ ../configure --host=$TARGET_TUPLE \ --with-contrib=${VLC_SRC_DIR}/contrib/${TARGET_TUPLE} \ --prefix=${VLC_BUILD_DIR}/install/ \ @@ -620,20 +610,6 @@ avlc_add_lib_to_redefine() { avlc_add_symbol_to_redefine "$("${CROSS_TOOLS}nm" -g $(avlc_find_lib ${VLC_BUILD_DIR} $1) | grep ' T ' | cut -f3 -d ' ')" } -# Generic symbols -avlc_add_symbol_to_redefine AccessOpen -avlc_add_symbol_to_redefine AccessClose -avlc_add_symbol_to_redefine StreamOpen -avlc_add_symbol_to_redefine StreamClose -avlc_add_symbol_to_redefine OpenDemux -avlc_add_symbol_to_redefine CloseDemux -avlc_add_symbol_to_redefine DemuxOpen -avlc_add_symbol_to_redefine DemuxClose -avlc_add_symbol_to_redefine OpenFilter -avlc_add_symbol_to_redefine CloseFilter -avlc_add_symbol_to_redefine Open -avlc_add_symbol_to_redefine Close - #libvlc_json avlc_add_symbol_to_redefine json_read avlc_add_symbol_to_redefine json_parse_error @@ -664,7 +640,7 @@ EOF BUILTINS="$BUILTINS vlc_entry__$name,\n"; done; BUILTINS="$BUILTINS NULL\n};\n"; \ -printf "/* Autogenerated from the list of modules */\n#include <unistd.h>\n$DEFINITION\n$BUILTINS\n" > $VLC_OUT_PATH/libvlcjni-modules.c +printf "/* Autogenerated from the list of modules */\n#include <unistd.h>\n$DEFINITION\n$BUILTINS\n" > $VLC_OUT_PATH/libvlc-modules.c DEFINITION="" BUILTINS="const void *libvlc_functions[] = {\n"; @@ -674,7 +650,7 @@ do BUILTINS="$BUILTINS $func,\n"; done BUILTINS="$BUILTINS NULL\n};\n"; \ -printf "/* Autogenerated from the list of modules */\n#include <unistd.h>\n$DEFINITION\n$BUILTINS\n" > $VLC_OUT_PATH/libvlcjni-symbols.c +printf "/* Autogenerated from the list of modules */\n#include <unistd.h>\n$DEFINITION\n$BUILTINS\n" > $VLC_OUT_PATH/libvlc-symbols.c rm ${REDEFINED_VLC_MODULES_DIR}/syms @@ -683,14 +659,7 @@ rm ${REDEFINED_VLC_MODULES_DIR}/syms ########################### VLC_MODULES=$(avlc_find_modules ${REDEFINED_VLC_MODULES_DIR}) -VLC_CONTRIB_LDFLAGS=$(for i in $(/bin/ls $VLC_CONTRIB/lib/pkgconfig/*.pc); do avlc_pkgconfig --libs $i; done |xargs) - -# Lua contrib doesn't expose a pkg-config file with libvlc 3.x and is -# not probed by the previous command in VLC_CONTRIB_LDFLAGS, so probe -# whether it was detected or add it manually to the LDFLAGS. -if ! avlc_pkgconfig --exists lua; then - VLC_CONTRIB_LDFLAGS="$VLC_CONTRIB_LDFLAGS '$VLC_CONTRIB/lib/liblua.a'" -fi +VLC_CONTRIB_LDLIBS=$(cd $VLC_CONTRIB/lib/pkgconfig; avlc_pkgconfig --libs $(ls *.pc | sed -e 's/\.pc$//' | xargs)) echo -e "ndk-build vlc" @@ -700,7 +669,7 @@ $NDK_BUILD -C $LIBVLCJNI_ROOT/libvlc \ VLC_SRC_DIR="$VLC_SRC_DIR" \ VLC_BUILD_DIR="$VLC_BUILD_DIR" \ VLC_CONTRIB="$VLC_CONTRIB" \ - VLC_CONTRIB_LDFLAGS="$VLC_CONTRIB_LDFLAGS" \ + VLC_CONTRIB_LDLIBS="$VLC_CONTRIB_LDLIBS" \ VLC_MODULES="$VLC_MODULES" \ APP_BUILD_SCRIPT=jni/libvlc.mk \ APP_PLATFORM=android-${ANDROID_API} \ diff --git a/libvlc/jni/libvlc.mk b/libvlc/jni/libvlc.mk index cc1279cadcbe794df4b53f9bfd16c4cde35ce46e..87b04b6898e7ff1db5c15a7e93f4673c63e1d86c 100644 --- a/libvlc/jni/libvlc.mk +++ b/libvlc/jni/libvlc.mk @@ -1,40 +1,18 @@ LOCAL_PATH := $(call my-dir) # VLC's buildsystem resulting binaries -include $(CLEAN_VARS) -LOCAL_MODULE := libvlccompat -LOCAL_SRC_FILES := $(VLC_BUILD_DIR)/compat/.libs/libcompat.a -include $(PREBUILT_STATIC_LIBRARY) - -include $(CLEAN_VARS) -LOCAL_MODULE := libvlccore -LOCAL_SRC_FILES := $(VLC_BUILD_DIR)/src/.libs/libvlccore.a -include $(PREBUILT_STATIC_LIBRARY) - -include $(CLEAN_VARS) -LOCAL_MODULE := libvlc-native -LOCAL_MODULE_FILENAME := libvlc -LOCAL_SRC_FILES := $(VLC_BUILD_DIR)/lib/.libs/libvlc.a -LOCAL_STATIC_LIBRARIES := libvlccore -include $(PREBUILT_STATIC_LIBRARY) - # libvlc build with all its modules include $(CLEAR_VARS) LOCAL_MODULE := libvlc -LOCAL_SRC_FILES := $(VLC_BUILD_DIR)/ndk/libvlcjni-modules.c \ - $(VLC_BUILD_DIR)/ndk/libvlcjni-symbols.c +LOCAL_SRC_FILES := $(VLC_BUILD_DIR)/ndk/libvlc-modules.c \ + $(VLC_BUILD_DIR)/ndk/libvlc-symbols.c LOCAL_LDFLAGS := -L$(VLC_CONTRIB)/lib LOCAL_LDLIBS := \ $(VLC_MODULES) \ $(VLC_BUILD_DIR)/lib/.libs/libvlc.a \ $(VLC_BUILD_DIR)/src/.libs/libvlccore.a \ $(VLC_BUILD_DIR)/compat/.libs/libcompat.a \ - $(VLC_CONTRIB_LDFLAGS) \ - -ldl -lz -lm -llog \ - -ljpeg \ + $(VLC_CONTRIB_LDLIBS) \ + -ldl -lm -llog -lEGL -lGLESv2 \ -Wl,-Bsymbolic -LOCAL_CXXFLAGS := -std=c++17 -# 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 include $(BUILD_SHARED_LIBRARY)