From: James Almer <jamrial@gmail.com> To: ffmpeg-devel@ffmpeg.org Subject: Re: [FFmpeg-devel] [PATCH 2/2] Require compilers to support C17. Date: Mon, 5 Feb 2024 17:12:00 -0300 Message-ID: <23253a88-26fb-48bc-9b33-640a7e5e4f05@gmail.com> (raw) In-Reply-To: <20240205195802.14522-2-anton@khirnov.net> On 2/5/2024 4:54 PM, Anton Khirnov wrote: > 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. > --- > Now moving to C17 rather than C11, as the former contains important > fixes and its support across the compilers we care about should be > similar. > > Now also tested with MSVC in wine, thanks to Martin for pointing me at > https://github.com/mstorsjo/msvc-wine > --- > configure | 23 +++++++++++------------ > doc/developer.texi | 10 ++-------- > 2 files changed, 13 insertions(+), 20 deletions(-) > > diff --git a/configure b/configure > index f72533b7d2..1bb9e23f19 100755 > --- a/configure > +++ b/configure > @@ -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=c17) echo -Qstd=c17 ;; > -flto*) echo -ipo ;; > esac > done > @@ -4798,7 +4798,7 @@ suncc_flags(){ > athlon*) echo -xarch=pentium_proa ;; > esac > ;; > - -std=c99) echo -xc99 ;; > + -std=c17) echo -xc17 ;; Does SunCC support this? Does anyone use SunCC at all? > -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 -xc17' > + _ldflags='-std=c17' > _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 > +# some compilers silently accept -std=c17, 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 > +test_cflags_cc -std=c17 ctype.h "__STDC_VERSION__ >= 201710L" && > + add_cflags -std=c17 || die "Compiler lacks C17 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=c17 > check_host_cflags -Wall > check_host_cflags $host_cflags_speed > > diff --git a/doc/developer.texi b/doc/developer.texi > index eed0ee4915..6e9807aa06 100644 > --- a/doc/developer.texi > +++ b/doc/developer.texi > @@ -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 C17 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 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
next prev parent reply other threads:[~2024-02-05 20:11 UTC|newest] Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top 2024-02-05 19:54 [FFmpeg-devel] [PATCH 1/2] lavc/refstruct: do not use max_align_t on MSVC Anton Khirnov 2024-02-05 19:54 ` [FFmpeg-devel] [PATCH 2/2] Require compilers to support C17 Anton Khirnov 2024-02-05 20:12 ` James Almer [this message] 2024-02-05 20:13 ` Anton Khirnov 2024-02-05 20:13 ` Devin Heitmueller 2024-02-05 20:30 ` Anton Khirnov 2024-02-05 20:33 ` James Almer 2024-02-05 20:40 ` Devin Heitmueller 2024-02-07 9:50 ` Anton Khirnov 2024-02-07 16:15 ` Devin Heitmueller 2024-02-07 16:36 ` Anton Khirnov 2024-02-05 20:53 ` Niklas Haas 2024-02-09 11:22 ` Dominik 'Rathann' Mierzejewski 2024-02-09 12:04 ` Kevin Wheatley 2024-02-05 20:20 ` Lynne 2024-02-05 20:27 ` Michael Niedermayer 2024-02-05 20:31 ` Anton Khirnov 2024-02-05 20:45 ` Michael Niedermayer 2024-02-07 9:55 ` Anton Khirnov [not found] ` <2E73439B-3AE5-46FC-80FB-2D375FD852C5@cosmin.at> 2024-02-07 18:52 ` Cosmin Stejerean via ffmpeg-devel 2024-02-07 19:27 ` Lynne [not found] ` <1CBFE199-B1ED-47B5-BD97-7DA715EAB55B@cosmin.at> 2024-02-07 21:10 ` Cosmin Stejerean via ffmpeg-devel 2024-02-07 21:19 ` James Almer 2024-02-08 7:15 ` Rémi Denis-Courmont 2024-02-08 10:42 ` Andreas Rheinhardt 2024-02-07 21:48 ` Lynne [not found] ` <8C790A7E-A236-4413-A4EB-AFE2F91E96A8@cosmin.at> 2024-02-08 0:36 ` Cosmin Stejerean via ffmpeg-devel 2024-02-08 4:29 ` Jean-Baptiste Kempf 2024-02-08 18:52 ` Sean McGovern 2024-02-08 19:05 ` James Almer 2024-02-08 19:46 ` Lynne 2024-02-05 20:55 ` Niklas Haas 2024-02-05 22:22 ` Stefano Sabatini 2024-02-07 9:53 ` Anton Khirnov 2024-02-06 6:50 ` Diederick C. Niehorster 2024-02-06 12:03 ` Lynne
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=23253a88-26fb-48bc-9b33-640a7e5e4f05@gmail.com \ --to=jamrial@gmail.com \ --cc=ffmpeg-devel@ffmpeg.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel This inbox may be cloned and mirrored by anyone: git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \ ffmpegdev@gitmailbox.com public-inbox-index ffmpegdev Example config snippet for mirrors. AGPL code for this site: git clone https://public-inbox.org/public-inbox.git