This changes tries to reconcile drift between
transform-java-to-classes.jar which is used to build java for the
target with transform-host-java-to-package which is used for the
host. Several packages such as libcore are built both ways and the
drift between these rules was making it hard to make common changes to
things such as warning options.
The new compile-javac definition tries to include as much as possible
from the two previous definitions. Some conflicts it sorts out:
- hardwired -g vs PRIVATE_JAVAC_DEBUG_FLAGS
- consistent order of arguments
- moving PRIVATE_JAVAC_FLAGS to end to allow override of arguments
- xlint_unchecked is always conditional based on LOCAL_WARNINGS_ENABLE
Now what differs between the two is clear in the
transform-java-to-classes and transform-host-java-to-package
definitions. Notable differences:
- the target case supplies a bootclasspath while the host case does not.
- .class files are cleaned up after jaring in the target case,
but in the cost case they are left for the sake of the vm-tests target
which expects them to be present. That should probably be fixed in the future.
- PRIVATE_EXTRA_JAR_ARGS used to package resources into the jar only
happens for the host. Its handled by add-java-resources-to-package for the
target after dxing.
Change-Id: I2fb28f688fbb632102ca63448c2ac911db0477ae
This is needed in order to build Linux SDK binaries that can run
properly on Ubuntu 8.04 (Hardy). By default, the host toolchain
on 10.04 (Lucid) generates machine code that won't run on Hardy
due to GLibc ABI mistmatches.
Note that nothing happens if the new toolchain is not in the
prebuilt tree.
Change-Id: I45c1f68e37e15a0032f885df1c5c0f297b3d8642
The function image-size-from-data-size was using hard
coded values. The size of spare area and pages has become
configurable so we need to read from the variables.
Change-Id: I9461d34400ffc2cc5920860d8aa78750d559e397
Merge commit '5c41c17868865d1f2e9e2ff4680b528da61d16af'
* commit '5c41c17868865d1f2e9e2ff4680b528da61d16af':
Pass device characteristic information through to aapt.
is in a system header file. If so, the function can be prefixed by "rs". Otherwise,
"rs" prefix is rightly disallowed. So, no more "allow-rs-prefix" hacking.
Change-Id: I8d5982cd6a75d465ffa6f98ca96941ae761117a2
Merge commit '700b88e1451f216d137d8a356496bf51712512c6' into gingerbread-plus-aosp
* commit '700b88e1451f216d137d8a356496bf51712512c6':
Pass device characteristic information through to aapt.
A build configuration can define PRODUCT_CHARACTERISTICS, which is
a comma-separated list of device characteristics, for example
"nosdcard,grayscale". This will be passed through to aapt with
the --product flag.
Change-Id: I902c034b2f2824dbd2d33449308ee08beeb09551
Merge commit 'bf2ed191fe229b6a83684c19a57e11e7b50c8637'
* commit 'bf2ed191fe229b6a83684c19a57e11e7b50c8637':
Move odex related files to product-specific dir.
Merge commit 'a83940fa7851b35712e559be2246b56b5666b805' into gingerbread-plus-aosp
* commit 'a83940fa7851b35712e559be2246b56b5666b805':
Move odex related files to product-specific dir.
For target Java libraries, now the LOCAL_BUILT_MODULE includes both javalib.jar
and the .odex file, if dexpreopt is enabled.
These 2 files are moved to a product-specific dir in this change.
For target Java Libraries, $(intermediates) now points to the product-specific dir.
There is still a javalib.jar in the $(intermediates.COMMON) dir, which is used as dependency.
Nothing is changed for host Java libraries.
Change-Id: I2546dbb940c74537864ca002d1acb49bb731fbbc
Merge commit 'e52fddec86a808b98bcdd033704b43a83cf569ea'
* commit 'e52fddec86a808b98bcdd033704b43a83cf569ea':
framework-res is not used as regular Java library now.
Merge commit '879779a5806d6e09d1c852a93dd4e1793bbd96cd' into gingerbread-plus-aosp
* commit '879779a5806d6e09d1c852a93dd4e1793bbd96cd':
framework-res is not used as regular Java library now.
Merge commit 'd56d69b621bf41b478d59b6f987b6f796a9d8652' into gingerbread-plus-aosp
* commit 'd56d69b621bf41b478d59b6f987b6f796a9d8652':
Fix dependency when switching between build variants with and without Proguard.
With this change, in a user build the dependency looks like:
package.apk -> progaurd.classes.dex -> ... -> proguard.classes.jar
While in an eng build:
package.apk -> noproguard.classes.dex -> ... -> noproguard.classes.jar
Because package.apk is product-specific and removed when switching between
user and eng builds, it can always be built with the correct and up-to-date .dex file.
Bug: 3022484
Change-Id: I3a732cb3e256f193088c294dc4a0573188283cb2
Merge commit 'a90f9d2c299d7833b37f8a0e244a2893054d9ea5' into gingerbread-plus-aosp
* commit 'a90f9d2c299d7833b37f8a0e244a2893054d9ea5':
Warn when new modules are found that use user tags - DO NOT MERGE
It turns out we should also LOCAL_INSTRUMENTATION_FOR.
To disambiguate LOCAL_INSTRUMENTATION_FOR_PACKAGE_NAME is renamed to LOCAL_MANIFEST_INSTRUMENTATION_FOR.
Bug: 2902591
Change-Id: I6cb893c135736fc4170aa2259105b4c5eea798a1
Enabled compiler warnings by default and then modified javac
command to include warnings only if a project's warning flag,
LOCAL_WARNINGS_ENABLE, is set to true.
Change-Id: I5111d16a862f3afaaf1dcba2f2c2b7fc072613f1
With this change, you can add your .rs files to LOCAL_SRC_FILES.
The .rs files will be compiled by slang and the output .java files
will be compiled into the jar, while the generated .bc files will
be put into the final apk as raw resources.
Change-Id: Icde3d6139951d6d039b4b37376e72e1fc5c8b0d4
Merge commit '90cf34c72e204eb1d23f43d1fccbf2076e8ff67b'
* commit '90cf34c72e204eb1d23f43d1fccbf2076e8ff67b':
Support to build native libraries with prebuilt NDK
Merge commit 'f0f60cdd8f4f74b2480774887606afdebec8d891' into gingerbread-plus-aosp
* commit 'f0f60cdd8f4f74b2480774887606afdebec8d891':
Support to build native libraries with prebuilt NDK
Merge commit '0fd96df49ccecbf3628c95dabf3b94dfc27323e5'
* commit '0fd96df49ccecbf3628c95dabf3b94dfc27323e5':
Refactor Stripper. Allow a stripper other than SOSLIM to be specified
Merge commit '0af605f3b6e759f480a5124dc6b338ec58e1d40c' into gingerbread
* commit '0af605f3b6e759f480a5124dc6b338ec58e1d40c':
Allow to override --version-code and --version-name in LOCAL_AAPT_FLAGS
LOCAL_JNI_SHARED_LIBRARIES_ABI allows individual APKs to specify
specify the path where JNI shared libraries are stored in the APK. This
is useful if you want to build an APK that supports a generic version of
an ABI (e.g. armeabi) from a device configuration where
TARGET_CPU_ABI is set to a more specific version of an ABI (e.g.
armeabi-v7a.)
Note that specifying the LOCAL_JNI_SHARED_LIBRARIES_ABI does not
affect how the local JNI shared libraries are built. It just controls
where the local JNI shared libraries are placed within the APK.
Defaults to TARGET_CPU_ABI.
Change-Id: I1cbb293e0c953688945fc147c7fc367421cf860b
the original implementation directly embeds the filter variable into command
line; this implies that filter variable cannot contain any whitespaces,
otherwise it'll be misintepreted as a new command line argument to emma. the
side effect is that user will be forced to cram all filter related java
class/package names into one line, which could be very long. with this
change, user can use line continuation ("\") or appending ("+=") to break
up long filter specs.
Change-Id: I2c130033cdb5120251d6f84c3dd906d140d52991
commit 7401608f3b9b52b3348e32ec9fefe7583d6c2fa4
Author: Guang Zhu <guangzhu@google.com>
Date: Fri Apr 23 11:54:37 2010 -0700
collect emm meta files for emma instrumented build
when doing 'make dist', with EMMA_INSTRUMENT on the coverage.em files
generated for each module will be collected into one emma_meta.zip file
Change-Id: I382c39a97005e6cae5c79ad7eaef1c8857f658af
commit 8376d70938f6507d54b66fe5832a637aa883974e
Author: Guang Zhu <guangzhu@google.com>
Date: Wed Mar 10 15:48:03 2010 -0800
enhancement for building app with emma code coverage
* global filter to avoid applying instrumentation on emma classes
* remove local variable information at dex step instead of compile time
Change-Id: If04c27bc717f34816077a98ead9ceb0dbcbb0d2f
Change-Id: I971bd0f291bede2568b21347247d37a7d035c661
Merge commit 'f7c634216e673407f5a7a879bcf2ddb2454e4670' into kraken
* commit 'f7c634216e673407f5a7a879bcf2ddb2454e4670':
Replace arm with proper variable for CPU/ABI
Static libraries that include other static libraries were being incorrectly
built with .a files inside the top level .a file, as well as the .o files
that were extracted from the component .a files. This patch fixes the
final ar call to only add .o files to the archive.
Change-Id: Ic1ff025129e3c379fa56b4da2f09e9f16ea3c4fb
Also extending the arbitrary limit on build argument sizes,
which I ran up against in building after this change.
Change-Id: Iba79a37b27e7d5efa2b02a99aa253a2eec7ede75
* global filter to avoid applying instrumentation on emma classes
* remove local variable information at dex step instead of compile time
Change-Id: If04c27bc717f34816077a98ead9ceb0dbcbb0d2f
http://b/issue?id=2451361
With this CL, you can inherit a testing package to test a inheriting package.
Note: we change the meaning of $(5), so we need to change any existing calls
to inherit-package in other projects.
Change-Id: I673155d1b8b6006953d14e1ab87066536ebd1e54
With this change, you can specify "?" in place of a tag number in a
.logtags file and the build system will assign numbers to these tags.
(The numbers used shouldn't matter since we translate them back to tag
names whenever the logs are read back.)
This is pretty straightforward to do:
- make merge-event-log-tags.py assign numbers to any tags that specify
"?"
- make the generated java files depend on the merged output
- make java-event-log-tags.py read both the original .logtags and the
merged output, and fill in tag numbers for any "?" using the merged
version.
Change-Id: Icc6ccd705db461d570fc929922a830aa6deaca48
This change allows modules to insert different include paths before the system
include paths. STLPort uses this to find system include files that have the same
name.
The Dalvik core libraries team would like to start making warnings
errors in certain packages by definition LOCAL_JAVACFLAGS. This will
allow easier debuging of warnings in other packages by supplying
"-Xlint:..." options.
This lets you use the source code from one apk to build a new one
with a new module name, a new android package name and optionally,
a new certificate.
To use this, in a makefile, add this:
$(call inherit-package, \
packages/apps/Music/Android.mk, \
Music, \
MusicFork, \
my_cert, \
com.example.music)
You don't need the LOCAL_PATH and CLEAR_VARS stuff. It will override
only the packages that are defined in the makefile name you give, but
if other modules of other types are defined, you will get an error
saying that it's defined twice. In that case, you need to move the
duplicate library (for example a .so) out into a different makefile.
A LOCAL_OVERRIDES_PACKAGES entry is automatically created for the
forked app.
Three unrelated changes:
- change the add-radio-file makefile function to support adding files
with paths. (The path part of the pathname is stripped off.)
- add an UnmountAll function to the OTA script generation code, so
that we can explicitly unmount everything we've mounted (in addition
to doing it automatically at the end of the script).
- add the updater API version to the info object passed to
device-specific code.
Change-Id: Ia62b15403c1cc8fce8d9910f291450c8077e49f4
Nobody is using it any more, and it'd be too easy to
make a build system change that wouldn't properly handle it.
Change-Id: Ia61232ff944c34c46932c1885b2b0ec1b479566b
This allows to run droiddoc on only a specific set of subdirectories
instead of using all subdirectories.
Change-Id: I6b5daa31f6ce6801705a5c87bd05ea0e4e8c5d88
Construct the /system/etc/event-log-tags file by unioning together any
*.logtags files included in LOCAL_SRC_FILES throughout the system (with
appropriate error checking for dup tag numbers, etc.)
For java packages, generate a java source file from the logtags file for
that package that contains static integer constants for each tag name.
In particular don't put the symbol indices from included .a files into
them. I didn't change the equivalent device rule ala the "if it ain't
broke" rule of thumb.
Change-Id: I064ac356a6f48f93fca2cd08a8408ca835f8f9a4
By using 'aapt add' instead of whatever 'zip' utility happens to be
installed on the machine, we get files that are imgdiff-friendly,
which makes for smaller incremental OTAs.
(This is a cherry-pick of a change already submitted to eclair-mr2;
the change was approved for mr1.)
LOCAL_WHOLE_STATIC_LIBRARIES.
While I was in the territory, I reordered a few lines to be more
consistent with nearby code/files.
Change-Id: Ie9809f065e32ca748ae4539dd785980ff496c2d2
By using 'aapt add' instead of whatever 'zip' utility happens to be
installed on the machine, we get files that are imgdiff-friendly,
which makes for smaller incremental OTAs.
Our yaffs filesystems reserve 5 blocks, use 1 for a checkpoint, and
may use 1 or 2 more for caching. Take these all into account when
computing the max image size.
Merge commit '6929fb57a5afb90606feb8c35c8c2cda170adfe4'
* commit '6929fb57a5afb90606feb8c35c8c2cda170adfe4':
Fix issue #2048267: Run zipalign on all prebuilts
Make BoardConfig.mk store the size of the partition rather than the
maximum size of the image that can be flashed there, because the
function used to do the conversion isn't available when BoardConfig.mk
is read any more.
Change things so that when $(LOCAL_PREBUILT_STRIP_COMMENTS) is
nonempty, we copy the source file using sed to strip out all the "#
line"-style comments and blank lines, saving considerable system image
space in the case of some wifi configurations.
Bug: 2036961
This cuts the make startup time by about 30 seconds. Python is faster
than bash in this case, and also we can now supply multiple directories
to prune, and skip the .repo directory, which is, uh, big.
This is from my mac laptop:
$ time build/tools/findleaves.sh --prune="./out" . Android.mk > /dev/null
real 0m29.186s
user 0m0.550s
sys 0m5.897s
$ time build/tools/findleaves.py --prune="./out" . Android.mk > /dev/null
real 0m4.701s
user 0m0.645s
sys 0m1.294s
$ time build/tools/findleaves.py --prune="./out" --prune="./.repo" . Android.mk > /dev/null
real 0m0.176s
user 0m0.094s
sys 0m0.080s
Now, by default, instead of fully building everything,
we skip dexing the modules that aren't going to be included
in the current build.
This will slow down some of the incremental builds (like tests),
but it improves the regular eng build from 27.5 minutes on my
Mac Pro to 25 minutes. That's not as much of an improvement
as I had hoped for, but it's still better.
There is also a change in here that puts the java-source-list
file which is used to get around limited command line lengths
in the proper directory. Before this change, it was an
accident that the directory for that file existed!
The build servers have GNU coreutils 5.93, where stat does not output
a newline. Ubuntu hardy has GNU coreutils 6.10, where it does.
Lacking a newline messes up the summing of the sizes. Fix
get-file-size to remove the newline if present, and make the total
calculation in assert-max-file-size more robust.
Also, if the image was too big, it was not actually making the build
fail (because /bin/false was not the last thing called). Fix that so
it does.
There are currently two errors in the way we test the size of built
images against the size of the partition on the hardware:
- the limits in BoardConfig.mk are set with the data size only, but
images contain an extra 64 bytes per 2048-byte page. This means we
think the partition is about 1/32 smaller than it really is.
- when we deliver a build via OTA, the system partition ends up with
one more file than when it's flashed via fastboot. That file is a
copy of the recovery image. In order to be able to OTA a build, we
need to make sure the system partition has enough room for all the
system files plus the recovery image as well.
For the kila system partition, these errors are roughly the same order
of magnitude -- about 2MB, one in the "safe" direction, one in the
"unsafe" direction. This change fixes both to give us a more accurate
notion of how close we are to the limit.
Make the build emit a warning (but not fail) when the size is within
32kb of the limit.
Also, include the values of the partition size limits in an info file
in the target-files package, so post-processing tools can use them
without parsing the BoardConfig.mk file.
Non-HTC devices may have multiple files constituting their "radio
image". Generalize the INSTALLED_RADIOIMAGE_TARGET variable a bit:
initially define it as empty, then let AndroidBoard.mk files add to
it. Provide a convenience function add-radio-image for them to call
to add files. Put all those files into the target_files zip for use
in OTA and fastboot package construction.
Note that for HTC devices, this changes the name of the radio image in
the target_files zip: instead of "RADIO/image" it will be
"RADIO/radio.img". Tools that use the target_files zip will need to
be changed.
Currently, if LOCAL_WHOLE_STATIC_LIBRARIES is specified, its values is
ignored. This patch addresses this limitation and works as follows:
For every whole lib specified, it extracts the archive into a sub-directory
under the target lib's intermediate, and then seeds the initial target
archive with all the members.
Signed-off-by: Dima Zavin <dima@android.com>
This is needed to move our modified SDL sources under external/qemu/distrib.
As per joeo's request, this change also enables target Objective-C compilation, letting it error at build time.
Original change by joeo@abreu on 2009/04/06 19:54:13.
Implement SDK add-ons in the build system.
- Add an option to use the standard javadoc doclet instead
of droiddoc, since droiddocs non-sdk templates aren't
ready for prime time.
- Add the notion of a stubs for a library. It's only
implemented for java libraries, but when we do native
libraries in the NDK or sdk-addons, it will work there too.
Original author: joeo
Merged from: //branches/cupcake/...
Automated import of CL 145618