Commit Graph

4888 Commits

Author SHA1 Message Date
Treehugger Robot
63aa5a56a9 Merge "Allow globally disabling some clang-tidy checks." am: 66790d8943 am: b8638926f4 am: 43b8a7ff72 am: 34171e0d43 am: 7dcf1cf64c
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1403127

Change-Id: Ibdd3bf8f70140a57ccd918ca3d8f1036939934fd
2020-08-20 22:35:58 +00:00
Treehugger Robot
43b8a7ff72 Merge "Allow globally disabling some clang-tidy checks." am: 66790d8943 am: b8638926f4
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1403127

Change-Id: Ib129a158cad3564622f5170bf7e061cf74e8046d
2020-08-20 20:26:15 +00:00
Treehugger Robot
66790d8943 Merge "Allow globally disabling some clang-tidy checks." 2020-08-20 19:51:31 +00:00
Dan Shi
95d19422a6 Add extra_test_configs option
Bug: 163344047
Test: m -j HelloWorldHostTest hello_world_test HelloWorldTests
Change-Id: I237e3aa3f40df1f6387ba8ff6a16e56535cdeae9
2020-08-19 15:27:03 -07:00
Benjamin Schwartz
5ec7024911 Create Power Stats AIDL interface
Bug: 162472196
Test: m
Change-Id: I44ffdf07c181cb4a119ec5de73bcb9ffaf485504
2020-08-19 15:25:57 -07:00
Colin Cross
053fca10c9 Support ninja rsp files in soong_zip
Add a -r argument to soong_zip that reads a list of files from a file
like the -l argument but treats it as a Ninja rsp file with escaping.
Replace the -l arguments in Soong that are using rsp files with -r.

Fixes: 162435077
Test: TestReadRespFile, TestZip
Change-Id: I4605312e99406ab1bd0c37af9c5ad212393f0403
2020-08-19 21:18:56 +00:00
Colin Cross
aede88c1c7 Reland: Deduplicate APEX variants that would build identically
APEX variants that share the same SDK version and updatability
almost always use identical command line arguments to build but
with different intermediates directories.  This causes unnecessary
build time and disk space for duplicated work.

Deduplicate APEX variants that would build identically.  Create
aliases from the per-APEX variations to the new shared variations
so that the APEX modules can continue to depend on them via the
APEX name as the variation.

This has one significant change in behavior.  Before this change,
if an APEX had two libraries in its direct dependencies and one
of those libraries depended on the other, and the second library
had stubs, then the first library would depend on the implementation
of the second library and not the stubs.  After this change, if
the first library is also present in a second APEX but the second
library is not, then the common variant shared between the two
APEXes would use the stubs, not the implementation.

In a correctly configured set of build rules this change will
be irrelevant, because if the compilation worked for the second
APEX using stubs then it will work for the common variant using
stubs.  However, if an incorrect change to the build rules is
made this could lead to confusing errors, as a previously-working
common variant could suddenly stop building when a module is added
to a new APEX without its dependencies that require implementation
APIs to compile.

This change reduces the number of modules in an AOSP arm64-userdebug
build by 3% (52242 to 50586), reduces the number of variants of the
libcutils module from 74 to 53, and reduces the number of variants
of the massive libart[d] modules from 44 to 32.

This relands I0529837476a253c32b3dfb98dcccf107427c742c with a fix
to always mark permissions XML files of java_sdk_library modules as
unique per apex since they contain the APEX filename, and a fix
to UpdateUniqueApexVariationsForDeps to check ApexInfo.InApexes
instead of DepIsInSameApex to check if two modules are in the same
apex to account for a module that depends on another in a way that
doesn't normally include the dependency in the APEX (e.g. a libs
property), but the dependency is directly included in the APEX.

Bug: 164216768
Test: go test ./build/soong/apex/...
Change-Id: I2ae170601f764e5b88d0be2e0e6adc84e3a4d9cc
2020-08-19 10:21:17 -07:00
Dan Albert
d12afec49c Allow globally disabling some clang-tidy checks.
Test: used for the upcoming compiler update
Bug: None
Change-Id: Id17db2c48fa3e165da81a1d084827bde142406dd
2020-08-18 13:28:03 -07:00
Treehugger Robot
671aed59c9 Merge "Revert "Deduplicate APEX variants that would build identically"" am: fc4d79598c am: b1d3c4c4d7
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1403647

Change-Id: Ia2db2038480c3e09e7c82c1766f9b922e5cc6a11
2020-08-18 17:42:08 +00:00
Pete Bentley
0c7b26e0e2 Revert "Deduplicate APEX variants that would build identically"
This reverts commit d6b2525b00.

Reason for revert: <Breaks tests - confirmed by Forrest: b/165188843>

Change-Id: I7cb68cb87522415004390c0672dc774e0067b122
2020-08-18 13:44:59 +00:00
Treehugger Robot
1f160e818b Merge "Deduplicate APEX variants that would build identically" am: ca29a25d38 am: aa3235edcc
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1399832

Change-Id: I4fe0cc33956d110e6bb1de49183470eb21992fbf
2020-08-18 05:19:52 +00:00
Colin Cross
d6b2525b00 Deduplicate APEX variants that would build identically
APEX variants that share the same SDK version and updatability
almost always use identical command line arguments to build but
with different intermediates directories.  This causes unnecessary
build time and disk space for duplicated work.

Deduplicate APEX variants that would build identically.  Create
aliases from the per-APEX variations to the new shared variations
so that the APEX modules can continue to depend on them via the
APEX name as the variation.

This has one significant change in behavior.  Before this change,
if an APEX had two libraries in its direct dependencies and one
of those libraries depended on the other, and the second library
had stubs, then the first library would depend on the implementation
of the second library and not the stubs.  After this change, if
the first library is also present in a second APEX but the second
library is not, then the common variant shared between the two
APEXes would use the stubs, not the implementation.

In a correctly configured set of build rules this change will
be irrelevant, because if the compilation worked for the second
APEX using stubs then it will work for the common variant using
stubs.  However, if an incorrect change to the build rules is
made this could lead to confusing errors, as a previously-working
common variant could suddenly stop building when a module is added
to a new APEX without its dependencies that require implementation
APIs to compile.

This change reduces the number of modules in an AOSP arm64-userdebug
build by 3% (52242 to 50586), reduces the number of variants of the
libcutils module from 74 to 53, and reduces the number of variants
of the massive libart[d] modules from 44 to 32.

Bug: 164216768
Test: go test ./build/soong/apex/...
Change-Id: I0529837476a253c32b3dfb98dcccf107427c742c
2020-08-17 15:18:31 -07:00
Treehugger Robot
11ff8974eb Merge "Rename ApexName to ApexVariationName" am: a07777d434 am: be9a9035f2
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1399831

Change-Id: I31f1d4eedbad29ac1562834ea70eb52e0c543ecd
2020-08-15 07:02:47 +00:00
Treehugger Robot
a07777d434 Merge "Rename ApexName to ApexVariationName" 2020-08-15 06:43:52 +00:00
Colin Cross
e07f2316b7 Rename ApexName to ApexVariationName
In preparation for reusing the same variation for multiple apexes,
rename ApexName to ApexVariationName.

Bug: 164216768
Test: all soong tests
Change-Id: I88f2c5b192ffa27acd38e01952d0cefd413222a0
2020-08-13 17:50:29 -07:00
Colin Cross
e3b91dc7fb Merge changes I02fb745a,Iccc96c0d am: a24b9deb5f am: 094956cf00
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1378536

Change-Id: I8a434610d1869e30a853208d974a16196aa9e884
2020-08-13 22:28:35 +00:00
Colin Cross
a24b9deb5f Merge changes I02fb745a,Iccc96c0d
* changes:
  Follow all shared library dependencies when collecting JNI libraries
  Handle static unwinder in ltoDepsMutator
2020-08-13 21:55:53 +00:00
Treehugger Robot
45d8c7af88 Merge "Improve abidump generating logic for non-REL build" am: 29737cfc94 am: 0c8d7c6958
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1374297

Change-Id: Ie89168b98e3de295a3c59da3d0e3d6b92bf3d9a4
2020-08-13 12:34:06 +00:00
Treehugger Robot
29737cfc94 Merge "Improve abidump generating logic for non-REL build" 2020-08-13 11:53:05 +00:00
Treehugger Robot
ec8f7940e8 Merge changes I514b90ae,Ie477de70 am: d59540234c am: 8acd131453
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1378334

Change-Id: Ic192d891e33f1efc806a031bd2e8e65920758bb1
2020-08-13 05:29:05 +00:00
Treehugger Robot
d59540234c Merge changes I514b90ae,Ie477de70
* changes:
  Fix DepsInSameApex for some dependencies of static libraries
  Expose all shared and header libraries to Make
2020-08-13 05:01:17 +00:00
Treehugger Robot
fc7baeb866 Merge "Stop using prebuilt NDK CRT objects." am: 50a58067e6 am: 52b4132004
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1363344

Change-Id: I0aaa0a1664f696c712bdf260663bf4b4648aea9c
2020-08-12 22:33:47 +00:00
Treehugger Robot
50a58067e6 Merge "Stop using prebuilt NDK CRT objects." 2020-08-12 22:01:27 +00:00
Dan Willemsen
9e2fd0fab6 Merge "Remove M4 export to Make" am: a6ba0d2a4c am: 50e7c7f0c6
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1393489

Change-Id: Ib23151fb899979a7bd168346dd3603e69b8e6f33
2020-08-12 15:17:56 +00:00
Dan Willemsen
a6ba0d2a4c Merge "Remove M4 export to Make" 2020-08-12 14:48:08 +00:00
Kousik Kumar
a2499e0f42 Merge "Add remote execution support for clang-tidy actions" am: 20cccd2e95 am: deab08e664
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1343716

Change-Id: Ic5625a1466a25ee49fe511974ee5828ae78fc146
2020-08-12 14:25:56 +00:00
Kousik Kumar
20cccd2e95 Merge "Add remote execution support for clang-tidy actions" 2020-08-12 13:46:10 +00:00
Dan Albert
92fe740677 Stop using prebuilt NDK CRT objects.
We don't need the prebuilt versions. The NDK CRT objects are (now)
built from the platform sources and the only difference is that the
NDK CRT objects also include an ELF note that identifies the NDK
version, which isn't helpful for anything built by the platform.

Add a `crt` property to cc_object that allows CRT objects to identify
themselves. CRT objects, unlike other modules, will have a variant
built per-API level they support, rather than just an SDK variant and
a platform variant. This is needed because new CRT objects will rely
on APIs not available in old libcs and old CRT objects will not
support all the features of a modern one.

Test: treehugger
Bug: http://b/159925977
Change-Id: I6595485fa1bfe0ad4945193d344b863f64eec654
2020-08-11 15:06:55 -07:00
Pirama Arumuga Nainar
d8952eee43 Merge "[cc/sanitize] Deprecate blacklist sub-property of sanitize" am: 84ce8d8d89 am: eb037766bb
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1383562

Change-Id: I246c18861220971e057047e00d43195f791c5c82
2020-08-11 21:59:10 +00:00
Pirama Arumuga Nainar
84ce8d8d89 Merge "[cc/sanitize] Deprecate blacklist sub-property of sanitize" 2020-08-11 21:24:16 +00:00
Dan Willemsen
9f43597ff7 Remove obsolete PDK build functionality
This hasn't worked for a couple years, and continues to bitrot. Just
remove it.

Adds a bpfix rule so that we can eventually remove the
product_variables.pdk definition, which is now always a no-op.

Test: treehugger
Change-Id: I830b54d419b59f6db1d4617b45e61a78234f57a7
Merged-In: I830b54d419b59f6db1d4617b45e61a78234f57a7
2020-08-11 01:11:44 +00:00
Dan Willemsen
ba3876a91a Remove obsolete PDK build functionality
This hasn't worked for a couple years, and continues to bitrot. Just
remove it.

Adds a bpfix rule so that we can eventually remove the
product_variables.pdk definition, which is now always a no-op.

Test: treehugger
Change-Id: I830b54d419b59f6db1d4617b45e61a78234f57a7
2020-08-10 18:10:38 -07:00
Jeongik Cha
ec87b5c85a Merge "Introduce AlwaysUsePrebuiltSdks" am: 6df337255c am: 497158434d
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1356666

Change-Id: I92deaf13c3c7c7ae684bd11d5bd5d575d264bfb1
2020-08-10 01:25:06 +00:00
Jeongik Cha
6df337255c Merge "Introduce AlwaysUsePrebuiltSdks" 2020-08-10 00:51:56 +00:00
Treehugger Robot
86368fbc85 Merge changes Icec57d43,Ibb030cc4 am: 0dc67ceee9 am: 7b9906a420
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1392891

Change-Id: I39fe17ee07fead3b1ddab4048487923004d46b08
2020-08-08 00:50:18 +00:00
Treehugger Robot
0dc67ceee9 Merge changes Icec57d43,Ibb030cc4
* changes:
  Add alias variations to linkageMutator
  Use local variations for versionsMutator
2020-08-08 00:24:03 +00:00
Dan Willemsen
678ae27cfa Remove M4 export to Make
This is now handled by a prebuilt_build_tool entry.

Test: treehugger
Change-Id: Ia746d5b274a897db0cd9e6ddac5f8923bca8e52c
2020-08-07 13:45:45 -07:00
Martin Stjernholm
23b0343a00 Merge "Only output make targets for uninstallable static libs in the APEX unavailable-to-platform case." am: 9f381d5ce3 am: 0be556121d
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1393187

Change-Id: Ie961e81a936ff5cd2e60af10bf2c9168334e9789
2020-08-07 11:49:27 +00:00
Martin Stjernholm
9f381d5ce3 Merge "Only output make targets for uninstallable static libs in the APEX unavailable-to-platform case." 2020-08-07 11:30:29 +00:00
Jeongik Cha
816a23a50d Introduce AlwaysUsePrebuiltSdks
Instead of UnbundledBuild, use AlwaysUsePrebuiltSdks
to determine if java modules needs to be built against prebuilt sdks.
And rename UnbundledBuildUsePrebuiltSdks to AlwaysUsePrebuiltSdks to
express its behavior more correctly.(It can be orthgonal to "Unbundled")

Bug: 160390776
Test: TARGET_BUILD_UNBUNDLED_IMAGE=true m vendorimage

Change-Id: I0be7265c1959d8774c295372cd7a9250169f6df9
2020-08-07 12:15:52 +09:00
Inseob Kim
f548722a2f Merge changes from topic "cfi_vendor_snapshot" am: eaebec1312 am: 7fe143638d
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1376079

Change-Id: I508f888fba0681b660cdc5ccf08be7fdafc68db9
2020-08-07 02:53:50 +00:00
Inseob Kim
fee1e81223 Refactor vendor snapshot modules am: 2d34ad94f9 am: 9e6f024ad5
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1382316

Change-Id: I127b86d4dc32d043c5b73ec1246a37ccc6f6f59e
2020-08-07 02:53:48 +00:00
Inseob Kim
9e6f024ad5 Refactor vendor snapshot modules am: 2d34ad94f9
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1382316

Change-Id: Ia367878b6de80b123d680a74073c1cd63a841c55
2020-08-07 02:43:46 +00:00
Inseob Kim
eaebec1312 Merge changes from topic "cfi_vendor_snapshot"
* changes:
  Add cfi static libraries to vendor snapshot
  Refactor vendor snapshot modules
2020-08-07 01:48:10 +00:00
Colin Cross
81ca6cd407 Add alias variations to linkageMutator
Alias the shared variation if it exists, otherwise the static variation.
This allows modules that are not aware of shared library variations
(like cc_genrule) to depend on shared libraries by depending on
just the normal image, os and arch variations.

Bug: 162437057
Test: TestLibraryGenruleCmd
Change-Id: Icec57d43538e01ab05cc50d4e3f9a11cc55f0162
2020-08-06 18:46:06 -07:00
Colin Cross
094faa5b26 Use local variations for versionsMutator
Use local variations and an alias for the "" variation for
versionMutator.  Local variations are used here because the variation
of one module doesn't affect the variation it should depend on - a
module with variation version:29 will manually link against dependencies
with the correct version variation, and don't need it to be automatically
resolved.  The alias allows other modules to depend on a module
mutated by the version mutator without specifying the version: ""
variation.  This allows removing the variation on genrule modules.

The motiviation here is to make sure versionMutator calls AliasVariation,
which will allow the previous linkageMutator to also use AliasVariation.

Bug: 162437057
Test: no change to build.ninja, make_vars-aosp_crosshatch.mk, Android-aosp_crosshatch.mk or late-aosp_crosshatch.mk
Change-Id: Ibb030cc4334e47511b8ab5bc3eb8a5ae39ad0023
2020-08-06 18:46:06 -07:00
Mitch Phillips
7d519caa19 Merge "Added write only sanitizer for ASAN and HWASAN" am: 8dc2af873b am: 0ae16213d9
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1372178

Change-Id: I6f1604109cf23d6c5e9a3e06fd9f603dbbcbbfe5
2020-08-06 22:06:30 +00:00
Martin Stjernholm
9e9bb7f223 Only output make targets for uninstallable static libs in the APEX
unavailable-to-platform case.

This removes the special case added in https://r.android.com/1274763
from SkipInstall(), so that it doesn't cause conflicting AndroidMk
entries when a cc_prebuilt_library_static module has prefer:true and
the corresponding source module exists.

Test: `m` in a tree with a snapshot created from art-module-sdk where
  the libartimagevalues module has prefer:true
Bug: 151303681
Change-Id: I651ae325753b707296892adb4cae80daaddb6af2
2020-08-06 22:52:58 +01:00
Mitch Phillips
8dc2af873b Merge "Added write only sanitizer for ASAN and HWASAN" 2020-08-06 21:17:12 +00:00
Inseob Kim
c42f2f2e9d Add cfi static libraries to vendor snapshot
CFI modules can't link against non-CFI static libraries, and vice versa.
So without capturing both CFI and non-CFI static libraries, vendor
modules won't be able to use CFI, which will be a critical security
hole.

This captures both CFI and non-CFI variants of all static libraries for
vendor snapshot, except for those whose cfi are explicitly disabled.

For example, suppose that "libfoo" is defined as follows.

cc_library_static {
    name: "libfoo",
    vendor_available: true,
}

As it doesn't have cfi disabled, two libraries "libfoo.a" and
"libfoo.cfi.a" will be captured. When installed, vendor snapshot module
for "libfoo" will look like:

vendor_snapshot_static {
    name: "libfoo",
    src: "libfoo.a",
    cfi: {
        src: "libfoo.cfi.a",
    },
}

The build system will recognize the "cfi" property, and will create both
CFI and non-CFI variant, allowing any modules to link against "libfoo"
safely, no matter whether CFI is enabled or not.

Two clarification:

1) The reason why we don't create separate modules is that DepsMutator
runs before sanitize mutators. CFI and non-CFI variant of a library
should exist in a single module.

2) We can't capture CFI variant if the source module explicitly disables
cfi variant by specifying the following.

sanitize: {
    cfi: false,
}

In this case, only non-CFI variant will be created for the vendor
snapshot module.

Bug: 65377115
Test: m dist vendor-snapshot && install && build against snapshot
Change-Id: Idbf3e3205d581800d6093c8d6cf6152374129ba4
2020-08-06 19:47:57 +00:00