mirror of
https://github.com/git/git.git
synced 2025-12-12 20:36:24 +01:00
meson: add support for 'hdr-check'
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. Signed-off-by: Karthik Nayak <karthik.188@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
7e873eb390
commit
02a132616a
63
meson.build
63
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(),
|
||||
|
||||
Reference in New Issue
Block a user