[FFmpeg-trac] #1479(build system:new): --disable-optimisations causes build to fail against android ndk
FFmpeg
trac at avcodec.org
Sat Jun 23 05:27:37 CEST 2012
#1479: --disable-optimisations causes build to fail against android ndk
--------------------------------------+----------------------------------
Reporter: notzed | Type: defect
Status: new | Priority: normal
Component: build system | Version: 0.11.1
Keywords: | Blocked By:
Blocking: | Reproduced by developer: 0
Analyzed by developer: 0 |
--------------------------------------+----------------------------------
When compiling with the android ndk, using --disable-optimizations causes
the build to fail immediately:
/usr/local/android-ndk-r7c/toolchains/arm-linux-
androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc -I.
-I/home/notzed/svn/jjmpeg-0.11/jjmpeg-core/jni/ffmpeg-0.11/
-D_ISOC99_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE
-D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -DPIC -DHAVE_AV_CONFIG_H
-I/usr/local/android-ndk-r7c/platforms/android-8/arch-arm//usr/include
-mfloat-abi=softfp -mfpu=neon -marm -march=armv7-a --sysroot=/usr/local
/android-ndk-r7c/platforms/android-8/arch-arm/ -std=c99 -fPIC -marm -g
-Wdeclaration-after-statement -Wall -Wno-parentheses -Wno-switch -Wno-
format-zero-length -Wdisabled-optimization -Wpointer-arith -Wredundant-
decls -Wno-pointer-sign -Wwrite-strings -Wtype-limits -Wundef -Wmissing-
prototypes -Wno-pointer-to-int-cast -Wstrict-prototypes -fno-math-errno
-fno-signed-zeros -fno-tree-vectorize -Werror=implicit-function-
declaration -Werror=missing-prototypes -MMD -MF libavformat/4xm.d -MT
libavformat/4xm.o -c -o libavformat/4xm.o /home/notzed/svn/jjmpeg-0.11
/jjmpeg-core/jni/ffmpeg-0.11/libavformat/4xm.c
In file included from /home/notzed/svn/jjmpeg-0.11/jjmpeg-
core/jni/ffmpeg-0.11/libavutil/intmath.h:36,
from /home/notzed/svn/jjmpeg-0.11/jjmpeg-
core/jni/ffmpeg-0.11/libavutil/common.h:102,
from /home/notzed/svn/jjmpeg-0.11/jjmpeg-
core/jni/ffmpeg-0.11/libavutil/avutil.h:327,
from /home/notzed/svn/jjmpeg-0.11/jjmpeg-
core/jni/ffmpeg-0.11/libavutil/samplefmt.h:22,
from /home/notzed/svn/jjmpeg-0.11/jjmpeg-
core/jni/ffmpeg-0.11/libavcodec/avcodec.h:30,
from /home/notzed/svn/jjmpeg-0.11/jjmpeg-
core/jni/ffmpeg-0.11/libavformat/avformat.h:197,
from /home/notzed/svn/jjmpeg-0.11/jjmpeg-
core/jni/ffmpeg-0.11/libavformat/4xm.c:32:
/home/notzed/svn/jjmpeg-0.11/jjmpeg-
core/jni/ffmpeg-0.11/libavutil/arm/intmath.h: In function
'av_clip_uintp2_arm':
/home/notzed/svn/jjmpeg-0.11/jjmpeg-
core/jni/ffmpeg-0.11/libavutil/arm/intmath.h:82: warning: asm operand 2
probably doesn't match constraints
/home/notzed/svn/jjmpeg-0.11/jjmpeg-
core/jni/ffmpeg-0.11/libavutil/arm/intmath.h:82: error: impossible
constraint in 'asm'
make[1]: *** [libavformat/4xm.o] Error 1
This is caused by this instruction/function:
#define av_clip_uintp2 av_clip_uintp2_arm
static av_always_inline av_const unsigned av_clip_uintp2_arm(int a, int p)
{
unsigned x;
__asm__ ("usat %0, %2, %1" : "=r"(x) : "r"(a), "i"(p));
return x;
}
usat's second argument must be an immediate value, so unless this function
is inlined it cannot work.
Adding --enable-small allows the build to continue further as it forces
inlining (rather counter-intuitively), but it then fails at:
/usr/local/android-ndk-r7c/toolchains/arm-linux-
androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc -I.
-I/home/notzed/svn/jjmpeg-0.11/jjmpeg-core/jni/ffmpeg-0.11/
-D_ISOC99_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE
-D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -DPIC -DHAVE_AV_CONFIG_H
-I/usr/local/android-ndk-r7c/platforms/android-8/arch-arm//usr/include
-mfloat-abi=softfp -mfpu=neon -marm -march=armv7-a --sysroot=/usr/local
/android-ndk-r7c/platforms/android-8/arch-arm/ -std=c99 -fPIC -marm -g
-Wdeclaration-after-statement -Wall -Wno-parentheses -Wno-switch -Wno-
format-zero-length -Wdisabled-optimization -Wpointer-arith -Wredundant-
decls -Wno-pointer-sign -Wwrite-strings -Wtype-limits -Wundef -Wmissing-
prototypes -Wno-pointer-to-int-cast -Wstrict-prototypes -Os -fno-math-
errno -fno-signed-zeros -fno-tree-vectorize -Werror=implicit-function-
declaration -Werror=missing-prototypes -MMD -MF libswscale/output.d -MT
libswscale/output.o -c -o libswscale/output.o /home/notzed/svn/jjmpeg-0.11
/jjmpeg-core/jni/ffmpeg-0.11/libswscale/output.c
In file included from /home/notzed/svn/jjmpeg-0.11/jjmpeg-
core/jni/ffmpeg-0.11/libavutil/intmath.h:36,
from /home/notzed/svn/jjmpeg-0.11/jjmpeg-
core/jni/ffmpeg-0.11/libavutil/common.h:102,
from /home/notzed/svn/jjmpeg-0.11/jjmpeg-
core/jni/ffmpeg-0.11/libavutil/avutil.h:327,
from /home/notzed/svn/jjmpeg-0.11/jjmpeg-
core/jni/ffmpeg-0.11/libswscale/output.c:27:
/home/notzed/svn/jjmpeg-0.11/jjmpeg-
core/jni/ffmpeg-0.11/libavutil/arm/intmath.h: In function
'yuv2plane1_10_c_template':
/home/notzed/svn/jjmpeg-0.11/jjmpeg-
core/jni/ffmpeg-0.11/libavutil/arm/intmath.h:82: warning: asm operand 2
probably doesn't match constraints
/home/notzed/svn/jjmpeg-0.11/jjmpeg-
core/jni/ffmpeg-0.11/libavutil/arm/intmath.h:82: warning: asm operand 2
probably doesn't match constraints
/home/notzed/svn/jjmpeg-0.11/jjmpeg-
core/jni/ffmpeg-0.11/libavutil/arm/intmath.h:82: error: impossible
constraint in 'asm'
/home/notzed/svn/jjmpeg-0.11/jjmpeg-
core/jni/ffmpeg-0.11/libavutil/arm/intmath.h:82: error: impossible
constraint in 'asm'
In file included from /home/notzed/svn/jjmpeg-0.11/jjmpeg-
core/jni/ffmpeg-0.11/libavutil/intmath.h:36,
from /home/notzed/svn/jjmpeg-0.11/jjmpeg-
core/jni/ffmpeg-0.11/libavutil/common.h:102,
from /home/notzed/svn/jjmpeg-0.11/jjmpeg-
core/jni/ffmpeg-0.11/libavutil/avutil.h:327,
from /home/notzed/svn/jjmpeg-0.11/jjmpeg-
core/jni/ffmpeg-0.11/libswscale/output.c:27:
/home/notzed/svn/jjmpeg-0.11/jjmpeg-
core/jni/ffmpeg-0.11/libavutil/arm/intmath.h: In function
'yuv2planeX_10_c_template':
/home/notzed/svn/jjmpeg-0.11/jjmpeg-
core/jni/ffmpeg-0.11/libavutil/arm/intmath.h:82: warning: asm operand 2
probably doesn't match constraints
/home/notzed/svn/jjmpeg-0.11/jjmpeg-
core/jni/ffmpeg-0.11/libavutil/arm/intmath.h:82: warning: asm operand 2
probably doesn't match constraints
/home/notzed/svn/jjmpeg-0.11/jjmpeg-
core/jni/ffmpeg-0.11/libswscale/output.c: In function
'yuv2rgb_X_c_template':
/home/notzed/svn/jjmpeg-0.11/jjmpeg-
core/jni/ffmpeg-0.11/libswscale/output.c:994: warning: 'A2' may be used
uninitialized in this function
/home/notzed/svn/jjmpeg-0.11/jjmpeg-
core/jni/ffmpeg-0.11/libswscale/output.c:994: warning: 'A1' may be used
uninitialized in this function
/home/notzed/svn/jjmpeg-0.11/jjmpeg-
core/jni/ffmpeg-0.11/libswscale/output.c: In function
'yuv2rgb_full_X_c_template':
/home/notzed/svn/jjmpeg-0.11/jjmpeg-
core/jni/ffmpeg-0.11/libswscale/output.c:1227: warning: 'A' may be used
uninitialized in this function
make[1]: *** [libswscale/output.o] Error 1
----------------------
gcc is version 4.4.3 from the android ndk v7c.
FFmpeg version 0.11.1 (I will try against the git's head once it's
finished checking out)
configuration, with --enable small on:
FFMPEG_CONFIGURATION "--prefix=/home/notzed/svn/jjmpeg-0.11/jjmpeg-
android/jni/build/armeabi-v7a --cross-prefix=/usr/local/android-ndk-
r7c/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-
linux-androideabi- --enable-cross-compile --target-os=linux --extra-
cflags='-I/usr/local/android-ndk-r7c/platforms/android-8/arch-
arm//usr/include -mfloat-abi=softfp -mfpu=neon -marm -march=armv7-a
--sysroot=/usr/local/android-ndk-r7c/platforms/android-8/arch-arm/'
--extra-ldflags='-L/usr/local/android-ndk-r7c/platforms/android-8/arch-
arm//usr/lib --sysroot=/usr/local/android-ndk-r7c/platforms/android-8
/arch-arm/' --arch=arm --disable-stripping --enable-debug --disable-
optimizations --enable-small --disable-shared --enable-static --disable-
symver --enable-pthreads --enable-gpl --enable-version3 --disable-doc
--disable-ffmpeg --disable-ffplay --disable-ffprobe --disable-ffserver
--disable-avdevice --disable-avfilter --disable-postproc"
--
Ticket URL: <https://ffmpeg.org/trac/ffmpeg/ticket/1479>
FFmpeg <http://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list