Merge "Switch hostname(1) to toybox."
diff --git a/Android.bp b/Android.bp
index 03071d1..62e276a 100644
--- a/Android.bp
+++ b/Android.bp
@@ -97,10 +97,12 @@
"cc/config/arm_device.go",
"cc/config/arm64_device.go",
+ "cc/config/arm64_fuchsia_device.go",
"cc/config/mips_device.go",
"cc/config/mips64_device.go",
"cc/config/x86_device.go",
"cc/config/x86_64_device.go",
+ "cc/config/x86_64_fuchsia_device.go",
"cc/config/x86_darwin_host.go",
"cc/config/x86_linux_host.go",
diff --git a/android/arch.go b/android/arch.go
index bb8cc02..de19dbe 100644
--- a/android/arch.go
+++ b/android/arch.go
@@ -105,7 +105,6 @@
var archVariants = map[ArchType][]string{
Arm: {
- "armv7-a",
"armv7-a-neon",
"armv8-a",
"armv8-2a",
@@ -1269,7 +1268,6 @@
func getMegaDeviceConfig() []archConfig {
return []archConfig{
- {"arm", "armv7-a", "generic", []string{"armeabi-v7a"}},
{"arm", "armv7-a-neon", "generic", []string{"armeabi-v7a"}},
{"arm", "armv7-a-neon", "cortex-a7", []string{"armeabi-v7a"}},
{"arm", "armv7-a-neon", "cortex-a8", []string{"armeabi-v7a"}},
@@ -1321,7 +1319,7 @@
func getNdkAbisConfig() []archConfig {
return []archConfig{
- {"arm", "armv7-a", "", []string{"armeabi"}},
+ {"arm", "armv7-a-neon", "", []string{"armeabi"}},
{"arm64", "armv8-a", "", []string{"arm64-v8a"}},
{"x86", "", "", []string{"x86"}},
{"x86_64", "", "", []string{"x86_64"}},
diff --git a/android/config.go b/android/config.go
index 106f245..6d81a38 100644
--- a/android/config.go
+++ b/android/config.go
@@ -224,6 +224,22 @@
return Config{config}
}
+func TestArchConfigFuchsia(buildDir string, env map[string]string) Config {
+ testConfig := TestConfig(buildDir, env)
+ config := testConfig.config
+
+ config.Targets = map[OsType][]Target{
+ Fuchsia: []Target{
+ {Fuchsia, Arch{ArchType: Arm64, ArchVariant: "", Native: true}},
+ },
+ BuildOs: []Target{
+ {BuildOs, Arch{ArchType: X86_64}},
+ },
+ }
+
+ return testConfig
+}
+
// TestConfig returns a Config object suitable for using for tests that need to run the arch mutator
func TestArchConfig(buildDir string, env map[string]string) Config {
testConfig := TestConfig(buildDir, env)
diff --git a/android/paths.go b/android/paths.go
index 13b31c7..4b84c97 100644
--- a/android/paths.go
+++ b/android/paths.go
@@ -503,16 +503,9 @@
return ret, err
}
- abs, err := filepath.Abs(ret.String())
- if err != nil {
- return ret, err
- }
- buildroot, err := filepath.Abs(ctx.Config().buildDir)
- if err != nil {
- return ret, err
- }
- if strings.HasPrefix(abs, buildroot) {
- return ret, fmt.Errorf("source path %s is in output", abs)
+ // absolute path already checked by validateSafePath
+ if strings.HasPrefix(ret.String(), ctx.Config().buildDir) {
+ return ret, fmt.Errorf("source path %s is in output", ret.String())
}
return ret, err
@@ -526,16 +519,9 @@
return ret, err
}
- abs, err := filepath.Abs(ret.String())
- if err != nil {
- return ret, err
- }
- buildroot, err := filepath.Abs(ctx.Config().buildDir)
- if err != nil {
- return ret, err
- }
- if strings.HasPrefix(abs, buildroot) {
- return ret, fmt.Errorf("source path %s is in output", abs)
+ // absolute path already checked by validatePath
+ if strings.HasPrefix(ret.String(), ctx.Config().buildDir) {
+ return ret, fmt.Errorf("source path %s is in output", ret.String())
}
return ret, nil
diff --git a/android/paths_test.go b/android/paths_test.go
index c4332d2..1ed0734 100644
--- a/android/paths_test.go
+++ b/android/paths_test.go
@@ -630,3 +630,64 @@
})
}
}
+
+func TestPathForSource(t *testing.T) {
+ testCases := []struct {
+ name string
+ buildDir string
+ src string
+ err string
+ }{
+ {
+ name: "normal",
+ buildDir: "out",
+ src: "a/b/c",
+ },
+ {
+ name: "abs",
+ buildDir: "out",
+ src: "/a/b/c",
+ err: "is outside directory",
+ },
+ {
+ name: "in out dir",
+ buildDir: "out",
+ src: "out/a/b/c",
+ err: "is in output",
+ },
+ }
+
+ funcs := []struct {
+ name string
+ f func(ctx PathContext, pathComponents ...string) (SourcePath, error)
+ }{
+ {"pathForSource", pathForSource},
+ {"safePathForSource", safePathForSource},
+ }
+
+ for _, f := range funcs {
+ t.Run(f.name, func(t *testing.T) {
+ for _, test := range testCases {
+ t.Run(test.name, func(t *testing.T) {
+ testConfig := TestConfig(test.buildDir, nil)
+ ctx := &configErrorWrapper{config: testConfig}
+ _, err := f.f(ctx, test.src)
+ if len(ctx.errors) > 0 {
+ t.Fatalf("unexpected errors %v", ctx.errors)
+ }
+ if err != nil {
+ if test.err == "" {
+ t.Fatalf("unexpected error %q", err.Error())
+ } else if !strings.Contains(err.Error(), test.err) {
+ t.Fatalf("incorrect error, want substring %q got %q", test.err, err.Error())
+ }
+ } else {
+ if test.err != "" {
+ t.Fatalf("missing error %q", test.err)
+ }
+ }
+ })
+ }
+ })
+ }
+}
diff --git a/androidmk/cmd/androidmk/android.go b/androidmk/cmd/androidmk/android.go
index 71eb19b..e7f2531 100644
--- a/androidmk/cmd/androidmk/android.go
+++ b/androidmk/cmd/androidmk/android.go
@@ -69,6 +69,8 @@
"LOCAL_BUILT_MODULE_STEM": skip,
"LOCAL_USE_AAPT2": skip, // Always enabled in Soong
"LOCAL_JAR_EXCLUDE_FILES": skip, // Soong never excludes files from jars
+
+ "LOCAL_ANNOTATION_PROCESSOR_CLASSES": skip, // Soong gets the processor classes from the plugin
}
// adds a group of properties all having the same type
@@ -147,8 +149,7 @@
"LOCAL_COMPATIBILITY_SUITE": "test_suites",
"LOCAL_OVERRIDES_PACKAGES": "overrides",
- "LOCAL_ANNOTATION_PROCESSORS": "annotation_processors",
- "LOCAL_ANNOTATION_PROCESSOR_CLASSES": "annotation_processor_classes",
+ "LOCAL_ANNOTATION_PROCESSORS": "plugins",
"LOCAL_PROGUARD_FLAGS": "optimize.proguard_flags",
"LOCAL_PROGUARD_FLAG_FILES": "optimize.proguard_flags_files",
diff --git a/androidmk/cmd/androidmk/androidmk_test.go b/androidmk/cmd/androidmk/androidmk_test.go
index 9874cb2..5fbe62a0 100644
--- a/androidmk/cmd/androidmk/androidmk_test.go
+++ b/androidmk/cmd/androidmk/androidmk_test.go
@@ -807,6 +807,23 @@
}
`,
},
+ {
+ desc: "LOCAL_ANNOTATION_PROCESSORS",
+ in: `
+include $(CLEAR_VARS)
+LOCAL_MODULE := foolib
+LOCAL_ANNOTATION_PROCESSORS := bar
+LOCAL_ANNOTATION_PROCESSOR_CLASSES := com.bar
+include $(BUILD_STATIC_JAVA_LIBRARY)
+`,
+ expected: `
+java_library {
+ name: "foolib",
+ plugins: ["bar"],
+
+}
+`,
+ },
}
func TestEndToEnd(t *testing.T) {
diff --git a/cc/binary.go b/cc/binary.go
index c9e6cab..65e8eb5 100644
--- a/cc/binary.go
+++ b/cc/binary.go
@@ -196,7 +196,7 @@
if binary.Properties.Static_executable == nil && ctx.Config().HostStaticBinaries() {
binary.Properties.Static_executable = BoolPtr(true)
}
- } else {
+ } else if !ctx.Fuchsia() {
// Static executables are not supported on Darwin or Windows
binary.Properties.Static_executable = nil
}
@@ -363,8 +363,10 @@
var sharedLibs android.Paths
// Ignore shared libs for static executables.
if !binary.static() {
- sharedLibs = deps.SharedLibs
+ sharedLibs = deps.EarlySharedLibs
+ sharedLibs = append(sharedLibs, deps.SharedLibs...)
sharedLibs = append(sharedLibs, deps.LateSharedLibs...)
+ linkerDeps = append(linkerDeps, deps.EarlySharedLibsDeps...)
linkerDeps = append(linkerDeps, deps.SharedLibsDeps...)
linkerDeps = append(linkerDeps, deps.LateSharedLibsDeps...)
}
diff --git a/cc/cc.go b/cc/cc.go
index 5111bd2..baee70a 100644
--- a/cc/cc.go
+++ b/cc/cc.go
@@ -96,9 +96,9 @@
type PathDeps struct {
// Paths to .so files
- SharedLibs, LateSharedLibs android.Paths
+ SharedLibs, EarlySharedLibs, LateSharedLibs android.Paths
// Paths to the dependencies to use for .so files (.so.toc files)
- SharedLibsDeps, LateSharedLibsDeps android.Paths
+ SharedLibsDeps, EarlySharedLibsDeps, LateSharedLibsDeps android.Paths
// Paths to .a files
StaticLibs, LateStaticLibs, WholeStaticLibs android.Paths
@@ -328,6 +328,7 @@
var (
sharedDepTag = dependencyTag{name: "shared", library: true}
sharedExportDepTag = dependencyTag{name: "shared", library: true, reexportFlags: true}
+ earlySharedDepTag = dependencyTag{name: "early_shared", library: true}
lateSharedDepTag = dependencyTag{name: "late shared", library: true}
staticDepTag = dependencyTag{name: "static", library: true}
staticExportDepTag = dependencyTag{name: "static", library: true, reexportFlags: true}
@@ -599,7 +600,7 @@
}
func (ctx *moduleContextImpl) useSdk() bool {
- if ctx.ctx.Device() && !ctx.useVndk() && !ctx.inRecovery() {
+ if ctx.ctx.Device() && !ctx.useVndk() && !ctx.inRecovery() && !ctx.ctx.Fuchsia() {
return String(ctx.mod.Properties.Sdk_version) != ""
}
return false
@@ -668,6 +669,11 @@
if ctx.ctx.Config().IsEnvTrue("SKIP_ABI_CHECKS") {
return false
}
+
+ if ctx.ctx.Fuchsia() {
+ return false
+ }
+
if sanitize := ctx.mod.sanitize; sanitize != nil {
if !sanitize.isVariantOnProductionDevice() {
return false
@@ -1565,6 +1571,11 @@
depPtr = &depPaths.SharedLibsDeps
depFile = ccDep.linker.(libraryInterface).toc()
directSharedDeps = append(directSharedDeps, ccDep)
+ case earlySharedDepTag:
+ ptr = &depPaths.EarlySharedLibs
+ depPtr = &depPaths.EarlySharedLibsDeps
+ depFile = ccDep.linker.(libraryInterface).toc()
+ directSharedDeps = append(directSharedDeps, ccDep)
case lateSharedDepTag, ndkLateStubDepTag:
ptr = &depPaths.LateSharedLibs
depPtr = &depPaths.LateSharedLibsDeps
@@ -1658,7 +1669,7 @@
// Export the shared libs to Make.
switch depTag {
- case sharedDepTag, sharedExportDepTag, lateSharedDepTag:
+ case sharedDepTag, sharedExportDepTag, lateSharedDepTag, earlySharedDepTag:
if dependentLibrary, ok := ccDep.linker.(*libraryDecorator); ok {
if dependentLibrary.buildStubs() && android.InAnyApex(depName) {
// Add the dependency to the APEX(es) providing the library so that
diff --git a/cc/cc_test.go b/cc/cc_test.go
index 96233a1..dc23620 100644
--- a/cc/cc_test.go
+++ b/cc/cc_test.go
@@ -51,29 +51,8 @@
os.Exit(run())
}
-func createTestContext(t *testing.T, config android.Config, bp string) *android.TestContext {
- ctx := android.NewTestArchContext()
- ctx.RegisterModuleType("cc_binary", android.ModuleFactoryAdaptor(BinaryFactory))
- ctx.RegisterModuleType("cc_library", android.ModuleFactoryAdaptor(LibraryFactory))
- ctx.RegisterModuleType("cc_library_shared", android.ModuleFactoryAdaptor(LibrarySharedFactory))
- ctx.RegisterModuleType("cc_library_headers", android.ModuleFactoryAdaptor(LibraryHeaderFactory))
- ctx.RegisterModuleType("toolchain_library", android.ModuleFactoryAdaptor(ToolchainLibraryFactory))
- ctx.RegisterModuleType("llndk_library", android.ModuleFactoryAdaptor(LlndkLibraryFactory))
- ctx.RegisterModuleType("llndk_headers", android.ModuleFactoryAdaptor(llndkHeadersFactory))
- ctx.RegisterModuleType("vendor_public_library", android.ModuleFactoryAdaptor(vendorPublicLibraryFactory))
- ctx.RegisterModuleType("cc_object", android.ModuleFactoryAdaptor(ObjectFactory))
- ctx.RegisterModuleType("filegroup", android.ModuleFactoryAdaptor(android.FileGroupFactory))
- ctx.PreDepsMutators(func(ctx android.RegisterMutatorsContext) {
- ctx.BottomUp("image", ImageMutator).Parallel()
- ctx.BottomUp("link", LinkageMutator).Parallel()
- ctx.BottomUp("vndk", VndkMutator).Parallel()
- ctx.BottomUp("version", VersionMutator).Parallel()
- ctx.BottomUp("begin", BeginMutator).Parallel()
- })
- ctx.Register()
-
- // add some modules that are required by the compiler and/or linker
- bp = bp + `
+func gatherRequiredDeps(os android.OsType) string {
+ ret := `
toolchain_library {
name: "libatomic",
vendor_available: true,
@@ -215,8 +194,45 @@
cc_library {
name: "libprotobuf-cpp-lite",
}
+ `
+ if os == android.Fuchsia {
+ ret += `
+ cc_library {
+ name: "libbioniccompat",
+ stl: "none",
+ }
+ cc_library {
+ name: "libcompiler_rt",
+ stl: "none",
+ }
+ `
+ }
+ return ret
+}
-`
+func createTestContext(t *testing.T, config android.Config, bp string, os android.OsType) *android.TestContext {
+ ctx := android.NewTestArchContext()
+ ctx.RegisterModuleType("cc_binary", android.ModuleFactoryAdaptor(BinaryFactory))
+ ctx.RegisterModuleType("cc_library", android.ModuleFactoryAdaptor(LibraryFactory))
+ ctx.RegisterModuleType("cc_library_shared", android.ModuleFactoryAdaptor(LibrarySharedFactory))
+ ctx.RegisterModuleType("cc_library_headers", android.ModuleFactoryAdaptor(LibraryHeaderFactory))
+ ctx.RegisterModuleType("toolchain_library", android.ModuleFactoryAdaptor(ToolchainLibraryFactory))
+ ctx.RegisterModuleType("llndk_library", android.ModuleFactoryAdaptor(LlndkLibraryFactory))
+ ctx.RegisterModuleType("llndk_headers", android.ModuleFactoryAdaptor(llndkHeadersFactory))
+ ctx.RegisterModuleType("vendor_public_library", android.ModuleFactoryAdaptor(vendorPublicLibraryFactory))
+ ctx.RegisterModuleType("cc_object", android.ModuleFactoryAdaptor(ObjectFactory))
+ ctx.RegisterModuleType("filegroup", android.ModuleFactoryAdaptor(android.FileGroupFactory))
+ ctx.PreDepsMutators(func(ctx android.RegisterMutatorsContext) {
+ ctx.BottomUp("image", ImageMutator).Parallel()
+ ctx.BottomUp("link", LinkageMutator).Parallel()
+ ctx.BottomUp("vndk", VndkMutator).Parallel()
+ ctx.BottomUp("version", VersionMutator).Parallel()
+ ctx.BottomUp("begin", BeginMutator).Parallel()
+ })
+ ctx.Register()
+
+ // add some modules that are required by the compiler and/or linker
+ bp = bp + gatherRequiredDeps(os)
ctx.MockFileSystem(map[string][]byte{
"Android.bp": []byte(bp),
@@ -232,8 +248,12 @@
}
func testCcWithConfig(t *testing.T, bp string, config android.Config) *android.TestContext {
+ return testCcWithConfigForOs(t, bp, config, android.Android)
+}
+
+func testCcWithConfigForOs(t *testing.T, bp string, config android.Config, os android.OsType) *android.TestContext {
t.Helper()
- ctx := createTestContext(t, config, bp)
+ ctx := createTestContext(t, config, bp, os)
_, errs := ctx.ParseFileList(".", []string{"Android.bp"})
android.FailIfErrored(t, errs)
@@ -266,7 +286,7 @@
config.TestProductVariables.DeviceVndkVersion = StringPtr("current")
config.TestProductVariables.Platform_vndk_version = StringPtr("VER")
- ctx := createTestContext(t, config, bp)
+ ctx := createTestContext(t, config, bp, android.Android)
_, errs := ctx.ParseFileList(".", []string{"Android.bp"})
if len(errs) > 0 {
@@ -289,6 +309,69 @@
recoveryVariant = "android_arm64_armv8-a_recovery_shared"
)
+func TestFuchsiaDeps(t *testing.T) {
+ t.Helper()
+
+ bp := `
+ cc_library {
+ name: "libTest",
+ srcs: ["foo.c"],
+ target: {
+ fuchsia: {
+ srcs: ["bar.c"],
+ },
+ },
+ }`
+
+ config := android.TestArchConfigFuchsia(buildDir, nil)
+ ctx := testCcWithConfigForOs(t, bp, config, android.Fuchsia)
+
+ rt := false
+ fb := false
+
+ ld := ctx.ModuleForTests("libTest", "fuchsia_arm64_shared").Rule("ld")
+ implicits := ld.Implicits
+ for _, lib := range implicits {
+ if strings.Contains(lib.Rel(), "libcompiler_rt") {
+ rt = true
+ }
+
+ if strings.Contains(lib.Rel(), "libbioniccompat") {
+ fb = true
+ }
+ }
+
+ if !rt || !fb {
+ t.Errorf("fuchsia libs must link libcompiler_rt and libbioniccompat")
+ }
+}
+
+func TestFuchsiaTargetDecl(t *testing.T) {
+ t.Helper()
+
+ bp := `
+ cc_library {
+ name: "libTest",
+ srcs: ["foo.c"],
+ target: {
+ fuchsia: {
+ srcs: ["bar.c"],
+ },
+ },
+ }`
+
+ config := android.TestArchConfigFuchsia(buildDir, nil)
+ ctx := testCcWithConfigForOs(t, bp, config, android.Fuchsia)
+ ld := ctx.ModuleForTests("libTest", "fuchsia_arm64_shared").Rule("ld")
+ var objs []string
+ for _, o := range ld.Inputs {
+ objs = append(objs, o.Base())
+ }
+ if len(objs) != 2 || objs[0] != "foo.o" || objs[1] != "bar.o" {
+ t.Errorf("inputs of libTest must be []string{\"foo.o\", \"bar.o\"}, but was %#v.", objs)
+ }
+}
+
func TestVendorSrc(t *testing.T) {
ctx := testCc(t, `
cc_library {
diff --git a/cc/config/arm64_fuchsia_device.go b/cc/config/arm64_fuchsia_device.go
new file mode 100644
index 0000000..02c0c14
--- /dev/null
+++ b/cc/config/arm64_fuchsia_device.go
@@ -0,0 +1,101 @@
+// Copyright 2018 Google Inc. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package config
+
+import (
+ "android/soong/android"
+)
+
+var fuchsiaArm64SysRoot string = "prebuilts/fuchsia_sdk/arch/arm64/sysroot"
+var fuchsiaArm64PrebuiltLibsRoot string = "fuchsia/prebuilt_libs/"
+
+type toolchainFuchsiaArm64 struct {
+ toolchain64Bit
+ toolchainFuchsia
+}
+
+func (t *toolchainFuchsiaArm64) Name() string {
+ return "arm64"
+}
+
+func (t *toolchainFuchsiaArm64) GccRoot() string {
+ return "${config.Arm64GccRoot}"
+}
+
+func (t *toolchainFuchsiaArm64) GccTriple() string {
+ return "aarch64-linux-android"
+}
+
+func (t *toolchainFuchsiaArm64) GccVersion() string {
+ return arm64GccVersion
+}
+
+func (t *toolchainFuchsiaArm64) Cflags() string {
+ return ""
+}
+
+func (t *toolchainFuchsiaArm64) Cppflags() string {
+ return ""
+}
+
+func (t *toolchainFuchsiaArm64) Ldflags() string {
+ return "-Wl,--fix-cortex-a53-843419"
+}
+
+func (t *toolchainFuchsiaArm64) IncludeFlags() string {
+ return ""
+}
+
+func (t *toolchainFuchsiaArm64) ToolchainCflags() string {
+ return "-mcpu=cortex-a53"
+}
+
+func (t *toolchainFuchsiaArm64) ClangTriple() string {
+ return "arm64-fuchsia-android"
+}
+
+func (t *toolchainFuchsiaArm64) ClangCppflags() string {
+ return "-Wno-error=deprecated-declarations"
+}
+
+func (t *toolchainFuchsiaArm64) ClangLdflags() string {
+ return "--target=arm64-fuchsia --sysroot=" + fuchsiaArm64SysRoot + " -L" + fuchsiaArm64PrebuiltLibsRoot + "/aarch64-fuchsia/lib " + "-Lprebuilts/fuchsia_sdk/arch/arm64/dist/"
+}
+
+func (t *toolchainFuchsiaArm64) ClangLldflags() string {
+ return "--target=arm64-fuchsia --sysroot=" + fuchsiaArm64SysRoot + " -L" + fuchsiaArm64PrebuiltLibsRoot + "/aarch64-fuchsia/lib " + "-Lprebuilts/fuchsia_sdk/arch/arm64/dist/"
+}
+
+func (t *toolchainFuchsiaArm64) ClangCflags() string {
+ return "--target=arm64-fuchsia --sysroot=" + fuchsiaArm64SysRoot + " -I" + fuchsiaArm64SysRoot + "/include"
+}
+
+func (t *toolchainFuchsiaArm64) Bionic() bool {
+ return false
+}
+
+func (t *toolchainFuchsiaArm64) ToolchainClangCflags() string {
+ return "-march=armv8-a"
+}
+
+var toolchainArm64FuchsiaSingleton Toolchain = &toolchainFuchsiaArm64{}
+
+func arm64FuchsiaToolchainFactory(arch android.Arch) Toolchain {
+ return toolchainArm64FuchsiaSingleton
+}
+
+func init() {
+ registerToolchainFactory(android.Fuchsia, android.Arm64, arm64FuchsiaToolchainFactory)
+}
diff --git a/cc/config/arm_device.go b/cc/config/arm_device.go
index cd7c410..aee16eb 100644
--- a/cc/config/arm_device.go
+++ b/cc/config/arm_device.go
@@ -51,11 +51,6 @@
}
armClangArchVariantCflags = map[string][]string{
- "armv7-a": []string{
- "-march=armv7-a",
- "-mfloat-abi=softfp",
- "-mfpu=vfpv3-d16",
- },
"armv7-a-neon": []string{
"-march=armv7-a",
"-mfloat-abi=softfp",
@@ -189,8 +184,6 @@
pctx.StaticVariable("ArmClangThumbCflags", strings.Join(ClangFilterUnknownCflags(armThumbCflags), " "))
// Clang arch variant cflags
- pctx.StaticVariable("ArmClangArmv7ACflags",
- strings.Join(armClangArchVariantCflags["armv7-a"], " "))
pctx.StaticVariable("ArmClangArmv7ANeonCflags",
strings.Join(armClangArchVariantCflags["armv7-a-neon"], " "))
pctx.StaticVariable("ArmClangArmv8ACflags",
@@ -219,7 +212,6 @@
var (
armClangArchVariantCflagsVar = map[string]string{
- "armv7-a": "${config.ArmClangArmv7ACflags}",
"armv7-a-neon": "${config.ArmClangArmv7ANeonCflags}",
"armv8-a": "${config.ArmClangArmv8ACflags}",
"armv8-2a": "${config.ArmClangArmv82ACflags}",
@@ -335,8 +327,6 @@
default:
fixCortexA8 = "-Wl,--no-fix-cortex-a8"
}
- case "armv7-a":
- fixCortexA8 = "-Wl,--fix-cortex-a8"
case "armv8-a", "armv8-2a":
// Nothing extra for armv8-a/armv8-2a
default:
diff --git a/cc/config/global.go b/cc/config/global.go
index 5d98d67..ff11a8a 100644
--- a/cc/config/global.go
+++ b/cc/config/global.go
@@ -150,8 +150,13 @@
pctx.StaticVariable("CommonClangGlobalCflags",
strings.Join(append(ClangFilterUnknownCflags(commonGlobalCflags), "${ClangExtraCflags}"), " "))
- pctx.StaticVariable("DeviceClangGlobalCflags",
- strings.Join(append(ClangFilterUnknownCflags(deviceGlobalCflags), "${ClangExtraTargetCflags}"), " "))
+ pctx.VariableFunc("DeviceClangGlobalCflags", func(ctx android.PackageVarContext) string {
+ if ctx.Config().Fuchsia() {
+ return strings.Join(ClangFilterUnknownCflags(deviceGlobalCflags), " ")
+ } else {
+ return strings.Join(append(ClangFilterUnknownCflags(deviceGlobalCflags), "${ClangExtraTargetCflags}"), " ")
+ }
+ })
pctx.StaticVariable("HostClangGlobalCflags",
strings.Join(ClangFilterUnknownCflags(hostGlobalCflags), " "))
pctx.StaticVariable("NoOverrideClangGlobalCflags",
diff --git a/cc/config/x86_64_fuchsia_device.go b/cc/config/x86_64_fuchsia_device.go
new file mode 100644
index 0000000..79af00c
--- /dev/null
+++ b/cc/config/x86_64_fuchsia_device.go
@@ -0,0 +1,106 @@
+// Copyright 2018 Google Inc. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package config
+
+import (
+ "android/soong/android"
+)
+
+var fuchsiaSysRoot string = "prebuilts/fuchsia_sdk/arch/x64/sysroot"
+var fuchsiaPrebuiltLibsRoot string = "fuchsia/prebuilt_libs"
+
+type toolchainFuchsia struct {
+ cFlags, ldFlags string
+}
+
+type toolchainFuchsiaX8664 struct {
+ toolchain64Bit
+ toolchainFuchsia
+}
+
+func (t *toolchainFuchsiaX8664) Name() string {
+ return "x86_64"
+}
+
+func (t *toolchainFuchsiaX8664) GccRoot() string {
+ return "${config.X86_64GccRoot}"
+}
+
+func (t *toolchainFuchsiaX8664) GccTriple() string {
+ return "x86_64-linux-android"
+}
+
+func (t *toolchainFuchsiaX8664) GccVersion() string {
+ return x86_64GccVersion
+}
+
+func (t *toolchainFuchsiaX8664) Cflags() string {
+ return ""
+}
+
+func (t *toolchainFuchsiaX8664) Cppflags() string {
+ return ""
+}
+
+func (t *toolchainFuchsiaX8664) Ldflags() string {
+ return ""
+}
+
+func (t *toolchainFuchsiaX8664) IncludeFlags() string {
+ return ""
+}
+
+func (t *toolchainFuchsiaX8664) ClangTriple() string {
+ return "x86_64-fuchsia-android"
+}
+
+func (t *toolchainFuchsiaX8664) ClangCppflags() string {
+ return "-Wno-error=deprecated-declarations"
+}
+
+func (t *toolchainFuchsiaX8664) ClangLdflags() string {
+ return "--target=x86_64-fuchsia --sysroot=" + fuchsiaSysRoot + " -L" + fuchsiaPrebuiltLibsRoot + "/x86_64-fuchsia/lib " + "-Lprebuilts/fuchsia_sdk/arch/x64/dist/"
+
+}
+
+func (t *toolchainFuchsiaX8664) ClangLldflags() string {
+ return "--target=x86_64-fuchsia --sysroot=" + fuchsiaSysRoot + " -L" + fuchsiaPrebuiltLibsRoot + "/x86_64-fuchsia/lib " + "-Lprebuilts/fuchsia_sdk/arch/x64/dist/"
+}
+
+func (t *toolchainFuchsiaX8664) ClangCflags() string {
+ return "--target=x86_64-fuchsia --sysroot=" + fuchsiaSysRoot + " -I" + fuchsiaSysRoot + "/include"
+}
+
+func (t *toolchainFuchsiaX8664) Bionic() bool {
+ return false
+}
+
+func (t *toolchainFuchsiaX8664) YasmFlags() string {
+ return "-f elf64 -m amd64"
+}
+
+func (t *toolchainFuchsiaX8664) ToolchainClangCflags() string {
+ return "-DUSE_SSSE3 -mssse3"
+}
+
+var toolchainFuchsiaSingleton Toolchain = &toolchainFuchsiaX8664{}
+
+func fuchsiaToolchainFactory(arch android.Arch) Toolchain {
+ return toolchainFuchsiaSingleton
+}
+
+func init() {
+ registerToolchainFactory(android.Fuchsia, android.X86_64, fuchsiaToolchainFactory)
+}
diff --git a/cc/library.go b/cc/library.go
index 4adb081..09e5b50 100644
--- a/cc/library.go
+++ b/cc/library.go
@@ -696,9 +696,11 @@
}
}
- sharedLibs := deps.SharedLibs
+ sharedLibs := deps.EarlySharedLibs
+ sharedLibs = append(sharedLibs, deps.SharedLibs...)
sharedLibs = append(sharedLibs, deps.LateSharedLibs...)
+ linkerDeps = append(linkerDeps, deps.EarlySharedLibsDeps...)
linkerDeps = append(linkerDeps, deps.SharedLibsDeps...)
linkerDeps = append(linkerDeps, deps.LateSharedLibsDeps...)
linkerDeps = append(linkerDeps, objs.tidyFiles...)
diff --git a/cc/linker.go b/cc/linker.go
index cda392d..dbdcd57 100644
--- a/cc/linker.go
+++ b/cc/linker.go
@@ -270,6 +270,18 @@
deps.LateSharedLibs = append(deps.LateSharedLibs, systemSharedLibs...)
}
+ if ctx.Fuchsia() {
+ if ctx.ModuleName() != "libbioniccompat" &&
+ ctx.ModuleName() != "libcompiler_rt-extras" &&
+ ctx.ModuleName() != "libcompiler_rt" {
+ deps.StaticLibs = append(deps.StaticLibs, "libbioniccompat")
+ }
+ if ctx.ModuleName() != "libcompiler_rt" && ctx.ModuleName() != "libcompiler_rt-extras" {
+ deps.LateStaticLibs = append(deps.LateStaticLibs, "libcompiler_rt")
+ }
+
+ }
+
if ctx.Windows() {
deps.LateStaticLibs = append(deps.LateStaticLibs, "libwinpthread")
}
@@ -360,7 +372,7 @@
flags.LdFlags = append(flags.LdFlags, toolchain.ClangLdflags())
}
- if !ctx.toolchain().Bionic() {
+ if !ctx.toolchain().Bionic() && !ctx.Fuchsia() {
CheckBadHostLdlibs(ctx, "host_ldlibs", linker.Properties.Host_ldlibs)
flags.LdFlags = append(flags.LdFlags, linker.Properties.Host_ldlibs...)
@@ -379,6 +391,10 @@
}
}
+ if ctx.Fuchsia() {
+ flags.LdFlags = append(flags.LdFlags, "-lfdio", "-lzircon")
+ }
+
CheckBadLinkerFlags(ctx, "ldflags", linker.Properties.Ldflags)
flags.LdFlags = append(flags.LdFlags, proptools.NinjaAndShellEscape(linker.Properties.Ldflags)...)
diff --git a/cc/sanitize.go b/cc/sanitize.go
index d19e54a..90656da 100644
--- a/cc/sanitize.go
+++ b/cc/sanitize.go
@@ -167,6 +167,11 @@
s.Never = BoolPtr(true)
}
+ // Sanitizers do not work on Fuchsia yet.
+ if ctx.Fuchsia() {
+ s.Never = BoolPtr(true)
+ }
+
// Never always wins.
if Bool(s.Never) {
return
@@ -667,10 +672,10 @@
// Add the dependency to the runtime library for each of the sanitizer variants
func sanitizerRuntimeMutator(mctx android.BottomUpMutatorContext) {
- if mctx.Os() != android.Android {
- return
- }
if c, ok := mctx.Module().(*Module); ok && c.sanitize != nil {
+ if !c.Enabled() {
+ return
+ }
var sanitizers []string
var diagSanitizers []string
@@ -804,7 +809,7 @@
mctx.AddFarVariationDependencies([]blueprint.Variation{
{Mutator: "link", Variation: "shared"},
{Mutator: "arch", Variation: mctx.Target().String()},
- }, sharedDepTag, runtimeLibrary)
+ }, earlySharedDepTag, runtimeLibrary)
}
// static lib does not have dependency to the runtime library. The
// dependency will be added to the executables or shared libs using
diff --git a/cc/stl.go b/cc/stl.go
index 4870870..5e61e1e 100644
--- a/cc/stl.go
+++ b/cc/stl.go
@@ -91,6 +91,26 @@
ctx.ModuleErrorf("stl: %q is not a supported STL for windows", s)
return ""
}
+ } else if ctx.Fuchsia() {
+ switch s {
+ case "c++_static":
+ return "libc++_static"
+ case "c++_shared":
+ return "libc++"
+ case "libc++", "libc++_static":
+ return s
+ case "none":
+ return ""
+ case "":
+ if ctx.static() {
+ return "libc++_static"
+ } else {
+ return "libc++"
+ }
+ default:
+ ctx.ModuleErrorf("stl: %q is not a supported STL on Fuchsia", s)
+ return ""
+ }
} else {
switch s {
case "libc++", "libc++_static":
@@ -248,8 +268,9 @@
func init() {
hostDynamicGccLibs = map[android.OsType][]string{
- android.Linux: []string{"-lgcc_s", "-lgcc", "-lc", "-lgcc_s", "-lgcc"},
- android.Darwin: []string{"-lc", "-lSystem"},
+ android.Fuchsia: []string{"-lc", "-lunwind"},
+ android.Linux: []string{"-lgcc_s", "-lgcc", "-lc", "-lgcc_s", "-lgcc"},
+ android.Darwin: []string{"-lc", "-lSystem"},
android.Windows: []string{"-Wl,--start-group", "-lmingw32", "-lgcc", "-lgcc_eh",
"-lmoldname", "-lmingwex", "-lmsvcrt", "-lucrt", "-lpthread",
"-ladvapi32", "-lshell32", "-luser32", "-lkernel32", "-lpsapi",
diff --git a/java/app_test.go b/java/app_test.go
index 9e2bc23..9d7ed0a 100644
--- a/java/app_test.go
+++ b/java/app_test.go
@@ -110,57 +110,55 @@
name string
enforceRROTargets []string
enforceRROExcludedOverlays []string
- fooOverlayFiles []string
- fooRRODirs []string
- barOverlayFiles []string
- barRRODirs []string
+ overlayFiles map[string][]string
+ rroDirs map[string][]string
}{
{
name: "no RRO",
enforceRROTargets: nil,
enforceRROExcludedOverlays: nil,
- fooOverlayFiles: []string{
- "device/vendor/blah/static_overlay/foo/res/values/strings.xml",
- "device/vendor/blah/overlay/foo/res/values/strings.xml",
+ overlayFiles: map[string][]string{
+ "foo": []string{
+ "device/vendor/blah/static_overlay/foo/res/values/strings.xml",
+ "device/vendor/blah/overlay/foo/res/values/strings.xml",
+ },
+ "bar": []string{
+ "device/vendor/blah/static_overlay/bar/res/values/strings.xml",
+ "device/vendor/blah/overlay/bar/res/values/strings.xml",
+ },
},
- fooRRODirs: nil,
- barOverlayFiles: []string{
- "device/vendor/blah/static_overlay/bar/res/values/strings.xml",
- "device/vendor/blah/overlay/bar/res/values/strings.xml",
+ rroDirs: map[string][]string{
+ "foo": nil,
+ "bar": nil,
},
- barRRODirs: nil,
},
{
name: "enforce RRO on foo",
enforceRROTargets: []string{"foo"},
enforceRROExcludedOverlays: []string{"device/vendor/blah/static_overlay"},
- fooOverlayFiles: []string{
- "device/vendor/blah/static_overlay/foo/res/values/strings.xml",
+ overlayFiles: map[string][]string{
+ "foo": []string{"device/vendor/blah/static_overlay/foo/res/values/strings.xml"},
+ "bar": []string{
+ "device/vendor/blah/static_overlay/bar/res/values/strings.xml",
+ "device/vendor/blah/overlay/bar/res/values/strings.xml",
+ },
},
- fooRRODirs: []string{
- "device/vendor/blah/overlay/foo/res",
+ rroDirs: map[string][]string{
+ "foo": []string{"device/vendor/blah/overlay/foo/res"},
+ "bar": nil,
},
- barOverlayFiles: []string{
- "device/vendor/blah/static_overlay/bar/res/values/strings.xml",
- "device/vendor/blah/overlay/bar/res/values/strings.xml",
- },
- barRRODirs: nil,
},
{
name: "enforce RRO on all",
enforceRROTargets: []string{"*"},
enforceRROExcludedOverlays: []string{"device/vendor/blah/static_overlay"},
- fooOverlayFiles: []string{
- "device/vendor/blah/static_overlay/foo/res/values/strings.xml",
+ overlayFiles: map[string][]string{
+ "foo": []string{"device/vendor/blah/static_overlay/foo/res/values/strings.xml"},
+ "bar": []string{"device/vendor/blah/static_overlay/bar/res/values/strings.xml"},
},
- fooRRODirs: []string{
- "device/vendor/blah/overlay/foo/res",
- },
- barOverlayFiles: []string{
- "device/vendor/blah/static_overlay/bar/res/values/strings.xml",
- },
- barRRODirs: []string{
- "device/vendor/blah/overlay/bar/res",
+ rroDirs: map[string][]string{
+ "foo": []string{"device/vendor/blah/overlay/foo/res"},
+ "bar": []string{"device/vendor/blah/overlay/bar/res"},
},
},
}
@@ -222,27 +220,19 @@
return overlayFiles, rroDirs
}
- fooOverlayFiles, fooRRODirs := getOverlays("foo")
- barOverlayFiles, barRRODirs := getOverlays("bar")
+ apps := []string{"foo", "bar"}
+ for _, app := range apps {
+ overlayFiles, rroDirs := getOverlays(app)
- if !reflect.DeepEqual(fooOverlayFiles, testCase.fooOverlayFiles) {
- t.Errorf("expected foo overlay files:\n %#v\n got:\n %#v",
- testCase.fooOverlayFiles, fooOverlayFiles)
+ if !reflect.DeepEqual(overlayFiles, testCase.overlayFiles[app]) {
+ t.Errorf("expected %s overlay files:\n %#v\n got:\n %#v",
+ app, testCase.overlayFiles[app], overlayFiles)
+ }
+ if !reflect.DeepEqual(rroDirs, testCase.rroDirs[app]) {
+ t.Errorf("expected %s rroDirs: %#v\n got:\n %#v",
+ app, testCase.rroDirs[app], rroDirs)
+ }
}
- if !reflect.DeepEqual(fooRRODirs, testCase.fooRRODirs) {
- t.Errorf("expected foo rroDirs: %#v\n got:\n %#v",
- testCase.fooRRODirs, fooRRODirs)
- }
-
- if !reflect.DeepEqual(barOverlayFiles, testCase.barOverlayFiles) {
- t.Errorf("expected bar overlay files:\n %#v\n got:\n %#v",
- testCase.barOverlayFiles, barOverlayFiles)
- }
- if !reflect.DeepEqual(barRRODirs, testCase.barRRODirs) {
- t.Errorf("expected bar rroDirs: %#v\n got:\n %#v",
- testCase.barRRODirs, barRRODirs)
- }
-
})
}
}
diff --git a/java/builder.go b/java/builder.go
index 67e8235..7aac881 100644
--- a/java/builder.go
+++ b/java/builder.go
@@ -47,7 +47,8 @@
`$processorpath $processor $javacFlags $bootClasspath $classpath ` +
`-source $javaVersion -target $javaVersion ` +
`-d $outDir -s $annoDir @$out.rsp @$srcJarDir/list ; fi ) && ` +
- `${config.SoongZipCmd} -jar -o $out -C $outDir -D $outDir`,
+ `${config.SoongZipCmd} -jar -o $out -C $outDir -D $outDir && ` +
+ `rm -rf "$srcJarDir"`,
CommandDeps: []string{
"${config.JavacCmd}",
"${config.SoongZipCmd}",
@@ -255,8 +256,7 @@
deps = append(deps, flags.classpath...)
deps = append(deps, flags.processorPath...)
- // TODO(b/77284273): pass -processor:none if no plugins are listed
- processor := ""
+ processor := "-proc:none"
if flags.processor != "" {
processor = "-processor " + flags.processor
}
diff --git a/java/droiddoc.go b/java/droiddoc.go
index 0d2842a..01e2989 100644
--- a/java/droiddoc.go
+++ b/java/droiddoc.go
@@ -34,7 +34,9 @@
`$opts $bootclasspathArgs $classpathArgs $sourcepathArgs ` +
`-d $outDir -quiet && ` +
`${config.SoongZipCmd} -write_if_changed -d -o $docZip -C $outDir -D $outDir && ` +
- `${config.SoongZipCmd} -write_if_changed -jar -o $out -C $stubsDir -D $stubsDir $postDoclavaCmds`,
+ `${config.SoongZipCmd} -write_if_changed -jar -o $out -C $stubsDir -D $stubsDir $postDoclavaCmds && ` +
+ `rm -rf "$srcJarDir"`,
+
CommandDeps: []string{
"${config.ZipSyncCmd}",
"${config.JavadocCmd}",
@@ -74,7 +76,8 @@
`${config.JavaCmd} -jar ${config.MetalavaJar} -encoding UTF-8 -source $javaVersion @$out.rsp @$srcJarDir/list ` +
`$bootclasspathArgs $classpathArgs $sourcepathArgs --no-banner --color --quiet --format=v2 ` +
`$opts && ` +
- `${config.SoongZipCmd} -write_if_changed -jar -o $out -C $stubsDir -D $stubsDir`,
+ `${config.SoongZipCmd} -write_if_changed -jar -o $out -C $stubsDir -D $stubsDir && ` +
+ `rm -rf "$srcJarDir"`,
CommandDeps: []string{
"${config.ZipSyncCmd}",
"${config.JavaCmd}",
@@ -94,7 +97,7 @@
`${config.ZipSyncCmd} -d $srcJarDir -l $srcJarDir/list -f "*.java" $srcJars && ` +
`${config.JavaCmd} -jar ${config.MetalavaJar} -encoding UTF-8 -source $javaVersion @$out.rsp @$srcJarDir/list ` +
`$bootclasspathArgs $classpathArgs $sourcepathArgs --no-banner --color --quiet --format=v2 ` +
- `$opts && touch $out ) || ` +
+ `$opts && touch $out && rm -rf "$srcJarDir") || ` +
`( echo -e "$msg" ; exit 38 )`,
CommandDeps: []string{
"${config.ZipSyncCmd}",
@@ -120,7 +123,8 @@
`${config.JavaCmd} -jar ${config.DokkaJar} $srcJarDir ` +
`$classpathArgs -format dac -dacRoot /reference/kotlin -output $outDir $opts && ` +
`${config.SoongZipCmd} -write_if_changed -d -o $docZip -C $outDir -D $outDir && ` +
- `${config.SoongZipCmd} -write_if_changed -jar -o $out -C $stubsDir -D $stubsDir`,
+ `${config.SoongZipCmd} -write_if_changed -jar -o $out -C $stubsDir -D $stubsDir && ` +
+ `rm -rf "$srcJarDir"`,
CommandDeps: []string{
"${config.ZipSyncCmd}",
"${config.DokkaJar}",
@@ -1500,7 +1504,7 @@
}
}
*implicits = append(*implicits, androidJars...)
- flags += " --android-jar-pattern " + t.dir.String() + "/%/android.jar "
+ flags += " --android-jar-pattern " + t.dir.String() + "/%/public/android.jar "
} else {
ctx.PropertyErrorf("api_levels_annotations_dirs",
"module %q is not a metalava api-levels-annotations dir", ctx.OtherModuleName(m))
@@ -1570,7 +1574,7 @@
func (d *Droidstubs) transformCheckApi(ctx android.ModuleContext,
apiFile, removedApiFile android.Path, implicits android.Paths,
- javaVersion, bootclasspathArgs, classpathArgs, sourcepathArgs, opts, msg string,
+ javaVersion, bootclasspathArgs, classpathArgs, sourcepathArgs, opts, subdir, msg string,
output android.WritablePath) {
ctx.Build(pctx, android.BuildParams{
Rule: metalavaApiCheck,
@@ -1580,7 +1584,7 @@
Implicits: append(android.Paths{apiFile, removedApiFile, d.apiFile, d.removedApiFile},
implicits...),
Args: map[string]string{
- "srcJarDir": android.PathForModuleOut(ctx, "apicheck-srcjars").String(),
+ "srcJarDir": android.PathForModuleOut(ctx, subdir, "srcjars").String(),
"srcJars": strings.Join(d.Javadoc.srcJars.Strings(), " "),
"javaVersion": javaVersion,
"bootclasspathArgs": bootclasspathArgs,
@@ -1669,7 +1673,7 @@
flags.metalavaInclusionAnnotationsFlags + flags.metalavaMergeAnnoDirFlags + " "
d.transformCheckApi(ctx, apiFile, removedApiFile, metalavaCheckApiImplicits,
- javaVersion, flags.bootClasspathArgs, flags.classpathArgs, flags.sourcepathArgs, opts,
+ javaVersion, flags.bootClasspathArgs, flags.classpathArgs, flags.sourcepathArgs, opts, "current-apicheck",
fmt.Sprintf(`\n******************************\n`+
`You have tried to change the API from what has been previously approved.\n\n`+
`To make these errors go away, you have two choices:\n`+
@@ -1700,7 +1704,7 @@
removedApiFile.String() + flags.metalavaMergeAnnoDirFlags + " "
d.transformCheckApi(ctx, apiFile, removedApiFile, metalavaCheckApiImplicits,
- javaVersion, flags.bootClasspathArgs, flags.classpathArgs, flags.sourcepathArgs, opts,
+ javaVersion, flags.bootClasspathArgs, flags.classpathArgs, flags.sourcepathArgs, opts, "last-apicheck",
`\n******************************\n`+
`You have tried to change the API from what has been previously released in\n`+
`an SDK. Please fix the errors listed above.\n`+
diff --git a/java/java.go b/java/java.go
index a76cde5..230e8f2 100644
--- a/java/java.go
+++ b/java/java.go
@@ -114,9 +114,6 @@
// If set to true, include sources used to compile the module in to the final jar
Include_srcs *bool
- // List of modules to use as annotation processors. Deprecated, use plugins instead.
- Annotation_processors []string
-
// List of modules to use as annotation processors
Plugins []string
@@ -376,7 +373,6 @@
var (
staticLibTag = dependencyTag{name: "staticlib"}
libTag = dependencyTag{name: "javalib"}
- annoTag = dependencyTag{name: "annotation processor"}
pluginTag = dependencyTag{name: "plugin"}
bootClasspathTag = dependencyTag{name: "bootclasspath"}
systemModulesTag = dependencyTag{name: "system modules"}
@@ -471,9 +467,6 @@
ctx.AddVariationDependencies(nil, libTag, j.properties.Libs...)
ctx.AddVariationDependencies(nil, staticLibTag, j.properties.Static_libs...)
- ctx.AddFarVariationDependencies([]blueprint.Variation{
- {Mutator: "arch", Variation: ctx.Config().BuildOsCommonVariant},
- }, annoTag, j.properties.Annotation_processors...)
ctx.AddFarVariationDependencies([]blueprint.Variation{
{Mutator: "arch", Variation: ctx.Config().BuildOsCommonVariant},
@@ -493,7 +486,7 @@
// TODO(ccross): move this to a mutator pass that can tell if generated sources contain
// Kotlin files
ctx.AddVariationDependencies(nil, kotlinStdlibTag, "kotlin-stdlib")
- if len(j.properties.Annotation_processors) > 0 || len(j.properties.Plugins) > 0 {
+ if len(j.properties.Plugins) > 0 {
ctx.AddVariationDependencies(nil, kotlinAnnotationsTag, "kotlin-annotations")
}
}
@@ -718,8 +711,6 @@
deps.staticResourceJars = append(deps.staticResourceJars, dep.ResourceJars()...)
// sdk lib names from dependencies are re-exported
j.exportedSdkLibs = append(j.exportedSdkLibs, dep.ExportedSdkLibs()...)
- case annoTag:
- deps.processorPath = append(deps.processorPath, dep.ImplementationAndResourcesJars()...)
case pluginTag:
if plugin, ok := dep.(*Plugin); ok {
deps.processorPath = append(deps.processorPath, dep.ImplementationAndResourcesJars()...)
@@ -1430,10 +1421,10 @@
}
func (j *Library) shouldUncompressDex(ctx android.ModuleContext) bool {
- // Store uncompressed (and do not strip) dex files from boot class path jars that are not
- // part of the boot image.
+ // Store uncompressed (and do not strip) dex files from boot class path jars that are
+ // in an apex.
if inList(ctx.ModuleName(), ctx.Config().BootJars()) &&
- !inList(ctx.ModuleName(), ctx.Config().PreoptBootJars()) {
+ android.DirectlyInAnyApex(ctx, ctx.ModuleName()) {
return true
}
return false
diff --git a/java/kotlin.go b/java/kotlin.go
index 9c47f98..81b89f9 100644
--- a/java/kotlin.go
+++ b/java/kotlin.go
@@ -32,7 +32,8 @@
`${config.GenKotlinBuildFileCmd} $classpath $classesDir $out.rsp $srcJarDir/list > $kotlinBuildFile &&` +
`${config.KotlincCmd} ${config.JavacHeapFlags} $kotlincFlags ` +
`-jvm-target $kotlinJvmTarget -Xbuild-file=$kotlinBuildFile && ` +
- `${config.SoongZipCmd} -jar -o $out -C $classesDir -D $classesDir`,
+ `${config.SoongZipCmd} -jar -o $out -C $classesDir -D $classesDir && ` +
+ `rm -rf "$srcJarDir"`,
CommandDeps: []string{
"${config.KotlincCmd}",
"${config.KotlinCompilerJar}",
@@ -89,7 +90,8 @@
`$kaptProcessorPath ` +
`$kaptProcessor ` +
`-Xbuild-file=$kotlinBuildFile && ` +
- `${config.SoongZipCmd} -jar -o $out -C $kaptDir/sources -D $kaptDir/sources`,
+ `${config.SoongZipCmd} -jar -o $out -C $kaptDir/sources -D $kaptDir/sources && ` +
+ `rm -rf "$srcJarDir"`,
CommandDeps: []string{
"${config.KotlincCmd}",
"${config.KotlinCompilerJar}",
diff --git a/java/kotlin_test.go b/java/kotlin_test.go
index 9406ef9..e0eb0c0 100644
--- a/java/kotlin_test.go
+++ b/java/kotlin_test.go
@@ -149,9 +149,8 @@
if javac.Args["processorPath"] != "" {
t.Errorf("expected processorPath '', got %q", javac.Args["processorPath"])
}
- // TODO(b/77284273): test for -processor:none
- if javac.Args["processor"] != "" {
- t.Errorf("expected processor '', got %q", javac.Args["processor"])
+ if javac.Args["processor"] != "-proc:none" {
+ t.Errorf("expected processor '-proc:none', got %q", javac.Args["processor"])
}
}
diff --git a/java/plugin_test.go b/java/plugin_test.go
index 7aa0164..d1aef2c 100644
--- a/java/plugin_test.go
+++ b/java/plugin_test.go
@@ -38,9 +38,8 @@
t.Errorf("want empty processorpath, got %q", javac.Args["processorpath"])
}
- // TODO(b/77284273): test for -processor:none if no plugins are enabled
- if javac.Args["processor"] != "" {
- t.Errorf("want no -processor argument, got %q", javac.Args["processor"])
+ if javac.Args["processor"] != "-proc:none" {
+ t.Errorf("want '-proc:none' argument, got %q", javac.Args["processor"])
}
}