mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2024-12-21 23:10:13 +00:00
Require compilers to support C11.
It should be available in all relevant modern compilers and will allow us to use features like anonymous unions. Note that stdatomic.h is still emulated on MSVC, as current versions require the /experimental:c11atomics, and do not support ATOMIC_VAR_INIT() anyway.
This commit is contained in:
parent
78812cd147
commit
75697836b1
@ -24,6 +24,9 @@ version <next>:
|
||||
- ffmpeg CLI options may now be used as -/opt <path>, which is equivalent
|
||||
to -opt <contents of file <path>>
|
||||
- showinfo bitstream filter
|
||||
- a C11-compliant compiler is now required; note that this requirement
|
||||
will be bumped to C17 in the near future, so consider updating your
|
||||
build environment if it lacks C17 support
|
||||
|
||||
version 6.1:
|
||||
- libaribcaption decoder
|
||||
|
19
configure
vendored
19
configure
vendored
@ -4705,7 +4705,7 @@ msvc_common_flags(){
|
||||
# generic catch all at the bottom will print the original flag.
|
||||
-Wall) ;;
|
||||
-Wextra) ;;
|
||||
-std=c*) ;;
|
||||
-std=c*) echo /std:${flag#-std=};;
|
||||
# Common flags
|
||||
-fomit-frame-pointer) ;;
|
||||
-g) echo -Z7 ;;
|
||||
@ -4750,7 +4750,7 @@ icl_flags(){
|
||||
# Despite what Intel's documentation says -Wall, which is supported
|
||||
# on Windows, does enable remarks so disable them here.
|
||||
-Wall) echo $flag -Qdiag-disable:remark ;;
|
||||
-std=c99) echo -Qstd=c99 ;;
|
||||
-std=c11) echo -Qstd=c11 ;;
|
||||
-flto*) echo -ipo ;;
|
||||
esac
|
||||
done
|
||||
@ -4798,7 +4798,7 @@ suncc_flags(){
|
||||
athlon*) echo -xarch=pentium_proa ;;
|
||||
esac
|
||||
;;
|
||||
-std=c99) echo -xc99 ;;
|
||||
-std=c11) echo -xc11 ;;
|
||||
-fomit-frame-pointer) echo -xregs=frameptr ;;
|
||||
-fPIC) echo -KPIC -xcode=pic32 ;;
|
||||
-W*,*) echo $flag ;;
|
||||
@ -4887,8 +4887,8 @@ probe_cc(){
|
||||
_type=suncc
|
||||
_ident=$($_cc -V 2>&1 | head -n1 | cut -d' ' -f 2-)
|
||||
_DEPCMD='$(DEP$(1)) $(DEP$(1)FLAGS) $($(1)DEP_FLAGS) $< | sed -e "1s,^.*: ,$@: ," -e "\$$!s,\$$, \\\," -e "1!s,^.*: , ," > $(@:.o=.d)'
|
||||
_DEPFLAGS='-xM1 -xc99'
|
||||
_ldflags='-std=c99'
|
||||
_DEPFLAGS='-xM1 -xc11'
|
||||
_ldflags='-std=c11'
|
||||
_cflags_speed='-O5'
|
||||
_cflags_size='-O5 -xspace'
|
||||
_flags_filter=suncc_flags
|
||||
@ -5517,21 +5517,20 @@ if test "$?" != 0; then
|
||||
die "C compiler test failed."
|
||||
fi
|
||||
|
||||
add_cppflags -D_ISOC99_SOURCE
|
||||
add_cppflags -D_ISOC11_SOURCE
|
||||
add_cxxflags -D__STDC_CONSTANT_MACROS
|
||||
check_cxxflags -std=c++11 || check_cxxflags -std=c++0x
|
||||
|
||||
# some compilers silently accept -std=c11, so we also need to check that the
|
||||
# version macro is defined properly
|
||||
test_cflags_cc -std=c11 ctype.h "__STDC_VERSION__ >= 201112L" &&
|
||||
add_cflags -std=c11 ||
|
||||
check_cflags -std=c99
|
||||
add_cflags -std=c11 || die "Compiler lacks C11 support"
|
||||
|
||||
check_cppflags -D_FILE_OFFSET_BITS=64
|
||||
check_cppflags -D_LARGEFILE_SOURCE
|
||||
|
||||
add_host_cppflags -D_ISOC99_SOURCE
|
||||
check_host_cflags -std=c99
|
||||
add_host_cppflags -D_ISOC11_SOURCE
|
||||
check_host_cflags -std=c11
|
||||
check_host_cflags -Wall
|
||||
check_host_cflags $host_cflags_speed
|
||||
|
||||
|
@ -56,14 +56,8 @@ and should try to fix issues their commit causes.
|
||||
|
||||
@section Language
|
||||
|
||||
FFmpeg is mainly programmed in the ISO C99 language, extended with:
|
||||
@itemize @bullet
|
||||
@item
|
||||
Atomic operations from C11 @file{stdatomic.h}. They are emulated on
|
||||
architectures/compilers that do not support them, so all FFmpeg-internal code
|
||||
may use atomics without any extra checks. However, @file{stdatomic.h} must not
|
||||
be included in public headers, so they stay C99-compatible.
|
||||
@end itemize
|
||||
FFmpeg is mainly programmed in the ISO C11 language, except for the public
|
||||
headers which must stay C99 compatible.
|
||||
|
||||
Compiler-specific extensions may be used with good reason, but must not be
|
||||
depended on, i.e. the code must still compile and work with compilers lacking
|
||||
|
Loading…
Reference in New Issue
Block a user