diff options
author | Christian Mauderer <christian.mauderer@embedded-brains.de> | 2018-05-07 10:19:28 +0200 |
---|---|---|
committer | Christian Mauderer <christian.mauderer@embedded-brains.de> | 2018-08-01 09:55:27 +0200 |
commit | 01855a5acd8bea448b5cd83d61fa9a7ebbf1815e (patch) | |
tree | 4d2a1a394c3f19adc48d0bf64ca54cd04a51fdae | |
parent | userspace-header-gen: Special case for Yacc / Lex. (diff) | |
download | rtems-libbsd-01855a5acd8bea448b5cd83d61fa9a7ebbf1815e.tar.bz2 |
waf: Allow to only generate lex and yacc.
In some applications, it's usefull if the files generated by lex or yacc
are not build automatically. With that it is for example possible to
create a wrapper source file that sets some defines before the generated
code is parsed.
-rwxr-xr-x | builder.py | 12 | ||||
-rw-r--r-- | waf_libbsd.py | 26 |
2 files changed, 22 insertions, 16 deletions
@@ -547,15 +547,17 @@ class RouteKeywordsFragmentComposer(BuildSystemFragmentComposer): class LexFragmentComposer(BuildSystemFragmentComposer): - def __init__(self, sym, dep, cflags = None, includes = None): + def __init__(self, sym, dep, cflags = None, includes = None, build = True): self.sym = sym self.dep = dep self.cflags, self.includes = _cflagsIncludes(cflags, includes) + self.build = build def compose(self, path): d = { 'file': path, 'sym': self.sym, - 'dep': self.dep } + 'dep': self.dep, + 'build': self.build } if None not in self.cflags: d['cflags'] = self.cflags if None not in self.includes: @@ -564,15 +566,17 @@ class LexFragmentComposer(BuildSystemFragmentComposer): class YaccFragmentComposer(BuildSystemFragmentComposer): - def __init__(self, sym, header, cflags = None, includes = None): + def __init__(self, sym, header, cflags = None, includes = None, build = True): self.sym = sym self.header = header self.cflags, self.includes = _cflagsIncludes(cflags, includes) + self.build = build def compose(self, path): d = { 'file': path, 'sym': self.sym, - 'header': self.header } + 'header': self.header, + 'build': self.build } if None not in self.cflags: d['cflags'] = self.cflags if None not in self.includes: diff --git a/waf_libbsd.py b/waf_libbsd.py index bbc8b42c..597e882e 100644 --- a/waf_libbsd.py +++ b/waf_libbsd.py @@ -361,12 +361,13 @@ class Builder(builder.ModuleManager): bld(target = lex['file'][:-2]+ '.c', source = lex['file'], rule = lex_rule) - bld.objects(target = 'lex_%s' % (lex['sym']), - features = 'c', - cflags = cflags, - includes = lexIncludes + includes, - defines = defines + lexDefines, - source = lex['file'][:-2] + '.c') + if lex['build']: + bld.objects(target = 'lex_%s' % (lex['sym']), + features = 'c', + cflags = cflags, + includes = lexIncludes + includes, + defines = defines + lexDefines, + source = lex['file'][:-2] + '.c') libbsd_use += ['lex_%s' % (lex['sym'])] # @@ -398,12 +399,13 @@ class Builder(builder.ModuleManager): bld(target = yaccFile[:-2] + '.c', source = yaccFile, rule = yacc_rule) - bld.objects(target = 'yacc_%s' % (yaccSym), - features = 'c', - cflags = cflags, - includes = yaccIncludes + includes, - defines = defines + yaccDefines, - source = yaccFile[:-2] + '.c') + if yacc['build']: + bld.objects(target = 'yacc_%s' % (yaccSym), + features = 'c', + cflags = cflags, + includes = yaccIncludes + includes, + defines = defines + yaccDefines, + source = yaccFile[:-2] + '.c') libbsd_use += ['yacc_%s' % (yaccSym)] # |