Commit Graph

4535 Commits

Author SHA1 Message Date
Colin Cross 8cf991bd2d Merge changes Iaab7a588,I7bc1d1f3
am: f6df17afd1

Change-Id: Ia257b3a4a6afcce134057c4eaa5a79e54b336513
2017-10-17 19:30:59 +00:00
Treehugger Robot f6df17afd1 Merge changes Iaab7a588,I7bc1d1f3
* changes:
  Use jars containg sources for java generators
  Pass output file names into java.Transform* functions
2017-10-17 19:22:50 +00:00
Colin Cross 07447e3be8 Merge "Initial support for converting jars to java9 system modules"
am: 8c71d16652

Change-Id: I69548bd5cd40581e52f950bc2fc86fcb4a535cc1
2017-10-17 18:43:28 +00:00
Colin Cross 8c71d16652 Merge "Initial support for converting jars to java9 system modules" 2017-10-17 18:37:35 +00:00
Pirama Arumuga Nainar ba6593f5fa Merge "Add enable_profile_use property"
am: 0e8afed83a

Change-Id: I39b7a8d6ad3d794ed8f20100fa964acb12c02937
2017-10-17 03:07:22 +00:00
Pirama Arumuga Nainar 0e8afed83a Merge "Add enable_profile_use property" 2017-10-17 03:00:05 +00:00
Colin Cross 59149b6df5 Use jars containg sources for java generators
srcFileLists was an ill-fated attempt to deal with generators that
produce a set of java sources that is not known ahead of time.
For example, the list of files produced by protoc depends on the
package statement in the .proto file.  srcFileLists put the list
of generated files into a file, which was then passed to javac
using the @file syntax.  This worked, but it was too easy to cause
missing dependencies, and will not work well in a future distributed
build environment.

Switch to putting generated sources into a jar, and then pass them
jar to javac using -sourcepath.

Test: m checkbuild
Change-Id: Iaab7a588a6c1239f7bf46e4f1b102b3ef517619b
2017-10-16 19:39:39 -07:00
Colin Cross e9a275b440 Pass output file names into java.Transform* functions
Pass the output file name into the java.Transform* functions.
This consistently puts control of the filename into java.go,
which is often necessary to avoid collisions when the same
rule is used multiple times in a single module.  It also
has the side-effect of removing the poorly named "stem"
parameters.

Test: java_test.go
Change-Id: I7bc1d1f3bfae6f9d2c92870e6df381817817aab4
2017-10-16 19:39:39 -07:00
Colin Cross 5e8a9565dd Refactor errorprone support to reduce duplication
am: 070879e69e

Change-Id: I8d06cb4b506e304fcfb2083cb1afc3c8991856a5
2017-10-17 01:59:48 +00:00
Colin Cross 1369cdb280 Initial support for converting jars to java9 system modules
Adds a java_system_modules module type that (when
EXPERIMENTAL_USE_OPENJDK9 is set to true) converts a list of
java library modules and prebuilt jars into system modules,
and plumbs the system modules through to the javac command
line.

Also exports the location of the system modules to make
variables, as well as the name of the default system module.

Test: TestClasspath in java_test.go, runs automatically as part of the build
Bug: 63986449
Change-Id: I27bd5d2010092422a27b69c91568e49010e02f40
2017-10-16 15:00:02 -07:00
Pirama Arumuga Nainar 6aeed8b439 Add enable_profile_use property
Bug: http://b/65598278

This property defaults to 'true' and setting it to false skips profile
use.  This escape hatch lets us disable PGO for a module without
completely removing the 'pgo' property.  Additionally, this also helps
selectively disabling PGO for some architectures, if desired.

Test: Test that -fprofile-use is not added for a test module if
'enable_profile_use: false' is set.

Change-Id: Ifcf1a48c194bc86efd88a529cc2d66a47b7ab080
2017-10-16 13:36:29 -07:00
Colin Cross 070879e69e Refactor errorprone support to reduce duplication
Use a helper function to set up errorprone and javac compiles.

Test: m -j checkbuild
Test: m -j RUN_ERROR_PRONE=true
Change-Id: Icef3a5e1b359487eea3c3306d3d5763dab912b38
2017-10-16 12:50:29 -07:00
Dan Willemsen 63f872a239 Revert "Always run asan ckati on the build servers"
am: 8122bd58ba

Change-Id: I4cfd5354e3153f23c757095a046f4e57e6ab5aeb
2017-10-16 01:03:41 +00:00
Dan Willemsen cc1990534a Always record kati stats into soong log
am: 75d2c170b4

Change-Id: I76ffca839f79f38afd10ac26e2ca7d6fb3d261fe
2017-10-16 01:03:37 +00:00
Dan Willemsen e9d5786b7b Merge "Switch product configs from make to ckati"
am: 37cba1471f

Change-Id: Ia93dec12cfaf067830563757fb7a3b289b7b7c3d
2017-10-15 02:46:56 +00:00
Jeff Gaston 821c2c3695 Merge "Make some params in soong_zip explicit and/or exported"
am: daf774f1f0

Change-Id: Ia892534e3f3f942953605ca8c49a24e1997a10b2
2017-10-15 02:46:33 +00:00
Elliott Hughes 3808a8c1a6 Merge "Unified sysroot: arch-X/include directories are gone."
am: 4d219e801d

Change-Id: I79371e91ebc995f516f4edcdeb7832923877e144
2017-10-15 02:46:15 +00:00
Jiyong Park be4d89249a Squash vendor sources before linkageMutator runs
am: 6a43f04777

Change-Id: I8656bd768bf82b68821beb28678652bdcf2ebfe6
2017-10-15 02:45:51 +00:00
Dan Willemsen 8122bd58ba Revert "Always run asan ckati on the build servers"
This reverts commit a3e6c520ac. I fixed
a few heavy stack users, and we've got better debugging.

Bug: 36182021
Test: m dist
Change-Id: Iefd8589185720e44c40a2e0ceff5fd1438211b86
2017-10-14 00:43:13 +00:00
Dan Willemsen 75d2c170b4 Always record kati stats into soong log
Pass --dump-stats to ckati, but filter out the '*kati*' lines so that
they only end up in our verbose output. That way we've always got access
to the statistics.

Bug: 36182021
Test: m nothing; cat out/soong.log
Change-Id: Iaf7a814fc67f3e475c913faf69924a7f4e2ae3b3
2017-10-14 00:42:30 +00:00
Dan Willemsen 37cba1471f Merge "Switch product configs from make to ckati" 2017-10-13 23:22:00 +00:00
Jeff Gaston daf774f1f0 Merge "Make some params in soong_zip explicit and/or exported" 2017-10-13 20:08:52 +00:00
Elliott Hughes 4d219e801d Merge "Unified sysroot: arch-X/include directories are gone." 2017-10-13 17:35:41 +00:00
Jiyong Park 6a43f04777 Squash vendor sources before linkageMutator runs
linkageMutator removes srcs property of the shared variant of a lib in
order to reuse *.o files compiled for the static variant also to the
shared variant.

However, this causes problem when vendor-specific srcs are specified in
target: {vendor: {srcs: ["..."]}}. For example, let's assume

cc_library {
    name: "libfoo",
    srcs: ["foo.c"],
    target: {
        vendor: {
            srcs: ["bar.c"],
        },
    },
}

Then,
static_vendor: inputs = foo.o, bar.o
shared_vendor: inputs = foo.o (from static_vendor), bar.o (from
static_vendor), bar.o

So, bar.o is included twice and this causes multiple symbol definition
error.

In order to handle the problem, vendor mutator is applied before the
linkage mutator and the vendor-specific srcs are squashed in the vendor
mutator.

Bug: 67731122
Test: build
Test: cc_test.go

Change-Id: I2a5390295dddfc41260e9b6f02746908cdf47228
2017-10-13 14:36:12 +09:00
Dan Willemsen b2e6c2e571 Switch product configs from make to ckati
This speeds up dumping make variables from ~380ms using make to ~220ms
using ckati. It also means that we're consistently using the same parser
for builds (with the same .KATI_READONLY/etc extensions).

envsetup.sh (lunch) / other scripts still use make, changing those to go
through soong_ui will be a future change.

Test: m clean; m nothing
Test: USE_GOMA=true m nothing
Test: m PRODUCT-aosp_x86-sdk
Test: m APP-Calculator
Test: build/soong/build_test.bash -only-config  (on AOSP and internal master)
Change-Id: I6ca554de8de4955fb869001d06d29969b75751cc
2017-10-12 18:11:08 -07:00
Jeff Gaston c3bdc975a4 Make some params in soong_zip explicit and/or exported
in preparation to split soong_zip into a lib and a bin

Bug: 67478260
Test: m -j
Change-Id: I725da6f0c9b13069e3e5b036e2ac8cbdde9ba6bf
2017-10-12 12:51:52 -07:00
Elliott Hughes de28deb460 Unified sysroot: arch-X/include directories are gone.
Bug: N/A
Test: builds
Change-Id: I98fc6a1a3c0be1c90b1deb35b54f36ab16a202ac
2017-10-12 09:07:53 -07:00
Colin Cross 786a19151b Merge "Let tests override environment"
am: 432a2d4033

Change-Id: I3dc5ba434ad147f94e43c2ccf423d08e50d6de91
2017-10-11 08:23:50 +00:00
Treehugger Robot 432a2d4033 Merge "Let tests override environment" 2017-10-11 08:18:17 +00:00
Colin Cross 6ccbc913e4 Let tests override environment
Pass an environment to TestConfig that will be used for
all Config.Getenv calls.

Test: none
Change-Id: I683cd9c9e0db61c9bfd2adb27fca78f558f225c4
2017-10-10 23:28:43 -07:00
Jiyong Park b08d2636ef Merge "vendor_available:false hides a lib from vendors"
am: 7228a62297

Change-Id: Ib4a7e75a5daf11eb70b00e0f0d6ebc8a40738c21
2017-10-11 01:50:57 +00:00
Treehugger Robot 7228a62297 Merge "vendor_available:false hides a lib from vendors" 2017-10-11 01:45:36 +00:00
Pirama Arumuga Nainar c5a3ea48b5 Merge changes Ib23bad52,I1923ebde
am: 3656beab20

Change-Id: I61c15978779b2cd175b07e4a3a47d8212791c12c
2017-10-11 00:18:23 +00:00
Treehugger Robot 3656beab20 Merge changes Ib23bad52,I1923ebde
* changes:
  Do not use profiles if ANDROID_PGO_NO_PROFILE_USE is set
  Refactor methods to be on PgoProperties struct
2017-10-11 00:08:29 +00:00
Pirama Arumuga Nainar 0fdfc459cf Do not use profiles if ANDROID_PGO_NO_PROFILE_USE is set
Bug: http://b/65598278

Non-PGO builds (with this environment variable set) can be used to
measure the performance difference induced by PGO.

Test: Build PGO modules with ANDROID_PGO_PROFILE_USE set.
Change-Id: Ib23bad5208ac7f54894c7768d7532f53b6b91179
2017-10-10 15:41:25 -07:00
Colin Cross dbff8bfd08 Add hostdex support
am: 92430106c3

Change-Id: I1d3343f74b0f0839234ae747207dc1c3b3601f90
2017-10-10 21:59:53 +00:00
Pirama Arumuga Nainar 3f5bb9c89b Refactor methods to be on PgoProperties struct
These methods only need the 'PgoProperties' struct.  Avoid the extra
indirection by directly using this struct.

Test: Build modules with PGO property.
Change-Id: I1923ebde4b0d546810de8e696514d218b3a4f54b
2017-10-10 10:58:37 -07:00
Colin Cross 92430106c3 Add hostdex support
If hostdex: true is specified for a java library, create an extra
Make module that copies the dex jar to a module with a -hostdex
suffix in the host output directory.

Bug: 67600882
Test: m -j checkbuild
Change-Id: I859dfaabeefdca714b566de94e00f74e03c85939
2017-10-10 08:02:20 -07:00
Jiyong Park 82e2bf3b7f vendor_available:false hides a lib from vendors
When a lib is explicitly marked as `vendor_available: false`, then it
can't be directly depended by a vendor lib which is installed to /vendor
partition. This is to hide some VNDK libs (including llndk) from vendors
so that platform owners can have a freedom of modifying their ABI
without breaking vendors.

In addition, the list of the private libs are exported to the make world
as VNDK_PRIVATE_LIBRARIES.

Also, fixed a bug that allowed a vndk lib to link against to vendor
library (or vendor variant of a system lib) if the lib is prebuilt.

Bug: 64730695
Bug: 64994918
Test: Add `vendor_available: false` to libft2 and libcompiler_rt.
Add the libs to shared_libs property of a vendor library in soong
(i.e. libnbaio_mono). The build fails with the error message.

Change-Id: Iab575db96bb4f6739a592f3fa0a75124296bea0c
2017-10-10 19:38:06 +09:00
Dan Willemsen 846c9f8b03 Get some more debugging for ckati crashes
am: 89479facb9

Change-Id: I9a642cd7e88a0b786e43ce61484d63e87d94d079
2017-10-10 01:36:39 +00:00
Dan Willemsen 89479facb9 Get some more debugging for ckati crashes
The crash we're following is likely a stack overflow. Use an alternate
stack to actually get the backtraces.

Also write out ulimit to reference what the stack size should be.

Bug: 36182021
Test: ulimit -s 768; build/soong/build_test.bash
Change-Id: I8826e5e53f38af552c8b80a1a8a490fde55f2d4b
2017-10-10 01:31:21 +00:00
Colin Cross bff96b668d Merge changes I5400e4b0,Ia6760b01,I8a076c99
am: 2675f5648b

Change-Id: I4d98847de2c57df844778c63a63798fc7d2787d7
2017-10-10 01:18:54 +00:00
Treehugger Robot 2675f5648b Merge changes I5400e4b0,Ia6760b01,I8a076c99
* changes:
  Add test for java generated sources
  Fix doubled generated source files
  Fix mixing genrule dependencies with globs
2017-10-10 01:14:49 +00:00
Colin Cross 54190b3b13 Add test for java generated sources
Bug: 67364649
Test: TestGeneratedSources
Change-Id: I5400e4b013dc47c04b9d32787e50c5281033484d
2017-10-09 15:36:06 -07:00
Colin Cross 52b1e4cf06 Fix doubled generated source files
Generated source files were being included twice, once manually
and once by ctx.ExpandSources.  Remove the manual one.

Bug: 67364649
Test: TestGeneratedSources in later patch
Change-Id: Ia6760b01a34a96767a914bdcb911a39fa6683300
2017-10-09 15:35:57 -07:00
Colin Cross 05a39cbacc Fix mixing genrule dependencies with globs
Putting a genrule dependency after a glob in a srcs property
was causing the generated files to be treated as globbed files
and hitting an interface conversion panic.

Bug: 67364649
Test: TestGeneratedSources in later patch
Change-Id: I8a076c9998fdd07e53769922be433a793ca575a9
2017-10-09 15:35:47 -07:00
Jeff Gaston 002dfee475 Merge "have build_test.bash work when run as ./build_test.bash"
am: 4ddac411cb

Change-Id: If674f5bb378b0c2e47b010c23d8f0dc7917b4fdf
2017-10-09 18:43:52 +00:00
Jeff Gaston 4ddac411cb Merge "have build_test.bash work when run as ./build_test.bash" 2017-10-09 18:33:00 +00:00
Dan Willemsen 26b0f0fb95 Merge "multiproduct_kati: Support skipping known-broken products"
am: 29b41ed830

Change-Id: I0dc243a73e08201bfae39de33f77f42684d63aea
2017-10-07 00:47:23 +00:00
Treehugger Robot 29b41ed830 Merge "multiproduct_kati: Support skipping known-broken products" 2017-10-07 00:38:27 +00:00