Commit Graph

1399 Commits

Author SHA1 Message Date
Orion Hodson
2b0d6a86a4 Make apex_available respect AllowMissingDependencies
am: 4b5438a9ea

Change-Id: I07adcfbe783f58189c352724dd2f93ca574c4859
2019-10-08 03:27:01 -07:00
Orion Hodson
4b5438a9ea Make apex_available respect AllowMissingDependencies
When SOONG_ALLOW_MISSING_DEPENDENCIES is defined in the build, don't
fail if an apex_available entry is not available. This is for smaller
Android manifests that may not include all APEX projects (e.g. master-art).

Bug: 142300164
Test: able to build from master-art manifest.
Change-Id: Ice1274f7dd143c4b1bf756e2cde93e217266affa
2019-10-08 10:40:51 +01:00
Jiyong Park
6064472edb Merge "Remove no_apex in favor or apex_available"
am: e89b8fb919

Change-Id: Icf8cfdd3945291fd15a15a751ca761842abbbfe6
2019-10-07 22:41:59 -07:00
Treehugger Robot
e89b8fb919 Merge "Remove no_apex in favor or apex_available" 2019-10-08 05:33:29 +00:00
Colin Cross
362051eef3 Merge "Filter product variable property structs"
am: 2334757d24

Change-Id: Iee8f1d0cb3ac2e01032b569727f9ed48e6783273
2019-10-07 14:07:35 -07:00
Colin Cross
2e7e4df578 Merge "Remove old-style support for translated second architectures"
am: c6136c9d65

Change-Id: I14c7ceb6e1f34f902a7fe71727773498b13b0078
2019-10-07 14:06:45 -07:00
Colin Cross
2334757d24 Merge "Filter product variable property structs" 2019-10-07 20:53:44 +00:00
Treehugger Robot
c6136c9d65 Merge "Remove old-style support for translated second architectures" 2019-10-07 20:48:07 +00:00
Colin Cross
e33b763897 Merge "Add symlinks to sh_binary in soong"
am: 8b0dc4be07

Change-Id: Ifac96bb40de8a4f183acecd305618cb677dd95c1
2019-10-07 10:53:37 -07:00
Colin Cross
8b0dc4be07 Merge "Add symlinks to sh_binary in soong" 2019-10-07 17:47:45 +00:00
Rashed Abdel-Tawab
6a34131da4 Add symlinks to sh_binary in soong
This allows us to change `logpersist.start` to `sh_binary` and unblocks
breakpad symbol uploading

Test: convert logpersist.start to sh_binary and verify symlinks are correct
Change-Id: I1b86c512df73a336205ca35216445a08e43bb879
2019-10-04 20:51:44 -07:00
Colin Cross
eb767a021e Merge "Use localPool consistently for UseGoma() == true"
am: 96ce6ab143

Change-Id: I0dee88625929e1d523a1df3a8547fc40353bea43
2019-10-04 12:04:05 -07:00
Treehugger Robot
96ce6ab143 Merge "Use localPool consistently for UseGoma() == true" 2019-10-04 18:36:07 +00:00
Colin Cross
789fc863bb Merge changes from topic "install"
am: 4acb77e76a

Change-Id: Id5785b4df6fa91a457e5a3234819cd2de9644cb5
2019-10-03 15:06:55 -07:00
Colin Cross
21daf4e438 Separate InstallPath from OutputPath
am: 70dda7e3da

Change-Id: Ic581d093d61e2b1f413b8b9dfdc8ee75a6806d54
2019-10-03 15:06:48 -07:00
Colin Cross
5c17b4e9bb Add InstallInRoot to allow modules to install into root partition
am: 90ba5f4e98

Change-Id: I73a597b875c336624b0016302c3710177bb0a658
2019-10-03 15:06:40 -07:00
Colin Cross
70dda7e3da Separate InstallPath from OutputPath
Create a new type InstallPath that is similar to OutputPath to
differentiate intermediates output paths from installed output
paths.

RelPathString is a poorly defined, undocumented function that is
primarily used to get an install path relative to out/soong to
generate an equivalent install path for Make relative to $(OUT_DIR).
Move it to InstallPath for now, and fix the one remaining user on
OutputPath.

Add a method to create an NDK install path so that ndk_sysroot.go
doesn't have to do it manually with PathForOutput.

Bug: 141877526
Test: m checkbuild
Change-Id: I83c5a0bd1fd6c3dba8d3b6d20d039f64f353ddd5
2019-10-03 10:07:53 -07:00
Colin Cross
ff6c33d885 Replace RelPathString() with ToMakePath()
Add a ToMakePath() method that returns a new path that points out
out/ instead of out/soong/, and replace the
"$(OUT_DIR)/" + path.RelPathString()
pattern with
path.ToMakePath().String()

Bug: 141877526
Test: m checkbuild
Change-Id: I391b9f2ed78c83a58d905d48355ce9b01d610d16
2019-10-03 10:07:53 -07:00
Colin Cross
90ba5f4e98 Add InstallInRoot to allow modules to install into root partition
If InstallInRoot() returns true the module will be installed to
$OUT/root or $OUT/recovery/root.

Bug: 141877526
Test: m checkbuild
Test: no change to build.ninja or Android-${TARGET_PRODUCT}.mk
Test: TestPathForModuleInstall
Change-Id: Id6e435c6019f11eeb5806528fd464dbf220b88d9
2019-10-03 10:07:46 -07:00
Colin Cross
bf0adb2c88 Merge changes from topic "filter_arch_properties"
am: 2f429160c1

Change-Id: I20821e595ad22a08ebc64a0a6c779ddf021e8a86
2019-10-02 13:26:01 -07:00
Colin Cross
21c6067ebb Move arch properties to proptools.FilterPropertyStruct
am: 7444910e93

Change-Id: I043dd52f1ec805dab45ee9604bf3f0c6932f27c0
2019-10-02 13:25:47 -07:00
Treehugger Robot
2f429160c1 Merge changes from topic "filter_arch_properties"
* changes:
  Make CreateModule return the newly created module
  Move arch properties to proptools.FilterPropertyStruct
2019-10-02 18:53:54 +00:00
Jiyong Park
b0413c3a80 Merge "Add apex_available to control the availablity of a module to APEXes"
am: 321d7114c3

Change-Id: I7cdb151256cedfe779b7fdf380c5a9eef1a12a36
2019-10-02 01:15:59 -07:00
Jiyong Park
7916bfc3cc Remove no_apex in favor or apex_available
This change reverts following three changes to remove the no_apex
property. no_apex: true is equivalent to apex_available:
["//apex_available:platform"].

Revert "fix: "no_apex" can be put in defaults"
This reverts commit cc372c5b1d.

Revert "Add no_apex check for static library"
This reverts commit 2db7f46d0c.

Revert "Add no_apex property"
This reverts commit 4f7dd9b4db.

Bug: 139870423
Bug: 128708192
Test: m

Change-Id: Ia4b094e371e9f8adff94ae6dc3ebb8e081381d4e
2019-10-02 14:12:16 +09:00
Jiyong Park
127b40b316 Add apex_available to control the availablity of a module to APEXes
apex_available property controls the availability of a module to APEXes.
For example, `apex_available: ["myapex", "otherapex"]` makes the module
available only to the two APEXes: myapex and otherapex, and nothing
else, even to the platform.

If the module is intended to be available to any APEX, then a pseudo
name "//apex_available:anyapex" can be used.

If the module is intended to be available to the platform, then another
pseudo name "//apex_available:platform" is used.

For now, if unspecified, this property defaults to ["//apex_available:platform",
"//apex_available:anyapex"], which means the module is available to everybody.
This will be reduced to ["//apex_available:platform"], when marking for
apex_available for existing modules are finished.

Bug: 139870423
Bug: 128708192
Test: m
Change-Id: Id4b233c3056c7858f984cbf9427cfac4118b2682
2019-10-02 14:12:16 +09:00
Yo Chiang
0a52b0eab9 Merge "Change RRO enforcement logic"
am: fdc9afa15b

Change-Id: Ia72f34bee493afd455d5ca9ee23e495b048d516c
2019-10-01 19:47:43 -07:00
Yo Chiang
fdc9afa15b Merge "Change RRO enforcement logic" 2019-10-02 02:34:35 +00:00
Colin Cross
2e2dbc250a Use localPool consistently for UseGoma() == true
Remove the distinction between pctx.StaticRule and
pctx.AndroidStaticRule so that all of the local rules correctly
get assigned to the localPool.  Also put Module and Singleton
rules into the localPool.

Test: compare out/soong/build.ninja
Change-Id: Id2bb38eff3c7209340fe55bc9006f00bd3661d81
2019-10-01 14:11:20 -07:00
Colin Cross
c7503e2fd8 Move sharding functions for reuse
am: 0a2f719bca

Change-Id: I4d1e85ac2fe3fd61f82e4783ce48b42f7a3bbf53
2019-10-01 13:14:34 -07:00
Treehugger Robot
f856c005cb Merge changes from topic "soong_c_flags"
* changes:
  Creation of C Flags Build Variables
  Move sharding functions for reuse
2019-10-01 19:25:50 +00:00
Jaewoong Jung
58a6de1c5b Merge changes I3d6506f5,I3667eac9
am: 9dc1756484

Change-Id: I5da90cdf8c36b3d3cdad2c9f3077465087dda545
2019-10-01 10:09:16 -07:00
Yo Chiang
4ebd06aa57 Change RRO enforcement logic
Change RRO logic from
"Enforce RRO for all modules when PRODUCT_ENFORCE_RRO_TARGETS is '*'"
to
"Enforce RRO for all modules when PRODUCT_ENFORCE_RRO_TARGETS includes '*'"

Bug: b/137727426
Test: test build on local machine
Change-Id: I5df1a776d324c92c0c8bbf79b4f24536cb9b5c21
2019-10-01 15:08:56 +08:00
Colin Cross
0a2f719bca Move sharding functions for reuse
Move shardPaths and shardTests to android.ShardPaths and
android.ShardStrings for reuse in other packages.

Test: m checkbuild
Change-Id: I868802872c73616b80f56cbf11f959c01a8b793a
2019-09-29 23:26:37 -07:00
Jaewoong Jung
0949f31657 Fix android_test install path.
Test: m nothing + diff soong mk and ninja files.
Bug: 140795853
Change-Id: I3667eac951dea7e447cf73219ff89199fca9ed63
2019-09-27 16:42:20 -07:00
Jaewoong Jung
a5ba702ca6 Migrate java/androidmk.go to new system #2
am: 9a1e8bdd0b

Change-Id: If7a85110014d50d901c42a61fd17a9abb1fdaa08
2019-09-27 12:30:16 -07:00
Jaewoong Jung
c2f794a401 Merge "Migrate java/androidmk.go to new system #1"
am: 2784fda152

Change-Id: I488367e21eba6fd40ea27ef727b139448ab53dcf
2019-09-27 09:26:02 -07:00
Jaewoong Jung
9a1e8bdd0b Migrate java/androidmk.go to new system #2
This change migrates remaining AndroidMk()s in java/androidmk.go to
AndroidMkEntries().

Test: Soong tests
Test: Built a system image
Test: Manual inspection of diffs
Change-Id: Ib1107fafb175fdfd8539bf6158548224e4c87a6d
2019-09-27 08:10:39 -07:00
Jaewoong Jung
2784fda152 Merge "Migrate java/androidmk.go to new system #1" 2019-09-27 14:40:24 +00:00
Colin Cross
18c46807c9 Filter product variable property structs
For each module, take the default product variable properties and
create a new type that contains only the properties that exist in
the current module.  This will provide better errors when attemping
to set product variable properties that will never get used for
a module, and fixes errors when a module attempts to use a product
variable that also contains properties that don't apply to the
current module.

Fixes: 79249983
Test: TestProductVariables
Test: m checkbuild
Change-Id: I4dc24f7781b8ce798651cfc8bf3563005a92c13d
2019-09-26 15:03:07 -07:00
Colin Cross
7444910e93 Move arch properties to proptools.FilterPropertyStruct
Test: m checkbuild
Change-Id: I85c5e6c86aea4ccf5bcddc2e5d468d66e0b38671
2019-09-26 15:03:07 -07:00
Colin Cross
e003c4abdd Make CreateModule return the newly created module
Allow mutators to modify properties of the newly created module
by returning it.

Test: m checkbuild
Change-Id: I682caca86c0c8f7c3ae815a494d4c75962c8e2e8
2019-09-26 15:03:07 -07:00
Colin Cross
e6825e58e4 Make CreateModule take an android.ModuleFactory
am: 84dfc3d331

Change-Id: I923ea9e9bf757ff78d5e6d2325840284b77c69b7
2019-09-26 11:46:22 -07:00
Colin Cross
84dfc3d331 Make CreateModule take an android.ModuleFactory
Reduce the boilerplate required to call CreateModule by taking an
android.ModuleFactory instead of a blueprint.ModuleFactory.

Test: m checkbuild
Change-Id: I1259d2dd3f7893b5319c333bc180727ac40f9e91
2019-09-26 17:19:26 +00:00
Jiyong Park
303b2992af Merge "Introduce module type 'sdk'"
am: b1102ba828

Change-Id: I2fe48c7185491a9d092cd69260bf2edfa86462da
2019-09-22 22:02:44 -07:00
Jiyong Park
d1063c1586 Introduce module type 'sdk'
This change introduces a new module type named 'sdk'. It is a logical
group of prebuilt modules that together provide a context (e.g. APIs)
in which Mainline modules (such as APEXes) are built.

A prebuilt module (e.g. java_import) can join an sdk by adding it to the
sdk module as shown below:

sdk {
    name: "mysdk#20",
    java_libs: ["myjavalib_mysdk_20"],
}

java_import {
    name: "myjavalib_mysdk_20",
    srcs: ["myjavalib-v20.jar"],
    sdk_member_name: "myjavalib",
}

sdk {
    name: "mysdk#21",
    java_libs: ["myjavalib_mysdk_21"],
}

java_import {
    name: "myjavalib_mysdk_21",
    srcs: ["myjavalib-v21.jar"],
    sdk_member_name: "myjavalib",
}

java_library {
    name: "myjavalib",
    srcs: ["**/*/*.java"],
}

An APEX can specify the SDK(s) that it wants to build with via the new
'uses_sdks' property.

apex {
    name: "myapex",
    java_libs: ["libX", "libY"],
    uses_sdks: ["mysdk#20"],
}

With this, libX, libY, and their transitive dependencies are all built
with the version 20 of myjavalib (the first java_import module) instead
of the other one (which is for version 21) and java_library having the
same name (which is for ToT).

Bug: 138182343
Test: m (sdk_test.go added)
Change-Id: I7e14c524a7d6a0d9f575fb20822080f39818c01e
2019-09-22 08:21:27 +09:00
Colin Cross
3b19f5d71d Remove old-style support for translated second architectures
Translated second architectures now go in NativeBridgeArch instead
of DeviceSecondaryArch.

This reapplies I568046330abc002d4eed582cb999b62a5eaba790 with
ctx.Config().HasMulitlibConflict() added to fix the NDK build,
which has arm64, arm, x86_64, and x86 architectures enabled.

Test: m checkbuild
Test: OUT_DIR=out_ndk build/soong/scripts/build-ndk-prebuilts.sh
Test: no change to build.ninja or Android-aosp_cf_x86_phone.mk
Change-Id: Iadcafbd64bfb9579ae7c86914927c43a062b0c8e
2019-09-19 12:54:32 -07:00
Colin Cross
39293b4068 Merge "Revert "Remove old-style support for translated second architectures""
am: 4c5032bb66

Change-Id: Iab516935ff26b0c20d46732f93ec46b3c7907f50
2019-09-18 14:25:12 -07:00
Colin Cross
402be41aa8 Revert "Remove old-style support for translated second architectures"
This reverts commit fe6330c7d2.

Reason for revert: this was accidentally propping up NDK builds
Bug: 141242600
Change-Id: Ie9f8e31479a74e8e9e14d720a5936da6b1d5d113
2019-09-18 21:12:31 +00:00
Colin Cross
94bac35d78 Merge "Remove old-style support for translated second architectures"
am: da62bf96ce

Change-Id: Ia517bd20003e187f693264b8106baa33bf5cbb4f
2019-09-18 13:59:35 -07:00
Colin Cross
fe6330c7d2 Remove old-style support for translated second architectures
Translated second architectures now go in NativeBridgeArch instead
of DeviceSecondaryArch.

Bug: 141242600
Test: m checkbuild
Change-Id: I568046330abc002d4eed582cb999b62a5eaba790
2019-09-18 16:23:18 +00:00