git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v3 3/4] meson: add support for 'hdr-check'

From
Karthik Nayak <karthik.188@gmail.com>
Date
Apr 20, 2025, 10:57 UTC
Message-ID
<CAOLa=ZSYgdY0YnP1Uw83N7oT9R+AUt034ecgPt0ak+RCD3f_6Q@mail.gmail.com>
In-Reply-To
<958aee61-23eb-4562-af9d-48108e6fe581@gmail.com>
phillip.wood123@gmail.com writes:
Show 19 quoted lines
> Hi Karthik
>
> On 14/04/2025 22:16, 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!
>
> Doesn't this mean we'll skip all the xdiff files when running coccinelle
> as well? If so the commit message should point that out and explain why
> that is an improvement.
>
Yes, let me add it to the commit message.
Show 6 quoted lines
>> +exclude_from_check_headers = generated_headers
>
> I'm not sure this is necessary. The list of headers that we filter is
> generated with "git ls-files" and so wont contain generated headers in
> the first place.
>

Good point, since generated headers are part of the '.gitignore', we can skip the 'generated_headers' variable entirely.

Show 31 quoted lines
>> +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 != 'gcrpyt'
>> +  exclude_from_check_headers += 'sha256/gcrypt.h'
>> +endif
>> +
>> +if git.found() and compiler.get_argument_syntax() == 'gcc'
>> +  hco_targets = []
>> +  foreach h : headers
>> +    skip_header = false
>> +    foreach exclude : exclude_from_check_headers
>> +      if h.startswith(exclude)
>> +        skip_header = true
>> +        break
>> +      endif
>> +    endforeach
>
> This part looks much more maintainable than than the previous version
>
Indeed. Thanks!
Show 41 quoted lines
>
> Thanks
>
> Phillip
>
>> +    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(),
Previous: phillip.wood123@gmail.comNext: Karthik Nayak
Message 10 of 13 in “meson: add corresponding target for Makefile's hdr-check”
  1. 0/4 meson: add corresponding target for Makefile's hdr-checkKarthik Nayak, Apr 14, 2025
  2. 1/4 coccinelle: meson: rename variables to be more specificKarthik Nayak, Apr 14, 2025
  3. 2/4 meson: move headers definition from 'contrib/coccinelle'Karthik Nayak, Apr 14, 2025
  4. Phillip WoodApr 15, 2025
  5. Karthik NayakApr 20, 2025
  6. 3/4 meson: add support for 'hdr-check'Karthik Nayak, Apr 14, 2025
  7. Junio C HamanoApr 14, 2025
  8. Karthik NayakApr 15, 2025
  9. phillip.wood123@gmail.comApr 15, 2025
  10. Karthik NayakApr 20, 2025
  11. 4/4 makefile/meson: add 'check-headers' as alias for 'hdr-check'Karthik Nayak, Apr 14, 2025
  12. phillip.wood123@gmail.comApr 15, 2025
  13. Karthik NayakApr 20, 2025

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.