Commit Graph

2778 Commits

Author SHA1 Message Date
Dan Willemsen
2019658b86 Support per-module MakeVars
This allows setting per-module make variables earlier in the build,
particularly for prebuilt_build_tool users like LEX/M4/BISON. I moved
filegroup over because it's a simpler common interface, but it doesn't
strictly need it.

With this, the last user of the hardcoded cc.m4Cmd variable is gone.

Test: Inspect out/soong/make_vars-*.mk, out/soong/late-*.mk
Test: treehugger
Change-Id: I195b688131feac0c100c338a0749368aa5d50f4f
2020-07-17 20:07:33 -07:00
Dan Willemsen
13af8140bc Add prebuilt_build_tool to allow genrules to use prebuilt tools
cc_prebuilt_binary doesn't work well for host tools because they'll
often be using their own versions of shared libraries that may not be
compatible with what we build.

So add a module type that allows genrules to use one of these prebuilts
as a tool. Like other prebuilts, we'll use the source module if we have
it, or the prebuilt otherwise.

It supports adding extra dependencies for shared libraries or other data
files that are necessary to run the tool. Any genrules using the tool
will be rerun if any of the dependencies change.

Bug: 128690776
Test: treehugger (builds one-true-awk with bison)
Change-Id: I82c26be1c3c9fe6cab42892ddea339c301c0b316
2020-07-17 19:34:12 -07:00
Treehugger Robot
7d1576540b Merge changes Ide9c7a6a,I706c1433 am: f8b85dedde am: a02a0d012c
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1365337

Change-Id: I5fb0dafda5d1547c96b6196cfe6eecf4618a16be
2020-07-17 20:32:42 +00:00
Treehugger Robot
f8b85dedde Merge changes Ide9c7a6a,I706c1433
* changes:
  Add Validations to android.BuildParams
  Use validations for blueprint tests
2020-07-17 19:54:49 +00:00
Martin Stjernholm
89238f4703 Add compile_multilib properties to all native prebuilts (reland).
There was a special case in cc_prebuilt_binary only, which resulted in
prebuilt libraries getting both 32 and 64 bit variants even when their
sources only had one of them, and the other variant would be defunct
since it wouldn't get any prebuilt artefact.

This moves the handling of compile_multilib completely to the common
update code, so that SDK members don't need to deal with it. It doesn't
take SDK member defaults into account, which means a bit more
boilerplate in the snapshots, but it's simpler and less error prone
(different SDK member types have different defaults).

This relands https://r.android.com/1359962 after disabling the SDK
tests on mac once and for all.

Bug: 151303681
Test: `go test -v ./sdk` in build/soong on mac and linux
Change-Id: I05f6603b2ac9b8676b25c3e297165ca23284e9cc
2020-07-17 14:32:15 +01:00
Colin Cross
f5ada2c731 Merge changes from topic "lint-unbundled-apps" am: 70f0b53000 am: 8d984239e1
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1360941

Change-Id: Ic1b7ec667b2f4ba2a3205ca372bf3afccffff1f3
2020-07-16 23:19:43 +00:00
Colin Cross
70f0b53000 Merge changes from topic "lint-unbundled-apps"
* changes:
  Build a zip of transitive lint reports for apps
  Add DepSets
2020-07-16 23:06:22 +00:00
Colin Cross
824f11614e Add Validations to android.BuildParams
Pass Validations through to blueprint.

Test: m checkbuild
Change-Id: Ide9c7a6afe627277df09a9e594849a971916f044
2020-07-16 13:10:57 -07:00
Colin Cross
c0efd1db13 Build a zip of transitive lint reports for apps
Add a rule to build a zip containing the lint reports from transitive
dependencies for apps, and pass it to Make.

Bug: 153485543
Test: m TARGET_BUILD_APPS=Gallery2 lint-check
Change-Id: I523c09016251377ff89d76084769be7401b95425
2020-07-16 12:51:42 -07:00
Colin Cross
9e44e21e91 Add DepSets
Add DepSets to efficiently support tracking transitive Paths without
copying, based on Bazel's depsets:
https://docs.bazel.build/versions/master/skylark/depsets.html

Test: depset_test.go
Change-Id: If744affdf1ed850113166ba611a79a891262040c
2020-07-16 12:50:11 -07:00
Treehugger Robot
01f9e22643 Merge "Do not consider disabled prebuilt variants." am: 7e32313ef2 am: 332977754d
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1363557

Change-Id: Ia3b3c7cbaeafb2bbff90cf77120112d204f55c17
2020-07-15 17:52:54 +00:00
Martin Stjernholm
f467732447 Do not consider disabled prebuilt variants.
This relands https://r.android.com/1356826 without changes. It got
reverted as part of b/161315642 but is not related to that issue.

Test: m nothing
Test: `m` with prebuilt SDKs in the manifest
Bug: 151303681
Bug: 161315642
Change-Id: I7af892ae28a8208113e0801b1b8a8204edb61ec8
2020-07-15 14:27:13 +01:00
Jakub Pawlowski
98af17b286 Merge "Revert "Do not consider disabled prebuilt variants."" am: 75b1005f77 am: 56c1857eb1
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1363476

Change-Id: I734209e925dad0c27e24ffa7b60647b594edf957
2020-07-15 10:54:51 +00:00
Jakub Pawlowski
d1a49ebe46 Merge "Revert "Add compile_multilib properties to all native prebuilts."" am: ca7b2c3eb7 am: eaa37aec1e
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1362483

Change-Id: I32774a84f4891c4c950e00931076f3fc71d9fd7b
2020-07-15 10:54:48 +00:00
Charles Chen
6ffbe57270 Revert "Do not consider disabled prebuilt variants."
This reverts commit 235e2fdbd3.

Reason for revert: <build break>

Bug: 161315642
Change-Id: Ie741252dc1d0749591f141c71c3d59ce45f0234f
2020-07-15 08:56:22 +00:00
Charles Chen
29936ae5a7 Revert "Add compile_multilib properties to all native prebuilts."
This reverts commit 1e9c2677fd.

Reason for revert: Break build

Bug: 161315642
Change-Id: Ibf3d5e88412327e8f08d08272b75cd3df34a71e5
2020-07-15 04:01:45 +00:00
Treehugger Robot
ba64405d5e Merge "Add compile_multilib properties to all native prebuilts." am: 6da69732e4 am: f0d3591c9d
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1359962

Change-Id: Ifd2e68477e4be452ea7362952ea2bd7f001f623d
2020-07-15 03:19:19 +00:00
Treehugger Robot
401b8ec527 Merge "Do not consider disabled prebuilt variants." am: 775c8e1af7 am: 17c7e4ad72
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1356826

Change-Id: Ie24a8ef484fc33e15dcd78cb9c92dd474746f2da
2020-07-13 14:23:52 +00:00
Martin Stjernholm
1e9c2677fd Add compile_multilib properties to all native prebuilts.
There was a special case in cc_prebuilt_binary only, which resulted in
prebuilt libraries getting both 32 and 64 bit variants even when their
sources only had one of them, and the other variant would be defunct
since it wouldn't get any prebuilt artefact.

This moves the handling of compile_multilib completely to the common
update code, so that SDK members don't need to deal with it. It doesn't
take SDK member defaults into account, which means a bit more
boilerplate in the snapshots, but it's simpler and less error prone
(different SDK member types have different defaults).

Bug: 151303681
Test: m nothing
Test: build/soong/scripts/build-aml-prebuilts.sh art-module-host-exports
  Check that the generated Android.bp passes Soong.
Change-Id: Ib73444c6788ee1c78480bdb103aa2b8ae8f2c63c
2020-07-11 00:38:24 +01:00
Martin Stjernholm
235e2fdbd3 Do not consider disabled prebuilt variants.
Test: m nothing
Test: `m` with prebuilt SDKs in the manifest
Bug: 151303681
Change-Id: I44d3a3cc4d7c1e02cc0ec61827646801f804b168
2020-07-10 17:12:10 +01:00
Roland Levillain
a0871f4181 Merge "Handle empty / undefined slice-type product variables uniformly." am: 8f91f7d802 am: 78498eb983
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1359443

Change-Id: I786c26f0faccd6195637708c4380f7eceb042657
2020-07-10 08:36:59 +00:00
Roland Levillain
8f91f7d802 Merge "Handle empty / undefined slice-type product variables uniformly." 2020-07-10 08:06:20 +00:00
Paul Duffin
d295daa19a Ensure that sdk/module_exports depends on source members am: cee7e66b07 am: e371a18acc
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1359444

Change-Id: If241aea3d4997adfa1edea5e17c35b02f6bc0eb6
2020-07-09 21:58:57 +00:00
Paul Duffin
cee7e66b07 Ensure that sdk/module_exports depends on source members
Previously, preferring a prebuilt of an sdk/module_exports's member
would cause the sdk/module_exports to depend on the prebuilt instead
of the source and cause problems with the build.

This chance prevents the dependency from an sdk/module_exports to its
members from being replaced with prebuilts.

Bug: 160785918
Test: m nothing
Change-Id: Iee4bcd438c11929e30fb5766701b05a0e89956d9
2020-07-09 17:51:06 +01:00
Roland Levillain
f6cc261733 Handle empty / undefined slice-type product variables uniformly.
When checking for the emptiness / non-existence of a product variable
having the type of a slice, check the length of this variable against
zero, instead of checking the variable itself against `nil`, as
empty / undefined list product variables may appear as nil or empty
lists -- the former approach works with both nil and empty lists,
while the latter only works with nil lists.

Test: m nothing
Bug: 159241638
Change-Id: Id436a13f8633bf698b64e6901662f67657034486
2020-07-09 17:22:31 +01:00
Paul Duffin
7bd62bef11 Restrict replacements of source dependencies with prebuilts am: 80342d72d0 am: 403b15074f
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1351596

Change-Id: I738152767fe955ec448471c60f246d58a96d4d7a
2020-07-08 18:33:57 +00:00
Paul Duffin
3b984b7d23 Stop java_sdk_library_import from depending on source modules am: 44f1d8404b am: ad18b5c676
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1351595

Change-Id: I98193c398be14e639aae36983ce3cb30c81a7b6e
2020-07-08 18:33:54 +00:00
Paul Duffin
80342d72d0 Restrict replacements of source dependencies with prebuilts
Previously, when java_sdk_library_import was preferred over a
java_sdk_library the latter ends up depending on the prebuilt child
modules created by the java_sdk_library_import instead of the source
child modules that it created itself. That was because all dependencies
on those source child modules were replaced with the corresponding
prebuilt child modules.

This change prevents those dependencies from being replaced to preserve
the dependencies from java_sdk_library onto its source child modules by
making the replacement conditional depending on the tag used. It also
updates the affected test.

Bug: 159902351
Test: m nothing
Change-Id: I4441b901dedfd44b9769df1ac2e248b94834cf85
2020-07-08 16:46:16 +01:00
Paul Duffin
44f1d8404b Stop java_sdk_library_import from depending on source modules
Previously, java_sdk_library_import added the dependencies on its child
components in the deps mutator after prebuilts without a matching
source module are renamed to the source module name. That meant that
the java_sdk_library_import has to use the source module name and ended
up depending on the source module unless it was preferred.

This change adds a new component deps mutator that runs before the
PrebuiltRenameMutator so that the java_sdk_library_import can add
dependencies onto the prebuilt modules. It also updates an affected
test.

Bug: 159902351
Test: m nothing
Change-Id: I3576c4873302743e51aff547ea1497bef6d748ac
2020-07-08 16:46:16 +01:00
Jooyung Han
bf5b939437 Merge "Apply "excludes" for OutputFileProducer" am: ecc495fd09 am: af6aa6ae9f
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1354451

Change-Id: I3112f29f1e8aa101dbd77ac1d9fd73f50342b742
2020-07-08 07:11:35 +00:00
Jooyung Han
ecc495fd09 Merge "Apply "excludes" for OutputFileProducer" 2020-07-08 06:40:08 +00:00
Christopher Parsons
653919780e Merge "Add missing soong_docs inputs" am: 0eeff82c98 am: 4dada6c581
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1347867

Change-Id: I2190bf0119fa20802a586ca651f4a20a8a34e414
2020-07-06 23:16:20 +00:00
Christopher Parsons
0eeff82c98 Merge "Add missing soong_docs inputs" 2020-07-06 22:34:51 +00:00
Jooyung Han
7607dd3564 Apply "excludes" for OutputFileProducer
"excludes" should be applied both SourceFileProducer and
OutputFileProducer. But we've been missing the latter.
(see android/paths_test.go)

There's one more to note. Previously, the exclusion was done by
modifying slice directly, which caused some problem(b/76179848).
The fix was returning a copy from Srcs() method. But there're still many
implementors which just return internal slices directly.

This change creates a new array when it needs to exclude something from
returned slice.

Bug: n/a
Test: m (soong test added)
Change-Id: I1ba91e490cb55fc243020681667278cdc75f59df
2020-07-05 10:23:14 +09:00
Treehugger Robot
82fe912d84 Merge "Fix out/soong/Android-<>.mk reproducibility" am: 2e93eb702d am: 5ba520122b
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1353442

Change-Id: If2d5adb61a7218c5872b7c9d4d63aebe9ae4685a
2020-07-02 01:29:23 +00:00
Dan Willemsen
1a8c8565bd Fix out/soong/Android-<>.mk reproducibility
When there were multiple modules overriding a single module, sometimes
we would create the list in different orders, which would trigger some
of the later mutators to write the Android-<>.mk out in different
orders.

Bug: 160207422
Test: diff out/soong/Android-<>.mk between multiple runs on internal master
Change-Id: I321db706dd34aa20a0b1556fd282d54b826a4a97
2020-07-01 15:13:58 -07:00
Anton Hansson
62783652ac Merge "Propagate owner property for apex modules" into rvc-dev am: ff1531e13b
Original change: https://googleplex-android-review.googlesource.com/c/platform/build/soong/+/12034797

Change-Id: I478d0442eee9e1eee74a853d51f21f797f2aeec0
2020-06-30 19:26:13 +00:00
Anton Hansson
1ee62c03ba Propagate owner property for apex modules
Bug: 160165426
Test: lunch aosp_taimen && m nothing
Change-Id: I1d274ea376c58ff44d69ef5440c919b67079ae4a
2020-06-30 13:55:23 +00:00
Treehugger Robot
08c3d0cf7f Merge changes Ifd2858dd,I2585dd99,I65e7a456 am: 0c6f111d7b am: d6b1515935
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1348951

Change-Id: Idcc16a40f953019278ea34829ca297a353da0820
2020-06-29 02:47:14 +00:00
Treehugger Robot
0c6f111d7b Merge changes Ifd2858dd,I2585dd99,I65e7a456
* changes:
  apex: use SubName for requiredDeps
  apex: support "vendor: true"
  apex: AndroidMk writes common properties
2020-06-29 02:20:56 +00:00
Roland Levillain
b78fa9bbc3 Add "art/test" to the list of Core Library projects. am: aca944916a am: 553c413071
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1235128

Change-Id: I999fa8cd332b92b47a7dfb356357ff00da2f55e3
2020-06-28 11:38:18 +00:00
Roland Levillain
aca944916a Add "art/test" to the list of Core Library projects.
Allow modules under art/test to use `sdk_version: "none"`. This is so
that ART run-test module definitions can use the same settings as
Libcore tests:

  sdk_version: "none",
  system_modules: "core-all-system-modules",

Test: m nothing
Bug: 147814778
Change-Id: Ibb74d6a06a6609be511403c51ca7a02204bf606f
2020-06-27 16:20:00 +01:00
Chris Gross
5ea55cd054 Merge "Use a default exclude filter for JaCoCo in Soong." am: 8f3386e49b am: 8a203b5cd7
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1349522

Change-Id: I9c99a709a0a930e4114682d00a38ddd7210a602b
2020-06-26 15:21:01 +00:00
Chris Gross
8f3386e49b Merge "Use a default exclude filter for JaCoCo in Soong." 2020-06-26 14:59:15 +00:00
Chris Parsons
8f232a2702 Add missing soong_docs inputs
Specifically, make Android.bp.list and soong.variables explicit inputs

While this is not a comprehensive list of all inputs
of this action (as the action depends on all blueprint
files in the source tree), this is closer to the truth.

This is a rollforward CL, which was originally rolled
back, as path validation failed for when OUT_DIR was
an absolute path. Validation has now been relaxed.

Test: Manually verified ninja output, checkbuild approved validation
  for aosp-crosshatch, and manually ran frameworks/rs/build_rs.py with
  patch fix
Change-Id: I4eb0d517f57336dd54eaa4bd31f46df9e93e6da2
2020-06-26 10:36:18 -04:00
Jingwen Chen
ce00ee318f Merge "Support multiple dists per Android.bp module, and dist output selection." am: d06f11ee71 am: 3779799731
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1335521

Change-Id: I2ca43562972b4d50f1e9fd4a801026aa9abb6816
2020-06-26 08:25:04 +00:00
Chris Gross
2f748692dd Use a default exclude filter for JaCoCo in Soong.
Instrumented builds should exclude certain classes from instrumenation
by default. (e.g. JaCoCo itself) Leverage the existing
DefaultJacocoExclusionFilter to do this.

Note: Two different default filters exist now (one for Make and one for
Soong), as they have different wildcard rules.

Test: EMMA_INSTRUMENT=true EMMA_INSTRUMENT_STATIC=true m -j32
TeleService and inspected the resulting temporary jar that was
instrumented to confirm that anything from org/jacoco was excluded.
Bug: 159748844

Change-Id: I5466b0a03957edfbe53971d5d1a7729fdb8337db
2020-06-25 16:45:44 +00:00
Jingwen Chen
40fd90ae52 Support multiple dists per Android.bp module, and dist output selection.
This CL adds "dists" to the base property struct to support multiple
dist file configurations, and generic tag support to dist tagged outputs
of modules.

Fixes: b/152834186
Test: soong tests and `m sdk dist`

Change-Id: I80c86bc9b7b09e671f640a4480c45d438bdd9a2a
Signed-off-by: Jingwen Chen <jingwen@google.com>
2020-06-25 12:42:07 +00:00
Jooyung Han
2ed99d00b4 apex: AndroidMk writes common properties
AndroidMkEntries handles bunch of common properties(e.g. LOCAL_INIT_RC,
LOCAL_VINTF_FRAGMENTS, etc).

However apex defines its own Custom() writer, so those properties should
be handled manually.

For example, when an apex defines "init_rc" properties, the value should
be passed to Make via LOCAL_INIT_RC.

Bug: 159211312
Test: m
Change-Id: I65e7a456486c9f5fe70c91b78ff181425035fcf2
2020-06-25 15:30:26 +09:00
Jooyung Han
fc2c927cb7 Merge "Check base property before using it" am: 83f107cdfb am: 85164317ab
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1345378

Change-Id: I3d59d49a51f6ec21cc6a642fee05f6a25cabd57d
2020-06-25 03:48:00 +00:00