summaryrefslogtreecommitdiffstats
path: root/waftools
diff options
context:
space:
mode:
authorNiklas Haas <git@haasn.dev>2021-05-05 18:33:15 +0200
committerNiklas Haas <github-daiK1o@haasn.dev>2021-11-03 14:09:27 +0100
commit210767169191e19c70f9c7b63528b0d629ddbcfa (patch)
tree7f5cd70207722e0ad1ca2ec5ada7276b729fe8fe /waftools
parentedb0caa4415b47bb1b60a66ad2f3d1bdb42cdb25 (diff)
downloadmpv-210767169191e19c70f9c7b63528b0d629ddbcfa.tar.bz2
mpv-210767169191e19c70f9c7b63528b0d629ddbcfa.tar.xz
build: add check_preprocessor
This can be used to do things like query the values of preprocessor defines like version macros, among other potential uses.
Diffstat (limited to 'waftools')
-rw-r--r--waftools/checks/generic.py19
1 files changed, 18 insertions, 1 deletions
diff --git a/waftools/checks/generic.py b/waftools/checks/generic.py
index 4e27f5114a..114f4522b7 100644
--- a/waftools/checks/generic.py
+++ b/waftools/checks/generic.py
@@ -9,7 +9,7 @@ __all__ = [
"check_pkg_config_cflags", "check_cc", "check_statement", "check_libs",
"check_headers", "compose_checks", "any_check", "check_true", "any_version",
"load_fragment", "check_stub", "check_ctx_vars", "check_program",
- "check_pkg_config_datadir", "check_macos_sdk"]
+ "check_pkg_config_datadir", "check_macos_sdk", "check_preprocessor"]
any_version = None
@@ -47,6 +47,23 @@ def check_libs(libs, function):
return False
return fn
+def check_preprocessor(header, expression, **kw_ext):
+ def fn(ctx, dependency_identifier, **kw):
+ headers = header
+ if not isinstance(headers, list):
+ headers = [header]
+ hs = "\n".join(["#include <{0}>".format(h) for h in headers])
+ fragment = ("{0}\n"
+ "#if !({1})\n#error\n#endif\n"
+ "int main(int argc, char **argv)\n"
+ "{{ return 0; }}").format(hs, expression)
+ opts = __merge_options__(dependency_identifier,
+ {'fragment':fragment},
+ __define_options__(dependency_identifier),
+ kw_ext, kw)
+ return ctx.check_cc(**_filter_cc_arguments(ctx, opts))
+ return fn
+
def check_statement(header, statement, **kw_ext):
def fn(ctx, dependency_identifier, **kw):
headers = header