Commit Graph

634 Commits

Author SHA1 Message Date
Dan Willemsen 67d993fc9c Merge "Sort dex and static lib resources" 2015-11-13 01:39:30 +00:00
Yohann Roussel 94f86f8877 Sort dex and static lib resources
Before adding them to the apk or javalib.jar. This allows the entries
order to be reproducible and will help to have a reproducible build.

Bug: 25629246

Change-Id: Ie596aecfdd08047ea9f9071896a2b980e7200b41
2015-11-12 14:58:19 +01:00
Dan Willemsen 5c64b4e81c Make uncompressing jni libs in prebuilt APKs reproducible
This was extracting the shared libraries into a temporary directory,
then adding them back into the zip file using the raw filesystem
ordering. Fix that by passing a sorted list to zip.

Bug: 24201956
Change-Id: I59c41151968be6faf289e04719a9992157eb405d
2015-11-11 18:26:38 -08:00
Shinichiro Hamaji 0e7587a9ea Use .KATI_RESTAT to reduce unnecessary rebuilds of binaries
When a shared object is rebuilt, all dependent libraries and
executables are rebuilt. Such rebuild is unnecessary when there
is no interface change. With this patch, .toc files will be
generated for all .so files. The rule which generates .toc files
has ninja's restat=1 and .toc files are not changed ninja won't
rebuild dependent targets.

Performance:

$ m && touch bionic/libc/stdio/stdio.c && time m
Before: 1m03s (2563 targets)
After: 21s (90 targets)

Bug: 24597504
Change-Id: Ia5dd950273d143f4e99eee8bef7478f1a94cd138
2015-11-04 15:23:59 +09:00
Dan Willemsen a25ddad7d6 Don't use ziptime with unbundled builds
Some of the trees are unable to compile native code with the normal
build rules, even though they can build kati.

Bug: 24201956
Change-Id: I2afc3468480b2c78407d62323e6b82979c8ee254
2015-11-03 16:18:41 -08:00
Dan Willemsen 48a621c277 Remove changing uids/timestamps from zip/jar files
Pass -X to zip so that Unix UID/GID and extra timestamps aren't
saved into the zip files.

Add a new tool, ziptime, that uses a very stripped down copy of
zipalign. It no longer depends on libandroidfw, and now rewrites the
timestamps in place instead of making a copy of the zipfile. This should
improve speed and reduce disk requirements, especially with the large
packaging zip files.

Bug: 24201956
Change-Id: I50f68669f659da1b4393e964ad40b6aafb00c1e7
2015-11-02 14:51:54 -08:00
Lee Campbell 04ba31236e build: Add extra build customization for /product
This makes /product more consistent with /device & /vendor

BUG: 22030305

Change-Id: Ic65bfde7fb3e9fab8c8fb8d99af15404574abde0
2015-11-02 14:18:13 -08:00
Dan Willemsen b589ae4e26 Revert "Remove changing uids/timestamps from zip/jar files"
This reverts commit 3c2c064c87.

zipalign depends on libandroidfw, and some setups don't include frameworks/base.

Bug: 24201956
Change-Id: I48ee95808924f6b2221f0a49ab205c2565096b1f
2015-10-29 21:26:18 +00:00
Dan Willemsen 3c2c064c87 Remove changing uids/timestamps from zip/jar files
Pass -X to zip so that Unix UID/GID and extra timestamps aren't
saved into the zip files.

Add a new option to zipalign, -t, to replace all timestamps with static
timestamps (2008 Jan 1 00:00:00). Use this for all non-APK zip files.
APK zip timestamps are set based on the certificate date in SignApk.

Bug: 24201956
Change-Id: Ifb619fc499ba9d99fc624f2acd5f8de36d78ef8e
2015-10-29 11:57:16 -07:00
Ying Wang 4d68879ca6 Normalize java source file paths before running "sort -u".
We rely on "sort -u" to dedupe aidl/logtags generated java files added
by both from $(all_java_sources) and from "find
$(PRIVATE_SOURCE_INTERMEDIATES_DIR) -name '*.java".
But "sort -u" doesn't work if any of the aidl/logtags source file path
has "../" in it.
This change fixes this issue by normalizing the source file paths before
passing them to "sort -u".

Change-Id: I12d2c4e0397bed9f426a1ed9b13608d72d01e0df
2015-10-23 13:19:47 -07:00
Yohann Roussel 6528ea3086 Remove LOCAL_JACK_EXTRA_ARGS
Use of DEFAULT_JACK_EXTRA_ARGS and LOCAL_JACK_FLAGS provides all needed
support.

(cherry picked from commit d2b2983cc7)

Change-Id: I1cd76836792e7332bc3750408a860400b0957485
2015-10-21 17:22:27 +02: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
Dan Willemsen 9f576acde6 Merge "Stop encoding absolute paths in symbols" 2015-10-20 20:46:21 +00:00
Christopher Wiley 2df75d17a8 Invoke the aidl-cpp compiler to generate C++
Bug: 23599697
Test: test application compiles generated code

Change-Id: I35255517dd0b7ef7a82134be1c862093eaa3ce6b
2015-10-19 16:18:03 -07:00
Dan Albert 5baea14363 Merge "Use libgcov OR libclang_rt.profile, not both." 2015-10-15 18:39:42 +00:00
Ying Wang 3a562a9942 Use @arg-lsit-file for jar in add-carried-jack-resources
Don't pass the arg list as argument in any bash command;
Instead store the arg list to the arg list file and
run "jar @arg-lsit-file".
Note we need to quote the arguments in the arg list file.

This fixed "argument list too long" build error on Mac.

Bug: 24789595
Change-Id: I718f84e540d82bb83516824894a473b2961da278
2015-10-14 17:48:21 -07:00
Dan Willemsen 6a66a887ba Stop encoding absolute paths in symbols
GCC & Clang encode the current working directory into the symbol files.
Even if the binaries are stripped before being installed, the build-id
hash will be different. This means that two different checkouts will
produce different installed binaries, even if the sources are identical.

To prevent this, set PWD=/proc/self/cwd, so that it replaces the
absolute path with the static path /proc/self/cwd. With GCC, use
-fdebug-prefix-map to remove that static path. Our clang does not yet
support this flag, but it was merged in r250094.

This does change the behavior when using gdb -- you now need to be in
$ANDROID_BUILD_TOP before gdb will load the sources.

Bug: 24204119
Change-Id: I792d65b042b7a3fdc78d567c5a6e93cdf0141b9b
2015-10-14 17:30:11 -07:00
Ying Wang ed4b0eeb43 Merge "Revert "Use @arg-lsit-file for jar in add-carried-jack-resources"" 2015-10-14 23:09:14 +00:00
Ying Wang 3bfecc8b65 Revert "Use @arg-lsit-file for jar in add-carried-jack-resources"
This reverts commit 16f93d5661.

Change-Id: I925dae6a2d07792c61fcd3b6fd8718391ab993f8
2015-10-14 23:08:53 +00:00
Ying Wang 3757268466 Merge "Use @arg-lsit-file for jar in add-carried-jack-resources" 2015-10-14 21:43:41 +00:00
Chih-Wei Huang 74ccefbee5 Let get-prebuilt-src-arch return empty if the input is empty
The list of archs of a pure java apk (no native libs) is empty.
In this case get-prebuilt-src-arch still return 'none'.
If it's set to LOCAL_MODULE_TARGET_ARCH, it makes the apk
be incompatible with the building target. It's not good.

Just return empty in this case.

Change-Id: Ide75cdb08c8480c8e7d3a0ac59f41831fbc18bd5
2015-10-14 18:56:14 +08:00
Ying Wang 16f93d5661 Use @arg-lsit-file for jar in add-carried-jack-resources
Don't pass the arg list as argument in any bash command;
Instead store the arg list to the arg list file and
run "jar @arg-lsit-file".

This fixed "argument list too long" build error on Mac.

Bug: 24789595
Change-Id: I3e5cd18fd988f12f0876b152b8bf07d07b56119e
2015-10-13 18:45:16 -07:00
Dan Willemsen 92f5fcc5b3 Add all-named-(dirs|files)-under and related
To consolidate the number of places that we're using 'find' in the tree,
add some more helpers:

  all-named-dirs-under
  all-subdir-named-dirs
  all-named-files-under
  all-subdir-named-files

This change also makes many of the current helpers use these helpers
instead of using their own implementation.

The 'dirs' helpers are using '-type d' so that they only output
directories. It's probably safe to use '-type f' for the files helpers,
but that increased the kati load time by ~20%.

Bug: 24204119
Change-Id: I3312e2fe8c146f10955e1d986ad15d9c8be494e1
2015-10-12 15:32:28 -07:00
Dan Albert 7fbbc5d205 Use libgcov OR libclang_rt.profile, not both.
Using both can cause duplicate symbol errors.

Change-Id: Id8ee13a81d32e3248ff1cdc468f49a26ecde6b57
2015-10-08 14:16:39 -07:00
Yohann Roussel f8c63cbac2 Ensure dump-words-to-file creates the target
Even if word list is empty.

Not creating the file was causing print of error messages that were
not preventing compilation to continue when compiling Java module with
no source.

Change-Id: I095b85f85ed6fcef5882afa39d4af51b78124c7c
2015-10-07 09:34:42 +02:00
Dan Willemsen 05bb4fed0d am edc3e6cd: Merge "Sort more instances of wildcard and find"
* commit 'edc3e6cd6a0d6af4df3d6f07f40de17980b66ad0':
  Sort more instances of wildcard and find
2015-09-30 23:44:10 +00:00
Dan Willemsen 24b5fcf92a am 604e532f: Merge "Add all-cpp-files-under"
* commit '604e532f842fa38982eb47708e3afb5415ba4b72':
  Add all-cpp-files-under
2015-09-30 23:44:01 +00:00
Dan Willemsen edc3e6cd6a Merge "Sort more instances of wildcard and find" 2015-09-30 22:36:30 +00:00
Dan Willemsen 7c3e3f8314 Sort more instances of wildcard and find
Many of these may not make a difference in the output images, but it's a
good idea to keep the make system as repeatable as possible.

Change-Id: I31804b8ad5805148ed08be7426a242a16f4d0df3
2015-09-30 22:25:49 +00:00
Dan Willemsen 604e532f84 Merge "Add all-cpp-files-under" 2015-09-30 22:15:50 +00:00
Dan Willemsen 379f9f9cec Add all-cpp-files-under
There are multiple versions of this in the tree. Let's standardize on
one that will work for everyone, and will sort the results.

Bug: 24204119
Change-Id: I09fcd80e1e8e35e64d8a8a62bbc096f87b02603f
2015-09-29 16:32:28 -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 98da13bbd2 resolved conflicts for 6c3bf1b8 to stage-aosp-master
Change-Id: If93ed1d9229f7fbe750f85ea4b3c3e4fce5dbb29
2015-09-28 16:41:45 -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
Colin Cross 92f8348aeb Use zip -q for adding shared libraries
Make zip quiet when adding shared libraries to apks.

Bug: 24409581
Change-Id: I540510eb6e051b5fc9d1d2a7fa5565a5b774a602
2015-09-28 16:15:09 -07:00
Colin Cross 5540a746b6 am f262f906: Merge "Remove "preparing StaticLib" messages"
* commit 'f262f906f28f1abedb32b1645b7f1ed5c0abbe45':
  Remove "preparing StaticLib" messages
2015-09-28 22:26:54 +00:00
Colin Cross aa0aca69cf Remove "preparing StaticLib" messages
The preparing StaticLib messages don't provide any useful information,
remove them to clean up build output.

Bug: 24409581
Change-Id: I81fa7c47fd0d10846a21667b6421b4777260d0e9
2015-09-28 14:51:19 -07:00
Dan Willemsen a0af56f698 am bd1b9e33: Merge "Sort all files found via "
* commit 'bd1b9e3332de46e1f08b4b5ca8f53d0a096b4793':
  Sort all files found via $(shell find)
2015-09-24 02:20:39 +00:00
Dan Willemsen 4d66adfd0e Sort all files found via $(shell find)
Don't rely on filesystem ordering to make these the same for all builds.

Change-Id: I7313062157764091acecf45f4b57405c28858546
2015-09-23 15:35:52 -07:00
Ying Wang 197e592ea5 am 3c4c3418: Merge "Don\'t add build number to apps\' version name for platform build."
* commit '3c4c34183a10fd3deac81a8fc1fed8c774f12190':
  Don't add build number to apps' version name for platform build.
2015-09-20 03:41:43 +00:00
Ying Wang d75d893da8 Don't add build number to apps' version name for platform build.
Bug: 24201956
Change-Id: I4a4bb483bb7b1bf7b7a856050d548bee4db0fe93
2015-09-19 10:56:35 -07:00
Scott James Remnant d8f08571b3 am 909fe8e0: Merge "build: support compiling .mm on host"
* commit '909fe8e0f7da8db09a004ef44a90e786c81df5e4':
  build: support compiling .mm on host
2015-09-17 23:15:30 +00:00
Scott James Remnant dd86e5a0de build: support compiling .mm on host
libchrome uses .mm (Objective-C++) files to bridge C++ code with
OS X Frameworks. This adds support for compiling .mm to .o by just
using the existing C++ support.

Bug: 24168923
Change-Id: Ia65357e2e2584dfffcb6796e214fe6b27635c3a6
2015-09-17 15:51:32 -07:00
Dan Willemsen c98d9a9d0f am f1c09d7f: Merge "Add HOST_CROSS_OS"
* commit 'f1c09d7fbd92a08cc51950a7d35fb5f7fc564a20':
  Add HOST_CROSS_OS
2015-09-09 18:19:13 +00:00
Dan Willemsen 057aaea54a Add HOST_CROSS_OS
Instead of using recursive make to change the HOST_OS when building the
windows SDK under linux, add the concept of cross-building to another
host os.

Bug: 23566667
Change-Id: I6dc525b601b6251d458d197c30bf4660d7485502
2015-09-09 18:12:29 +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 3351178fb8 Cleaned the outdated incrementaljavac.
Nobody is using this feature and now we switched to jack.

Change-Id: I749b486eb347cbf3ee7b107565fc800eeb238c44
(cherry-picked from commit 90598cb70c)
2015-08-29 11:08:02 -07:00
Christopher Wiley 3f7c5424db am 2b2c9dff: am 4e719eaf: Merge "Change .dbus.xml extension to .dbus-xml"
* commit '2b2c9dff35304c21ebe1e793a16443a882920f75':
  Change .dbus.xml extension to .dbus-xml
2015-08-21 22:24:31 +00:00