Commit graph

4756 commits

Author SHA1 Message Date
Treehugger Robot
db58c63807 Merge "Use indent to preformat genrule property documentation" 2017-10-18 07:38:37 +00:00
Colin Cross
546a5af5a5 Merge "Explicitly document that export_include_dirs implies local_include_dirs"
am: 63160240d8

Change-Id: I675642ec82fdda4eaaa6f0974085df9ade8e3cd5
2017-10-18 07:27:55 +00:00
Treehugger Robot
63160240d8 Merge "Explicitly document that export_include_dirs implies local_include_dirs" 2017-10-18 07:24:29 +00:00
Colin Cross
86e6a0fdc0 Hide "bootstrap class path not set in conjunction with -source" messages
am: ae96e5376a

Change-Id: Ieae801948a4ddf70d10ba5f1f9fd75ca3248938a
2017-10-18 07:22:52 +00:00
Colin Cross
2296f5b3c4 Use indent to preformat genrule property documentation
Test: manual inspection of soong_build.html
Change-Id: Ibb5086de5497eb096ee7f68a5fd1ccaba630aa89
2017-10-18 05:44:54 +00:00
Colin Cross
5d19560e5e Explicitly document that export_include_dirs implies local_include_dirs
Test: none
Change-Id: I601919447a5539c49350378d7422083f5a076bf7
2017-10-18 05:44:31 +00:00
Colin Cross
ae96e5376a Hide "bootstrap class path not set in conjunction with -source" messages
javac warns whenever -source is used with a version that does not
match javac, because it wants an rt.jar provided for the given
source level.  We are not using -source to prevent usage of APIs
that don't exist in the newer rt.jar, so hide the messages.

Test: javac_wrapper_test.go
Change-Id: Ic94b61767436848fc164e377dc3cc5a63726f1cf
2017-10-18 05:44:04 +00:00
Dan Willemsen
1de0a3bf50 Merge "Fix soong_ui with empty arguments"
am: 21dc570e5f

Change-Id: Id1948fecdbb935b1d3e861aec39aa090e3ba2da5
2017-10-18 05:34:14 +00:00
Treehugger Robot
21dc570e5f Merge "Fix soong_ui with empty arguments" 2017-10-18 05:30:23 +00:00
Dan Willemsen
6ac63ef003 Fix soong_ui with empty arguments
Test: build/soong/soong_ui.bash --make-mode "" nothing
Change-Id: I8bbe947078eaa00976811ce1b9b34e1a7c23f97f
2017-10-17 20:35:34 -07:00
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