diff mbox series

[FFmpeg-devel] Update configure file to fix a build failure with gcc-11 on Ubuntu 21.10

Message ID 20210918090636.488716-1-costamagnagianfranco@yahoo.it
State New
Headers show
Series [FFmpeg-devel] Update configure file to fix a build failure with gcc-11 on Ubuntu 21.10
Related show

Checks

Context Check Description
andriy/commit_msg_x86 warning The first line of the commit message must start with a context terminated by a colon and a space, for example "lavu/opt: " or "doc: ".
andriy/make_x86 success Make finished
andriy/make_fate_x86 success Make fate finished
andriy/commit_msg_ppc warning The first line of the commit message must start with a context terminated by a colon and a space, for example "lavu/opt: " or "doc: ".
andriy/make_ppc success Make finished
andriy/make_fate_ppc success Make fate finished

Commit Message

Gianfranco Costamagna Sept. 18, 2021, 9:06 a.m. UTC
New gcc changed the way it exposes armhf build flags.
"the architecture now has to include the cpu features, see the man page, arM options"

example of build failure:
https://launchpad.net/ubuntu/+source/ffmpeg/7:4.4-6ubuntu1/+build/22070856

Note: this syntax was introduced in GCC 8 https://gcc.gnu.org/gcc-8/changes.html
---
 configure | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Timo Rothenpieler Sept. 18, 2021, 11:15 a.m. UTC | #1
On 18.09.2021 11:06, Gianfranco Costamagna wrote:
> New gcc changed the way it exposes armhf build flags.
> "the architecture now has to include the cpu features, see the man page, arM options"
> 
> example of build failure:
> https://launchpad.net/ubuntu/+source/ffmpeg/7:4.4-6ubuntu1/+build/22070856
> 
> Note: this syntax was introduced in GCC 8 https://gcc.gnu.org/gcc-8/changes.html
> ---
>   configure | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/configure b/configure
> index 7ac23123c7..571b70208c 100755
> --- a/configure
> +++ b/configure
> @@ -5000,7 +5000,7 @@ elif enabled arm; then
>           elif check_arm_arch 6ZK;      then echo armv6zk
>           elif check_arm_arch 6T2;      then echo armv6t2
>           elif check_arm_arch 7;        then echo armv7
> -        elif check_arm_arch 7A  7_A;  then echo armv7-a
> +        elif check_arm_arch 7A  7_A;  then echo armv7-a+fp
>           elif check_arm_arch 7S;       then echo armv7-a
>           elif check_arm_arch 7R  7_R;  then echo armv7-r
>           elif check_arm_arch 7M  7_M;  then echo armv7-m
> 

Does this still work with older gccs, or will those be broken after this?
Gianfranco Costamagna Sept. 18, 2021, 1:48 p.m. UTC | #2
Hello Timo

Il giorno sab 18 set 2021 alle ore 13:15 Timo Rothenpieler <
timo@rothenpieler.org> ha scritto:

> On 18.09.2021 11:06, Gianfranco Costamagna wrote:
> > New gcc changed the way it exposes armhf build flags.
> > "the architecture now has to include the cpu features, see the man page,
> arM options"
> >
> > example of build failure:
> >
> https://launchpad.net/ubuntu/+source/ffmpeg/7:4.4-6ubuntu1/+build/22070856
> >
> > Note: this syntax was introduced in GCC 8
> https://gcc.gnu.org/gcc-8/changes.html
> > ---
> >   configure | 2 +-
> >   1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/configure b/configure
> > index 7ac23123c7..571b70208c 100755
> > --- a/configure
> > +++ b/configure
> > @@ -5000,7 +5000,7 @@ elif enabled arm; then
> >           elif check_arm_arch 6ZK;      then echo armv6zk
> >           elif check_arm_arch 6T2;      then echo armv6t2
> >           elif check_arm_arch 7;        then echo armv7
> > -        elif check_arm_arch 7A  7_A;  then echo armv7-a
> > +        elif check_arm_arch 7A  7_A;  then echo armv7-a+fp
> >           elif check_arm_arch 7S;       then echo armv7-a
> >           elif check_arm_arch 7R  7_R;  then echo armv7-r
> >           elif check_arm_arch 7M  7_M;  then echo armv7-m
> >
>
> Does this still work with older gccs, or will those be broken after this?
>

I checked gcc-10 and it works too.
The new naming has been introduced in gcc-8, so there should be no issues
even for backporting the package to old systems.

What is the oldest supported compiler for ffmpeg?

BTW this is just an idea of a patch, other people might want to patch all
the arms for the new gcc-11, but I don't know how to change them because I
don't have the hardware
so I just patched the Debian/Ubuntu used one.

Feel free to change it if you like, or just take it as reference for people
experiencing build failures with gcc-11. Hopefully somebody with the
required hw will patch it in a better way once the gcc-11 becomes default
on more systems.

I sent a new patch version with different commit message.
Gianfranco


> ________________
>
Timo Rothenpieler Sept. 18, 2021, 2:25 p.m. UTC | #3
On 18.09.2021 15:48, Gianfranco Costamagna wrote:
> Hello Timo
> 
> Il giorno sab 18 set 2021 alle ore 13:15 Timo Rothenpieler <
> timo@rothenpieler.org> ha scritto:
> 
>> On 18.09.2021 11:06, Gianfranco Costamagna wrote:
>>> New gcc changed the way it exposes armhf build flags.
>>> "the architecture now has to include the cpu features, see the man page,
>> arM options"
>>>
>>> example of build failure:
>>>
>> https://launchpad.net/ubuntu/+source/ffmpeg/7:4.4-6ubuntu1/+build/22070856
>>>
>>> Note: this syntax was introduced in GCC 8
>> https://gcc.gnu.org/gcc-8/changes.html
>>> ---
>>>    configure | 2 +-
>>>    1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> diff --git a/configure b/configure
>>> index 7ac23123c7..571b70208c 100755
>>> --- a/configure
>>> +++ b/configure
>>> @@ -5000,7 +5000,7 @@ elif enabled arm; then
>>>            elif check_arm_arch 6ZK;      then echo armv6zk
>>>            elif check_arm_arch 6T2;      then echo armv6t2
>>>            elif check_arm_arch 7;        then echo armv7
>>> -        elif check_arm_arch 7A  7_A;  then echo armv7-a
>>> +        elif check_arm_arch 7A  7_A;  then echo armv7-a+fp
>>>            elif check_arm_arch 7S;       then echo armv7-a
>>>            elif check_arm_arch 7R  7_R;  then echo armv7-r
>>>            elif check_arm_arch 7M  7_M;  then echo armv7-m
>>>
>>
>> Does this still work with older gccs, or will those be broken after this?
>>
> 
> I checked gcc-10 and it works too.
> The new naming has been introduced in gcc-8, so there should be no issues
> even for backporting the package to old systems.
> 
> What is the oldest supported compiler for ffmpeg?

At least all the way back to gcc-4, and some other exotic non-gcc compilers.
Though I'm not sure what the minimum with armv7 support is, or when gcc 
introduced it.

If it break some older compiler that's used on some stable branch of 
some distro, that'd be an issue.

> BTW this is just an idea of a patch, other people might want to patch all
> the arms for the new gcc-11, but I don't know how to change them because I
> don't have the hardware
> so I just patched the Debian/Ubuntu used one.
> 
> Feel free to change it if you like, or just take it as reference for people
> experiencing build failures with gcc-11. Hopefully somebody with the
> required hw will patch it in a better way once the gcc-11 becomes default
> on more systems.
> 
> I sent a new patch version with different commit message.
> Gianfranco
Martin Storsjö Sept. 18, 2021, 8:30 p.m. UTC | #4
On Sat, 18 Sep 2021, Timo Rothenpieler wrote:

> On 18.09.2021 15:48, Gianfranco Costamagna wrote:
>> Hello Timo
>> 
>> Il giorno sab 18 set 2021 alle ore 13:15 Timo Rothenpieler <
>> timo@rothenpieler.org> ha scritto:
>> 
>>> On 18.09.2021 11:06, Gianfranco Costamagna wrote:
>>>> New gcc changed the way it exposes armhf build flags.
>>>> "the architecture now has to include the cpu features, see the man page,
>>> arM options"
>>>> 
>>>> example of build failure:
>>>> 
>>> https://launchpad.net/ubuntu/+source/ffmpeg/7:4.4-6ubuntu1/+build/22070856
>>>> 
>>>> Note: this syntax was introduced in GCC 8
>>> https://gcc.gnu.org/gcc-8/changes.html
>>>> ---
>>>>    configure | 2 +-
>>>>    1 file changed, 1 insertion(+), 1 deletion(-)
>>>> 
>>>> diff --git a/configure b/configure
>>>> index 7ac23123c7..571b70208c 100755
>>>> --- a/configure
>>>> +++ b/configure
>>>> @@ -5000,7 +5000,7 @@ elif enabled arm; then
>>>>            elif check_arm_arch 6ZK;      then echo armv6zk
>>>>            elif check_arm_arch 6T2;      then echo armv6t2
>>>>            elif check_arm_arch 7;        then echo armv7
>>>> -        elif check_arm_arch 7A  7_A;  then echo armv7-a
>>>> +        elif check_arm_arch 7A  7_A;  then echo armv7-a+fp
>>>>            elif check_arm_arch 7S;       then echo armv7-a
>>>>            elif check_arm_arch 7R  7_R;  then echo armv7-r
>>>>            elif check_arm_arch 7M  7_M;  then echo armv7-m
>>>> 
>>> 
>>> Does this still work with older gccs, or will those be broken after this?
>>> 
>> 
>> I checked gcc-10 and it works too.
>> The new naming has been introduced in gcc-8, so there should be no issues
>> even for backporting the package to old systems.
>> 
>> What is the oldest supported compiler for ffmpeg?
>
> At least all the way back to gcc-4, and some other exotic non-gcc compilers.
> Though I'm not sure what the minimum with armv7 support is, or when gcc 
> introduced it.
>
> If it break some older compiler that's used on some stable branch of some 
> distro, that'd be an issue.

+1, if this new syntax was introduced with GCC 8, I guess this would break 
building with GCC 7, and that's a rather new version to break IMO.

I'll try to reproduce this and look into it.

// Martin
diff mbox series

Patch

diff --git a/configure b/configure
index 7ac23123c7..571b70208c 100755
--- a/configure
+++ b/configure
@@ -5000,7 +5000,7 @@  elif enabled arm; then
         elif check_arm_arch 6ZK;      then echo armv6zk
         elif check_arm_arch 6T2;      then echo armv6t2
         elif check_arm_arch 7;        then echo armv7
-        elif check_arm_arch 7A  7_A;  then echo armv7-a
+        elif check_arm_arch 7A  7_A;  then echo armv7-a+fp
         elif check_arm_arch 7S;       then echo armv7-a
         elif check_arm_arch 7R  7_R;  then echo armv7-r
         elif check_arm_arch 7M  7_M;  then echo armv7-m