[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Add new macro gl_WARN_ADD_MULTIPLE
From: |
Tim Rühsen |
Subject: |
Re: Add new macro gl_WARN_ADD_MULTIPLE |
Date: |
Thu, 2 May 2019 10:48:31 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.6.1 |
On 5/2/19 10:16 AM, Bruno Haible wrote:
> Hi Alex,
>
>> GNU Emacs spends about ~6s out of ~28s in its configuration process to
>> determine supported C compiler warnings.
>
> It's good that you tackle this problem. Thanks!
>
>> This macro first checks if all the supplied warnings are
>> supported, and then only checks them individually (via gl_WARN_ADD) if
>> that check fails.
>
> So, the speed improvement exists only for the newest compilers; people
> who use a compiler that was released 1 or 2 years before the Emacs release
> will see no improvement.
>
> How about a modified algorithm?
> 1) In a first pass, use the GCC's --help=warnings output to determine which
> warnings are likely supported. Unfortunately, for clang, I don't know
> of such a help option.
> 2) When the first check (with all the options) fails, split that list into
> 2 (or 3, or 4) chunks of nearly equal size, and perform the check
> on each sub-list. And so on, recurse.
> This way, you would still get some performance benefit if the compiler
> supports 80% of the requested warnings but not all of them.
>
> Finally, since there is no semantic difference between gl_WARN_ADD and
> gl_WARN_ADD_MULTIPLE, except that the latter allows multiple options, how
> about extending the gl_WARN_ADD macro (to allow multiple options) instead
> of defining a different macro (gl_WARN_ADD_MULTIPLE)?
Mentioned 2 years ago (but being still too busy to make a gnulib module
from it); Wget2's implementation using --help=warnings is here and FSF
copyrighted:
https://gitlab.com/gnuwget/wget2/blob/master/m4/wget_manywarnings.m4
And how to use / fine-tune it can be seen in L106 of
https://gitlab.com/gnuwget/wget2/blob/master/configure.ac
There is gcc and clang support. The configure.ac creates two sets of
compiler flags, for wget2/libwget sources and for gnulib sources.
Regards, Tim
signature.asc
Description: OpenPGP digital signature