Commit graph

4746 commits

Author SHA1 Message Date
Colin Cross
3fca99f70c Merge "Allow arch-specific modules to be disabled in the PDK"
am: 95e84af399

Change-Id: Id8ff0f3b81dc92cf7868d5f2ac122e06a4f075ae
2017-10-18 01:20:56 +00:00
Colin Cross
f8b54bb191 Merge "Initial kotlin support"
am: c37e1018c7

Change-Id: If90452afd9643b37e40687b73190d3e53388b134
2017-10-18 01:20:25 +00:00
Treehugger Robot
95e84af399 Merge "Allow arch-specific modules to be disabled in the PDK" 2017-10-18 01:18:52 +00:00
Treehugger Robot
c37e1018c7 Merge "Initial kotlin support" 2017-10-18 01:15:41 +00:00
Dan Willemsen
7c88120230 Merge "Add --dumpvar[s]-mode to replace config.mk uses"
am: d3ded4073d

Change-Id: I9c53992162b85628072dee5c6644f6594762db0b
2017-10-18 01:04:30 +00:00
Treehugger Robot
d3ded4073d Merge "Add --dumpvar[s]-mode to replace config.mk uses" 2017-10-18 00:54:44 +00:00
Colin Cross
975f9f79ff Allow jarjar_rules to be arch-specific
Modules may need to use jarjar on the device to move classes into
the android namespace, but not on the host.

Test: m checkbuild
Change-Id: I910ebbe20e45e98edecca0d7c4fb18e806bc3c6c
2017-10-17 16:25:26 -07:00
Colin Cross
99967a7b34 Allow arch-specific modules to be disabled in the PDK
Modules may need to be disabled in the PDK for the device but not
the host.

Test: m checkbuild
Change-Id: Ie40555d1437d9f36ceec753884dc4045132998eb
2017-10-17 16:25:26 -07:00
Colin Cross
93e8595044 Initial kotlin support
Allow java libraries to specify .kt sources, precompile them with
kotlin, and then pass them in the classpath to javac.

Bug: 65219535
Test: java_test.go
Change-Id: Ife22b6ef82ced9ec26a9e5392b2dadacbb16546f
2017-10-17 16:25:22 -07:00
Dan Willemsen
051133ba54 Add --dumpvar[s]-mode to replace config.mk uses
build/soong/soong_ui.bash --dumpvars-mode \
    --vars="..." \
    --abs-vars="..." \
    --var-prefix="..." \
    --abs-var-prefix="..."

is similar to the previous:

  CALLED_FROM_SETUP=true BUILD_SYSTEM=build/core \
  make -f build/core/config.mk dump-many-vars \
    DUMP_MANY_VARS="..." \
    DUMP_MANY_ABS_VARS="..." \
    DUMP_VAR_PREFIX="..." \
    DUMP_ABS_VAR_PREFIX="..."

and

  build/soong/soong_ui.bash --dumpvar-mode [--abs] VAR

is similar to the previous:

  CALLED_FROM_SETUP=true BUILD_SYSTEM=build/core \
  make -f build/core/config.mk dumpvar-[abs-]-VAR

But uses soong_ui and ckati, so that we use a consistent make parser and
sandboxing configurations.

One major output difference between the pure make implementation and
this one is that report_config in Go is implemented using embedded
newlines in single quotes, while the make implementation uses `` with
embedded echo commands. This seems to work fine for both bash and zsh,
and report_config isn't meant to be machine-parsed anyways.

Test: build/soong/soong_ui.bash --dumpvar-mode report_config
Test: build/soong/soong_ui.bash --dumpvar-mode TARGET_DEVICE
Test: build/soong/soong_ui.bash --dumpvar-mode --abs PRODUCT_OUT
Test: build/soong/soong_ui.bash --dumpvar-mode --abs ALL_PRODUCTS
Test: build/soong/soong_ui.bash --dumpvars-mode --vars="report_config TARGET_DEVICE" --abs-vars="ALL_PRODUCTS"
Test: build/soong/soong_ui.bash --dumpvars-mode --vars=TARGET_DEVICE --abs-vars=PRODUCT_OUT --var-prefix=v_ --abs-var-prefix=a_
Change-Id: I0fbd0732bbf6fcfcd24084cf3c830a91a4b6bfc2
2017-10-17 12:57:41 -07:00
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