[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