phillip.wood123@xxxxxxxxx writes: > 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. > Best Wishes > > Phillip > >> Signed-off-by: Karthik Nayak <karthik.188@xxxxxxxxx> >> --- >> 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(), >>
Attachment:
signature.asc
Description: PGP signature