From 89db15dcab265673d7ad4e81bdfc79e0b5c58b02 Mon Sep 17 00:00:00 2001 From: Inseob Kim Date: Mon, 3 Feb 2020 18:06:46 +0900 Subject: [PATCH] Add C++ Host support on sysprop_library With Host_supported: true, C++ part of sysprop_library will create host variant which can be used from host modules. As there are no native system property support on host, libbase functions will be used instead. Adding support on host will help reduce code complexity of other host_supported modules. Bug: 147708854 Test: m, sysprop_test, manually test host binary Change-Id: I850d91fea298ef1a0c16c6a7a9ec1aca5cf37e69 --- cc/testing.go | 2 ++ sysprop/sysprop_library.go | 21 +++++++++++++++++---- sysprop/sysprop_test.go | 12 ++++++++++++ 3 files changed, 31 insertions(+), 4 deletions(-) diff --git a/cc/testing.go b/cc/testing.go index 60e5cf596..aceb8c8b4 100644 --- a/cc/testing.go +++ b/cc/testing.go @@ -188,6 +188,7 @@ func GatherRequiredDepsForTest(os android.OsType) string { stl: "none", vendor_available: true, recovery_available: true, + host_supported: true, } cc_library { name: "libc++", @@ -197,6 +198,7 @@ func GatherRequiredDepsForTest(os android.OsType) string { stl: "none", vendor_available: true, recovery_available: true, + host_supported: true, vndk: { enabled: true, support_system_process: true, diff --git a/sysprop/sysprop_library.go b/sysprop/sysprop_library.go index ce404f8a7..65dbb22a9 100644 --- a/sysprop/sysprop_library.go +++ b/sysprop/sysprop_library.go @@ -144,6 +144,9 @@ type syspropLibraryProperties struct { // list of .sysprop files which defines the properties. Srcs []string `android:"path"` + // If set to true, build a variant of the module for the host. Defaults to false. + Host_supported *bool + // Whether public stub exists or not. Public_stub *bool `blueprint:"mutated"` } @@ -306,12 +309,20 @@ type ccLibraryProperties struct { Sysprop struct { Platform *bool } - Header_libs []string - Shared_libs []string + Target struct { + Android struct { + Header_libs []string + Shared_libs []string + } + Host struct { + Static_libs []string + } + } Required []string Recovery *bool Recovery_available *bool Vendor_available *bool + Host_supported *bool } type javaLibraryProperties struct { @@ -394,10 +405,12 @@ func syspropLibraryHook(ctx android.LoadHookContext, m *syspropLibrary) { ccProps.Device_specific = proptools.BoolPtr(ctx.DeviceSpecific()) ccProps.Product_specific = proptools.BoolPtr(ctx.ProductSpecific()) ccProps.Sysprop.Platform = proptools.BoolPtr(isOwnerPlatform) - ccProps.Header_libs = []string{"libbase_headers"} - ccProps.Shared_libs = []string{"liblog"} + ccProps.Target.Android.Header_libs = []string{"libbase_headers"} + ccProps.Target.Android.Shared_libs = []string{"liblog"} + ccProps.Target.Host.Static_libs = []string{"libbase", "liblog"} ccProps.Recovery_available = m.properties.Recovery_available ccProps.Vendor_available = m.properties.Vendor_available + ccProps.Host_supported = m.properties.Host_supported ctx.CreateModule(cc.LibraryFactory, &ccProps) scope := "internal" diff --git a/sysprop/sysprop_test.go b/sysprop/sysprop_test.go index 7cad3da94..51da22205 100644 --- a/sysprop/sysprop_test.go +++ b/sysprop/sysprop_test.go @@ -161,6 +161,7 @@ func TestSyspropLibrary(t *testing.T) { api_packages: ["android.sysprop"], property_owner: "Platform", vendor_available: true, + host_supported: true, } sysprop_library { @@ -244,6 +245,11 @@ func TestSyspropLibrary(t *testing.T) { static_libs: ["sysprop-platform", "sysprop-vendor"], } + cc_library { + name: "libbase", + host_supported: true, + } + cc_library_headers { name: "libbase_headers", vendor_available: true, @@ -256,6 +262,12 @@ func TestSyspropLibrary(t *testing.T) { nocrt: true, system_shared_libs: [], recovery_available: true, + host_supported: true, + } + + cc_binary_host { + name: "hostbin", + static_libs: ["sysprop-platform"], } llndk_library {