Export cc_library_headers as BUILD_HEADER_LIBRARY
And support the reverse translation in androidmk.
Test: Use a cc_library_headers using LOCAL_HEADER_LIBRARIES in make
Test: androidmk with LOCAL_HEADER_LIBRARIES
Test: androidmk with soong's Android-*.mk file for BUILD_HEADER_LIBRARIES
Change-Id: I17adedb62151f62e67e2168b09ad87f1d5648df6
diff --git a/cc/androidmk.go b/cc/androidmk.go
index ac1a55d..f45fbbe 100644
--- a/cc/androidmk.go
+++ b/cc/androidmk.go
@@ -81,18 +81,7 @@
}
func (library *libraryDecorator) AndroidMk(ctx AndroidMkContext, ret *android.AndroidMkData) {
- if library.shared() {
- ctx.subAndroidMk(ret, &library.stripper)
- ctx.subAndroidMk(ret, &library.relocationPacker)
- }
-
- if library.static() || library.header() {
- ret.Class = "STATIC_LIBRARIES"
- } else if library.shared() {
- ret.Class = "SHARED_LIBRARIES"
- }
-
- ret.Extra = append(ret.Extra, func(w io.Writer, outputFile android.Path) error {
+ writeExportedIncludes := func(w io.Writer) {
var exportedIncludes []string
for _, flag := range library.exportedFlags() {
if strings.HasPrefix(flag, "-I") {
@@ -106,6 +95,50 @@
if len(exportedIncludeDeps) > 0 {
fmt.Fprintln(w, "LOCAL_EXPORT_C_INCLUDE_DEPS :=", strings.Join(exportedIncludeDeps.Strings(), " "))
}
+ }
+
+ if library.static() {
+ ret.Class = "STATIC_LIBRARIES"
+ } else if library.shared() {
+ ctx.subAndroidMk(ret, &library.stripper)
+ ctx.subAndroidMk(ret, &library.relocationPacker)
+
+ ret.Class = "SHARED_LIBRARIES"
+ } else if library.header() {
+ ret.Custom = func(w io.Writer, name, prefix, moduleDir string) error {
+ fmt.Fprintln(w, "\ninclude $(CLEAR_VARS)")
+ fmt.Fprintln(w, "LOCAL_PATH :=", moduleDir)
+ fmt.Fprintln(w, "LOCAL_MODULE :=", name)
+
+ archStr := ctx.Target().Arch.ArchType.String()
+ var host bool
+ switch ctx.Target().Os.Class {
+ case android.Host:
+ fmt.Fprintln(w, "LOCAL_MODULE_HOST_ARCH := ", archStr)
+ host = true
+ case android.HostCross:
+ fmt.Fprintln(w, "LOCAL_MODULE_HOST_CROSS_ARCH := ", archStr)
+ host = true
+ case android.Device:
+ fmt.Fprintln(w, "LOCAL_MODULE_TARGET_ARCH := ", archStr)
+ }
+
+ if host {
+ fmt.Fprintln(w, "LOCAL_MODULE_HOST_OS :=", ctx.Target().Os.String())
+ fmt.Fprintln(w, "LOCAL_IS_HOST_MODULE := true")
+ }
+
+ writeExportedIncludes(w)
+ fmt.Fprintln(w, "include $(BUILD_HEADER_LIBRARY)")
+
+ return nil
+ }
+
+ return
+ }
+
+ ret.Extra = append(ret.Extra, func(w io.Writer, outputFile android.Path) error {
+ writeExportedIncludes(w)
fmt.Fprintln(w, "LOCAL_BUILT_MODULE_STEM := $(LOCAL_MODULE)"+outputFile.Ext())