Merge "soong: add support for module specific lexer flags"

This commit is contained in:
Matthias Maennich
2020-08-28 19:24:01 +00:00
committed by Gerrit Code Review
5 changed files with 21 additions and 5 deletions

View File

@@ -354,6 +354,7 @@ type builderFlags struct {
protoOptionsFile bool protoOptionsFile bool
yacc *YaccProperties yacc *YaccProperties
lex *LexProperties
} }
type StripFlags struct { type StripFlags struct {

View File

@@ -210,6 +210,7 @@ type Flags struct {
protoOptionsFile bool // Whether to look for a .options file next to the .proto protoOptionsFile bool // Whether to look for a .options file next to the .proto
Yacc *YaccProperties Yacc *YaccProperties
Lex *LexProperties
} }
// Properties used to compile all C or C++ modules // Properties used to compile all C or C++ modules

View File

@@ -111,6 +111,7 @@ type BaseCompilerProperties struct {
Gnu_extensions *bool Gnu_extensions *bool
Yacc *YaccProperties Yacc *YaccProperties
Lex *LexProperties
Aidl struct { Aidl struct {
// list of directories that will be added to the aidl include paths. // list of directories that will be added to the aidl include paths.
@@ -299,6 +300,7 @@ func (compiler *baseCompiler) compilerFlags(ctx ModuleContext, flags Flags, deps
flags.Local.YasmFlags = append(flags.Local.YasmFlags, esc(compiler.Properties.Asflags)...) flags.Local.YasmFlags = append(flags.Local.YasmFlags, esc(compiler.Properties.Asflags)...)
flags.Yacc = compiler.Properties.Yacc flags.Yacc = compiler.Properties.Yacc
flags.Lex = compiler.Properties.Lex
// Include dir cflags // Include dir cflags
localIncludeDirs := android.PathsForModuleSrc(ctx, compiler.Properties.Local_include_dirs) localIncludeDirs := android.PathsForModuleSrc(ctx, compiler.Properties.Local_include_dirs)

View File

@@ -34,9 +34,9 @@ func init() {
var ( var (
lex = pctx.AndroidStaticRule("lex", lex = pctx.AndroidStaticRule("lex",
blueprint.RuleParams{ blueprint.RuleParams{
Command: "M4=$m4Cmd $lexCmd -o$out $in", Command: "M4=$m4Cmd $lexCmd $flags -o$out $in",
CommandDeps: []string{"$lexCmd", "$m4Cmd"}, CommandDeps: []string{"$lexCmd", "$m4Cmd"},
}) }, "flags")
sysprop = pctx.AndroidStaticRule("sysprop", sysprop = pctx.AndroidStaticRule("sysprop",
blueprint.RuleParams{ blueprint.RuleParams{
@@ -153,12 +153,23 @@ func genAidl(ctx android.ModuleContext, rule *android.RuleBuilder, aidlFile andr
} }
} }
func genLex(ctx android.ModuleContext, lexFile android.Path, outFile android.ModuleGenPath) { type LexProperties struct {
// list of module-specific flags that will be used for .l and .ll compiles
Flags []string
}
func genLex(ctx android.ModuleContext, lexFile android.Path, outFile android.ModuleGenPath, props *LexProperties) {
var flags []string
if props != nil {
flags = props.Flags
}
flagsString := strings.Join(flags[:], " ")
ctx.Build(pctx, android.BuildParams{ ctx.Build(pctx, android.BuildParams{
Rule: lex, Rule: lex,
Description: "lex " + lexFile.Rel(), Description: "lex " + lexFile.Rel(),
Output: outFile, Output: outFile,
Input: lexFile, Input: lexFile,
Args: map[string]string{"flags": flagsString},
}) })
} }
@@ -235,11 +246,11 @@ func genSources(ctx android.ModuleContext, srcFiles android.Paths,
case ".l": case ".l":
cFile := android.GenPathWithExt(ctx, "lex", srcFile, "c") cFile := android.GenPathWithExt(ctx, "lex", srcFile, "c")
srcFiles[i] = cFile srcFiles[i] = cFile
genLex(ctx, srcFile, cFile) genLex(ctx, srcFile, cFile, buildFlags.lex)
case ".ll": case ".ll":
cppFile := android.GenPathWithExt(ctx, "lex", srcFile, "cpp") cppFile := android.GenPathWithExt(ctx, "lex", srcFile, "cpp")
srcFiles[i] = cppFile srcFiles[i] = cppFile
genLex(ctx, srcFile, cppFile) genLex(ctx, srcFile, cppFile, buildFlags.lex)
case ".proto": case ".proto":
ccFile, headerFile := genProto(ctx, srcFile, buildFlags) ccFile, headerFile := genProto(ctx, srcFile, buildFlags)
srcFiles[i] = ccFile srcFiles[i] = ccFile

View File

@@ -97,6 +97,7 @@ func flagsToBuilderFlags(in Flags) builderFlags {
protoOptionsFile: in.protoOptionsFile, protoOptionsFile: in.protoOptionsFile,
yacc: in.Yacc, yacc: in.Yacc,
lex: in.Lex,
} }
} }