Re: [PATCH v5 5/6] meson: add support for 'hdr-check'
- From
Karthik Nayak <karthik.188@gmail.com>
- Date
- Apr 23, 2025, 17:40 UTC
- Message-ID
- <CAOLa=ZThKEHa-=Eb+Hef8Q2uoWs1xOZBuHL-KUt0Z5K-uLuJsw@mail.gmail.com>
- In-Reply-To
- <2a25ca04-c824-4bec-a5e7-95ec32556cf9@gmail.com>
phillip.wood123@gmail.com writes:
Show 23 quoted lines
> Hi Karthik > > On 23/04/2025 09:15, Karthik Nayak wrote: >> The Makefile supports a target called 'hdr-check', which checks if >> individual header files can be independently compiled. Let's port this >> functionality to Meson, our new build system too. The implementation >> resembles that of the Makefile and provides the same check. >> >> Since meson builds are out-of-tree, header dependencies are not >> automatically met. So unlike the Makefile version, we also need to add >> the required dependencies. >> >> Also add the 'xdiff/' dir to the list of 'third_party_sources' as those >> headers must be skipped from the checks too. This also skips the folder >> from the 'coccinelle' checks, this is okay, since this code is an >> external dependency. > > The xdiff code is in a kind of limbo as the upstream project is dead and > so people who want a standalone copy take the code from our repository. > The Makefile does run coccinelle on it but not hdr-check as that fails. > Looking at the filenames in contrib/coccinelle they are almost all quite > git specific so it probably makes sense to skip the xdiff files. >
That was my conclusion indeed. I thought of also removing it from the Makefile, but I think that it would be better done outside of this series.
Show 91 quoted lines
> Best Wishes
>
> Phillip
>
>> Signed-off-by: Karthik Nayak <karthik.188@gmail.com>
>> ---
>> meson.build | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>> 1 file changed, 63 insertions(+)
>>
>> diff --git a/meson.build b/meson.build
>> index 4618804c7a..22fc65ec80 100644
>> --- a/meson.build
>> +++ b/meson.build
>> @@ -645,6 +645,7 @@ third_party_excludes = [
>> ':!sha1dc',
>> ':!t/unit-tests/clar',
>> ':!t/t[0-9][0-9][0-9][0-9]*',
>> + ':!xdiff',
>> ]
>>
>> headers_to_check = []
>> @@ -1994,6 +1995,68 @@ endif
>>
>> subdir('contrib')
>>
>> +exclude_from_check_headers = [
>> + 'compat/',
>> + 'unicode-width.h',
>> +]
>> +
>> +if sha1_backend != 'openssl'
>> + exclude_from_check_headers += 'sha1/openssl.h'
>> +endif
>> +if sha256_backend != 'openssl'
>> + exclude_from_check_headers += 'sha256/openssl.h'
>> +endif
>> +if sha256_backend != 'nettle'
>> + exclude_from_check_headers += 'sha256/nettle.h'
>> +endif
>> +if sha256_backend != 'gcrypt'
>> + exclude_from_check_headers += 'sha256/gcrypt.h'
>> +endif
>> +
>> +if headers_to_check.length() != 0 and compiler.get_argument_syntax() == 'gcc'
>> + hco_targets = []
>> + foreach h : headers_to_check
>> + skip_header = false
>> + foreach exclude : exclude_from_check_headers
>> + if h.startswith(exclude)
>> + skip_header = true
>> + break
>> + endif
>> + endforeach
>> +
>> + if skip_header
>> + continue
>> + endif
>> +
>> + hcc = custom_target(
>> + input: h,
>> + output: h.underscorify() + 'cc',
>> + command: [
>> + shell,
>> + '-c',
>> + 'echo \'#include "git-compat-util.h"\' > @OUTPUT@ && echo \'#include "' + h + '"\' >> @OUTPUT@'
>> + ]
>> + )
>> +
>> + hco = custom_target(
>> + input: hcc,
>> + output: fs.replace_suffix(h.underscorify(), '.hco'),
>> + command: [
>> + compiler.cmd_array(),
>> + libgit_c_args,
>> + '-I', meson.project_source_root(),
>> + '-I', meson.project_source_root() / 't/unit-tests',
>> + '-o', '/dev/null',
>> + '-c', '-xc',
>> + '@INPUT@'
>> + ]
>> + )
>> + hco_targets += hco
>> + endforeach
>> +
>> + alias_target('hdr-check', hco_targets)
>> +endif
>> +
>> foreach key, value : {
>> 'DIFF': diff.full_path(),
>> 'GIT_SOURCE_DIR': meson.project_source_root(),
>>