Opened 5 years ago

Closed 5 years ago

#256 closed defect (fixed)

FFmpeg fails to build after SDL output device addition

Reported by: KSHawkEye Owned by:
Priority: important Component: build system
Version: git-master Keywords: sdl
Cc: Blocked By:
Blocking: Reproduced by developer: yes
Analyzed by developer: yes

Description

The current FFmpeg fails to build due to the new SDL output device additions.

FFmpeg fails at make with:

ffmpeg.c:4474:5: error: no previous prototype for ‘SDL_main’

I should note that SDL is built and have worked with previous versions.

Attachments (1)

patchmainmingw32.diff (740 bytes) - added by cehoyos 5 years ago.

Download all attachments as: .zip

Change History (12)

comment:1 in reply to: ↑ description Changed 5 years ago by KSHawkEye

Replying to KSHawkEye:

The current FFmpeg fails to build due to the new SDL output device additions.

FFmpeg fails at make with:

ffmpeg.c:4474:5: error: no previous prototype for ‘SDL_main’

I should note that SDL is built and have worked with previous versions.

Correction: "I should note that SDL is built and have worked with previous versions." should read: "I should note that SDL is built and has worked with previous versions."

Also, this is a for a Windows build.

Lastly, the git commit I tested on was: f6a8ce98a7bce601a7db4a8f2a615822dc8f71bd

comment:2 Changed 5 years ago by cehoyos

  • Component changed from undetermined to build system
  • Keywords sdl added
  • Priority changed from critical to important
  • Status changed from new to open

Please add the complete, uncut output of

$ make V=1 ffmpeg.o

comment:3 Changed 5 years ago by cehoyos

And please attach ffmpeg.d (after running above command).

comment:4 Changed 5 years ago by KSHawkEye

i686-w64-mingw32-gcc -I. -I"/home/kyle/software/ffmpeg/source/ffmpeg-git" -D_ISOC99_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -U__STRICT_ANSI__ -I/home/kyle/software/ffmpeg/packages/sdl/sdl-1.2.14-win32/include -I/home/kyle/software/ffmpeg/packages/bzlib/bzlib-1.0.6-win32/include -I/home/kyle/software/ffmpeg/packages/freetype/freetype-2.4.4-win32/include -I/home/kyle/software/ffmpeg/packages/frei0r/frei0r-1.3-win32/include -I/home/kyle/software/ffmpeg/packages/gsm/gsm-1.0.13-3-win32/include -I/home/kyle/software/ffmpeg/packages/lame/lame-3.98.4-win32/include -I/home/kyle/software/ffmpeg/packages/opencore-amr/opencore-amr-0.1.2-win32/include -I/home/kyle/software/ffmpeg/packages/openjpeg/openjpeg-1.4-win32/include -I/home/kyle/software/ffmpeg/packages/speex/speex-1.2rc1-win32/include -I/home/kyle/software/ffmpeg/packages/theora/theora-1.1.1-win32/include -I/home/kyle/software/ffmpeg/packages/vorbis/vorbis-1.3.2-win32/include -I/home/kyle/software/ffmpeg/packages/libvpx/libvpx-0.9.6-win32/include -I/home/kyle/software/ffmpeg/packages/polarssl/polarssl-0.14.3-win32/include -I/home/kyle/software/ffmpeg/packages/rtmpdump/librtmp-git-6155179b-win32/include -I/home/kyle/software/ffmpeg/packages/orc/orc-0.4.11-win32/include -I/home/kyle/software/ffmpeg/packages/schroedinger/schroedinger-1.0.10-win32/include -I/home/kyle/software/ffmpeg/packages/libogg/libogg-1.2.2-win32/include -I/home/kyle/software/ffmpeg/packages/x264/x264-git-c1e60b90-win32/include -I/home/kyle/software/ffmpeg/packages/xavs/xavs-r51-win32/include -I/home/kyle/software/ffmpeg/packages/xvid/xvid-1.3.2-win32/include -I/home/kyle/software/ffmpeg/packages/zlib/zlib-1.2.5-win32/include   -std=c99 -fno-common -fomit-frame-pointer -I/home/kyle/software/ffmpeg/packages/freetype/freetype-2.4.4-win32/include/freetype2 -I/home/kyle/software/ffmpeg/packages/freetype/freetype-2.4.4-win32/include -I/home/kyle/software/ffmpeg/packages/rtmpdump/librtmp-git-6155179b-win32/include -I/home/kyle/software/ffmpeg/packages/schroedinger/schroedinger-1.0.10-win32/include/schroedinger-1.0 -I/home/kyle/software/ffmpeg/packages/orc/orc-0.4.11-win32/include/orc-0.4 -D_GNU_SOURCE=1 -Dmain=SDL_main -I/home/kyle/software/ffmpeg/packages/sdl/sdl-1.2.14-win32/include/SDL -g -Wdeclaration-after-statement -Wall -Wno-parentheses -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wno-pointer-sign -Wcast-qual -Wwrite-strings -Wtype-limits -Wundef -Wmissing-prototypes -Wno-pointer-to-int-cast -O3 -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=implicit-function-declaration -Werror=missing-prototypes          -MMD -MF ffmpeg.d -MT ffmpeg.o -c -o ffmpeg.o /home/kyle/software/ffmpeg/source/ffmpeg-git/ffmpeg.c
In file included from /home/kyle/software/ffmpeg/source/ffmpeg-git/ffmpeg.c:45:0:
/home/kyle/software/ffmpeg/source/ffmpeg-git/libavformat/os_support.h:34:0: warning: "lseek" redefined
/home/kyle/software/mingw-w64/test-script/mingw-w64-i686/lib/gcc/i686-w64-mingw32/4.5.3/../../../../i686-w64-mingw32/include/io.h:336:0: note: this is the location of the previous definition
/home/kyle/software/ffmpeg/source/ffmpeg-git/ffmpeg.c: In function ‘term_exit’:
/home/kyle/software/ffmpeg/source/ffmpeg-git/ffmpeg.c:444:5: warning: zero-length ms_printf format string
/home/kyle/software/ffmpeg/source/ffmpeg-git/ffmpeg.c: In function ‘opt_input_file’:
/home/kyle/software/ffmpeg/source/ffmpeg-git/ffmpeg.c:3244:5: warning: ‘sample_rate’ is deprecated (declared at /home/kyle/software/ffmpeg/source/ffmpeg-git/libavformat/avformat.h:232)
/home/kyle/software/ffmpeg/source/ffmpeg-git/ffmpeg.c:3245:5: warning: ‘channels’ is deprecated (declared at /home/kyle/software/ffmpeg/source/ffmpeg-git/libavformat/avformat.h:233)
/home/kyle/software/ffmpeg/source/ffmpeg-git/ffmpeg.c:3248:5: warning: ‘width’ is deprecated (declared at /home/kyle/software/ffmpeg/source/ffmpeg-git/libavformat/avformat.h:234)
/home/kyle/software/ffmpeg/source/ffmpeg-git/ffmpeg.c:3249:5: warning: ‘height’ is deprecated (declared at /home/kyle/software/ffmpeg/source/ffmpeg-git/libavformat/avformat.h:235)
/home/kyle/software/ffmpeg/source/ffmpeg-git/ffmpeg.c:3250:5: warning: ‘pix_fmt’ is deprecated (declared at /home/kyle/software/ffmpeg/source/ffmpeg-git/libavformat/avformat.h:236)
/home/kyle/software/ffmpeg/source/ffmpeg-git/ffmpeg.c:3252:5: warning: ‘channel’ is deprecated (declared at /home/kyle/software/ffmpeg/source/ffmpeg-git/libavformat/avformat.h:237)
/home/kyle/software/ffmpeg/source/ffmpeg-git/ffmpeg.c:3253:5: warning: ‘standard’ is deprecated (declared at /home/kyle/software/ffmpeg/source/ffmpeg-git/libavformat/avformat.h:238)
/home/kyle/software/ffmpeg/source/ffmpeg-git/ffmpeg.c: In function ‘opt_output_file’:
/home/kyle/software/ffmpeg/source/ffmpeg-git/ffmpeg.c:3951:5: warning: ‘av_set_parameters’ is deprecated (declared at /home/kyle/software/ffmpeg/source/ffmpeg-git/libavformat/avformat.h:1362)
/home/kyle/software/ffmpeg/source/ffmpeg-git/ffmpeg.c: At top level:
/home/kyle/software/ffmpeg/source/ffmpeg-git/ffmpeg.c:4474:5: error: no previous prototype for ‘SDL_main’
make: *** [ffmpeg.o] Error 1

I could not find ffmpeg.d I don't believe it was built.

comment:5 Changed 5 years ago by saste

-Dmain=SDL_main in the compile flags looks like the culprit...

comment:6 Changed 5 years ago by cehoyos

Could you please also test

$ make V=1 ffserver.o
$ make V=1 ffprobe.o

comment:7 Changed 5 years ago by KSHawkEye

ffserver does not build on Windows.

ffprobe gave me the same error:

i686-w64-mingw32-gcc -I. -I"/home/kyle/software/ffmpeg/source/ffmpeg-git" -D_ISOC99_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -U__STRICT_ANSI__ -I/home/kyle/software/ffmpeg/packages/sdl/sdl-1.2.14-win32/include -I/home/kyle/software/ffmpeg/packages/bzlib/bzlib-1.0.6-win32/include -I/home/kyle/software/ffmpeg/packages/freetype/freetype-2.4.4-win32/include -I/home/kyle/software/ffmpeg/packages/frei0r/frei0r-1.3-win32/include -I/home/kyle/software/ffmpeg/packages/gsm/gsm-1.0.13-3-win32/include -I/home/kyle/software/ffmpeg/packages/lame/lame-3.98.4-win32/include -I/home/kyle/software/ffmpeg/packages/opencore-amr/opencore-amr-0.1.2-win32/include -I/home/kyle/software/ffmpeg/packages/openjpeg/openjpeg-1.4-win32/include -I/home/kyle/software/ffmpeg/packages/speex/speex-1.2rc1-win32/include -I/home/kyle/software/ffmpeg/packages/theora/theora-1.1.1-win32/include -I/home/kyle/software/ffmpeg/packages/vorbis/vorbis-1.3.2-win32/include -I/home/kyle/software/ffmpeg/packages/libvpx/libvpx-0.9.6-win32/include -I/home/kyle/software/ffmpeg/packages/polarssl/polarssl-0.14.3-win32/include -I/home/kyle/software/ffmpeg/packages/rtmpdump/librtmp-git-6155179b-win32/include -I/home/kyle/software/ffmpeg/packages/orc/orc-0.4.11-win32/include -I/home/kyle/software/ffmpeg/packages/schroedinger/schroedinger-1.0.10-win32/include -I/home/kyle/software/ffmpeg/packages/libogg/libogg-1.2.2-win32/include -I/home/kyle/software/ffmpeg/packages/x264/x264-git-c1e60b90-win32/include -I/home/kyle/software/ffmpeg/packages/xavs/xavs-r51-win32/include -I/home/kyle/software/ffmpeg/packages/xvid/xvid-1.3.2-win32/include -I/home/kyle/software/ffmpeg/packages/zlib/zlib-1.2.5-win32/include   -std=c99 -fno-common -fomit-frame-pointer -I/home/kyle/software/ffmpeg/packages/freetype/freetype-2.4.4-win32/include/freetype2 -I/home/kyle/software/ffmpeg/packages/freetype/freetype-2.4.4-win32/include -I/home/kyle/software/ffmpeg/packages/rtmpdump/librtmp-git-6155179b-win32/include -I/home/kyle/software/ffmpeg/packages/schroedinger/schroedinger-1.0.10-win32/include/schroedinger-1.0 -I/home/kyle/software/ffmpeg/packages/orc/orc-0.4.11-win32/include/orc-0.4 -D_GNU_SOURCE=1 -Dmain=SDL_main -I/home/kyle/software/ffmpeg/packages/sdl/sdl-1.2.14-win32/include/SDL -g -Wdeclaration-after-statement -Wall -Wno-parentheses -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wno-pointer-sign -Wcast-qual -Wwrite-strings -Wtype-limits -Wundef -Wmissing-prototypes -Wno-pointer-to-int-cast -O3 -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=implicit-function-declaration -Werror=missing-prototypes          -MMD -MF ffprobe.d -MT ffprobe.o -c -o ffprobe.o /home/kyle/software/ffmpeg/source/ffmpeg-git/ffprobe.c
/home/kyle/software/ffmpeg/source/ffmpeg-git/ffprobe.c:390:5: error: no previous prototype for ‘SDL_main’
make: *** [ffprobe.o] Error 1

Changed 5 years ago by cehoyos

comment:8 Changed 5 years ago by cehoyos

Could you test attached patch?

comment:9 Changed 5 years ago by saste

Patch looks fine to me (indeed I didn't know we already use that trick in ffplay.c) if tested and works, thanks.

comment:10 Changed 5 years ago by KSHawkEye

I can confirm that the patch does fix the issue.

comment:11 Changed 5 years ago by saste

  • Analyzed by developer set
  • Reproduced by developer set
  • Resolution set to fixed
  • Status changed from open to closed

Fixed in commit:

commit 25c32d082b1ab4c3567c09f707e75c8ac582806c
Author: Carl Eugen Hoyos <cehoyos@ag.or.at>
Date:   Fri Jun 3 13:30:27 2011 +0200

    cmdutils: move "#undef main" from ffplay.c to cmdutils.h
    
    On Windows/MinGW the SDL cflags re-define the main() function, which
    results in a linking error if the define is not undeffed.
    
    Since the addition of the SDL output device, SDL cflags are used also
    for compiling ffmpeg and ffprobe, so we need to move this trick from
    ffplay.c to a common header.
    
    Fix trac issue #256.
Note: See TracTickets for help on using tickets.