Commit Graph

224 Commits

Author SHA1 Message Date
Colin Cross 57205f3cb4 Move proto compilation to RuleBuilder am: 19878da6a0 am: 61918685aa
am: c8a3eb9110

Change-Id: If3922ee1900d6f3888c7291997ac49d4a939c065
2019-04-02 10:31:13 -07:00
Colin Cross 19878da6a0 Move proto compilation to RuleBuilder
Using blueprint.Rule for protoc commands was causing code duplication
because there was no good way to run the same protoc for cc, java and
python but then run custom source packaging steps for java and python.
Move most of the code into a common function that returns a
RuleBuilder, and then let java and python add their own commands at
the end of the rule.

Bug: 70706119
Test: All Soong tests
Test: m checkbuild
Change-Id: Ic692136775d273bcc4f4de99620ab4878667c83a
2019-04-02 16:38:47 +00:00
Jaewoong Jung 79e3e79ee8 Merge "Add override_android_app module type." am: e9665723da am: 9874d6abe6
am: c3432e294e

Change-Id: I28638a23c6140ae1775187a2afc61b15db97f487
2019-03-22 07:57:11 -07:00
Jaewoong Jung 525443aa22 Add override_android_app module type.
This is a new implementation of overriding module types that makes use
of local variants. With this, product owners can use PRODUCT_PACKAGES to
decide which override module to include in their products.

Bug: 122957760
Bug: 123640028
Test: app_test.go
Change-Id: Ie65e97f615d006b6e9475193b6017ea9d97e8e97
2019-03-21 13:26:20 -07:00
Vic Yang b7700709dd Add support for no-vendor-variant VNDK am: efd249e62a am: 409b1d2375
am: 89ac74fed3

Change-Id: I11df12e61cab3d3f694573a558fe8862023e475c
2019-03-20 21:58:34 -07:00
Vic Yang efd249e62a Add support for no-vendor-variant VNDK
When no-vendor-variant VNDK is enabled, the vendor variant of VNDK
libraries are not installed.  Since not all VNDK libraries will be
ready for this, we keep a list of library names in cc/vndk.go to
indicate which libraries must have their vendor variants always
installed regardless of whether no-vendor-variant VNDK is enabled.

Also add --remove-build-id option to the strip script to facilitate
the check of functional identity of the two variants.

Bug: 119423884
Test: Add a dummy VNDK library and build with
      TARGET_VNDK_USE_CORE_VARIANT := true, with the corresponding
      build/make change.

Change-Id: Ieb1589488690e1cef1e310669a8b47a8b8759dac
2019-03-21 04:29:24 +00:00
Colin Cross 855eb50572 Add path properties mutator am: 1b48842a4b am: ad566c5829
am: 4d59c54239

Change-Id: I2bb82329702aa861411e739643d289cffdcf36bb
2019-03-07 12:06:47 -08:00
Colin Cross 1b48842a4b Add path properties mutator
Add a mutator pass after DepsMutator that visits every property
struct in every module looking for properties that have a tag
`android:"path"`, and automatically add a SourceDepTag dependency
on any module references (":module-name") found.  Uses a cache to
store the mapping of property struct type to locations of
properties with the tag.

Test: android/path_properties_test.go
Change-Id: I38c0497843dde4890e9342c3a6f0b402c0720742
2019-03-07 18:36:24 +00:00
Colin Cross ccfe15d92a Merge "Add modules for converting java modules between host and device" am: e3ad4144db am: d5f25c7685
am: 3ce8fedd9a

Change-Id: I09f01ae076b93cdec5b738eed00c2d7a40e5555d
2019-03-05 20:06:45 -08:00
Colin Cross 3d7c9827d5 Add modules for converting java modules between host and device
java_device_for_host and java_host_for_device allow treating a
device module as a host module and vice versa.  They will be useful
for converting layoutlib and robolectric to Soong, as these modules
run device java code on the host.

Bug: 117920228
Test: device_host_converter_test.go
Change-Id: Ia9a371fb41a97bc16338097f3ce8b40099744167
2019-03-05 23:09:45 +00:00
Colin Cross 1885ec2b79 Add dexpreopt_bootjars_test.go am: 762286723a am: 2c81ab734f
am: 15836b9ceb

Change-Id: I4d047c47d783f6e788eeccdf83dab646338d15d8
2019-03-04 19:40:21 -08:00
Colin Cross 762286723a Add dexpreopt_bootjars_test.go
Add a test that exercises the dexpreopt_bootjars.go singleton.

Test: dexpreopt_bootjars_test.go
Change-Id: I01d4f6e22f6ff7b809af043391d7b6209dcb8675
2019-03-05 03:17:51 +00:00
Alex Light c6d6380c34 Merge "Add support for including py_binary and *_go_binary in apexs" am: f8711f053c am: 6b7ea48868
am: 95333c25e5

Change-Id: I87ec345448112a7e06d8d8adb7cda1493a9f0b70
2019-02-28 20:22:43 -08:00
Alex Light 778127a041 Add support for including py_binary and *_go_binary in apexs
These additional binary types are useful for some apexs. Add the
ability to include them. Due to the nature of the resulting artifacts
only py binaries with embedded launchers and host go binaries are
supported.

Test: m com.android.support.apexer
Bug: 119332365
Bug: 119332362
Change-Id: I27c253d3647cf7bbe15896610d7a74a5f93e8bec
2019-03-01 01:56:14 +00:00
Jaewoong Jung 2cfaf135a4 Merge "Revert "Add override_module."" am: ef36053829 am: 4ab2e63974
am: d26cc522ac

Change-Id: Iab70e8d689eea96831afd4f3b696122b98c99d9b
2019-02-28 15:51:16 -08:00
Jaewoong Jung acb6db331b Revert "Add override_module."
This reverts commit aa65e17016.

Reason for revert: Not compatible with PRODUCT_PACKAGES, and so has very limited use.

Change-Id: Ib141d3984a6f12bb50989e66037494c466b066f1
2019-02-28 16:22:30 +00:00
Jaewoong Jung 049aea10f5 Merge "Add override_module." am: b709575a75 am: e8eaf4608d
am: b44bb0896b

Change-Id: I4c8faef56835a1e7d334f8dade5623c9ea07df3e
2019-02-27 20:13:56 -08:00
Jaewoong Jung aa65e17016 Add override_module.
This new module type replaces the inherit-package function in make by
allowing developers to override the name, the certificate, and the
manifest package name of an android_app module.

Bug: 122957760
Fixes: 123640028
Test: app_test.go + BrowserGoogle
Change-Id: Iefe447e7078b25039233221361ef95c83a29973a
2019-02-27 14:35:39 -08:00
Colin Cross 0e902ea85a Refactor dexpreopt_bootjars.go to prepare for multiple boot images am: 44df581457 am: ac405aa805
am: d3a73010f9

Change-Id: I53abda3e3b15969402580825480f76bc18a9d9de
2019-02-22 20:37:41 -08:00
Colin Cross 44df581457 Refactor dexpreopt_bootjars.go to prepare for multiple boot images
Refactor dexpreopt_bootjars.go so that buildBootImage can be called
with a bootImageConfig to create rules to build the boot image in
preparation for building multiple boot images.

Test: m checkbuild
Change-Id: I7ba40a0988c8acbd6c1ee4e36f4bbb34fb4e2d24
2019-02-20 22:06:29 -08:00
Sasha Smundak 23e19eff31 Merge "Implement vts_config module" am: e344fb5fb1 am: a4f4607862
am: dd36b0ccf3

Change-Id: I71493cdabc1dd62b74d35b1ab47f02d50762539f
2019-02-20 15:57:58 -08:00
Sasha Smundak ff36da04e8 Implement vts_config module
Test: internal (see android/vts_config_test.go) + run 'm vts' and check
that host/linux-x86/vts/android-vts.zip remians the same
Change-Id: I0249a974a240e7669c3b9378c17739df8e120873
Fixes: 122617100
2019-02-19 16:58:43 -08:00
Colin Cross f1b8b2ec1b Move dexpreopting of boot jars into Soong am: 800fe13146 am: 7982dc9f45
am: 7961c04510

Change-Id: I529950a46e2869d0b2a116738db239ed00a3e354
2019-02-18 19:19:45 -08:00
Colin Cross e4759b9ab9 Add java/testing.go for sysprop_test.go
Share more of the setup code for java tests to sysprop_tests.go.

Test: java_test.go, sysprop_test.go
Change-Id: I0e3b287bf188c432d995a9a91a18ebef12aa47d1
Merged-In: I0e3b287bf188c432d995a9a91a18ebef12aa47d1
(cherry picked from commit b19745363f)
2019-02-16 17:08:01 -08:00
Colin Cross b19745363f Add java/testing.go for sysprop_test.go
Share more of the setup code for java tests to sysprop_tests.go.

Test: java_test.go, sysprop_test.go
Change-Id: I0e3b287bf188c432d995a9a91a18ebef12aa47d1
2019-02-15 23:22:38 -08:00
Colin Cross 800fe13146 Move dexpreopting of boot jars into Soong
Implement the dexpreopting of boot jars in singleton rules in
Soong.

Test: m checkbuild
Change-Id: Ic02ce941fa5e238b839b3eb4c06a3e10c62d98ff
2019-02-15 16:16:25 -08:00
Inseob Kim 12865b096a Create sysprop_library soong module am: c0907f191a am: 92053b977e
am: 751a2cb98a

Change-Id: Ie9976968934c4231492af4ad4cbbcfe38790f040
2019-02-13 17:25:17 -08:00
Inseob Kim c0907f191a Create sysprop_library soong module
A newly introduced sysprop_library soong module will generate a
java_sdk_library and a cc_library from .sysprop description files.
Both Java modules and C++ modules can link against sysprop_library
module, thus giving consistency for using generated sysprop API.

As Java controls accessibility of Internal / System properties with
@hide and @SystemApi, 2 different header files will be created. And
build system will selectively expose depending on the property owner
and the place where the client libraries go into.

Bug: 80125326
Bug: 122170616
Test: 1) Create sysprop_library module.
Test: 2) Create empty txt files under prebuilts/sdk.
Test: 3) Create api directory, make update-api, and see changes.
Test: 4) Try to link against sysprop_library with various clients.
Test: 5) Soc_specific, Device_specific, Product_specific, recovery flags
work as intended.
Change-Id: I78dc5780ccfbb4b69e5c61dec26b94e92d43c333
2019-02-13 23:32:51 +00:00
Colin Cross 28825f0e41 Merge changes from topic "hiddenapi" am: 4c3a4aded3 am: 19807e619e
am: ab9bfa1617

Change-Id: I148138a6723926af54620c6ce3379fdb61ed9e08
2019-02-07 00:09:49 -08:00
Colin Cross f24a22a98a Move hiddenapi singleton rules to Soong
Move the rules that build hiddenapi-stubs-flags.txt,
hiddenapi-flags.csv and hiddenapi-greylist.csv into Soong.

Bug: 123645297
Test: m checkbuild
Test: m UNSAFE_DISABLE_HIDDEN_API_FLAGS=true
Change-Id: I90bf58710f6153ee8565994f799d3ec5699bc7fa
2019-02-06 11:23:40 -08:00
Colin Cross 23db3437ec Merge changes Ifcb338e6,Ie509ed80,I270fed60,Id825cb75,I92a963bd am: cc2d11961c am: 9053375b93
am: 31cabeea1c

Change-Id: I3abcc60539de84d3365df989de341b4bb3e1db09
2019-02-05 21:26:50 -08:00
Colin Cross 571cccfcbc Prepare for a type-safe OnceKey
Add an opaque OnceKey type and use it for all calls to Once in
build/soong.  A future patch will convert the arguments to
Once* to OnceKey once users outside build/soong have been updated.

Test: onceper_test.go
Change-Id: Ifcb338e6e603e804e507203c9508d30ffb2df966
2019-02-06 01:52:41 +00:00
Colin Cross feec25b084 Move dexpreopt.Script to android.RuleBuilder
Move dexpreopt.Script to android.RuleBuilder so that the builder
style can be used in more places.  Also add tests for it.

Test: rule_builder_test.go
Change-Id: I92a963bd112bf033b08899e930094b908acfcdfd
2019-02-05 13:28:43 -08:00
Dan Willemsen c85b87d751 Merge "Add sh_binary[_host] for shell script that should be installed as executable" am: bfd1830c32 am: f0ad602157
am: d8d66fc214

Change-Id: I6c81463972435906c8e3b5a01a8b40a047d37c77
2019-01-31 13:36:40 -08:00
Dan Willemsen b05526711e Add sh_binary[_host] for shell script that should be installed as executable
We've been putting these in cc_prebuilt_binary, but that's not really
correct. It also tries adding '.exe' to the end of windows executables,
which isn't desirable for bat files.

Test: Use sh_binary_host
Change-Id: Idd5418dceb81ac55b766c987fbb69a810aeb8a3b
2019-01-28 10:59:10 -08:00
Colin Cross 414c8d7b03 Optimize filterArchStruct when nothing is filtered am: cb9880786d am: f53ca3118f
am: 86ff01700f

Change-Id: If208b1da532c0a1f03682fa9323e5b60686bb179
2019-01-25 13:52:43 -08:00
Colin Cross cb9880786d Optimize filterArchStruct when nothing is filtered
Runtime-created struct types have limit on the name of the type,
which is the full text of the fields in the struct.  Avoid creating
runtime struct types when filtering produces an identical struct.
Also add tests and godoc for filterArchStruct.

Test: arch_test.go
Change-Id: If7eb27ea9e72073d5252e93f2110b08889ed76b1
2019-01-25 21:26:53 +00:00
Doug Horn 4faa6d2488 Support building for Fuchsia. am: c32c6b0d79 am: ac2925f410
am: b85599e803

Change-Id: I6ef28e11e3fbe3dc3217ae7b1c05f39ada1ebbd3
2019-01-24 16:14:20 -08:00
Doug Horn c32c6b0d79 Support building for Fuchsia.
This CL adds configs for the arm64 and x64 fuchsia
device targets, sets up the necessary linker flags,
and disables some functionality that is not currently
supported on Fuchsia.

Bug: 119831161
Test: Compile walleye, internal validation against
fuchsia_arm64-eng and fuchsia_x86_64-eng.
Change-Id: I2881b99d2e3a1995e2d8c00a2d86ee101a972c94
2019-01-24 18:59:29 +00:00
Colin Cross 0829ed7783 Replace annotation_processors with plugins am: be9cdb8d64 am: 5dc9b8029f
am: f67ea0a537

Change-Id: Ie3803a065a14211aebec4cd0487d5db4ede09089
2019-01-23 12:56:00 -08:00
Colin Cross be9cdb8d64 Replace annotation_processors with plugins
Follow bazel's modules for annotation processors by introducing
a java_plugin module type that can contain extra metadata about
the annotation processor, the processor class and a flag to
specify if the annotation processor is compatible with the
turbine optimization.  Deprecate the annotation_processors
property, which took a list of java_library_host modules, in
favor of the plugins property, which takes a list of java_plugin
modules.  The annotation_processors property will be removed
once all uses have been replaced with plugins.

Bug: 77284273
Test: plugin_test.go
Test: m caliper
Change-Id: I37c1e80eba71ae2d6a06199fb102194a51994989
2019-01-23 20:17:51 +00:00
Colin Cross 17bb64e300 Merge changes from topic "kapt" am: e153382e17 am: cae625c754
am: a2d2f2af1a

Change-Id: Ic3b8ef98f8bd5595762f6b28a7735bf57b62b1b3
2019-01-22 20:07:59 -08:00
Colin Cross 21fc9bbe19 Move kotlin to it's own file
kapt is going to make kotlin a little more complicated, move the
rules and tests to their own files.

Bug: 122251693
Test: m checkbuild
Change-Id: Ieed78b97995ced210b710bd50c357514cc8e3bc6
2019-01-22 16:32:11 +00:00
Colin Cross 32e41bdf63 Move hiddenapi to Soong am: 8faf8fc060 am: 3a99f6524b
am: b601a84ac8

Change-Id: Id26b48ee6a2bf08fc6628c7b0238dd0d2bf29e25
2019-01-17 15:54:59 -08:00
Colin Cross 8faf8fc060 Move hiddenapi to Soong
Perform hiddenapi CSV generation and dex encoding for Soong modules
in Soong.  This fixes an issue where dexpreopting was happening on
a different jar than was being installed.

Bug: 122856783
Test: m checkbuild
Test: no change out/target/common/obj/PACKAGING/hiddenapi-flags.csv
Test: only ordering change to out/target/common/obj/PACKAGING/hiddenapi-greylist.csv
Test: cts/tests/signature/runSignatureTests.sh
Change-Id: I4fc481efc29e73cb2bdaacf672e86d5f6f0075ae
2019-01-17 22:19:28 +00:00
yelinhsieh 51d85c5429 Merge "Autogen python test config." am: 73f160bb39 am: 38d2582cb9
am: 673addbdd1

Change-Id: Ifafd394c121521ec62f16bcfa54c09315a24ca2e
2019-01-15 02:28:03 -08:00
yelinhsieh 80880a3460 Autogen python test config.
Feature request from developer, autogen python test config.

Bug:118442443

Test: $source build/envsetup.sh ; lunch
      $sed -i '/test_config/d' tools/acloud/Android.bp
      $make acloud_test
      $[ -f $ANDROID_HOST_OUT_TESTCASES/acloud_test/acloud_test.config ] && echo "Found" || echo "Not found"

Change-Id: I196230581b456afe03e67f9cd84c028d18ba08d9
2019-01-14 03:30:06 +00:00
Colin Cross 3a98f79d71 Merge changes Ice10d0cc,I83ef48cb am: 863ac187ce am: 4a597193f8
am: 44a209ac43

Change-Id: Ia11b32d456145eca6c255928e4e4b435ffcfd596
2019-01-10 12:07:13 -08:00
Colin Cross fb6d781202 Split out sdk.go from java.go
Split out SDK handling functions from java.go to sdk.go and tests
from java_test.go to sdk.go.

Test: sdk_test.go
Change-Id: I83ef48cbe5230572c1d4ecc0e89021d2f7c71b76
2019-01-10 07:09:29 +00:00
Colin Cross c420c144f0 Merge changes Ideba9c0d,Iea2ab9be am: 9036e2eef1 am: a95ccb4fdb
am: c04a883c5c

Change-Id: Ibc5c61481ad55d1d8811c565c11c915b644f39c0
2019-01-08 21:45:20 -08:00