Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
 help / color / mirror / Atom feed
From: Lynne <dev@lynne.ee>
To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org>
Subject: Re: [FFmpeg-devel] [PATCH 2/2] Require compilers to support C17.
Date: Mon, 5 Feb 2024 21:20:55 +0100 (CET)
Message-ID: <Npuv_1z--3-9@lynne.ee> (raw)
In-Reply-To: <20240205195802.14522-2-anton@khirnov.net>

Feb 5, 2024, 20:59 by anton@khirnov.net:

> 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              ;;
>  -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
>

Looks good to me.
_______________________________________________
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".

  parent reply	other threads:[~2024-02-05 20:21 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
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 [this message]
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=Npuv_1z--3-9@lynne.ee \
    --to=dev@lynne.ee \
    --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