diff options
author | Martin Herkt <lachs0r@srsfckn.biz> | 2017-02-12 01:01:56 +0100 |
---|---|---|
committer | Martin Herkt <lachs0r@srsfckn.biz> | 2017-02-12 01:01:56 +0100 |
commit | 35aa705c3ece8293652ffcf449c71fe80b96e722 (patch) | |
tree | 7c0fb34ec96204cbcd867a973b2476689919a5b4 /waftools/generators/sources.py | |
parent | 10a005df0c981050afc35184a42173bea7ea2527 (diff) | |
parent | 3739d1318fdb658bb6037bfe06bb6cefb3b50a09 (diff) | |
download | mpv-35aa705c3ece8293652ffcf449c71fe80b96e722.tar.bz2 mpv-35aa705c3ece8293652ffcf449c71fe80b96e722.tar.xz |
Merge branch 'master' into release/current
Diffstat (limited to 'waftools/generators/sources.py')
-rw-r--r-- | waftools/generators/sources.py | 57 |
1 files changed, 31 insertions, 26 deletions
diff --git a/waftools/generators/sources.py b/waftools/generators/sources.py index b6af693e65..96224cf839 100644 --- a/waftools/generators/sources.py +++ b/waftools/generators/sources.py @@ -1,14 +1,10 @@ from waflib.Build import BuildContext +from waflib import TaskGen +from io import StringIO +from TOOLS.matroska import generate_C_header, generate_C_definitions +from TOOLS.file2string import file2string import os -def __file2string_cmd__(ctx): - return '"${{BIN_PYTHON}}" "{0}/TOOLS/file2string.py" "${{SRC}}" > "${{TGT}}"' \ - .format(ctx.srcnode.abspath()) - -def __matroska_cmd__(ctx, argument): - return '"${{BIN_PYTHON}}" "{0}/TOOLS/matroska.py" "{1}" "${{SRC}}" > "${{TGT}}"' \ - .format(ctx.srcnode.abspath(), argument) - def __zshcomp_cmd__(ctx, argument): return '"${{BIN_PERL}}" "{0}/TOOLS/zsh.pl" "{1}" > "${{TGT}}"' \ .format(ctx.srcnode.abspath(), argument) @@ -21,20 +17,31 @@ def __file2string__(ctx, **kwargs): **kwargs ) -def __matroska_header__(ctx, **kwargs): - ctx( - rule = __matroska_cmd__(ctx, '--generate-header'), - before = ("c",), - name = os.path.basename(kwargs['target']), - **kwargs - ) - -def __matroska_definitions__(ctx, **kwargs): - ctx( - rule = __matroska_cmd__(ctx, '--generate-definitions'), - before = ("c",), - **kwargs - ) +def execf(self, fn): + setattr(self, 'before', ['c']) + setattr(self, 'rule', ' ') # waf doesn't print the task with no rule + target = getattr(self, 'target', None) + out = self.path.find_or_declare(target) + tmp = StringIO() + fn(tmp) + out.write(tmp.getvalue()) + tmp.close() + +@TaskGen.feature('file2string') +def f2s(self): + def fn(out): + source = getattr(self, 'source', None) + src = self.path.find_resource(source) + file2string(source, iter(src.read().splitlines(True)), out) + execf(self, fn) + +@TaskGen.feature('ebml_header') +def ebml_header(self): + execf(self, generate_C_header) + +@TaskGen.feature('ebml_definitions') +def ebml_definitions(self): + execf(self, generate_C_definitions) def __zshcomp__(ctx, **kwargs): ctx( @@ -44,7 +51,5 @@ def __zshcomp__(ctx, **kwargs): **kwargs ) -BuildContext.file2string = __file2string__ -BuildContext.matroska_header = __matroska_header__ -BuildContext.matroska_definitions = __matroska_definitions__ -BuildContext.zshcomp = __zshcomp__ +BuildContext.file2string = __file2string__ +BuildContext.zshcomp = __zshcomp__ |