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

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

From
Patrick Steinhardt <ps@pks.im>
Date
Apr 11, 2025, 10:06 UTC
Message-ID
<Z_jpvghOGHvw2Y4x@pks.im>
In-Reply-To
<20250410-505-wire-up-sparse-via-meson-v2-3-acb45cc8a2e5@gmail.com>
On Thu, Apr 10, 2025 at 01:30:33PM +0200, 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
Nit: Meson is typically spelt with an upper-case 'M'.
Show 79 quoted lines
> resembles that of the Makefile and provides the same check.
> 
> Signed-off-by: Karthik Nayak <karthik.188@gmail.com>
> ---
>  meson.build | 107 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 107 insertions(+)
> 
> diff --git a/meson.build b/meson.build
> index 790d178007..6fce1aa618 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -655,6 +655,12 @@ if git.found()
>    endforeach
>  endif
>  
> +headers_generated = [
> +  'command-list.h',
> +  'config-list.h',
> +  'hook-list.h'
> +]
> +
>  if not get_option('breaking_changes')
>    builtin_sources += 'builtin/pack-redundant.c'
>  endif
> @@ -1995,6 +2001,107 @@ endif
>  
>  subdir('contrib')
>  
> +headers_check_exclude = headers_generated
> +headers_check_exclude += [
> +  'compat/apple-common-crypto.h',
> +  'compat/bswap.h',
> +  'compat/compiler.h',
> +  'compat/disk.h',
> +  'compat/fsmonitor/fsm-darwin-gcc.h',
> +  'compat/fsmonitor/fsm-health.h',
> +  'compat/fsmonitor/fsm-listen.h',
> +  'compat/mingw.h',
> +  'compat/msvc.h',
> +  'compat/nedmalloc/malloc.c.h',
> +  'compat/nedmalloc/nedmalloc.h',
> +  'compat/nonblock.h',
> +  'compat/obstack.h',
> +  'compat/poll/poll.h',
> +  'compat/precompose_utf8.h',
> +  'compat/regex/regex.h',
> +  'compat/regex/regex_internal.h',
> +  'compat/sha1-chunked.h',
> +  'compat/terminal.h',
> +  'compat/vcbuild/include/sys/param.h',
> +  'compat/vcbuild/include/sys/time.h',
> +  'compat/vcbuild/include/sys/utime.h',
> +  'compat/vcbuild/include/unistd.h',
> +  'compat/vcbuild/include/utime.h',
> +  'compat/win32.h',
> +  'compat/win32/alloca.h',
> +  'compat/win32/dirent.h',
> +  'compat/win32/lazyload.h',
> +  'compat/win32/path-utils.h',
> +  'compat/win32/pthread.h',
> +  'compat/win32/syslog.h',
> +  'compat/zlib-compat.h',
> +  't/unit-tests/clar/clar.h',
> +  't/unit-tests/clar/clar/fixtures.h',
> +  't/unit-tests/clar/clar/fs.h',
> +  't/unit-tests/clar/clar/print.h',
> +  't/unit-tests/clar/clar/sandbox.h',
> +  't/unit-tests/clar/clar/summary.h',
> +  't/unit-tests/clar/test/clar_test.h',
> +  'unicode-width.h',
> +  'xdiff/xdiff.h',
> +  'xdiff/xdiffi.h',
> +  'xdiff/xemit.h',
> +  'xdiff/xinclude.h',
> +  'xdiff/xmacros.h',
> +  'xdiff/xprepare.h',
> +  'xdiff/xtypes.h',
> +  'xdiff/xutils.h',
> +]

Many of these feel as if they should've been part of `third_party_sources`.

Show 33 quoted lines
> +if sha1_backend != 'openssl'
> +  headers_check_exclude += 'sha1/openssl.h'
> +endif
> +if sha256_backend != 'openssl'
> +  headers_check_exclude += 'sha256/openssl.h'
> +endif
> +if sha256_backend != 'nettle'
> +  headers_check_exclude += 'sha256/nettle.h'
> +endif
> +if sha256_backend != 'gcrpyt'
> +  headers_check_exclude += 'sha256/gcrypt.h'
> +endif
> +
> +if headers.length() != 0 and compiler.get_argument_syntax() == 'gcc'
> +  hco_targets = []
> +  foreach h : headers
> +    if headers_check_exclude.contains(h)
> +      continue
> +    endif
> +
> +    hcc = custom_target(
> +      input: h,
> +      output: h.underscorify() + 'cc',
> +      command: [
> +        shell,
> +        '-c',
> +        'echo \'#include "git-compat-util.h"\' > @OUTPUT@ && echo -n \'#include "' + h + '"\' >> @OUTPUT@'
> +      ]
> +    )
> +
> +    hco = custom_target(
> +      input: hcc,
> +      output: h.underscorify().replace('.h', '.hco'),
You can use `fs.replace_suffix()` instead of `.replace()`.
Show 19 quoted lines
> +      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(),
Patrick
Previous: Karthik NayakNext: Karthik Nayak
Message 16 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.