Commit Graph

589 Commits

Author SHA1 Message Date
Ying Wang
dd71c85a45 Support to build with AAPT2
To build with AAPT2, set "USE_AAPT2=true".
TODO: Support split apks and generated resources from other than renderscript.

Bug: 25958912
Change-Id: I19b1a038824ce5b2a3d3ffadbce3173c845193fc
2016-01-25 22:41:43 -08:00
Yohann Roussel
4ef01c412a resolve merge conflicts of 42c42b6971 to master.
Change-Id: I40e2d2f7cd3e047bc3bc661f20c7415ce751b321
2015-12-22 15:36:32 +01:00
Yohann Roussel
4a01711267 Merge "Always start jack server before first call to jack" 2015-12-22 13:59:49 +00:00
Shinichiro Hamaji
7034d9beae Merge "Reduce unnecessary rebuilds of .dex files with restat=1" am: 542aa57f1d
am: 0d4a0a9dd5

* commit '0d4a0a9dd5c1f3528b611862cb9fa81313028d1b':
  Reduce unnecessary rebuilds of .dex files with restat=1
2015-12-15 08:17:56 -08:00
Shinichiro Hamaji
f972a4a980 Reduce unnecessary rebuilds of .dex files with restat=1
The .dex.toc files are created by dexdump, which outputs all
information in a .dex file which may affect compilation of
other modules.

For prebuilt java libraries and static java libraries, we'll
output empty .toc files and don't set restat=1. .dex.toc files
are necessary even for static java libraries because they can
be referenced by LOCAL_JAVA_LIBRARIES (instead of
LOCAL_STATIC_JAVA_LIBRARIES).

We don't use this optimization for apps build. We cannot build
dexdump for apps build due to lack of libc++.

Performance:

$ m && touch \
  frameworks/base/core/java/com/google/android/util/Procedure.java \
  && time m
Before: 3m48s
After: 1m46s

Bug: 24597504
Change-Id: Id1665923b414dee705dc60af4c021390a19ea26f
2015-12-14 19:07:34 +09:00
Yohann Roussel
9214a26cfc Always start jack server before first call to jack
Also install and update the server if necessary.

The target start-jack-server produces no file so it's always built.
Since the dependency is "order only", it doesn't cause force rebuilt of
jack targets after start-jack-server execution.

Bug: 25443108

Change-Id: I1608d87d186694d47307e00337b1905f0b8079c4
2015-12-09 22:00:50 +01:00
Colin Cross
f344fe0850 Merge changes I1de10391,I4399ca26,Iec3b2b0b am: bff3c9b4c1 am: bae8872294
am: dbeab8de65

* commit 'dbeab8de6543db1d0393789cb18ee7fd7ed8fedd':
  Use libstdc++ for ijar
  Build ijar for apps build
  Use .KATI_RESTAT to reduce unnecessary rebuilds of .jar files
2015-12-01 00:07:45 +00:00
Shinichiro Hamaji
89b255ab71 Use .KATI_RESTAT to reduce unnecessary rebuilds of .jar files
The same optimization was done for binaries in

https://android-review.googlesource.com/#/c/175250/

To create a TOC file from .jar files, this change introduces
ijar, which is designed for this purpose. Only #include lines
were modified from the original version.

https://github.com/bazelbuild/bazel/tree/master/third_party/ijar

Performance:

$ m && touch
frameworks/base/core/java/com/google/android/util/Procedure.java && time
m
Before: 4m30s (1580 targets)
After: 3m57s (772 targets)

Unfortunately, the improvement is small yet, but local
experiments showed we can cut ~2 more minutes if the similar
optimization is done for .dex files.

(cherry picked from commit c1f5d9c203)

Bug: 24597504
Change-Id: Iec3b2b0b0e674bee5d80cce3c300dc8fad6e7c13
2015-11-30 11:16:23 -08:00
Shinichiro Hamaji
d973ed9f47 Merge "Revert "Use .KATI_RESTAT to reduce unnecessary rebuilds of .jar files"" am: 2ff3ad9045 am: 51ef51c4ad
am: 371b8c7f77

* commit '371b8c7f770f8215e6bda1433e5f236c106b4e64':
  Revert "Use .KATI_RESTAT to reduce unnecessary rebuilds of .jar files"
2015-11-27 04:07:51 +00:00
Shinichiro Hamaji
3ae7f66bab Revert "Use .KATI_RESTAT to reduce unnecessary rebuilds of .jar files"
This reverts commit c1f5d9c203.

Change-Id: I7e9969a060e3f1380154da65e76134168aee15d8
2015-11-27 03:58:51 +00:00
Shinichiro Hamaji
534bd29363 Merge "Use .KATI_RESTAT to reduce unnecessary rebuilds of .jar files" am: c9a1b27845 am: 27770abe27
am: b42da32564

* commit 'b42da32564886ab7d3d5a2518b6868cd8fab9c78':
  Use .KATI_RESTAT to reduce unnecessary rebuilds of .jar files
2015-11-26 05:37:01 +00:00
Michael Wright
0fb087fc73 Add new Test API for CTS testing.
Bug: 25608286
Change-Id: I0334061b548970959e46392dc3a1feed8533548c
2015-11-25 11:38:44 +00:00
Shinichiro Hamaji
c1f5d9c203 Use .KATI_RESTAT to reduce unnecessary rebuilds of .jar files
The same optimization was done for binaries in

https://android-review.googlesource.com/#/c/175250/

To create a TOC file from .jar files, this change introduces
ijar, which is designed for this purpose. Only #include lines
were modified from the original version.

https://github.com/bazelbuild/bazel/tree/master/third_party/ijar

Performance:

$ m && touch
frameworks/base/core/java/com/google/android/util/Procedure.java && time
m
Before: 4m30s (1580 targets)
After: 3m57s (772 targets)

Unfortunately, the improvement is small yet, but local
experiments showed we can cut ~2 more minutes if the similar
optimization is done for .dex files.

Bug: 24597504
Change-Id: Id54953aea25e497c8ebbe783b03f13b488577c6a
2015-11-19 17:10:35 +09:00
Ying Wang
702e01e258 Add LOCAL_FINDBUGS_FLAGS to support custom findbugs flags.
Use LOCAL_FINDBUGS_FLAGS to specify findbugs command line flags.
To use findbugs filters:
LOCAL_FINDBUGS_FLAGS := -exclude $(LOCAL_PATH)/exclude.xml -include \
                        $(LOCAL_PATH)/include.xml

where exclude.xml and include.xml are filter files.
The build system automatically adds the filter files as dependency of
findbugs' output xml.

Bug: 24948760
Change-Id: I82502c0ade910c5255001fa5f390316137ce0be6
2015-10-21 10:30:51 -07:00
Yohann Roussel
8998d57404 Allow control of jack used for compilation
Version of Jack used to compile a module can now be control from
a dedicated mk located in prebuilts/sdk/tools

Bug: 24564814

(cherry picked from commit b68c9a498d)

Change-Id: I7809dc966026ff94b5cb2daa7e2c63762ca4768d
2015-10-21 17:22:05 +02:00
Yohann Roussel
b2c5558435 Clean call-jack and its callers
This is possible now that we have the new Jack server.
Also fix dependency from dex/jack target to jack script
instead of jack.jar.

(cherry picked from commit 5e50b34221)

Change-Id: I8e7aa5087ba8d73cc93140ddfca8f4ab2f505175
2015-10-21 17:02:25 +02:00
Yohann Roussel
b68c9a498d Allow control of jack used for compilation
Version of Jack used to compile a module can now be control from
a dedicated mk located in prebuilts/sdk/tools

Bug: 24564814

Change-Id: Ie8120c97e0fa10953d4d015afd27aacfac80e5b6
2015-10-14 11:32:45 +02:00
Colin Cross
6dcda02e4c resolved conflicts for 5acaa9dc to master
Change-Id: Idbadd1127e9524b6ecb571cdc7338d106ca2be3f
2015-09-28 19:25:15 -07:00
Colin Cross
7ee3b85eba resolved conflicts for 953981db to stage-aosp-master
Change-Id: Ic1003a594ac5e5e91b124f249a569fb81123e973
2015-09-28 18:45:23 -07:00
Colin Cross
a4447e8c89 Don't add dependencies on Makefiles when using ninja
Ninja has an implicit dependency on the command being run, and kati will
regenerate the ninja manifest if any read makefile changes, so there is no
need to have dependencies on makefiles.
This won't catch all the cases where LOCAL_ADDITIONAL_DEPENDENCIES contains
a .mk file, because a few users of LOCAL_ADDITIONAL_DEPENDENCIES don't
include base_rules.mk, but it will fix the most common ones.

Bug: 23566977
Change-Id: I66de882421376303ab7233c8ce7274548f6b2199
2015-09-28 16:29:52 -07:00
Ying Wang
7bf30359c5 am 5a4ec4e8: am 3a3c21ca: am 094116f0: Merge "Remove the unnecessary rs_compatibility_jni_libs install rules."
* commit '5a4ec4e8c0d0f5fff856e14447b846eca94fc242':
  Remove the unnecessary rs_compatibility_jni_libs install rules.
2015-09-26 01:17:29 +00:00
Ying Wang
3a3c21cafb am 094116f0: Merge "Remove the unnecessary rs_compatibility_jni_libs install rules."
* commit '094116f0374da3dcba3ff1425f0cb42caf1c6d59':
  Remove the unnecessary rs_compatibility_jni_libs install rules.
2015-09-26 01:06:38 +00:00
Ying Wang
ac30b88dc4 Remove the unnecessary rs_compatibility_jni_libs install rules.
We only build rs_compatibility_jni_libs for unbundled build or when
FORCE_BUILD_RS_COMPAT is set. We don't need to install the
rs_compatibility_jni_libs to system.img in either case.

It's bad idea to install them to system.img, because when two modules
have .rs files with the same name, their installed files conflict.

Change-Id: I7524a301c59396db464f28b17b8f8bf1f15523ca
2015-09-25 16:14:57 -07:00
Ying Wang
90a25b95d5 am 6f2e72ec: am cbac8789: am af72e1b3: Merge "Move part of logtags stuff back to base_rules.mk."
* commit '6f2e72ec999e855c6ac215e6edced17a1d7f2e22':
  Move part of logtags stuff back to base_rules.mk.
2015-09-04 18:12:56 +00:00
Ying Wang
cbac87899b am af72e1b3: Merge "Move part of logtags stuff back to base_rules.mk."
* commit 'af72e1b3e68f449c81054bc25e655016529914e1':
  Move part of logtags stuff back to base_rules.mk.
2015-09-04 17:56:24 +00:00
Yasuhiro Matsuda
ff82e82a1e Move part of logtags stuff back to base_rules.mk.
Otherwise event tags for non-Java modules
(e.g. logcat, libsurfaceflinger) are not generated.

BUG: 23803975
Change-Id: I6fd53fe2ca39102787fc513aa8c23f906b94f253
2015-09-04 20:02:49 +09:00
Ying Wang
847b7503b6 am 08f82e9b: am 119cec9a: am 4e2f1903: Merge "Clean up Javac a little bit."
* commit '08f82e9b33185b3969e364648b22c9ead07d6c29':
  Clean up Javac a little bit.
2015-09-02 21:41:59 +00:00
Ying Wang
119cec9a4a am 4e2f1903: Merge "Clean up Javac a little bit."
* commit '4e2f190315759b4270ab414b9ff1e24a19521521':
  Clean up Javac a little bit.
2015-09-02 21:18:38 +00:00
Ying Wang
447d69678e Clean up Javac a little bit.
- Added GLOBAL_JAVAC_DEBUG_FLAGS and merge it to
  PRIVATE_JAVACFLAGS/PRIVATE_JACK_FLAGS to get rid of
  PRIVATE_JAVAC_DEBUG_FLAGS/PRIVATE_JACK_DEBUG_FLAGS.
- With Java rules out of base_rules.mk we can get rid
  of java_alternative_checked_module now.

Change-Id: I1a14716c785e3d49330a75044107662ce96a9307
2015-09-02 10:04:18 -07:00
Ying Wang
68ec6f60ec resolved conflicts for merge of 3ead0a7b to master
Change-Id: Id4a0e030a9ac9c5dad041493eafc97f91af8f7c5
2015-09-01 10:00:23 -07:00
Ying Wang
9bf627422c resolved conflicts for merge of a15ae216 to stage-aosp-master
Change-Id: I9c10cf2d10f4295d12edd490ff0f9482c1810bf8
2015-09-01 09:31:56 -07:00
Ying Wang
956dcccf76 Move Java stuff out of base_rules.mk
- Moved the target-only .aidl and .logtag rules to java.mk.
- Moved the .proto rules,  Java library dependency calculation,
  Java resource processing and Java-related
  target-specific and global variables setup to a new java_common.java,
  which is shared by both target and host Java modules.
- Minor cleanup for the moved code.

Bug: 23597357
Change-Id: Ic3eb72e26bb1a663e5739abe0a935f96b88bc352
2015-08-28 17:17:19 -07:00
Miao Wang
f0c021d9e8 am fbfa983a: am 88618b8e: am 73f967b7: am b7a3bc56: am fbf80e9d: Merge "[RenderScript] Only upgrade RS target API for compat build." into mnc-dev
* commit 'fbfa983a5923c306bb690a84f2dda12ce0eb4b64':
  [RenderScript] Only upgrade RS target API for compat build.
2015-07-29 22:04:18 +00:00
Miao Wang
13276144c2 am c2dd225a: am 473a832d: am 489d3ea7: am 1a30e036: am 302e944c: [RenderScript] Set RS_PREBUILT_LIBPATH for 64bit targets.
* commit 'c2dd225a9fdfb85a0de81389c471c074b870907f':
  [RenderScript] Set RS_PREBUILT_LIBPATH for 64bit targets.
2015-07-29 22:03:10 +00:00
Miao Wang
a11f6c2f0e [RenderScript] Only upgrade RS target API for compat build.
- Fix build

Bug: 22796994
Bug: 22693954
Change-Id: Iff91cc4691ea3e4cd8542cdf38245e2aa7724a71
2015-07-29 11:46:23 -07:00
Miao Wang
302e944c60 [RenderScript] Set RS_PREBUILT_LIBPATH for 64bit targets.
Bug: 22796994
Bug: 22693954

This change fixes the RS_PREBUILT_LIBPATH when used with 64-bit target
devices. It also fixes an issue where the target RenderScript API is
below 21 for 64-bit compilation. In those cases, we should always
upconvert it to 21 (since that is the first available 64-bit release).

Change-Id: I27e9d0bd5c01bac0b3b28e9002333264a55d628f
2015-07-28 19:30:20 -07:00
Yohann Roussel
23f78643b9 Clean call-jack and its callers
This is possible now that we have the new Jack server.
Also fix dependency from dex/jack target to jack script
instead of jack.jar.

(cherry picked from commit 5e50b34221)

Change-Id: I8e7aa5087ba8d73cc93140ddfca8f4ab2f505175
2015-07-22 15:22:22 +00:00
Ying Wang
4169f10c97 am b22469a8: am 65259743: Merge "Split [CC|CXX]_WRAPPER from [TARGET|HOST]_[CC|CXX]"
* commit 'b22469a8c50510e141a74932acc3fa17a9dd356c':
  Split [CC|CXX]_WRAPPER from [TARGET|HOST]_[CC|CXX]
2015-07-21 21:36:46 +00:00
Ying Wang
b22469a8c5 am 65259743: Merge "Split [CC|CXX]_WRAPPER from [TARGET|HOST]_[CC|CXX]"
* commit '65259743e45886a2941771716b92db91de35ea8c':
  Split [CC|CXX]_WRAPPER from [TARGET|HOST]_[CC|CXX]
2015-07-21 21:22:53 +00:00
Ying Wang
57d9060ffd Split [CC|CXX]_WRAPPER from [TARGET|HOST]_[CC|CXX]
- Don't overwrite [TARGET|HOST]_[CC|CXX] with the [CC|CXX]_WRAPPER prefix,
  so that we can disable the wrapper per module.
- Disable ccache on a module when FDO is enabled.

Bug: 22612634
Change-Id: Ibc04a4742d589955066c7eceb43a0da9a2b893bc
(cherry-pick from commit c671a7cf5c)
2015-07-21 14:07:50 -07:00
Ying Wang
c671a7cf5c Split [CC|CXX]_WRAPPER from [TARGET|HOST]_[CC|CXX]
- Don't overwrite [TARGET|HOST]_[CC|CXX] with the [CC|CXX]_WRAPPER prefix,
  so that we can disable the wrapper per module.
- Disable ccache on a module when FDO is enabled.

Bug: 22612634
Change-Id: Ibc04a4742d589955066c7eceb43a0da9a2b893bc
2015-07-20 21:26:53 -07:00
Ying Wang
742f5832b1 Raise progaurd library to platform libraries even for "current" SDK.
Without this change, if an app with "LOCAL_SDK_VERSION := current" links
against a static library that uses removed APIs, the app will fail
ProGuard processing because the removed APIs can't be found in the
current SDK. This works around the issue.

Bug: 18510449
Bug: 20667396
Change-Id: Ia6e2a81cf5ecba972d155e56238ea946f8539411
2015-06-26 19:37:28 +00:00
Yohann Roussel
b518c3ec0b [DO NOT MERGE] Add support for RMTYPEDEF with Jack
Bug: 21099584

(cherry-picked from commit 5b2c6e26db)

Change-Id: I39aa1f24780c216e978ef743098ca7ac65b2962e
2015-06-02 12:25:51 +02:00
Yohann Roussel
a9dd74c395 Merge "Add support for RMTYPEDEF with Jack" into mnc-dev 2015-06-02 09:36:27 +00:00
Yohann Roussel
5b2c6e26db Add support for RMTYPEDEF with Jack
Bug: 21099584
Change-Id: I39aa1f24780c216e978ef743098ca7ac65b2962e
2015-05-28 18:10:03 +02:00
Ying Wang
589e8c52fb Use TARGET_DEFAULT_JAVA_LIBRARIES instead of just framework.
- When raising the ProGuard sdk version for platform build, use
  TARGET_DEFAULT_JAVA_LIBRARIES instead of just framework.
- Also added SUPPORT_LIBRARY_ROOT to reference support library resource
  dir.

Bug: 20658265
Change-Id: Ib008d8e70508723db91431a062cac691367f2f6c
2015-05-19 16:03:57 -07:00
Yohann Roussel
f09e59eb52 [DO NOT MERGE] Compile using Jack.
This allows to compile dex targeted java sources using Jack and Jill.
Default is still to compile with the legacy toolchain. Default can be
switched to the new toolchain by setting environement variable:
export ANDROID_COMPILE_WITH_JACK=true
Toolchain can also be forced for one module by defining
LOCAL_JACK_ENABLED:=full # disabled, full, incremental
in the mk portion defining the module.

Jack execution environement can be controlled with:

Global variable ANDROID_JACK_VM allow to change the jvm executing Jack.
Global variable ANDROID_JACK_VM_ARGS allows to change default args given
to the jvm.
Global variable ANDROID_JACK_EXTRA_ARGS allows to define some default args
to give to Jack

LOCAL_JACK_VM_ARGS allows to override default args given to the jvm for
the module.
LOCAL_JACK_EXTRA_ARGS allows to override default args passed to Jack.

This includes cherry-picks of the following changes:
b4c49cba57
22c3fa6d73
138768c1bb
5dd3e1d312
83d5d04047
8bc90fd2d6
140274707e
0fbc9ff2a2
833b427d72
f9a27f45b4
2809666941
37822c443d
c6b44d43c3
d2a76c14bf
06744f60fc
95573d5036
b821391614
2794e7b582
801f2c44d0
c76d99dca1
f528e132d6
76a5e0bd1a
e25b3984ff Partially, only Jack related parts werekept
ec46a3b71f
abee3a9f41
77cbe10fd9
daf07db4cd
b6bfb5893a

Ie all Jack related changes untill
b6bfb5893a
except
a96cc59ab5 "Use Jack by default"

Change-Id: If9d47ef1c4fd1e6765ad2a47d816c1ad3cfab0e3
2015-05-19 18:31:05 +02:00
Ying Wang
4f5d0e60b4 Raise SDK version for ProGuard processing when app links support library.
When an app's LOCAL_SDK_VERSION is lower than the support library's
LOCAL_SDK_VERSION,  we artifically raises the "SDK version" "linked"
by ProGuard, to
- suppress ProGuard warnings of referencing symbols unknown to the
  lower SDK version.
- prevent ProGuard stripping subclass in the support library that
  extends class added in the higher SDK version.

This allows us to remove the dangerous ProGuard flag
"-dontwarn android.support.**".

Notes:
- We don't raise the app's LOCAL_SDK_VERSION, so that the app's own
  code is still unable to use the higher SDK version.
- For platform build, we can't just raise to the "current" SDK,
  because would break apps that use APIs removed from the current SDK.
  We raise it to framework.jar instead, which contains the most complete
  symbol set.

Bug: 20658265
Change-Id: I90099073457a65cb8031fbaec6b396d68ce614a7
(cherry picked from commit 8e8d1e7aba)
2015-05-05 17:35:12 +00:00
Yohann Roussel
77cbe10fd9 Use Jack launcher
Bug: 20132430
Change-Id: I6e30ad3dffbb32824a4c62e562359b084e6a8784
2015-04-15 12:29:01 +02:00
Ying Wang
11e923a0e5 am ea517854: am aacc8bb4: am 18ecae31: Merge "Convert bc depfiles to .P files."
* commit 'ea5178545bf939fb65f77cd54eba9f274512638b':
  Convert bc depfiles to .P files.
2015-04-04 01:49:47 +00:00