Mark out an mmodule API surface / add bi-dir deps
This commit introduces the term "mmodule" in place of
"module" for the thing that is being prototyped;
"module" is a heavily overloaded term so
the extra "m" is intended to make it easier to track /
understand what "type of" module is involved.
Important parts of this commit:
+ {simple mmodule}.TestClass has been renamed to
DemoSimpleClass to distinguish it from a test and new
similar class being added in libart (DemoLibartClass).
+ Adds the @IntraCoreMModuleApi annotation; it is used to
indicate API members that form part of a "core" mmodule
contract (either incoming or outgoing dependency of a
libcore mmodule) that must be kept stable.
+ Annotates parts of the DemoSimpleClass to make them part
of the "simple mmodule API" contract.
+ Adds a method in the simple mmodule that isn't annotated
to demonstrate (Java) public methods that are not part
of the mmodule contract.
+ Includes a new target "core-simple.mmodule.stubs"
which generates the simple mmodule API stubs.
+ Includes a new target "core-all.mmodule.stubs"
which generates the mmodule API stubs for the core-all
library.
+ Adds bi-direction dependencies between parts of the
boot classpath. This makes the code a more realistic part
of "core" for prototyping / demostration purposes:
- DemoSimpleClass (now) has a method that calls through
to a method on DemoLibartClass to demonstrate a
dependency from {simple mmodule} onto core-libart.
- DemoLibartClass has a similar arrangement going in the
other direction making core-libart depend on {simple
mmodule} (making a bi-dir dependency but without an
infinite loop at runtime).
+ A test has been added for DemoLibartClass in the
CtsLibcoreSimpleMModuleTestCases to confirm the bi-dir
behavior in an automated test.
Bug: 113148576
Test: make checkbuild / make cts
Test: CTS: run cts -m CtsLibcoreSimpleModuleTestCases
Change-Id: I5564d6be61eba4c0116e91c601e32208da104f02
11 files changed