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

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(),
>>
Previous: phillip.wood123@gmail.comNext: Karthik Nayak
Message 58 of 69 in “meson: add corresponding target for Makefile's hdr-check”
  1. 0/3 meson: add corresponding target for Makefile's hdr-checkKarthik Nayak, Apr 8, 2025
  2. 1/3 coccinelle: meson: rename variables to be more specificKarthik Nayak, Apr 8, 2025
  3. 2/3 meson: move headers definition from 'contrib/coccinelle'Karthik Nayak, Apr 8, 2025
  4. 3/3 meson: add support for 'headers-check'Karthik Nayak, Apr 8, 2025
  5. Junio C HamanoApr 8, 2025
  6. Karthik NayakApr 10, 2025
  7. 0/4 meson: add corresponding target for Makefile's hdr-checkKarthik Nayak, Apr 10, 2025
  8. 1/4 coccinelle: meson: rename variables to be more specificKarthik Nayak, Apr 10, 2025
  9. 2/4 meson: move headers definition from 'contrib/coccinelle'Karthik Nayak, Apr 10, 2025
  10. Patrick SteinhardtApr 11, 2025
  11. Karthik NayakApr 11, 2025
  12. 3/4 meson: add support for 'hdr-check'Karthik Nayak, Apr 10, 2025
  13. Phillip WoodApr 10, 2025
  14. Junio C HamanoApr 10, 2025
  15. Karthik NayakApr 14, 2025
  16. Patrick SteinhardtApr 11, 2025
  17. Karthik NayakApr 14, 2025
  18. Toon ClaesApr 14, 2025
  19. Karthik NayakApr 14, 2025
  20. 4/4 makefile/meson: add 'headers-check' as alias for 'hdr-check'Karthik Nayak, Apr 10, 2025
  21. Phillip WoodApr 10, 2025
  22. Junio C HamanoApr 10, 2025
  23. Karthik NayakApr 14, 2025
  24. 0/5 meson: add corresponding target for Makefile's hdr-checkKarthik Nayak, Apr 20, 2025
  25. 1/5 coccinelle: meson: rename variables to be more specificKarthik Nayak, Apr 20, 2025
  26. 2/5 meson: move headers definition from 'contrib/coccinelle'Karthik Nayak, Apr 20, 2025
  27. 3/5 meson: rename 'third_party_sources' to 'third_party_excludes'Karthik Nayak, Apr 20, 2025
  28. 5/5 makefile/meson: add 'check-headers' as alias for 'hdr-check'Karthik Nayak, Apr 20, 2025
  29. 4/5 meson: add support for 'hdr-check'Karthik Nayak, Apr 20, 2025
  30. Junio C HamanoApr 21, 2025
  31. Phillip WoodApr 21, 2025
  32. Karthik NayakApr 21, 2025
  33. Phillip WoodApr 22, 2025
  34. Karthik NayakApr 22, 2025
  35. Junio C HamanoApr 22, 2025
  36. Eli SchwartzApr 23, 2025
  37. Phillip WoodApr 23, 2025
  38. Karthik NayakApr 22, 2025
  39. Phillip WoodApr 23, 2025
  40. Junio C HamanoApr 21, 2025
  41. Phillip WoodApr 21, 2025
  42. Junio C HamanoApr 21, 2025
  43. Phillip WoodApr 23, 2025
  44. Patrick SteinhardtApr 22, 2025
  45. Karthik NayakApr 21, 2025
  46. Junio C HamanoApr 21, 2025
  47. Karthik NayakApr 22, 2025
  48. Junio C HamanoApr 22, 2025
  49. 0/6 meson: add corresponding target for Makefile's hdr-checkKarthik Nayak, Apr 23, 2025
  50. 1/6 ci/github: install git before checking out the repositoryKarthik Nayak, Apr 23, 2025
  51. phillip.wood123@gmail.comApr 23, 2025
  52. Karthik NayakApr 23, 2025
  53. 2/6 coccinelle: meson: rename variables to be more specificKarthik Nayak, Apr 23, 2025
  54. 3/6 meson: move headers definition from 'contrib/coccinelle'Karthik Nayak, Apr 23, 2025
  55. 4/6 meson: rename 'third_party_sources' to 'third_party_excludes'Karthik Nayak, Apr 23, 2025
  56. 5/6 meson: add support for 'hdr-check'Karthik Nayak, Apr 23, 2025
  57. phillip.wood123@gmail.comApr 23, 2025
  58. Karthik NayakApr 23, 2025
  59. 6/6 makefile/meson: add 'check-headers' as alias for 'hdr-check'Karthik Nayak, Apr 23, 2025
  60. Patrick SteinhardtApr 23, 2025
  61. Karthik NayakApr 23, 2025
  62. phillip.wood123@gmail.comApr 23, 2025
  63. Junio C HamanoApr 23, 2025
  64. Junio C HamanoApr 23, 2025
  65. Junio C HamanoApr 23, 2025
  66. Karthik NayakApr 23, 2025
  67. Junio C HamanoApr 23, 2025
  68. Karthik NayakApr 23, 2025
  69. Karthik NayakApr 23, 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.