diff --git a/android/contrib/tools/do-compile-ffmpeg.sh b/android/contrib/tools/do-compile-ffmpeg.sh index f913273b09cc845a44f475eab40d18f8712093ea..f97b658adfb1cb99e79ece6b9d65708c8ab6ed66 100755 --- a/android/contrib/tools/do-compile-ffmpeg.sh +++ b/android/contrib/tools/do-compile-ffmpeg.sh @@ -85,7 +85,9 @@ FF_CFG_FLAGS= FF_EXTRA_CFLAGS= FF_EXTRA_LDFLAGS= FF_DEP_LIBS= -FF_ASM_OBJ_DIR= + +FF_MODULE_DIRS="compat libavcodec libavfilter libavformat libavutil libswresample libswscale" +FF_ASSEMBLER_SUB_DIRS= #-------------------- echo "" @@ -124,7 +126,7 @@ if [ "$FF_ARCH" = "armv7a" ]; then FF_EXTRA_CFLAGS="$FF_EXTRA_CFLAGS -march=armv7-a -mcpu=cortex-a8 -mfpu=vfpv3-d16 -mfloat-abi=softfp -mthumb" FF_EXTRA_LDFLAGS="$FF_EXTRA_LDFLAGS -Wl,--fix-cortex-a8" - FF_ASM_OBJ_DIR="libavcodec/arm/*.o libavutil/arm/*.o libswresample/arm/*.o" + FF_ASSEMBLER_SUB_DIRS="arm" elif [ "$FF_ARCH" = "armv5" ]; then FF_BUILD_NAME=ffmpeg-armv5 @@ -139,7 +141,7 @@ elif [ "$FF_ARCH" = "armv5" ]; then FF_EXTRA_CFLAGS="$FF_EXTRA_CFLAGS -march=armv5te -mtune=arm9tdmi -msoft-float" FF_EXTRA_LDFLAGS="$FF_EXTRA_LDFLAGS" - FF_ASM_OBJ_DIR="libavcodec/arm/*.o libavutil/arm/*.o libswresample/arm/*.o" + FF_ASSEMBLER_SUB_DIRS="arm" elif [ "$FF_ARCH" = "x86" ]; then FF_BUILD_NAME=ffmpeg-x86 @@ -154,7 +156,7 @@ elif [ "$FF_ARCH" = "x86" ]; then FF_EXTRA_CFLAGS="$FF_EXTRA_CFLAGS -march=atom -msse3 -ffast-math -mfpmath=sse" FF_EXTRA_LDFLAGS="$FF_EXTRA_LDFLAGS" - FF_ASM_OBJ_DIR="libavcodec/x86/*.o libavfilter/x86/*.o libavutil/x86/*.o libswresample/x86/*.o libswscale/x86/*.o" + FF_ASSEMBLER_SUB_DIRS="x86" elif [ "$FF_ARCH" = "x86_64" ]; then FF_ANDROID_PLATFORM=android-21 @@ -171,7 +173,7 @@ elif [ "$FF_ARCH" = "x86_64" ]; then FF_EXTRA_CFLAGS="$FF_EXTRA_CFLAGS" FF_EXTRA_LDFLAGS="$FF_EXTRA_LDFLAGS" - FF_ASM_OBJ_DIR="libavcodec/x86/*.o libavfilter/x86/*.o libavutil/x86/*.o libswresample/x86/*.o libswscale/x86/*.o" + FF_ASSEMBLER_SUB_DIRS="x86" elif [ "$FF_ARCH" = "arm64" ]; then FF_ANDROID_PLATFORM=android-21 @@ -188,7 +190,7 @@ elif [ "$FF_ARCH" = "arm64" ]; then FF_EXTRA_CFLAGS="$FF_EXTRA_CFLAGS" FF_EXTRA_LDFLAGS="$FF_EXTRA_LDFLAGS" - FF_ASM_OBJ_DIR="libavcodec/aarch64/*.o libavutil/aarch64/*.o libswresample/aarch64/*.o libavcodec/neon/*.o" + FF_ASSEMBLER_SUB_DIRS="aarch64" else echo "unknown architecture $FF_ARCH"; @@ -325,16 +327,31 @@ echo "--------------------" echo "[*] link ffmpeg" echo "--------------------" echo $FF_EXTRA_LDFLAGS + +FF_C_OBJ_FILES= +FF_ASM_OBJ_FILES= +for MODULE_DIR in $FF_MODULE_DIRS +do + C_OBJ_FILES="$MODULE_DIR/*.o" + if ls $C_OBJ_FILES 1> /dev/null 2>&1; then + echo "link $MODULE_DIR/*.o" + FF_C_OBJ_FILES="$FF_C_OBJ_FILES $C_OBJ_FILES" + fi + + for ASM_SUB_DIR in $FF_ASSEMBLER_SUB_DIRS + do + ASM_OBJ_FILES="$MODULE_DIR/$ASM_SUB_DIR/*.o" + if ls $ASM_OBJ_FILES 1> /dev/null 2>&1; then + echo "link $MODULE_DIR/$ASM_SUB_DIR/*.o" + FF_ASM_OBJ_FILES="$FF_ASM_OBJ_FILES $ASM_OBJ_FILES" + fi + done +done + $CC -lm -lz -shared --sysroot=$FF_SYSROOT -Wl,--no-undefined -Wl,-z,noexecstack $FF_EXTRA_LDFLAGS \ -Wl,-soname,libijkffmpeg.so \ - compat/*.o \ - libavcodec/*.o \ - libavfilter/*.o \ - libavformat/*.o \ - libavutil/*.o \ - libswresample/*.o \ - libswscale/*.o \ - $FF_ASM_OBJ_DIR \ + $FF_C_OBJ_FILES \ + $FF_ASM_OBJ_FILES \ $FF_DEP_LIBS \ -o $FF_PREFIX/libijkffmpeg.so