Support .asm files for assembly

Test: mmma -j external/libjpeg-turbo
Change-Id: Id192dae5d74ecbf500fc668931c37f9b91d25ca4
This commit is contained in:
Colin Cross
2016-12-02 17:13:24 -08:00
parent 18c0c5afbd
commit 91e9004086
7 changed files with 49 additions and 0 deletions

View File

@@ -158,6 +158,16 @@ var (
Description: "tidy $out", Description: "tidy $out",
}, },
"cFlags", "tidyFlags") "cFlags", "tidyFlags")
yasmCmd = pctx.SourcePathVariable("yasmCmd", "prebuilts/misc/${config.HostPrebuiltTag}/yasm/yasm")
yasm = pctx.AndroidStaticRule("yasm",
blueprint.RuleParams{
Command: "$yasmCmd $asFlags -o $out $in",
CommandDeps: []string{"$yasmCmd"},
Description: "yasm $out",
},
"asFlags")
) )
func init() { func init() {
@@ -183,6 +193,7 @@ type builderFlags struct {
yaccFlags string yaccFlags string
protoFlags string protoFlags string
tidyFlags string tidyFlags string
yasmFlags string
toolchain config.Toolchain toolchain config.Toolchain
clang bool clang bool
tidy bool tidy bool
@@ -240,6 +251,19 @@ func TransformSourceToObj(ctx android.ModuleContext, subdir string, srcFiles and
objFiles[i] = objFile objFiles[i] = objFile
if srcFile.Ext() == ".asm" {
ctx.ModuleBuild(pctx, android.ModuleBuildParams{
Rule: yasm,
Output: objFile,
Input: srcFile,
OrderOnly: deps,
Args: map[string]string{
"asFlags": flags.yasmFlags,
},
})
continue
}
var moduleCflags string var moduleCflags string
var ccCmd string var ccCmd string
tidy := flags.tidy && flags.clang tidy := flags.tidy && flags.clang

View File

@@ -101,6 +101,7 @@ type Flags struct {
LdFlags []string // Flags that apply to linker command lines LdFlags []string // Flags that apply to linker command lines
libFlags []string // Flags to add libraries early to the link order libFlags []string // Flags to add libraries early to the link order
TidyFlags []string // Flags that apply to clang-tidy TidyFlags []string // Flags that apply to clang-tidy
YasmFlags []string // Flags that apply to yasm assembly source files
Toolchain config.Toolchain Toolchain config.Toolchain
Clang bool Clang bool

View File

@@ -147,6 +147,7 @@ func (compiler *baseCompiler) compilerFlags(ctx ModuleContext, flags Flags) Flag
flags.CppFlags = append(flags.CppFlags, esc(compiler.Properties.Cppflags)...) flags.CppFlags = append(flags.CppFlags, esc(compiler.Properties.Cppflags)...)
flags.ConlyFlags = append(flags.ConlyFlags, esc(compiler.Properties.Conlyflags)...) flags.ConlyFlags = append(flags.ConlyFlags, esc(compiler.Properties.Conlyflags)...)
flags.AsFlags = append(flags.AsFlags, esc(compiler.Properties.Asflags)...) flags.AsFlags = append(flags.AsFlags, esc(compiler.Properties.Asflags)...)
flags.YasmFlags = append(flags.YasmFlags, esc(compiler.Properties.Asflags)...)
flags.YaccFlags = append(flags.YaccFlags, esc(compiler.Properties.Yaccflags)...) flags.YaccFlags = append(flags.YaccFlags, esc(compiler.Properties.Yaccflags)...)
// Include dir cflags // Include dir cflags
@@ -281,6 +282,8 @@ func (compiler *baseCompiler) compilerFlags(ctx ModuleContext, flags Flags) Flag
} else { } else {
flags.CppFlags = append(flags.CppFlags, tc.Cppflags()) flags.CppFlags = append(flags.CppFlags, tc.Cppflags())
} }
flags.YasmFlags = append(flags.YasmFlags, tc.YasmFlags())
} }
if flags.Clang { if flags.Clang {

View File

@@ -66,6 +66,8 @@ type Toolchain interface {
ClangLdflags() string ClangLdflags() string
ClangInstructionSetFlags(string) (string, error) ClangInstructionSetFlags(string) (string, error)
YasmFlags() string
Is64Bit() bool Is64Bit() bool
ShlibSuffix() string ShlibSuffix() string
@@ -127,6 +129,10 @@ func (toolchainBase) ClangAsflags() string {
return "" return ""
} }
func (toolchainBase) YasmFlags() string {
return ""
}
func (toolchainBase) SanitizerRuntimeLibraryArch() string { func (toolchainBase) SanitizerRuntimeLibraryArch() string {
return "" return ""
} }

View File

@@ -166,6 +166,9 @@ func init() {
pctx.StaticVariable("X86_64ClangLdflags", strings.Join(ClangFilterUnknownCflags(x86_64Ldflags), " ")) pctx.StaticVariable("X86_64ClangLdflags", strings.Join(ClangFilterUnknownCflags(x86_64Ldflags), " "))
pctx.StaticVariable("X86_64ClangCppflags", strings.Join(ClangFilterUnknownCflags(x86_64Cppflags), " ")) pctx.StaticVariable("X86_64ClangCppflags", strings.Join(ClangFilterUnknownCflags(x86_64Cppflags), " "))
// Yasm flags
pctx.StaticVariable("X86_64YasmFlags", "-f elf64 -m amd64")
// Extended cflags // Extended cflags
// Architecture variant cflags // Architecture variant cflags
@@ -245,6 +248,10 @@ func (t *toolchainX86_64) ClangLdflags() string {
return "${config.X86_64Ldflags}" return "${config.X86_64Ldflags}"
} }
func (t *toolchainX86_64) YasmFlags() string {
return "${config.X86_64YasmFlags}"
}
func (toolchainX86_64) SanitizerRuntimeLibraryArch() string { func (toolchainX86_64) SanitizerRuntimeLibraryArch() string {
return "x86_64" return "x86_64"
} }

View File

@@ -188,6 +188,9 @@ func init() {
pctx.StaticVariable("X86ClangLdflags", strings.Join(ClangFilterUnknownCflags(x86Ldflags), " ")) pctx.StaticVariable("X86ClangLdflags", strings.Join(ClangFilterUnknownCflags(x86Ldflags), " "))
pctx.StaticVariable("X86ClangCppflags", strings.Join(ClangFilterUnknownCflags(x86Cppflags), " ")) pctx.StaticVariable("X86ClangCppflags", strings.Join(ClangFilterUnknownCflags(x86Cppflags), " "))
// Yasm flags
pctx.StaticVariable("X86YasmFlags", "-f elf32 -m x86")
// Extended cflags // Extended cflags
// Architecture variant cflags // Architecture variant cflags
@@ -267,6 +270,10 @@ func (t *toolchainX86) ClangLdflags() string {
return "${config.X86Ldflags}" return "${config.X86Ldflags}"
} }
func (t *toolchainX86) YasmFlags() string {
return "${config.X86YasmFlags}"
}
func (toolchainX86) SanitizerRuntimeLibraryArch() string { func (toolchainX86) SanitizerRuntimeLibraryArch() string {
return "i686" return "i686"
} }

View File

@@ -97,6 +97,7 @@ func flagsToBuilderFlags(in Flags) builderFlags {
ldFlags: strings.Join(in.LdFlags, " "), ldFlags: strings.Join(in.LdFlags, " "),
libFlags: strings.Join(in.libFlags, " "), libFlags: strings.Join(in.libFlags, " "),
tidyFlags: strings.Join(in.TidyFlags, " "), tidyFlags: strings.Join(in.TidyFlags, " "),
yasmFlags: strings.Join(in.YasmFlags, " "),
toolchain: in.Toolchain, toolchain: in.Toolchain,
clang: in.Clang, clang: in.Clang,
tidy: in.Tidy, tidy: in.Tidy,