#1440: MinGW32 Builds Fail -------------------------------------+------------------------------------- Reporter: mbradshaw | Owner: Type: defect | Status: new Priority: normal | Component: Version: git-master | undetermined Keywords: | Resolution: Blocking: | Blocked By: Analyzed by developer: 0 | Reproduced by developer: 0 -------------------------------------+------------------------------------- Description changed by mbradshaw:
Old description: > Building with MinGW32 fails. > [http://fate.ffmpeg.org/report.cgi?time=20120611144205&slot=x86_64 > -debian-mingw32-gcc-4.6 FATE test shows the failure.] Also fails for me > on my Windows 7 MinGW build system. > > git bisect shows this was introduced with commit > 5db5169e46a5f1676aafb82ec8c3f5dc6fb6bb6d, "avconv: multithreaded > demuxing." However, I don't think this commit is the root of the problem. > The reported compile error, for those who haven't checked the FATE test, > is: > > {{{ > CC ffmpeg.o > /home/fate/fate/src/ffmpeg.c:1:0: warning: -fPIC ignored for target (all > code is position independent) [enabled by default] > /home/fate/fate/src/ffmpeg.c:1:0: warning: -fPIC ignored for target (all > code is position independent) [enabled by default] > In file included from /home/fate/fate/src/ffmpeg.c:93:0: > /home/fate/fate/src/libavcodec/w32pthreads.h:67:37: error: expected '=', > ',', ';', 'asm' or '__attribute__' before 'win32thread_worker' > /home/fate/fate/src/libavcodec/w32pthreads.h: In function > 'pthread_create': > /home/fate/fate/src/libavcodec/w32pthreads.h:79:60: error: > 'win32thread_worker' undeclared (first use in this function) > /home/fate/fate/src/libavcodec/w32pthreads.h:79:60: note: each undeclared > identifier is reported only once for each function it appears in > /home/fate/fate/src/ffmpeg.c: In function 'opt_recording_timestamp': > /home/fate/fate/src/ffmpeg.c:4032:5: warning: unknown conversion type > character 'F' in format [-Wformat] > /home/fate/fate/src/ffmpeg.c:4032:5: warning: unknown conversion type > character 'T' in format [-Wformat] > /home/fate/fate/src/ffmpeg.c: At top level: > /home/fate/fate/src/libavcodec/w32pthreads.h:150:13: warning: > 'pthread_cond_destroy' defined but not used [-Wunused-function] > /home/fate/fate/src/libavcodec/w32pthreads.h:166:13: warning: > 'pthread_cond_broadcast' defined but not used [-Wunused-function] > /home/fate/fate/src/libavcodec/w32pthreads.h:254:13: warning: > 'w32thread_init' defined but not used [-Wunused-function] > /home/fate/fate/src/ffmpeg.c:1533:12: warning: 'check_recording_time' > defined but not used [-Wunused-function] > }}} > > Replacing "attribute_align_arg" with > "__attribute__((force_align_arg_pointer))" in libavcodec/w32pthreads.h > fixes the error. Including libavutil/internal.h also seems to fix this > error, but introduces new errors in ffmpeg.c (because of things like > fprintf). > > I'm not sure what the best solution is (attribute_align_arg is needed and > it's defined in libavutil/internal.h, but ffmpeg.c can't include that > file), and will leave it up to others to determine that. New description: Building with MinGW32 fails. [http://fate.ffmpeg.org/report.cgi?time=20120611144205&slot=x86_64-debian- mingw32-gcc-4.6 FATE test shows the failure.] Also fails for me on my Windows 7 MinGW build system. git bisect shows this was introduced with commit 5db5169e46a5f1676aafb82ec8c3f5dc6fb6bb6d, "avconv: multithreaded demuxing." However, I don't think this commit is the root of the problem. The reported compile error, for those who haven't checked the FATE test, is: {{{ CC ffmpeg.o /home/fate/fate/src/ffmpeg.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] /home/fate/fate/src/ffmpeg.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] In file included from /home/fate/fate/src/ffmpeg.c:93:0: /home/fate/fate/src/libavcodec/w32pthreads.h:67:37: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'win32thread_worker' /home/fate/fate/src/libavcodec/w32pthreads.h: In function 'pthread_create': /home/fate/fate/src/libavcodec/w32pthreads.h:79:60: error: 'win32thread_worker' undeclared (first use in this function) /home/fate/fate/src/libavcodec/w32pthreads.h:79:60: note: each undeclared identifier is reported only once for each function it appears in /home/fate/fate/src/ffmpeg.c: In function 'opt_recording_timestamp': /home/fate/fate/src/ffmpeg.c:4032:5: warning: unknown conversion type character 'F' in format [-Wformat] /home/fate/fate/src/ffmpeg.c:4032:5: warning: unknown conversion type character 'T' in format [-Wformat] /home/fate/fate/src/ffmpeg.c: At top level: /home/fate/fate/src/libavcodec/w32pthreads.h:150:13: warning: 'pthread_cond_destroy' defined but not used [-Wunused-function] /home/fate/fate/src/libavcodec/w32pthreads.h:166:13: warning: 'pthread_cond_broadcast' defined but not used [-Wunused-function] /home/fate/fate/src/libavcodec/w32pthreads.h:254:13: warning: 'w32thread_init' defined but not used [-Wunused-function] /home/fate/fate/src/ffmpeg.c:1533:12: warning: 'check_recording_time' defined but not used [-Wunused-function] }}} Replacing `attribute_align_arg` with `__attribute__((force_align_arg_pointer))` in libavcodec/w32pthreads.h fixes the error. Including libavutil/internal.h also seems to fix this error, but introduces new errors in ffmpeg.c (because of things like fprintf). I'm not sure what the best solution is (`attribute_align_arg` is needed and it's defined in libavutil/internal.h, but ffmpeg.c can't include that file), and will leave it up to others to determine that. -- -- Ticket URL: <https://ffmpeg.org/trac/ffmpeg/ticket/1440#comment:1> FFmpeg <http://ffmpeg.org> FFmpeg issue tracker _______________________________________________ FFmpeg-trac mailing list FFmpeg-trac@avcodec.org http://avcodec.org/mailman/listinfo/ffmpeg-trac