Merge changes I8e8e8b01,Ifb1f54d5,I9986e64f
* changes:
Add systemserverclasspath_fragments property to apex.
Add "contents" property to systemserverclasspath_fragment.
Move classpaths.proto related info into a separate provider.
diff --git a/android/bazel.go b/android/bazel.go
index ba29f6d..4f8392d 100644
--- a/android/bazel.go
+++ b/android/bazel.go
@@ -160,13 +160,7 @@
// Per-module denylist to always opt modules out of both bp2build and mixed builds.
bp2buildModuleDoNotConvertList = []string{
// Things that transitively depend on unconverted libc_* modules.
- "libc_nopthread", // http://b/186821550, cc_library_static, depends on //bionic/libc:libc_bionic_ndk (http://b/186822256)
- // also depends on //bionic/libc:libc_tzcode (http://b/186822591)
- // also depends on //bionic/libc:libstdc++ (http://b/186822597)
- "libc_common", // http://b/186821517, cc_library_static, depends on //bionic/libc:libc_nopthread (http://b/186821550)
- "libc_common_static", // http://b/186824119, cc_library_static, depends on //bionic/libc:libc_common (http://b/186821517)
- "libc_common_shared", // http://b/186824118, cc_library_static, depends on //bionic/libc:libc_common (http://b/186821517)
- "libc_nomalloc", // http://b/186825031, cc_library_static, depends on //bionic/libc:libc_common (http://b/186821517)
+ "libc_nomalloc", // http://b/186825031, cc_library_static, depends on //bionic/libc:libc_common (http://b/186821517)
"libbionic_spawn_benchmark", // http://b/186824595, cc_library_static, depends on //external/google-benchmark (http://b/186822740)
// also depends on //system/logging/liblog:liblog (http://b/186822772)
@@ -189,7 +183,6 @@
"libc_jemalloc_wrapper", // http://b/187012490, cc_library_static, depends on //external/jemalloc_new:libjemalloc5 (http://b/186828626)
"libc_ndk", // http://b/187013218, cc_library_static, depends on //bionic/libm:libm (http://b/183064661)
"libc", // http://b/183064430, cc_library, depends on //external/jemalloc_new:libjemalloc5 (http://b/186828626)
- "libc_bionic_ndk", // http://b/186822256, cc_library_static, fatal error: 'generated_android_ids.h' file not found
"libc_malloc_hooks", // http://b/187016307, cc_library, ld.lld: error: undefined symbol: __malloc_hook
"libm", // http://b/183064661, cc_library, math.h:25:16: error: unexpected token in argument list
@@ -230,7 +223,12 @@
// Per-module denylist to opt modules out of mixed builds. Such modules will
// still be generated via bp2build.
mixedBuildsDisabledList = []string{
+ "libc_bionic_ndk", // cparsons@, http://b/183213331, Handle generated headers in mixed builds.
+ "libc_common", // cparsons@ cc_library_static, depends on //bionic/libc:libc_nopthread
+ "libc_common_static", // cparsons@ cc_library_static, depends on //bionic/libc:libc_common
+ "libc_common_shared", // cparsons@ cc_library_static, depends on //bionic/libc:libc_common
"libc_netbsd", // lberki@, cc_library_static, version script assignment of 'LIBC_PRIVATE' to symbol 'SHA1Final' failed: symbol not defined
+ "libc_nopthread", // cparsons@ cc_library_static, depends on //bionic/libc:libc_bionic_ndk
"libc_openbsd", // ruperts@, cc_library_static, OK for bp2build but error: duplicate symbol: strcpy for mixed builds
"libsystemproperties", // cparsons@, cc_library_static, wrong include paths
"libpropertyinfoparser", // cparsons@, cc_library_static, wrong include paths
diff --git a/bazel/properties.go b/bazel/properties.go
index a71b12b..3e778bb 100644
--- a/bazel/properties.go
+++ b/bazel/properties.go
@@ -160,6 +160,14 @@
return labels
}
+// Appends two LabelLists, returning the combined list.
+func AppendBazelLabelLists(a LabelList, b LabelList) LabelList {
+ var result LabelList
+ result.Includes = append(a.Includes, b.Includes...)
+ result.Excludes = append(a.Excludes, b.Excludes...)
+ return result
+}
+
// Subtract needle from haystack
func SubtractBazelLabelList(haystack LabelList, needle LabelList) LabelList {
var result LabelList
diff --git a/bp2build/cc_library_conversion_test.go b/bp2build/cc_library_conversion_test.go
index 8afc82b..da5444c 100644
--- a/bp2build/cc_library_conversion_test.go
+++ b/bp2build/cc_library_conversion_test.go
@@ -113,6 +113,7 @@
copts = [
"-Wall",
"-I.",
+ "-I$(BINDIR)/.",
],
deps = [":some-headers"],
includes = ["foo-dir"],
@@ -183,6 +184,7 @@
"-Wunused",
"-Werror",
"-I.",
+ "-I$(BINDIR)/.",
],
deps = [":libc_headers"],
linkopts = [
@@ -242,7 +244,10 @@
bp: soongCcLibraryPreamble,
expectedBazelTargets: []string{`cc_library(
name = "fake-libarm-optimized-routines-math",
- copts = ["-Iexternal"] + select({
+ copts = [
+ "-Iexternal",
+ "-I$(BINDIR)/external",
+ ] + select({
"//build/bazel/platforms/arch:arm64": ["-DHAVE_FAST_FMA=1"],
"//conditions:default": [],
}),
@@ -310,6 +315,7 @@
copts = [
"bothflag",
"-Ifoo/bar",
+ "-I$(BINDIR)/foo/bar",
],
deps = [":static_dep_for_both"],
dynamic_deps = [":shared_dep_for_both"],
@@ -347,7 +353,10 @@
bp: soongCcLibraryPreamble,
expectedBazelTargets: []string{`cc_library(
name = "a",
- copts = ["-Ifoo/bar"],
+ copts = [
+ "-Ifoo/bar",
+ "-I$(BINDIR)/foo/bar",
+ ],
srcs = ["a.cpp"],
version_script = "v.map",
)`},
@@ -380,7 +389,10 @@
bp: soongCcLibraryPreamble,
expectedBazelTargets: []string{`cc_library(
name = "a",
- copts = ["-Ifoo/bar"],
+ copts = [
+ "-Ifoo/bar",
+ "-I$(BINDIR)/foo/bar",
+ ],
srcs = ["a.cpp"],
version_script = select({
"//build/bazel/platforms/arch:arm": "arm.map",
@@ -413,11 +425,17 @@
bp: soongCcLibraryPreamble,
expectedBazelTargets: []string{`cc_library(
name = "a",
- copts = ["-Ifoo/bar"],
+ copts = [
+ "-Ifoo/bar",
+ "-I$(BINDIR)/foo/bar",
+ ],
dynamic_deps = [":mylib"],
)`, `cc_library(
name = "mylib",
- copts = ["-Ifoo/bar"],
+ copts = [
+ "-Ifoo/bar",
+ "-I$(BINDIR)/foo/bar",
+ ],
)`},
},
{
@@ -461,12 +479,18 @@
bp: soongCcLibraryPreamble,
expectedBazelTargets: []string{`cc_library(
name = "a",
- copts = ["-Ifoo/bar"],
+ copts = [
+ "-Ifoo/bar",
+ "-I$(BINDIR)/foo/bar",
+ ],
linkopts = ["-Wl,--pack-dyn-relocs=none"],
srcs = ["a.cpp"],
)`, `cc_library(
name = "b",
- copts = ["-Ifoo/bar"],
+ copts = [
+ "-Ifoo/bar",
+ "-I$(BINDIR)/foo/bar",
+ ],
linkopts = select({
"//build/bazel/platforms/arch:x86_64": ["-Wl,--pack-dyn-relocs=none"],
"//conditions:default": [],
@@ -474,7 +498,10 @@
srcs = ["b.cpp"],
)`, `cc_library(
name = "c",
- copts = ["-Ifoo/bar"],
+ copts = [
+ "-Ifoo/bar",
+ "-I$(BINDIR)/foo/bar",
+ ],
linkopts = select({
"//build/bazel/platforms/os:darwin": ["-Wl,--pack-dyn-relocs=none"],
"//conditions:default": [],
@@ -505,6 +532,7 @@
"-include",
"header.h",
"-Ifoo/bar",
+ "-I$(BINDIR)/foo/bar",
],
)`},
},
@@ -548,6 +576,7 @@
"-fsigned-char",
"-pedantic",
"-Ifoo/bar",
+ "-I$(BINDIR)/foo/bar",
] + select({
"//build/bazel/platforms/arch:arm64": ["-DARM64=1"],
"//conditions:default": [],
diff --git a/bp2build/cc_library_headers_conversion_test.go b/bp2build/cc_library_headers_conversion_test.go
index 0905aba..1202da6 100644
--- a/bp2build/cc_library_headers_conversion_test.go
+++ b/bp2build/cc_library_headers_conversion_test.go
@@ -131,7 +131,10 @@
}`,
expectedBazelTargets: []string{`cc_library_headers(
name = "foo_headers",
- copts = ["-I."],
+ copts = [
+ "-I.",
+ "-I$(BINDIR)/.",
+ ],
deps = [
":lib-1",
":lib-2",
@@ -147,11 +150,17 @@
}),
)`, `cc_library_headers(
name = "lib-1",
- copts = ["-I."],
+ copts = [
+ "-I.",
+ "-I$(BINDIR)/.",
+ ],
includes = ["lib-1"],
)`, `cc_library_headers(
name = "lib-2",
- copts = ["-I."],
+ copts = [
+ "-I.",
+ "-I$(BINDIR)/.",
+ ],
includes = ["lib-2"],
)`},
},
@@ -185,16 +194,28 @@
}`,
expectedBazelTargets: []string{`cc_library_headers(
name = "android-lib",
- copts = ["-I."],
+ copts = [
+ "-I.",
+ "-I$(BINDIR)/.",
+ ],
)`, `cc_library_headers(
name = "base-lib",
- copts = ["-I."],
+ copts = [
+ "-I.",
+ "-I$(BINDIR)/.",
+ ],
)`, `cc_library_headers(
name = "darwin-lib",
- copts = ["-I."],
+ copts = [
+ "-I.",
+ "-I$(BINDIR)/.",
+ ],
)`, `cc_library_headers(
name = "foo_headers",
- copts = ["-I."],
+ copts = [
+ "-I.",
+ "-I$(BINDIR)/.",
+ ],
deps = [":base-lib"] + select({
"//build/bazel/platforms/os:android": [":android-lib"],
"//build/bazel/platforms/os:darwin": [":darwin-lib"],
@@ -206,16 +227,28 @@
}),
)`, `cc_library_headers(
name = "fuchsia-lib",
- copts = ["-I."],
+ copts = [
+ "-I.",
+ "-I$(BINDIR)/.",
+ ],
)`, `cc_library_headers(
name = "linux-lib",
- copts = ["-I."],
+ copts = [
+ "-I.",
+ "-I$(BINDIR)/.",
+ ],
)`, `cc_library_headers(
name = "linux_bionic-lib",
- copts = ["-I."],
+ copts = [
+ "-I.",
+ "-I$(BINDIR)/.",
+ ],
)`, `cc_library_headers(
name = "windows-lib",
- copts = ["-I."],
+ copts = [
+ "-I.",
+ "-I$(BINDIR)/.",
+ ],
)`},
},
{
@@ -236,13 +269,22 @@
}`,
expectedBazelTargets: []string{`cc_library_headers(
name = "android-lib",
- copts = ["-I."],
+ copts = [
+ "-I.",
+ "-I$(BINDIR)/.",
+ ],
)`, `cc_library_headers(
name = "exported-lib",
- copts = ["-I."],
+ copts = [
+ "-I.",
+ "-I$(BINDIR)/.",
+ ],
)`, `cc_library_headers(
name = "foo_headers",
- copts = ["-I."],
+ copts = [
+ "-I.",
+ "-I$(BINDIR)/.",
+ ],
deps = select({
"//build/bazel/platforms/os:android": [
":android-lib",
@@ -296,7 +338,10 @@
}`,
expectedBazelTargets: []string{`cc_library_headers(
name = "foo_headers",
- copts = ["-I."],
+ copts = [
+ "-I.",
+ "-I$(BINDIR)/.",
+ ],
includes = ["shared_include_dir"] + select({
"//build/bazel/platforms/arch:arm": ["arm_include_dir"],
"//build/bazel/platforms/arch:x86_64": ["x86_64_include_dir"],
diff --git a/bp2build/cc_library_static_conversion_test.go b/bp2build/cc_library_static_conversion_test.go
index d082db1..bb12462 100644
--- a/bp2build/cc_library_static_conversion_test.go
+++ b/bp2build/cc_library_static_conversion_test.go
@@ -17,6 +17,8 @@
import (
"android/soong/android"
"android/soong/cc"
+ "android/soong/genrule"
+
"strings"
"testing"
)
@@ -179,10 +181,15 @@
"-Dflag1",
"-Dflag2",
"-Iinclude_dir_1",
+ "-I$(BINDIR)/include_dir_1",
"-Iinclude_dir_2",
+ "-I$(BINDIR)/include_dir_2",
"-Ilocal_include_dir_1",
+ "-I$(BINDIR)/local_include_dir_1",
"-Ilocal_include_dir_2",
+ "-I$(BINDIR)/local_include_dir_2",
"-I.",
+ "-I$(BINDIR)/.",
],
deps = [
":header_lib_1",
@@ -205,22 +212,34 @@
],
)`, `cc_library_static(
name = "static_lib_1",
- copts = ["-I."],
+ copts = [
+ "-I.",
+ "-I$(BINDIR)/.",
+ ],
linkstatic = True,
srcs = ["static_lib_1.cc"],
)`, `cc_library_static(
name = "static_lib_2",
- copts = ["-I."],
+ copts = [
+ "-I.",
+ "-I$(BINDIR)/.",
+ ],
linkstatic = True,
srcs = ["static_lib_2.cc"],
)`, `cc_library_static(
name = "whole_static_lib_1",
- copts = ["-I."],
+ copts = [
+ "-I.",
+ "-I$(BINDIR)/.",
+ ],
linkstatic = True,
srcs = ["whole_static_lib_1.cc"],
)`, `cc_library_static(
name = "whole_static_lib_2",
- copts = ["-I."],
+ copts = [
+ "-I.",
+ "-I$(BINDIR)/.",
+ ],
linkstatic = True,
srcs = ["whole_static_lib_2.cc"],
)`},
@@ -257,7 +276,9 @@
name = "foo_static",
copts = [
"-Isubpackage",
+ "-I$(BINDIR)/subpackage",
"-I.",
+ "-I$(BINDIR)/.",
],
linkstatic = True,
)`},
@@ -280,7 +301,10 @@
}`,
expectedBazelTargets: []string{`cc_library_static(
name = "foo_static",
- copts = ["-I."],
+ copts = [
+ "-I.",
+ "-I$(BINDIR)/.",
+ ],
includes = ["subpackage"],
linkstatic = True,
)`},
@@ -303,7 +327,10 @@
}`,
expectedBazelTargets: []string{`cc_library_static(
name = "foo_static",
- copts = ["-I."],
+ copts = [
+ "-I.",
+ "-I$(BINDIR)/.",
+ ],
includes = ["subpackage"],
linkstatic = True,
)`},
@@ -341,10 +368,15 @@
name = "foo_static",
copts = [
"-Isubpackage/subsubpackage",
+ "-I$(BINDIR)/subpackage/subsubpackage",
"-Isubpackage2",
+ "-I$(BINDIR)/subpackage2",
"-Isubpackage3/subsubpackage",
+ "-I$(BINDIR)/subpackage3/subsubpackage",
"-Isubpackage/subsubpackage2",
+ "-I$(BINDIR)/subpackage/subsubpackage2",
"-Isubpackage",
+ "-I$(BINDIR)/subpackage",
],
includes = ["./exported_subsubpackage"],
linkstatic = True,
@@ -372,7 +404,9 @@
name = "foo_static",
copts = [
"-Isubpackage",
+ "-I$(BINDIR)/subpackage",
"-Isubpackage2",
+ "-I$(BINDIR)/subpackage2",
],
linkstatic = True,
)`},
@@ -401,8 +435,11 @@
name = "foo_static",
copts = [
"-Isubpackage",
+ "-I$(BINDIR)/subpackage",
"-Isubpackage2",
+ "-I$(BINDIR)/subpackage2",
"-I.",
+ "-I$(BINDIR)/.",
],
linkstatic = True,
)`},
@@ -423,7 +460,10 @@
}`,
expectedBazelTargets: []string{`cc_library_static(
name = "foo_static",
- copts = ["-I."],
+ copts = [
+ "-I.",
+ "-I$(BINDIR)/.",
+ ],
deps = select({
"//build/bazel/platforms/arch:arm64": [":static_dep"],
"//conditions:default": [],
@@ -435,11 +475,17 @@
}),
)`, `cc_library_static(
name = "static_dep",
- copts = ["-I."],
+ copts = [
+ "-I.",
+ "-I$(BINDIR)/.",
+ ],
linkstatic = True,
)`, `cc_library_static(
name = "static_dep2",
- copts = ["-I."],
+ copts = [
+ "-I.",
+ "-I$(BINDIR)/.",
+ ],
linkstatic = True,
)`},
},
@@ -459,7 +505,10 @@
}`,
expectedBazelTargets: []string{`cc_library_static(
name = "foo_static",
- copts = ["-I."],
+ copts = [
+ "-I.",
+ "-I$(BINDIR)/.",
+ ],
deps = select({
"//build/bazel/platforms/os:android": [":static_dep"],
"//conditions:default": [],
@@ -471,11 +520,17 @@
}),
)`, `cc_library_static(
name = "static_dep",
- copts = ["-I."],
+ copts = [
+ "-I.",
+ "-I$(BINDIR)/.",
+ ],
linkstatic = True,
)`, `cc_library_static(
name = "static_dep2",
- copts = ["-I."],
+ copts = [
+ "-I.",
+ "-I$(BINDIR)/.",
+ ],
linkstatic = True,
)`},
},
@@ -500,7 +555,10 @@
}`,
expectedBazelTargets: []string{`cc_library_static(
name = "foo_static",
- copts = ["-I."],
+ copts = [
+ "-I.",
+ "-I$(BINDIR)/.",
+ ],
deps = [":static_dep"] + select({
"//build/bazel/platforms/arch:arm64": [":static_dep4"],
"//conditions:default": [],
@@ -512,19 +570,31 @@
whole_archive_deps = [":static_dep2"],
)`, `cc_library_static(
name = "static_dep",
- copts = ["-I."],
+ copts = [
+ "-I.",
+ "-I$(BINDIR)/.",
+ ],
linkstatic = True,
)`, `cc_library_static(
name = "static_dep2",
- copts = ["-I."],
+ copts = [
+ "-I.",
+ "-I$(BINDIR)/.",
+ ],
linkstatic = True,
)`, `cc_library_static(
name = "static_dep3",
- copts = ["-I."],
+ copts = [
+ "-I.",
+ "-I$(BINDIR)/.",
+ ],
linkstatic = True,
)`, `cc_library_static(
name = "static_dep4",
- copts = ["-I."],
+ copts = [
+ "-I.",
+ "-I$(BINDIR)/.",
+ ],
linkstatic = True,
)`},
},
@@ -547,7 +617,10 @@
}`,
expectedBazelTargets: []string{`cc_library_static(
name = "foo_static",
- copts = ["-I."],
+ copts = [
+ "-I.",
+ "-I$(BINDIR)/.",
+ ],
linkstatic = True,
srcs = [
"common.c",
@@ -573,7 +646,10 @@
}`,
expectedBazelTargets: []string{`cc_library_static(
name = "foo_static",
- copts = ["-I."],
+ copts = [
+ "-I.",
+ "-I$(BINDIR)/.",
+ ],
linkstatic = True,
srcs = ["common.c"] + select({
"//build/bazel/platforms/arch:arm": ["foo-arm.c"],
@@ -604,7 +680,10 @@
}`,
expectedBazelTargets: []string{`cc_library_static(
name = "foo_static",
- copts = ["-I."],
+ copts = [
+ "-I.",
+ "-I$(BINDIR)/.",
+ ],
linkstatic = True,
srcs = ["common.c"] + select({
"//build/bazel/platforms/arch:arm": ["for-arm.c"],
@@ -637,7 +716,10 @@
} `,
expectedBazelTargets: []string{`cc_library_static(
name = "foo_static",
- copts = ["-I."],
+ copts = [
+ "-I.",
+ "-I$(BINDIR)/.",
+ ],
linkstatic = True,
srcs = ["common.c"] + select({
"//build/bazel/platforms/arch:arm": [
@@ -687,7 +769,10 @@
} `,
expectedBazelTargets: []string{`cc_library_static(
name = "foo_static",
- copts = ["-I."],
+ copts = [
+ "-I.",
+ "-I$(BINDIR)/.",
+ ],
linkstatic = True,
srcs = ["common.c"] + select({
"//build/bazel/platforms/arch:arm": [
@@ -738,12 +823,18 @@
}`,
expectedBazelTargets: []string{`cc_library_static(
name = "foo_static",
- copts = ["-I."],
+ copts = [
+ "-I.",
+ "-I$(BINDIR)/.",
+ ],
deps = [":static_dep"],
linkstatic = True,
)`, `cc_library_static(
name = "static_dep",
- copts = ["-I."],
+ copts = [
+ "-I.",
+ "-I$(BINDIR)/.",
+ ],
linkstatic = True,
)`},
},
@@ -768,7 +859,10 @@
} `,
expectedBazelTargets: []string{`cc_library_static(
name = "foo_static",
- copts = ["-I."],
+ copts = [
+ "-I.",
+ "-I$(BINDIR)/.",
+ ],
linkstatic = True,
srcs = ["common.c"] + select({
"//build/bazel/platforms/arch:arm": ["for-lib32.c"],
@@ -801,7 +895,10 @@
} `,
expectedBazelTargets: []string{`cc_library_static(
name = "foo_static2",
- copts = ["-I."],
+ copts = [
+ "-I.",
+ "-I$(BINDIR)/.",
+ ],
linkstatic = True,
srcs = ["common.c"] + select({
"//build/bazel/platforms/arch:arm": [
@@ -867,7 +964,10 @@
}`,
expectedBazelTargets: []string{`cc_library_static(
name = "foo_static3",
- copts = ["-I."],
+ copts = [
+ "-I.",
+ "-I$(BINDIR)/.",
+ ],
linkstatic = True,
srcs = ["common.c"] + select({
"//build/bazel/platforms/arch:arm": [
@@ -913,6 +1013,94 @@
}),
)`},
},
+ {
+ description: "cc_library_static arch srcs/exclude_srcs with generated files",
+ moduleTypeUnderTest: "cc_library_static",
+ moduleTypeUnderTestFactory: cc.LibraryStaticFactory,
+ moduleTypeUnderTestBp2BuildMutator: cc.CcLibraryStaticBp2Build,
+ depsMutators: []android.RegisterMutatorFunc{cc.RegisterDepsBp2Build},
+ filesystem: map[string]string{
+ "common.c": "",
+ "for-x86.c": "",
+ "not-for-x86.c": "",
+ "not-for-everything.c": "",
+ "dep/Android.bp": `
+genrule {
+ name: "generated_src_other_pkg",
+ out: ["generated_src_other_pkg.cpp"],
+ cmd: "nothing to see here",
+}
+
+genrule {
+ name: "generated_hdr_other_pkg",
+ out: ["generated_hdr_other_pkg.cpp"],
+ cmd: "nothing to see here",
+}
+
+genrule {
+ name: "generated_hdr_other_pkg_x86",
+ out: ["generated_hdr_other_pkg_x86.cpp"],
+ cmd: "nothing to see here",
+}`,
+ },
+ bp: soongCcLibraryStaticPreamble + `
+genrule {
+ name: "generated_src",
+ out: ["generated_src.cpp"],
+ cmd: "nothing to see here",
+}
+
+genrule {
+ name: "generated_src_x86",
+ out: ["generated_src_x86.cpp"],
+ cmd: "nothing to see here",
+}
+
+genrule {
+ name: "generated_hdr",
+ out: ["generated_hdr.h"],
+ cmd: "nothing to see here",
+}
+
+cc_library_static {
+ name: "foo_static3",
+ srcs: ["common.c", "not-for-*.c"],
+ exclude_srcs: ["not-for-everything.c"],
+ generated_sources: ["generated_src", "generated_src_other_pkg"],
+ generated_headers: ["generated_hdr", "generated_hdr_other_pkg"],
+ arch: {
+ x86: {
+ srcs: ["for-x86.c"],
+ exclude_srcs: ["not-for-x86.c"],
+ generated_sources: ["generated_src_x86"],
+ generated_headers: ["generated_hdr_other_pkg_x86"],
+ },
+ },
+}
+`,
+ expectedBazelTargets: []string{`cc_library_static(
+ name = "foo_static3",
+ copts = [
+ "-I.",
+ "-I$(BINDIR)/.",
+ ],
+ linkstatic = True,
+ srcs = [
+ "//dep:generated_hdr_other_pkg",
+ "//dep:generated_src_other_pkg",
+ ":generated_hdr",
+ ":generated_src",
+ "common.c",
+ ] + select({
+ "//build/bazel/platforms/arch:x86": [
+ "//dep:generated_hdr_other_pkg_x86",
+ ":generated_src_x86",
+ "for-x86.c",
+ ],
+ "//conditions:default": ["not-for-x86.c"],
+ }),
+)`},
+ },
}
dir := "."
@@ -933,6 +1121,7 @@
cc.RegisterCCBuildComponents(ctx)
ctx.RegisterModuleType("toolchain_library", cc.ToolchainLibraryFactory)
ctx.RegisterModuleType("cc_library_headers", cc.LibraryHeaderFactory)
+ ctx.RegisterModuleType("genrule", genrule.GenRuleFactory)
ctx.RegisterModuleType(testCase.moduleTypeUnderTest, testCase.moduleTypeUnderTestFactory)
for _, m := range testCase.depsMutators {
diff --git a/bp2build/cc_object_conversion_test.go b/bp2build/cc_object_conversion_test.go
index 9efdb53..ea8b9f1 100644
--- a/bp2build/cc_object_conversion_test.go
+++ b/bp2build/cc_object_conversion_test.go
@@ -65,7 +65,9 @@
"-Wall",
"-Werror",
"-Iinclude",
+ "-I$(BINDIR)/include",
"-I.",
+ "-I$(BINDIR)/.",
],
srcs = ["a/b/c.c"],
)`,
@@ -109,7 +111,9 @@
"-Werror",
"-fno-addrsig",
"-Iinclude",
+ "-I$(BINDIR)/include",
"-I.",
+ "-I$(BINDIR)/.",
],
srcs = ["a/b/c.c"],
)`,
@@ -140,6 +144,7 @@
copts = [
"-fno-addrsig",
"-I.",
+ "-I$(BINDIR)/.",
],
srcs = ["x/y/z.c"],
)`, `cc_object(
@@ -147,6 +152,7 @@
copts = [
"-fno-addrsig",
"-I.",
+ "-I$(BINDIR)/.",
],
deps = [":bar"],
srcs = ["a/b/c.c"],
@@ -284,6 +290,7 @@
copts = [
"-fno-addrsig",
"-I.",
+ "-I$(BINDIR)/.",
] + select({
"//build/bazel/platforms/arch:x86": ["-fPIC"],
"//conditions:default": [],
@@ -329,6 +336,7 @@
copts = [
"-fno-addrsig",
"-I.",
+ "-I$(BINDIR)/.",
] + select({
"//build/bazel/platforms/arch:arm": ["-Wall"],
"//build/bazel/platforms/arch:arm64": ["-Wall"],
@@ -373,6 +381,7 @@
copts = [
"-fno-addrsig",
"-I.",
+ "-I$(BINDIR)/.",
] + select({
"//build/bazel/platforms/os:android": ["-fPIC"],
"//build/bazel/platforms/os:darwin": ["-Wall"],
diff --git a/cc/bp2build.go b/cc/bp2build.go
index 33bb269..02d6428 100644
--- a/cc/bp2build.go
+++ b/cc/bp2build.go
@@ -14,10 +14,11 @@
package cc
import (
- "android/soong/android"
- "android/soong/bazel"
"path/filepath"
"strings"
+
+ "android/soong/android"
+ "android/soong/bazel"
)
// bp2build functions and helpers for converting cc_* modules to Bazel.
@@ -49,6 +50,22 @@
var allDeps []string
+ for _, p := range module.GetTargetProperties(ctx, &BaseCompilerProperties{}) {
+ // base compiler props
+ if baseCompilerProps, ok := p.(*BaseCompilerProperties); ok {
+ allDeps = append(allDeps, baseCompilerProps.Generated_headers...)
+ allDeps = append(allDeps, baseCompilerProps.Generated_sources...)
+ }
+ }
+
+ for _, p := range module.GetArchProperties(ctx, &BaseCompilerProperties{}) {
+ // arch specific compiler props
+ if baseCompilerProps, ok := p.(*BaseCompilerProperties); ok {
+ allDeps = append(allDeps, baseCompilerProps.Generated_headers...)
+ allDeps = append(allDeps, baseCompilerProps.Generated_sources...)
+ }
+ }
+
for _, p := range module.GetTargetProperties(ctx, &BaseLinkerProperties{}) {
// arch specific linker props
if baseLinkerProps, ok := p.(*BaseLinkerProperties); ok {
@@ -173,11 +190,19 @@
var srcs bazel.LabelListAttribute
var copts bazel.StringListAttribute
- // Creates the -I flag for a directory, while making the directory relative
+ // Creates the -I flags for a directory, while making the directory relative
// to the exec root for Bazel to work.
- includeFlag := func(dir string) string {
+ includeFlags := func(dir string) []string {
// filepath.Join canonicalizes the path, i.e. it takes care of . or .. elements.
- return "-I" + filepath.Join(ctx.ModuleDir(), dir)
+ moduleDirRootedPath := filepath.Join(ctx.ModuleDir(), dir)
+ return []string{
+ "-I" + moduleDirRootedPath,
+ // Include the bindir-rooted path (using make variable substitution). This most
+ // closely matches Bazel's native include path handling, which allows for dependency
+ // on generated headers in these directories.
+ // TODO(b/188084383): Handle local include directories in Bazel.
+ "-I$(BINDIR)/" + moduleDirRootedPath,
+ }
}
// Parse the list of module-relative include directories (-I).
@@ -197,7 +222,7 @@
copts = append(copts, strings.Split(flag, " ")...)
}
for _, dir := range parseLocalIncludeDirs(baseCompilerProps) {
- copts = append(copts, includeFlag(dir))
+ copts = append(copts, includeFlags(dir)...)
}
return copts
}
@@ -215,9 +240,17 @@
parseSrcs := func(baseCompilerProps *BaseCompilerProperties) bazel.LabelList {
// Combine the base srcs and arch-specific srcs
allSrcs := append(baseSrcs, baseCompilerProps.Srcs...)
+ // Add srcs-like dependencies such as generated files.
+ // First create a LabelList containing these dependencies, then merge the values with srcs.
+ generatedHdrsAndSrcs := baseCompilerProps.Generated_headers
+ generatedHdrsAndSrcs = append(generatedHdrsAndSrcs, baseCompilerProps.Generated_sources...)
+
+ generatedHdrsAndSrcsLabelList := android.BazelLabelForModuleDeps(ctx, generatedHdrsAndSrcs)
+
// Combine the base exclude_srcs and configuration-specific exclude_srcs
allExcludeSrcs := append(baseExcludeSrcs, baseCompilerProps.Exclude_srcs...)
- return android.BazelLabelForModuleSrcExcludes(ctx, allSrcs, allExcludeSrcs)
+ allSrcsLabelList := android.BazelLabelForModuleSrcExcludes(ctx, allSrcs, allExcludeSrcs)
+ return bazel.AppendBazelLabelLists(allSrcsLabelList, generatedHdrsAndSrcsLabelList)
}
for _, props := range module.compiler.compilerProps() {
@@ -227,8 +260,8 @@
// Used for arch-specific srcs later.
baseSrcs = baseCompilerProps.Srcs
- baseExcludeSrcs = baseCompilerProps.Exclude_srcs
baseSrcsLabelList = parseSrcs(baseCompilerProps)
+ baseExcludeSrcs = baseCompilerProps.Exclude_srcs
break
}
}
@@ -237,9 +270,9 @@
// target has access to all headers recursively in the package, and has
// "-I<module-dir>" in its copts.
if c, ok := module.compiler.(*baseCompiler); ok && c.includeBuildDirectory() {
- copts.Value = append(copts.Value, includeFlag("."))
+ copts.Value = append(copts.Value, includeFlags(".")...)
} else if c, ok := module.compiler.(*libraryDecorator); ok && c.includeBuildDirectory() {
- copts.Value = append(copts.Value, includeFlag("."))
+ copts.Value = append(copts.Value, includeFlags(".")...)
}
for arch, props := range module.GetArchProperties(ctx, &BaseCompilerProperties{}) {
diff --git a/java/base.go b/java/base.go
index 03652be..c828503 100644
--- a/java/base.go
+++ b/java/base.go
@@ -229,12 +229,6 @@
// otherwise provides defaults libraries to add to the bootclasspath.
System_modules *string
- // The name of the module as used in build configuration.
- //
- // Allows a library to separate its actual name from the name used in
- // build configuration, e.g.ctx.Config().BootJars().
- ConfigurationName *string `blueprint:"mutated"`
-
// set the name of the output
Stem *string
@@ -1223,11 +1217,11 @@
return
}
- // Update hidden API paths.
- j.hiddenAPIUpdatePaths(ctx, dexOutputFile, j.implementationJarFile)
+ // Initialize the hiddenapi structure.
+ j.initHiddenAPI(ctx, dexOutputFile, j.implementationJarFile, j.dexProperties.Uncompress_dex)
// Encode hidden API flags in dex file.
- dexOutputFile = j.hiddenAPIEncodeDex(ctx, dexOutputFile, proptools.Bool(j.dexProperties.Uncompress_dex))
+ dexOutputFile = j.hiddenAPIEncodeDex(ctx, dexOutputFile)
// merge dex jar with resources if necessary
if j.resourceJar != nil {
@@ -1501,15 +1495,6 @@
return proptools.StringDefault(j.deviceProperties.Stem, j.Name())
}
-// ConfigurationName returns the name of the module as used in build configuration.
-//
-// This is usually the same as BaseModuleName() except for the <x>.impl libraries created by
-// java_sdk_library in which case this is the BaseModuleName() without the ".impl" suffix,
-// i.e. just <x>.
-func (j *Module) ConfigurationName() string {
- return proptools.StringDefault(j.deviceProperties.ConfigurationName, j.BaseModuleName())
-}
-
func (j *Module) JacocoReportClassesFile() android.Path {
return j.jacocoReportClassesFile
}
diff --git a/java/hiddenapi.go b/java/hiddenapi.go
index 829c473..1e83824 100644
--- a/java/hiddenapi.go
+++ b/java/hiddenapi.go
@@ -26,27 +26,10 @@
}, "outFlag", "stubAPIFlags")
type hiddenAPI struct {
- // The name of the module as it would be used in the boot jars configuration, e.g. without any
- // prebuilt_ prefix (if it is a prebuilt) and without any ".impl" suffix if it is a
- // java_sdk_library implementation library.
- configurationName string
-
// True if the module containing this structure contributes to the hiddenapi information or has
// that information encoded within it.
active bool
- // Identifies the active module variant which will be used as the source of hiddenapi information.
- //
- // A class may be compiled into a number of different module variants each of which will need the
- // hiddenapi information encoded into it and so will be marked as active. However, only one of
- // them must be used as a source of information by hiddenapi otherwise it will end up with
- // duplicate entries. That module will have primary=true.
- //
- // Note, that modules <x>-hiddenapi that provide additional annotation information for module <x>
- // that is on the bootclasspath are marked as primary=true as they are the primary source of that
- // annotation information.
- primary bool
-
// The path to the dex jar that is in the boot class path. If this is nil then the associated
// module is not a boot jar, but could be one of the <x>-hiddenapi modules that provide additional
// annotations for the <x> boot dex jar but which do not actually provide a boot dex jar
@@ -60,6 +43,10 @@
// the UnsupportedAppUsage annotation that need to be extracted as part of the hidden API
// processing.
classesJarPaths android.Paths
+
+ // The compressed state of the dex file being encoded. This is used to ensure that the encoded
+ // dex file has the same state.
+ uncompressDexState *bool
}
func (h *hiddenAPI) bootDexJar() android.Path {
@@ -70,6 +57,10 @@
return h.classesJarPaths
}
+func (h *hiddenAPI) uncompressDex() *bool {
+ return h.uncompressDexState
+}
+
// hiddenAPIModule is the interface a module that embeds the hiddenAPI structure must implement.
type hiddenAPIModule interface {
android.Module
@@ -79,18 +70,39 @@
type hiddenAPIIntf interface {
bootDexJar() android.Path
classesJars() android.Paths
+ uncompressDex() *bool
}
var _ hiddenAPIIntf = (*hiddenAPI)(nil)
// Initialize the hiddenapi structure
-func (h *hiddenAPI) initHiddenAPI(ctx android.BaseModuleContext, configurationName string) {
+//
+// uncompressedDexState should be nil when the module is a prebuilt and so does not require hidden
+// API encoding.
+func (h *hiddenAPI) initHiddenAPI(ctx android.ModuleContext, dexJar, classesJar android.Path, uncompressedDexState *bool) {
+
+ // Save the classes jars even if this is not active as they may be used by modular hidden API
+ // processing.
+ classesJars := android.Paths{classesJar}
+ ctx.VisitDirectDepsWithTag(hiddenApiAnnotationsTag, func(dep android.Module) {
+ javaInfo := ctx.OtherModuleProvider(dep, JavaInfoProvider).(JavaInfo)
+ classesJars = append(classesJars, javaInfo.ImplementationJars...)
+ })
+ h.classesJarPaths = classesJars
+
+ // Save the unencoded dex jar so it can be used when generating the
+ // hiddenAPISingletonPathsStruct.stubFlags file.
+ h.bootDexJarPath = dexJar
+
+ h.uncompressDexState = uncompressedDexState
+
// If hiddenapi processing is disabled treat this as inactive.
if ctx.Config().IsEnvTrue("UNSAFE_DISABLE_HIDDENAPI_FLAGS") {
return
}
- h.configurationName = configurationName
+ // The context module must implement hiddenAPIModule.
+ module := ctx.Module().(hiddenAPIModule)
// If the frameworks/base directories does not exist and no prebuilt hidden API flag files have
// been configured then it is not possible to do hidden API encoding.
@@ -102,52 +114,7 @@
// on the boot jars list because the runtime only enforces access to the hidden API for the
// bootclassloader. If information is gathered for modules not on the list then that will cause
// failures in the CtsHiddenApiBlocklist... tests.
- module := ctx.Module()
h.active = isModuleInBootClassPath(ctx, module)
- if !h.active {
- // The rest of the properties will be ignored if active is false.
- return
- }
-
- // Determine whether this module is the primary module or not.
- primary := true
-
- // A prebuilt module is only primary if it is preferred and conversely a source module is only
- // primary if it has not been replaced by a prebuilt module.
- if pi, ok := module.(android.PrebuiltInterface); ok {
- if p := pi.Prebuilt(); p != nil {
- primary = p.UsePrebuilt()
- }
- } else {
- // The only module that will pass a different configurationName to its module name to this
- // method is the implementation library of a java_sdk_library. It has a configuration name of
- // <x> the same as its parent java_sdk_library but a module name of <x>.impl. It is not the
- // primary module, the java_sdk_library with the name of <x> is.
- primary = configurationName == ctx.ModuleName()
-
- // A source module that has been replaced by a prebuilt can never be the primary module.
- if module.IsReplacedByPrebuilt() {
- if ctx.HasProvider(android.ApexInfoProvider) {
- // The source module is in an APEX but the prebuilt module on which it depends is not in an
- // APEX and so is not the one that will actually be used for hidden API processing. That
- // means it is not possible to check to see if it is a suitable replacement so just assume
- // that it is.
- primary = false
- } else {
- ctx.VisitDirectDepsWithTag(android.PrebuiltDepTag, func(prebuilt android.Module) {
- if h, ok := prebuilt.(hiddenAPIIntf); ok && h.bootDexJar() != nil {
- primary = false
- } else {
- ctx.ModuleErrorf(
- "hiddenapi has determined that the source module %q should be ignored as it has been"+
- " replaced by the prebuilt module %q but unfortunately it does not provide a"+
- " suitable boot dex jar", ctx.ModuleName(), ctx.OtherModuleName(prebuilt))
- }
- })
- }
- }
- }
- h.primary = primary
}
func isModuleInBootClassPath(ctx android.BaseModuleContext, module android.Module) bool {
@@ -166,13 +133,19 @@
//
// Otherwise, it creates a copy of the supplied dex file into which it has encoded the hiddenapi
// flags and returns this instead of the supplied dex jar.
-func (h *hiddenAPI) hiddenAPIEncodeDex(ctx android.ModuleContext, dexJar android.OutputPath, uncompressDex bool) android.OutputPath {
+func (h *hiddenAPI) hiddenAPIEncodeDex(ctx android.ModuleContext, dexJar android.OutputPath) android.OutputPath {
if !h.active {
return dexJar
}
- hiddenAPIJar := android.PathForModuleOut(ctx, "hiddenapi", h.configurationName+".jar").OutputPath
+ // A nil uncompressDexState prevents the dex file from being encoded.
+ if h.uncompressDexState == nil {
+ ctx.ModuleErrorf("cannot encode dex file %s when uncompressDexState is nil", dexJar)
+ }
+ uncompressDex := *h.uncompressDexState
+
+ hiddenAPIJar := android.PathForModuleOut(ctx, "hiddenapi", dexJar.Base()).OutputPath
// Create a copy of the dex jar which has been encoded with hiddenapi flags.
hiddenAPIEncodeDex(ctx, hiddenAPIJar, dexJar, uncompressDex)
@@ -183,27 +156,6 @@
return dexJar
}
-// hiddenAPIUpdatePaths generates ninja rules to extract the information from the classes
-// jar, and outputs it to the appropriate module specific CSV file.
-//
-// It also makes the dex jar available for use when generating the
-// hiddenAPISingletonPathsStruct.stubFlags.
-func (h *hiddenAPI) hiddenAPIUpdatePaths(ctx android.ModuleContext, dexJar, classesJar android.Path) {
-
- // Save the classes jars even if this is not active as they may be used by modular hidden API
- // processing.
- classesJars := android.Paths{classesJar}
- ctx.VisitDirectDepsWithTag(hiddenApiAnnotationsTag, func(dep android.Module) {
- javaInfo := ctx.OtherModuleProvider(dep, JavaInfoProvider).(JavaInfo)
- classesJars = append(classesJars, javaInfo.ImplementationJars...)
- })
- h.classesJarPaths = classesJars
-
- // Save the unencoded dex jar so it can be used when generating the
- // hiddenAPISingletonPathsStruct.stubFlags file.
- h.bootDexJarPath = dexJar
-}
-
// buildRuleToGenerateAnnotationFlags builds a ninja rule to generate the annotation-flags.csv file
// from the classes jars and stub-flags.csv files.
//
diff --git a/java/hiddenapi_singleton_test.go b/java/hiddenapi_singleton_test.go
index e6b45ac..dcd363c 100644
--- a/java/hiddenapi_singleton_test.go
+++ b/java/hiddenapi_singleton_test.go
@@ -274,3 +274,56 @@
android.AssertStringEquals(t, "hiddenapi encode dex rule flags csv", expectedFlagsCsv, actualFlagsCsv)
}
+
+func TestHiddenAPIEncoding_JavaSdkLibrary(t *testing.T) {
+
+ result := android.GroupFixturePreparers(
+ hiddenApiFixtureFactory,
+ FixtureConfigureBootJars("platform:foo"),
+ PrepareForTestWithJavaSdkLibraryFiles,
+ FixtureWithLastReleaseApis("foo"),
+
+ // Make sure that the frameworks/base/Android.bp file exists as otherwise hidden API encoding
+ // is disabled.
+ android.FixtureAddTextFile("frameworks/base/Android.bp", ""),
+ ).RunTestWithBp(t, `
+ java_sdk_library {
+ name: "foo",
+ srcs: ["a.java"],
+ shared_library: false,
+ compile_dex: true,
+ public: {enabled: true},
+ }
+ `)
+
+ checkDexEncoded := func(t *testing.T, name, unencodedDexJar, encodedDexJar string) {
+ moduleForTests := result.ModuleForTests(name, "android_common")
+
+ encodeDexRule := moduleForTests.Rule("hiddenAPIEncodeDex")
+ actualUnencodedDexJar := encodeDexRule.Input
+
+ // Make sure that the module has its dex jar encoded.
+ android.AssertStringEquals(t, "encode embedded java_library", unencodedDexJar, actualUnencodedDexJar.String())
+
+ // Make sure that the encoded dex jar is the exported one.
+ exportedDexJar := moduleForTests.Module().(UsesLibraryDependency).DexJarBuildPath()
+ android.AssertPathRelativeToTopEquals(t, "encode embedded java_library", encodedDexJar, exportedDexJar)
+ }
+
+ // The java_library embedded with the java_sdk_library must be dex encoded.
+ t.Run("foo", func(t *testing.T) {
+ expectedUnencodedDexJar := "out/soong/.intermediates/foo/android_common/aligned/foo.jar"
+ expectedEncodedDexJar := "out/soong/.intermediates/foo/android_common/hiddenapi/foo.jar"
+ checkDexEncoded(t, "foo", expectedUnencodedDexJar, expectedEncodedDexJar)
+ })
+
+ // The dex jar of the child implementation java_library of the java_sdk_library is not currently
+ // dex encoded.
+ t.Run("foo.impl", func(t *testing.T) {
+ fooImpl := result.ModuleForTests("foo.impl", "android_common")
+ encodeDexRule := fooImpl.MaybeRule("hiddenAPIEncodeDex")
+ if encodeDexRule.Rule != nil {
+ t.Errorf("foo.impl is not expected to be encoded")
+ }
+ })
+}
diff --git a/java/java.go b/java/java.go
index f85de3d..45eb693 100644
--- a/java/java.go
+++ b/java/java.go
@@ -481,11 +481,6 @@
}
func (j *Library) GenerateAndroidBuildActions(ctx android.ModuleContext) {
- // Initialize the hiddenapi structure. Pass in the configuration name rather than the module name
- // so the hidden api will encode the <x>.impl java_ library created by java_sdk_library just as it
- // would the <x> library if <x> was configured as a boot jar.
- j.initHiddenAPI(ctx, j.ConfigurationName())
-
j.sdkVersion = j.SdkVersion(ctx)
j.minSdkVersion = j.MinSdkVersion(ctx)
@@ -1241,9 +1236,6 @@
j.sdkVersion = j.SdkVersion(ctx)
j.minSdkVersion = j.MinSdkVersion(ctx)
- // Initialize the hiddenapi structure.
- j.initHiddenAPI(ctx, j.BaseModuleName())
-
if !ctx.Provider(android.ApexInfoProvider).(android.ApexInfo).IsForPlatform() {
j.hideApexVariantFromMake = true
}
@@ -1315,7 +1307,9 @@
di := ctx.OtherModuleProvider(deapexerModule, android.DeapexerProvider).(android.DeapexerInfo)
if dexOutputPath := di.PrebuiltExportPath(j.BaseModuleName(), ".dexjar"); dexOutputPath != nil {
j.dexJarFile = dexOutputPath
- j.hiddenAPIUpdatePaths(ctx, dexOutputPath, outputFile)
+
+ // Initialize the hiddenapi structure.
+ j.initHiddenAPI(ctx, dexOutputPath, outputFile, nil)
} else {
// This should never happen as a variant for a prebuilt_apex is only created if the
// prebuilt_apex has been configured to export the java library dex file.
@@ -1346,11 +1340,11 @@
return
}
- // Update hidden API paths.
- j.hiddenAPIUpdatePaths(ctx, dexOutputFile, outputFile)
+ // Initialize the hiddenapi structure.
+ j.initHiddenAPI(ctx, dexOutputFile, outputFile, j.dexProperties.Uncompress_dex)
// Encode hidden API flags in dex file.
- dexOutputFile = j.hiddenAPIEncodeDex(ctx, dexOutputFile, proptools.Bool(j.dexProperties.Uncompress_dex))
+ dexOutputFile = j.hiddenAPIEncodeDex(ctx, dexOutputFile)
j.dexJarFile = dexOutputFile
}
diff --git a/java/sdk_library.go b/java/sdk_library.go
index f04f837..99eacf4 100644
--- a/java/sdk_library.go
+++ b/java/sdk_library.go
@@ -1235,16 +1235,13 @@
// Creates the implementation java library
func (module *SdkLibrary) createImplLibrary(mctx android.DefaultableHookContext) {
- moduleNamePtr := proptools.StringPtr(module.BaseModuleName())
-
visibility := childModuleVisibility(module.sdkLibraryProperties.Impl_library_visibility)
props := struct {
- Name *string
- Visibility []string
- Instrument bool
- Libs []string
- ConfigurationName *string
+ Name *string
+ Visibility []string
+ Instrument bool
+ Libs []string
}{
Name: proptools.StringPtr(module.implLibraryModuleName()),
Visibility: visibility,
@@ -1253,9 +1250,6 @@
// Set the impl_only libs. Note that the module's "Libs" get appended as well, via the
// addition of &module.properties below.
Libs: module.sdkLibraryProperties.Impl_only_libs,
-
- // Make the created library behave as if it had the same name as this module.
- ConfigurationName: moduleNamePtr,
}
properties := []interface{}{
@@ -2127,8 +2121,7 @@
di := ctx.OtherModuleProvider(deapexerModule, android.DeapexerProvider).(android.DeapexerInfo)
if dexOutputPath := di.PrebuiltExportPath(module.BaseModuleName(), ".dexjar"); dexOutputPath != nil {
module.dexJarFile = dexOutputPath
- module.initHiddenAPI(ctx, module.configurationName)
- module.hiddenAPIUpdatePaths(ctx, dexOutputPath, module.findScopePaths(apiScopePublic).stubsImplPath[0])
+ module.initHiddenAPI(ctx, dexOutputPath, module.findScopePaths(apiScopePublic).stubsImplPath[0], nil)
} else {
// This should never happen as a variant for a prebuilt_apex is only created if the
// prebuilt_apex has been configured to export the java library dex file.