Commit Graph

532 Commits

Author SHA1 Message Date
Yohann Roussel 29b1afee9e Remove JILL, JACK_JAR and JILL_JAR
Also ensure that sdk.atree can find jack.jar and jill.jar from prebuilt.

Bug: 27372042

(cherry picked from commit 233584bb80)

Change-Id: Ie266104e51c09fa21ccb09c1f27ad7068472965c
2016-03-18 11:38:05 +01:00
Ying Wang 3a61eeb6cb Rebuild odex files in PDK fusion build.
To rebuild odex files of Java libraries and apps,
we store the jars/apks without stripping the classes.dex inside the
platform.zip. We also save the build variables that may affect how we
rebuild an odex in pdk_dexpreopt_config.mk in the platform.zip.
We store the files and configuration only for libraries/apps that get
installed to the system.img (or vendor.img).

In PDK fusion build, we auto-generate prebuilt module definitions for
the javalib.jar and package.dex.apk carried in the platform.zip, using
configuration stored in pdk_dexpreopt_config.mk.
With the prebult modules, we override the implicit rule that directly
copies the odex from the platform.zip.
To rebuild odex of javalib.jar, we added support for prebuilt shared Java
library to prebiult_internal.mk. An installable prebuilt Java library is
treated as shared Java library, i.e. with classes.dex in the jar instead
of a set of .class files.
For apks in the platform.zip, we install the stripped version from
platform files inside platform.zip, instead of the package.dex.apk,
using a new variable LOCAL_REPLACE_PREBUILT_APK_INSTALLED. We can't
strip package.dex.apk because we can't re-sign the stripped apk at this
point.

We generate prebuilt module only if it's not already defined in the
source tree.

Bug: 27543283
Change-Id: I9e146f8b713d6f57c397fd28d88c9ab700757ca1
2016-03-14 21:01:46 -07:00
Mohamad Ayyash 6a3185f23d Merge "Hook incremental ext4 image generation into build" into nyc-dev 2016-03-09 20:56:19 +00:00
Mohamad Ayyash f876555893 Hook incremental ext4 image generation into build
Allows passing the *.base_fs or *.map files for system and vendor in
INTERNAL_SYSTEM_BASE_FS_PATH and INTERNAL_VENDOR_BASE_FS_PATH variables
respectively.

Internal Design Doc: go/incremental-ext4
BUG: 26839493
Signed-off-by: Mohamad Ayyash <mkayyash@google.com>

Change-Id: Ie57ef6dbfa6084268b6535fe0a673a3b4aaa6e2f
Signed-off-by: Mohamad Ayyash <mkayyash@google.com>
2016-03-03 12:07:21 -08:00
Chih-Hung Hsieh 71d8cbd9b6 Use newest clang static analyzers.
* When WITH_STATIC_ANALYZER is set and non-zero, and clang compiler is used,
  call new clang ccc-analyzer or c++-analyzer.
* Otherwise, if WITH_SYNTAX_CHECK is set and non-zero,
  call compiler with -fsyntax-only.
* Replace "--sysroot=path" with "--sysroot path", to work with ccc-analyzer.
* ccc-analyzer executes the original compilation command to generate
  object files before calling clang with --analyze to do static analysis.
* When clang is called with --analyze, macro __clang_analyzer__ is defined.

BUG: 13287788

(cherry picked from commit 765c1ea6d7)

Change-Id: I6e51e51ff4ed3ce514f60d090494dcdf6e520b04
2016-02-26 18:51:26 -08:00
Dan Willemsen 7e57b8ca57 Add 64-bit windows cross-compiles
This is mostly the same as the existing 2ND_HOST / HOST_CROSS support.

The interesting thing I did here was make x86 the 'first' architecture,
and x86_64 the second. This way LOCAL_MULTILIB := first defaults to
32-bit windows modules.

  windows-x86/bin   <- defaults to 32-bit executables
  windows-x86/lib   <- 32-bit libraries, like before
  windows-x86/lib64 <- 64-bit libraries
  windows-x86/obj   <- 32-bit intermediates
  windows-x86/obj64 <- 64-bit intermediates

Then modules are registered with the names:

  host_cross_liblog    <- 32-bit, like before
  host_cross_liblog_64 <- 64-bit

Bug: 26957718

(cherry picked from commit 9ecbf83259)

Change-Id: Iab2d36e20d7002568c3534e7781e9ac8ab21a4a9
2016-02-26 18:51:26 -08:00
Colin Cross 4b7cd7f43e Merge "Move PDK selection into config.mk" am: 655dd3ea76
am: 3f238d8cda

* commit '3f238d8cda78990a90509206ccd60db7a2f0945a':
  Move PDK selection into config.mk
2016-02-02 20:40:49 +00:00
Colin Cross 655dd3ea76 Merge "Move PDK selection into config.mk" 2016-02-02 20:34:30 +00:00
Colin Cross 6b66fcf378 Move PDK selection into config.mk
config.mk needs to know TARGET_BUILD_PDK in order to select prebuilt
tools.  Move the selection of TARGET_BUILD_PDK into config.mk.

Change-Id: I1f73c92917887f27259b2db64b3779a2fe0df162
2016-02-01 18:05:07 -08:00
Colin Cross 715172fa26 Merge "Don\'t force color diagnostics outside of ninja" am: 41fed8c082
am: 01394871fd

* commit '01394871fdbc25316a87edca4a09b1075707e572':
  Don't force color diagnostics outside of ninja
2016-02-01 19:40:11 +00:00
Colin Cross 41fed8c082 Merge "Don't force color diagnostics outside of ninja" 2016-02-01 18:57:50 +00:00
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
Colin Cross 1398f9d30d Merge "Set flag when using sdk tools in place" am: 41ee5fc07a
am: 11a87113ef

* commit '11a87113ef232c4f615a4c8df74dc28da17bec1e':
  Set flag when using sdk tools in place
2016-01-22 00:16:17 +00:00
Colin Cross d3f3ab77fd Set flag when using sdk tools in place
New version of build/ execute the tools from prebuilts/sdk/tools in
place, old versions copy them to $(HOST_OUT_EXECUTABLES).  build/ and
prebuilts/sdk often use mixed versions, set a flag that
prebuilts/sdk/tools/Android.mk can use to determine when it is using an
old build/ directory.

Change-Id: Iad2f96c35203fd3b0976946d229bfa8ab4acb150
2016-01-20 16:08:49 -08:00
Michael Wright 9dca07efdc Only fail on known-bad grep configurations.
Rather than exit when any grep configuration is set, only fail on ones we know
to be bad. This lets people use benign configuration options such as
--color=auto and --directories=skip.

Bug: 21260618
Change-Id: I3641c7895df4b43e36a983ea6ad877969cd38bf5
2016-01-18 18:13:03 -08:00
Dan Willemsen 543623c2b6 Merge "Add -Werror=date-time to target builds" am: 5c3f812507
am: 9f41040b00

* commit '9f41040b000bf2ea98b70eea6f60a41385d55fe3':
  Add -Werror=date-time to target builds
2016-01-16 20:18:54 +00:00
Dan Willemsen 5c3f812507 Merge "Add -Werror=date-time to target builds" 2016-01-16 20:13:30 +00:00
Colin Cross dbd43849fb Don't force color diagnostics outside of ninja
Building with USE_NINJA=false and piping build output to a file will
result in ANSI color codes in the build output.  Only force ANSI codes
on when building with ninja, which strips the ANSI codes when writing
build output to a non-TTY.

Change-Id: Ifd2fb53799fd99c23b7ad91cdb84d943bf707db0
2016-01-13 14:05:54 -08:00
Ying Wang f0ebe165b9 Generate .c for .y and .l
- For .l/.y source files, generate .c files; for .ll/.yy source files,
  generate c++ files.
- Simplified the rules by adding the generated sources to
  my_generated_sources.
- Simplified generated header file naming by always using .h extension
  with bison's "--defines=" option.
- Removed the unnecesarry conditional inclusion to the generated
  headers. Bison already automatically generates such things.

Bug: 26492989
Change-Id: I9ab6dc149c258f7642bc36c3fa32f90ff7ee51a4
2016-01-12 21:07:27 -08:00
Ying Wang 64088f2459 Generate .c for .y and .l
- For .l/.y source files, generate .c files; for .ll/.yy source files,
  generate c++ files.
- Simplified the rules by adding the generated sources to
  my_generated_sources.
- Simplified generated header file naming by always using .h extension
  with bison's "--defines=" option.
- Removed the unnecesarry conditional inclusion to the generated
  headers. Bison already automatically generates such things.

Bug: 26492989
Change-Id: I9ab6dc149c258f7642bc36c3fa32f90ff7ee51a4
2016-01-11 17:41:56 -08:00
Dan Willemsen eff0611096 Add -Werror=date-time to target builds
The lack of a changing timestamp improves reproducibility of builds, and
helps create smaller OTAs.

Bug: 24204119
Change-Id: I68acfb53be962ffd5c488337517dadb950a13b6f
2016-01-08 16:29:50 -08:00
Shinichiro Hamaji 91bb1b61f8 Merge "Have symbol versions in .so.toc files" am: c610c42b99
am: bb1207f99c

* commit 'bb1207f99c392d0abc3739475a14e3075215ceca':
  Have symbol versions in .so.toc files
2016-01-07 05:23:34 +00:00
Shinichiro Hamaji 2b0caa3a67 Have symbol versions in .so.toc files
Use readelf --dyn-syms instead of nm, filtering out addresses
and sizes of symbols.

Bug: 26412928
Change-Id: I061ffb428076a79c7b255381ae4d4f8a8e7a4bd7
2016-01-06 15:13:25 +09:00
Dan Willemsen 84d7513417 Merge "Prevent changes to COMMON_GLOBAL_C(PP)FLAGS" am: d443abf1aa
am: c4ba49dbec

* commit 'c4ba49dbecfcba5db1976cf52447aaa927741a76':
  Prevent changes to COMMON_GLOBAL_C(PP)FLAGS
2016-01-05 05:53:50 +00:00
Dan Willemsen d443abf1aa Merge "Prevent changes to COMMON_GLOBAL_C(PP)FLAGS" 2016-01-05 05:47:43 +00:00
Piotr Jastrzebski 052a00f64e Use core-oj alongside core-libart wherever required.
With some core classes moved to separate core-oj jar
we need to use the new jar.

(cherry picked from commit 89b94c827f)

Change-Id: I025c0adc70535bf23def3ab0ce28a1bfaef72514
2015-12-24 10:10:55 +00:00
Dan Willemsen 93b8a1294c Prevent changes to COMMON_GLOBAL_C(PP)FLAGS
Reorder the definitions of the core cflags so that we can prevent device
configurations from changing the global C(PP)FLAGS.

There is no reason for devices to be configuring the global cflags -- if
something needs to change for a particular device, that flag should be
defined in the BoardConfig.mk, then used in the individual makefiles
where it is needed. The common global flags also affected host tools,
which should not change between device configurations.

Bug: 26165350
Change-Id: Icece4505ce3d2a9168087d802953378534018d47
2015-12-18 12:57:57 -08:00
Dan Willemsen c915b13a9c Merge "Define __BRILLO__ only for target modules" am: e63d3328df
am: 05177f7cb1

* commit '05177f7cb1e98b23a0c4b8899ba636ef7228e62b':
  Define __BRILLO__ only for target modules
2015-12-16 23:44:55 +00:00
Dan Willemsen 5e637bd05d Merge "Move __BRILLO__ to the core build system" am: 3931873418
am: 152755aa81

* commit '152755aa81354c7c931cb77c71ba3757a40a0cb6':
  Move __BRILLO__ to the core build system
2015-12-16 23:44:49 +00:00
Dan Willemsen de6494b9ae Define __BRILLO__ only for target modules
__ANDROID__ is only defined for target modules, do the same for
__BRILLO__.

Change-Id: Ie1417e1a5b21c051acf05b2bd3bdb3ddd31be878
2015-12-16 15:04:51 -08:00
Dan Willemsen 16e7e0f556 Move __BRILLO__ to the core build system
In preparation for locking down COMMON_GLOBAL_CFLAGS.

Bug: 26165350
Change-Id: Ifdfb7808c1e1b624ffb0f99ab443ec2c5503a81c
2015-12-16 14:28:21 -08: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
Alex Klyubin c1b31821ef Merge "Make signapk use Conscrypt." am: 7884a63731
am: dfd2199ef6

* commit 'dfd2199ef66dcc162a0165f9a34652ae2877538d':
  Make signapk use Conscrypt.
2015-12-11 10:47:26 -08:00
Alex Klyubin 9667b18f23 Make signapk use Conscrypt.
This makes the signapk tool use Conscrypt (where possible) instead of
the platform-default JCA providers and the Bouncy Castle JCA provider.
This speeds up (by 10-30%) APK and OTA update signing because
Conscrypt's crypto primitives are backed by BoringSSL.

Previously, the signapk tool consisted only of the signapk.jar.
Because Conscrypt is backed by native code, signapk now consists of
signapk.jar and crypto_openjdk_jni shared library. This requires that
users of the tool be updated to provide a suitable -Djava.library.path
argument to the Java runtime. This change updates all known users of
the tool inside the Android source tree to do so.

Bug: 26097626
Change-Id: I8411b37d7f771ed99269751a3007dff103083552
2015-12-11 08:36:42 -08:00
Colin Cross 7eae1599e2 Merge "Remove extra definition of AIDL" am: 77f411e116 am: b275dd1623
am: 934e131465

* commit '934e1314658b30aa8ca22766a3404ff6955d4ece':
  Remove extra definition of AIDL
2015-12-04 17:16:34 +00:00
Colin Cross a8b896856a Remove extra definition of AIDL
AIDL is defined in the sometimes-prebuilt tools section, remove the
extra definition that was overriding it.

Change-Id: I677bf46475fd5fd4a9258c77d91ecee806e5f205
2015-12-03 13:33:11 -08:00
Colin Cross 0559943edb Merge "Use prebuilt tools in place" am: 50e0646dbe am: 8581e58b3b
am: 64747f5101

* commit '64747f5101f3a4f2385faa493643a513bd67a557':
  Use prebuilt tools in place
2015-12-03 20:24:30 +00:00
Colin Cross d2163bac6b Merge "Provide path to mainDexClasses" am: 62e99632c6 am: 4e7bf63314
am: 7e68aa8251

* commit '7e68aa8251afde9f885b7961aff5bbbabe840031':
  Provide path to mainDexClasses
2015-12-03 01:22:29 +00:00
Colin Cross fd08247bcf Use prebuilt tools in place
Don't install the prebuilt SDK tools for TARGET_BUILD_APPS builds, just
execute them in place.  Avoids issues with duplicate rules for the
prebuilts and source modules when building with TARGET_BUILD_APPS in a
full platform tree.

Change-Id: I3cdb4f1a8208e8750310a5cc6130657613b683d1
2015-12-02 17:12:38 -08:00
Colin Cross f87e971606 Provide path to mainDexClasses
Set MAINDEXCLASSES to the path to mainDexClasses.

Change-Id: I82532e8ea8dc7349178347e080fa0c63078ca9f5
2015-12-02 16:25:49 -08: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
Piotr Jastrzebski 89b94c827f Use core-oj alongside core-libart wherever required.
With some core classes moved to separate core-oj jar
we need to use the new jar.

Change-Id: Ie069c7a93e63b1df854b3137d984b96520562609
2015-11-20 13:53:22 +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
Shinichiro Hamaji 93ee2b5869 Merge "Allow missing SONAME in .toc files" am: 457345e58c am: 7070e5dc59
am: ad397422b4

* commit 'ad397422b4da3f5faff4e2ca69d4596b97e4bd61':
  Allow missing SONAME in .toc files
2015-11-05 04:11:52 +00:00