Commit Graph

1600 Commits

Author SHA1 Message Date
Anna Trostanetski
eb2c46d576 Merge "Create a module that extracts and installs compat_config."
am: bc93803081

Change-Id: I46d1844f3c4496b1c978fdb3a9894098130fee6e
2019-08-07 09:34:25 -07:00
atrost
db25ac07a5 Create a module that extracts and installs compat_config.
Currently it extracts from the provided jar file compat/compat_config.xml
(generated by compat-changeid-annotation-processor) and installs on
/system/etc/sysconfig.
Future improvements:
 - Merge all the configs going for the system image into one, so that
   duplicate change ids across modules are failing the build instead of
   runtime.
 - Support uploading the config onto APEX for APEX modules.

Test: flashed device locally, config files found and read by
com.android.server.compat.CompatConfig.
Bug: 138222363

Change-Id: I64b11fdc466f746702e7e73f612794e024de2288
2019-08-06 19:21:46 +01:00
Colin Cross
2d975b197e Add an output file tag for proguard dictionaries
Allow modules to depend on the proguard dictionary of another module
using module{.proguard_map}.

Bug: 122332855
Test: m checkbuild
Change-Id: I918b487872c1a8ef8a51c0b994277efb0512d157
2019-08-06 09:45:04 -07:00
Jeongik Cha
a741ebf342 Merge "Add a rule about platform_apis"
am: 8a64f8c907

Change-Id: Ifdd8bd693fee625f63db403ce7a4dbc9209eb398
2019-07-30 18:33:08 -07:00
Jeongik Cha
8a64f8c907 Merge "Add a rule about platform_apis" 2019-07-31 01:09:35 +00:00
Sasha Smundak
61272795a7 Merge "Support source code cross-referencing for C++ and Java"
am: 247de68b89

Change-Id: I5284d9be9865e95671ce8ec1927f74059f7fdf44
2019-07-29 18:13:05 -07:00
Treehugger Robot
247de68b89 Merge "Support source code cross-referencing for C++ and Java" 2019-07-30 00:13:12 +00:00
Mathieu Chartier
9302d5c78a Merge "Specify boot image format to be lz4hc"
am: 460bf6ae95

Change-Id: Iac2a4275e0998b8ea430f24b8d784db80e0aa94e
2019-07-29 15:15:44 -07:00
Jeongik Cha
538c0d0c29 Add a rule about platform_apis
As sdk_check.mk checks, soong starts to check every app.
If sdk_version is empty, platform_apis must be true.
If sdk_version is not empty, platform_apis must be false.

Test: soong test
Test: m
Bug: 132780927
Change-Id: I7ba702d616404d155f8ac40cd008828663ad1488
2019-07-29 20:48:30 +09:00
Mathieu Chartier
54fd807267 Specify boot image format to be lz4hc
Reduce boot image space taken from 28803072B -> 9572352B (-20MB).

No reason to have this be configurable yet.

Test: ls -l $OUT/system/framework/*/apex*.art | awk '{s += $5} END {print s}'
Bug: 77863440

Change-Id: I280b740dfbd001109ce1e288e395595f21567aa6
2019-07-26 13:51:43 -07:00
Jiyong Park
ccca43f986 Merge "Revert "Revert "Split Java libraries per apex"""
am: c89fe6253f

Change-Id: I490b09e3a7b2ef00aad4defaa8c6b100ef249453
2019-07-26 09:39:51 -07:00
Sasha Smundak
2a4549ec98 Support source code cross-referencing for C++ and Java
Use Kythe (https://kythe.io) to build cross reference for the Android
source code. ~generate the input for it during the build. This is done
on demand: if XREF_CORPUS environment variable is set, build emits a
Ninja rule to generate Kythe input for each compilation rule. It
also emits two consolidation rules (`xref_cxx` and `xref_java`),
that depend on all Kythe input generation rules for C++ and Java.

The value of the XREF_CORPUS environment variable is recorded in the
generated files and thus passed to Kythe. For the AOSP master branch it is
`android.googlesource.com/platform/superproject`, so the command to build
all input for Kythe on that branch is:
```
XREF_CORPUS=android.googlesource.com/platform/superproject m xref_cxx xref_java
```

Each Kythe input generation rule generates a single file with .kzip
extension. Individual .kzip files have a lot of common information, so
there will be a post-build consolidation step run to combine them.
The consolidated .kzip file is then passed to Kythe backend.

The tools to generate .kzip files are provided by Kythe (it calls them
'extractors'). We are going to build them in toolbuilding branches
(clang-tools and build-tools) and check them in as binaries into master
and other PDK branches:
For C++,  `prebuilts/clang-tools/linux-x86/bin/cxx_extractor`
for Java, `prebuilts/build-tools/common/framework/javac_extractor.jar`

Bug: 121267023
Test: 1) When XREF_CORPUS is set, build generates Ninja rules to create
.kzip files; 2) When XREF_CORPUS is set, building
`xref_cxx`/`xref_java` creates .kzip files; 3) Unless XREF_CORPUS is
set, build generates the same Ninja rules as before

Change-Id: If957b35d7abc82dbfbb3665980e7c34afe7c789e
2019-07-26 09:16:47 -07:00
Jiyong Park
7f7766d5ee Revert "Revert "Split Java libraries per apex""
This reverts commit f0f7ca8335.

Bug: 138182343
Test: apex_test added
Change-Id: I5c8a0935ac0f456137c8656815e220b0e7848a5d
2019-07-26 14:19:38 +09:00
Nicolas Geoffray
ff3eb22ef4 Merge "Add support for generating boot profiles."
am: 1f9f57cc8f

Change-Id: Ie452fd1c5abffb7258c26ee965dffe55900cb576
2019-07-25 07:08:22 -07:00
Jiyong Park
d4d6f38547 Merge "Revert "Split Java libraries per apex""
am: 38b9f76d63

Change-Id: Ifda11df70f28856003fcacd2bc93c92a05824606
2019-07-25 04:44:06 -07:00
Jiyong Park
f0f7ca8335 Revert "Split Java libraries per apex"
This reverts commit aa53324ac8.

Reason for revert: b/138337109 (broke ndk build)

Change-Id: I9497cb4337add3f8c491a684bcaadea3bdbfaa85
2019-07-25 04:38:02 +00:00
Jiyong Park
b7dbf4d109 Merge "Split Java libraries per apex"
am: 8f7a3fc633

Change-Id: Id478349248a92f2ea66f70519606b08bd685e368
2019-07-24 16:37:29 -07:00
Nicolas Geoffray
e710242b5c Add support for generating boot profiles.
Test: /system/etc/boot-image.bprof is generated
Test: /system/framework/services.bprof is generated
Bug: 119800099
Change-Id: I50f0b665ff104feca4a26dd229625f00013db251
2019-07-24 22:28:54 +01:00
Jiyong Park
aa53324ac8 Split Java libraries per apex
Just like native libs, a java library that is included in an APEX is
mutated for the APEX. This allows us to infer the context (e.g.
sdk_version, etc.) for building a java library in an APEX.

Bug: 138182343
Test: apex_test added
Change-Id: I9292ea097b98e74a8a794f164bd2bed3921d6337
2019-07-23 20:32:14 +09:00
Tony Mak
6f716787d1 Merge "Allow other module types in androidx"
am: 6edff69513

Change-Id: I225050ef2c10850eee20820d4602399f5402557b
2019-07-22 14:36:55 -07:00
Treehugger Robot
6edff69513 Merge "Allow other module types in androidx" 2019-07-22 21:16:48 +00:00
Colin Cross
a373a94fc0 Merge changes Ic2a585ea,I11ccabc4,Icc932c4a,I020556c7,I08713e91
am: ed9a92c311

Change-Id: I0367335939181566063b777184e864a7afb02308
2019-07-22 14:04:58 -07:00
Treehugger Robot
ed9a92c311 Merge changes Ic2a585ea,I11ccabc4,Icc932c4a,I020556c7,I08713e91
* changes:
  Fix date on mac builds
  Convert javadoc modules to android.RuleBuilder
  Convert droiddoc modules to android.RuleBuilder
  Add a systemModules utility type
  Convert droidstubs to android.RuleBuilder
2019-07-22 20:29:59 +00:00
Tony Mak
817850063b Allow other module types in androidx
1. Update pom2bp to support "host_support" device module.
2. Allow other module type in support library

(The intention is to support the room annotation processor)

Test: m

Bug: 137918883

Change-Id: I9a8fbcff903cc395d5dc38430774202ce389d6bc
Merged-In: I9a8fbcff903cc395d5dc38430774202ce389d6bc
(cherry picked from commit bd7c2f9a1d)
2019-07-22 13:18:48 -07:00
Jiyong Park
af3b940041 Merge changes from topic "docs_circular_dep"
am: b1469d53e7

Change-Id: Ib4bc02cf4301f2984ce9d938bc794bd1a8a987ed
2019-07-19 04:51:35 -07:00
Jiyong Park
f35b561d95 filegroup.path is used to specify the include path for aidl files
am: 2907459e43

Change-Id: Ibf604d664111401d4bcca20db20c754c6845f05a
2019-07-19 04:51:18 -07:00
Jiyong Park
2907459e43 filegroup.path is used to specify the include path for aidl files
filegroup {
    name: "foo",
    srcs: ["srcs/aidl/com/android/**/*.aidl"],
    path: "srcs/aidl",
}

cc_library { // or java_library, etc.
    name: "bar",
    srcs: [":foo"],
}

automatically adds "-Ipath/to/foo/srcs/aidl" when compiling the aidl
files from foo for bar. This allows us to omit aidl include path
when using sources in other places via file group.

Bug: 135922046
Test: m (unit tests added)
Change-Id: I9b42f316f2858fb6da72c2f58a314f391416e809
2019-07-19 11:31:31 +09:00
Jiyong Park
19a7f251d3 aidl include paths are exported to droiddoc
This change fixes a bug that aidl include paths are not exported when a
java lib is used by a droiddoc module.

Bug: 135922046
Test: N/A
Change-Id: I367695677f60bfb4f324b788c7d09cd926cb75bb
2019-07-19 11:31:31 +09:00
Colin Cross
d64b325d53 Fix date on mac builds
date on mac takes a -r argument that expects seconds, date on linux
takes a -d argument that expects a date string.  Prefixing the date
string with @ makes date on linux treat the time as seconds, but is
incorrect for date on mac.

Test: m docs
Change-Id: Ic2a585eaac4c25b7b471caa581d7f25827c3a6b3
2019-07-18 14:29:16 -07:00
Colin Cross
daa4c67980 Convert javadoc modules to android.RuleBuilder
Test: m docs
Test: m checkapi
Test: m updateapi
Change-Id: I11ccabc46302ca06298240683ab686134e2e5b8a
2019-07-18 14:29:14 -07:00
Colin Cross
ab05443ffb Convert droiddoc modules to android.RuleBuilder
Test: m docs
Test: m checkapi
Test: m updateapi
Change-Id: Icc932c4a9a3fc642c96ab9cbd8df3229b5ab86d3
2019-07-18 14:28:17 -07:00
Colin Cross
b77043e207 Add a systemModules utility type
Storing system modules in a classpath is clumsy, as there should
only ever be one system modules, and it needs to store both a
directory to pass as the argument and a set of generated files
to use as dependencies.  Store them in a separate systemModules
type instead.

Test: m checkbuild
Change-Id: I020556c736bd5091865bcca51dc0fb9e4db6b45b
2019-07-18 14:28:17 -07:00
Colin Cross
33961b54e6 Convert droidstubs to android.RuleBuilder
The droiddoc rules are ripe for converting to android.RuleBuilder,
they conditionally use many input files which is hard to track
with the standard blueprint.Rule style, as the argument and the
dependency have to be handled independently.  Start converting
to android.RuleBuilder by converting the droidstubs module.

Test: m docs
Test: m checkapi
Test: m updateapi
Change-Id: I08713e91149471e88a40115f69824cf5eaf88fb6
2019-07-18 14:28:14 -07:00
Jaewoong Jung
29c01bf032 Merge "Java test code clean-up"
am: 66bb414fb7

Change-Id: I69304bb2b589b5c415a5eb57cadc0833fd1be02e
2019-07-18 12:17:26 -07:00
Jaewoong Jung
66bb414fb7 Merge "Java test code clean-up" 2019-07-18 17:35:18 +00:00
Jaewoong Jung
8aae22e34d Add filename property to android_app_import
Test: app_test.go
Bug: 137218697
Change-Id: If2b20a355bb6e9e8dbcd57347c0e2c6fa041a932
2019-07-17 14:32:49 -07:00
Jaewoong Jung
f9a0443a9c Java test code clean-up
Remove unused parameters and make testJava return the config.

Test: Ran all java tests.
Change-Id: Iaa123f3fd93188e2f55452b887e1d340429cc710
2019-07-17 11:15:09 -07:00
Colin Cross
9dbe4eea79 Merge changes from topic "buildnumberfromfile"
am: 223e6a65b6

Change-Id: I4e2f0514434ddf6833d03334dbf36869d762214e
2019-07-16 19:59:12 -07:00
Colin Cross
223e6a65b6 Merge changes from topic "buildnumberfromfile"
* changes:
  Allow jar wrapper to take quoted arguments
  Add rspfile support to RuleBuilder
  Prepare droiddoc for using RuleBuilder
  Manually escape BuildNumberFromFile
  Fix android.Expand and ninja escaping
  Add RuleBuilder helper functions for built and prebuilt tools
  Add documentation to droiddoc.go module types
2019-07-17 02:45:03 +00:00
Colin Cross
723cc24f2e Merge changes Ia106d48e,Ib6c0e778
am: 63f4b57a7f

Change-Id: I65b761fd319f820b9d02f2a652fa2d844c353cd4
2019-07-16 14:59:09 -07:00
Colin Cross
63f4b57a7f Merge changes Ia106d48e,Ib6c0e778
* changes:
  Remove use of deprecated ExtractSourcesDeps
  Dedup path properties across property structs
2019-07-16 21:31:09 +00:00
Colin Cross
1563815780 Prepare droiddoc for using RuleBuilder
Move the ninja escaping of Args later so that they can be passed to
RuleBuilder without double escaping.

Test: m docs
Change-Id: Iac3560a12c05d010e6bd0ad9c2d6b1e18ebf5f89
2019-07-16 11:12:04 -07:00
Colin Cross
5822b552ef Manually escape BuildNumberFromFile
Change ctx.Config().BuildNumberFromFile() to be unescaped, and then
escape it manually where necessary.  This will allow passing
ctx.Config().BuildNumberFromFile() to RuleBuilder, which will handle
the necessary escaping.

Test: no change to out/soong/build.ninja
Change-Id: I5329ab2ba70ccea49958864488aa81794a7e4b56
2019-07-16 10:23:41 -07:00
Colin Cross
5cfc70d1f6 Remove use of deprecated ExtractSourcesDeps
Tag DexImportProperties.Jars with `android:"path"` and remove the
call to ExtractSourcesDeps.

Test: m checkbuild
Change-Id: Ia106d48ecf7e3fc98637a757a9812edcf65f5b82
2019-07-16 09:52:23 -07:00
Jooyung Han
962982a731 Merge "soong: Fix AndroidMk with *Required properties"
am: 0f7dbd0d55

Change-Id: I588aeda47a66334b16294e36333f653001fd37b1
2019-07-15 19:31:36 -07:00
Treehugger Robot
0f7dbd0d55 Merge "soong: Fix AndroidMk with *Required properties" 2019-07-16 02:09:29 +00:00
Jiyong Park
9da7bcfd77 Fix the unbundled mainline module build
am: e3ef3c8f0c

Change-Id: Ic5fdbf4dc40d6744f5c97e9eafc3672f4aca975e
2019-07-15 15:20:20 -07:00
Jiyong Park
61b5d0672d Revert "Don't build hiddenapi flags or encode dex for unbundled builds"
am: 09cb629c15

Change-Id: I13583e6b4e6c59c2c2904349f61179a49a0a36ba
2019-07-15 15:20:14 -07:00
Jooyung Han
12df5fb471 soong: Fix AndroidMk with *Required properties
java.Module is using "Custom" function to write Android.mk.
And if "hostdex" is set to "true", it writes "hostdex" module definition
as well as original module.

As of now, Required/Host_required/Target_required props are filled in
the AndroidMkEntries structure(aosp/939505). But these are not
passed to old AndroidMkData.Custom function.

So, if a java_library declares "hostdex:true" and "required:[...]"
together, "required" is not applied to the "hostdex" variant.

This change copies *Required props from AndroidMkEntries to
AndroidMkData before calling its Custom callback.

Test: m (runs soong unit tests)
Change-Id: I5f85714f721a2a0917ab18072dbea52294c770e7
2019-07-16 02:28:29 +09:00
Jiyong Park
e3ef3c8f0c Fix the unbundled mainline module build
This change fixes two problems:

1) the prebuilt apexes are force disabled for the unbundled builds
because we need to build the modules from the source then

2) the dependencies from an sdk_library module to
*.stubs.{public|system|tests} are not added for the unbundled build
because the stubs modules are disabled.

Bug: 137282010
Test: unbundled mainline builds are successful
Test: build com.android.media and inspect the jar file to see if
hiddenapi flags are there
$ cd out/dist/mainline_modules_arm
$ unzip com.android.media.apex apex_payload.img
$ mkdir -p mnt
$ sudo mount -o ro,loop apex_payload.img mnt
$ dexdump2 mnt/javalib/updatable-media.jar | grep hiddenapi
shows results

Change-Id: I2c00af07aac4a15770d3acab011a36e2e4803bfc
2019-07-15 17:20:05 +09:00