From 01855a5acd8bea448b5cd83d61fa9a7ebbf1815e Mon Sep 17 00:00:00 2001 From: Christian Mauderer Date: Mon, 7 May 2018 10:19:28 +0200 Subject: 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. --- builder.py | 12 ++++++++---- waf_libbsd.py | 26 ++++++++++++++------------ 2 files changed, 22 insertions(+), 16 deletions(-) diff --git a/builder.py b/builder.py index b0d6374e..78f592c7 100755 --- a/builder.py +++ b/builder.py @@ -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)] # -- cgit v1.2.3