Commit graph

4769 commits

Author SHA1 Message Date
Jeff Gaston
294356f045 Automatically reorder C/C++ link dependencies in Soong
This uses knowledge of transitive dependencies to reorder
linker command line arguments such that if module A depends
on module B, then module A is automatically listed before
module B in the linker command line.

This should mostly remove the need for Android.bp files to
list all of their static dependencies in link order

Bug: 66260943
Test: reorder the entries of static_libs in an Android.bp and see that linking still succeeds

Change-Id: I20f851ab9f2f30031254e4f30023b6140d15d6c3
2017-10-18 14:30:05 -07:00
Jeff Gaston
ab64ada4d9 Merge "Have bpfix not remove empty lists"
am: 31b59cf604

Change-Id: Ia0f45d82afd98e7b326545d9208011e063814390
2017-10-18 20:12:54 +00:00
Treehugger Robot
31b59cf604 Merge "Have bpfix not remove empty lists" 2017-10-18 20:07:42 +00:00
Jeff Gaston
f7ed978c87 Some clarifications in preparation to automatically order linker dependencies
am: af3cc2d23c

Change-Id: I56c9222746d5404ec8d349680cf833a3489617b0
2017-10-18 19:31:53 +00:00
Jeff Gaston
af3cc2d23c Some clarifications in preparation to automatically order linker dependencies
Test: Browse the code and determine whether it's easier to understand
Bug: 66260943
Change-Id: I88c24a8a31ef68f428919087d206433659265684
2017-10-18 18:06:02 +00:00
Goran Jakovljevic
d58c6031ed Merge "MIPS: Remove -U__unix and -U__unix__ from cflags"
am: 16b9ce4dff

Change-Id: I0e7509372da584131cbfd747512414c5e9af8ce3
2017-10-18 18:03:16 +00:00
Colin Cross
951f9746d6 Use soong_javac_wrapper in soong javac compiles
am: a482065454

Change-Id: If706f97c33cf5c87aa6f48bdb71bc7c082736661
2017-10-18 18:02:38 +00:00
Treehugger Robot
16b9ce4dff Merge "MIPS: Remove -U__unix and -U__unix__ from cflags" 2017-10-18 17:30:07 +00:00
Colin Cross
a482065454 Use soong_javac_wrapper in soong javac compiles
Test: m checkbuild
Change-Id: I0f9ff0a719ac550a011c2878fc51595dc3427aed
2017-10-18 17:09:54 +00:00
Goran Jakovljevic
68a321d92f MIPS: Remove -U__unix and -U__unix__ from cflags
Leave '__unix' and '__unix__' defined on mips/mips64, like arm.
This is needed to avoid a warning in external/libcxx project.

Test: successful build and boot aosp_mips-eng
Test: successful build and boot aosp_mips64-eng

Change-Id: I8f0e17bdbeffd5078c19aa7506564b8e79a9c945
2017-10-18 16:37:21 +02:00
Colin Cross
13b92ffd34 Merge "Allow jarjar_rules to be arch-specific"
am: fa86d794b0

Change-Id: I90057e51e66e74f3eb2f41d0908c0cab9ab76bd9
2017-10-18 10:43:13 +00:00
Treehugger Robot
fa86d794b0 Merge "Allow jarjar_rules to be arch-specific" 2017-10-18 09:41:11 +00:00
Colin Cross
6d122bf4ef Merge "Use indent to preformat genrule property documentation"
am: db58c63807

Change-Id: I9de7c8a9fbba698547beb6dacb6e21790bb04719
2017-10-18 07:43:25 +00:00
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