To bridge the remaining gaps between Makefile and Meson, this patch series adds 'hdr-check' to Meson to compliment the Makefile's 'hdr-check'. We also introduce 'headers-check' as an alias to 'hdr-check' as a better named replacement in both Meson and make and add a note to deprecate 'hdr-check' in the future. The first two commits are small cleanups, where we re-organize existing variables to make it easier to add the target. The third commit adds the 'hdr-check' target to Meson. The last commit introduces the 'headers-check' alias to both Meson and the makefile and marks 'hdr-check' to be deprecated. This is based on master 9d22ac5122 (The third batch, 2025-04-07) with 'es/meson-build-skip-coccinelle' merged in. --- Changes in v3: - Some renames: - headers_generated -> generated_headers - meson -> Meson - headers-check -> check-headers - headers_check_exclude -> exclude_from_check_headers - Rewrite 'headers_check_exclude' to also contain dirs so we can skip listing individual header files. - Move 'xdiff/*' to 'third_party_sources' and cleanup 'exclude_from_check_headers'. - Use 'echo' instead of 'echo -n'. - Use `fs.replace_suffix` instead of `str.replace`. - Link to v2: https://lore.kernel.org/r/20250410-505-wire-up-sparse-via-meson-v2-0-acb45cc8a2e5@xxxxxxxxx Changes in v2: - Add 'hdr-check' to meson, while introducing 'headers-check' as a replacement alias. Schedule 'hdr-check' to be deprecated in the future. - Link to v1: https://lore.kernel.org/r/20250408-505-wire-up-sparse-via-meson-v1-0-17476e5cea3f@xxxxxxxxx --- Makefile | 4 +- ci/run-static-analysis.sh | 2 +- contrib/coccinelle/meson.build | 29 ++++--------- meson.build | 94 ++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 105 insertions(+), 24 deletions(-) Karthik Nayak (4): coccinelle: meson: rename variables to be more specific meson: move headers definition from 'contrib/coccinelle' meson: add support for 'hdr-check' makefile/meson: add 'check-headers' as alias for 'hdr-check' Range-diff versus v2: 1: ca94103a13 ! 1: 3386caeaf5 coccinelle: meson: rename variables to be more specific @@ Metadata ## Commit message ## coccinelle: meson: rename variables to be more specific - In meson, included subdirs export their variables to top level meson + In Meson, included subdirs export their variables to top level Meson builds. In 'contrib/coccinelle/meson.build', we define two such variables `sources` and `headers`. While these variables are specific to the checks in the 'contrib/coccinelle/' directory, they also pollute the 2: 2549f1a5df ! 2: 35f5a580e4 meson: move headers definition from 'contrib/coccinelle' @@ Metadata ## Commit message ## meson: move headers definition from 'contrib/coccinelle' - The meson build for coccinelle static analysis lists all headers to - analyse. Due to the way meson exports variables between subdirs, this - variable is also available in the root meson build. + The Meson build for coccinelle static analysis lists all headers to + analyse. Due to the way Meson exports variables between subdirs, this + variable is also available in the root Meson build. An upcoming commit, will add a new check complimenting 'hdr-check' in the Makefile. This would require the list of headers. So move the - 'coccinelle_headers' to the root meson build and rename it to 'headers', + 'coccinelle_headers' to the root Meson build and rename it to 'headers', remove the root path being appended to each header and retain that in - the coccinelle meson build since it is specific to the coccinelle build. + the coccinelle Meson build since it is specific to the coccinelle build. - Also move the 'third_party_sources' variable to the root meson build + Also move the 'third_party_sources' variable to the root Meson build since it is also a dependency for the 'headers' variable. This also makes it easier to understand as the variable is now propagated from the top level to the bottom. @@ meson.build: builtin_sources = [ + ':!t/t[0-9][0-9][0-9][0-9]*', +] + -+headers = [] +if git.found() ++ headers = [] + foreach header : run_command(git, '-C', meson.project_source_root(), 'ls-files', '--deduplicate', '*.h', third_party_sources, check: true).stdout().split() + headers += header + endforeach 3: a46db4a81c < -: ---------- meson: add support for 'hdr-check' -: ---------- > 3: 0df83087ac meson: add support for 'hdr-check' 4: fe0160b6fe ! 4: b5d10772ff makefile/meson: add 'headers-check' as alias for 'hdr-check' @@ Metadata Author: Karthik Nayak <karthik.188@xxxxxxxxx> ## Commit message ## - makefile/meson: add 'headers-check' as alias for 'hdr-check' + makefile/meson: add 'check-headers' as alias for 'hdr-check' - The 'hdr-check' target in meson and makefile is used to check if headers + The 'hdr-check' target in Meson and makefile is used to check if headers can be compiled individually. The naming however isn't readable as 'hdr' is not a common shortforme for 'header', neither is it an abbreviation. - Let's introduce 'headers-check' as an alternative target for 'hdr-check' + Let's introduce 'check-headers' as an alternative target for 'hdr-check' and add a `TODO` to deprecate the latter after 2 releases. Since this is an internal tool, we can use a shorter deprecation cycle. Change existing usage of 'hdr-check' in 'ci/run-static-analysis.sh' to - also use 'headers-check'. + also use 'check-headers'. Signed-off-by: Karthik Nayak <karthik.188@xxxxxxxxx> @@ Makefile: HCC = $(HCO:hco=hcc) $(QUIET_HDR)$(CC) $(ALL_CFLAGS) -o /dev/null -c -xc $< -.PHONY: hdr-check $(HCO) -+# TODO: deprecate 'hdr-check' in lieu of 'headers-check' in Git 2.51+ -+.PHONY: hdr-check headers-check $(HCO) ++# TODO: deprecate 'hdr-check' in lieu of 'check-headers' in Git 2.51+ ++.PHONY: hdr-check check-headers $(HCO) hdr-check: $(HCO) -+headers-check: hdr-check ++check-headers: hdr-check .PHONY: style style: @@ ci/run-static-analysis.sh: then fi -make hdr-check || -+make headers-check || ++make check-headers || exit 1 make check-pot ## meson.build ## -@@ meson.build: if headers.length() != 0 and compiler.get_argument_syntax() == 'gcc' +@@ meson.build: if git.found() and compiler.get_argument_syntax() == 'gcc' hco_targets += hco endforeach -+ # TODO: deprecate 'hdr-check' in lieu of 'headers-check' in Git 2.51+ ++ # TODO: deprecate 'hdr-check' in lieu of 'check-headers' in Git 2.51+ alias_target('hdr-check', hco_targets) -+ alias_target('headers-check', hco_targets) ++ alias_target('check-headers', hco_targets) endif foreach key, value : { base-commit: 3a956c5f69873611ae5f8dcb9acd117f66b95ddc change-id: 20250330-505-wire-up-sparse-via-meson-2e32dd31208b Thanks - Karthik