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
Merge commit '1e96ac8430da922332e4c85e7eed0e95442ff2ce'
* commit '1e96ac8430da922332e4c85e7eed0e95442ff2ce':
Make the recovery.img construction (from boot.img) logic depend on whether recovery.img was installed.
The SDK build doesn't have recovery, don't try to generate a patch or
include it in the system image size calculation. Also there's a
dependency on bsdiff that was omitted.
Instead of storing the whole recovery image in system in order to
flash it on first boot, we instead use an imgdiff patch from the boot
image to create the recovery image. This is substantially smaller
since it effectively only stores the recovery binary and UI images
(the kernel and the init binary are identical to that of the boot
image).
This change modifies the OTA-building script to create and install
these patches, and changes the calculation of the system image size in
the Makefile to reflect the new scheme.
Make some changes needed to applypatch in order to store the recovery
image in the system partition as a binary patch relative to the boot
image:
- make applypatch use shared libraries, so it's smaller. It will
need to be on the main system so it can install the recovery
image. Make an applypatch_static binary for use in recovery
packages (still needed for updating cupcake devices to donut).
- output the results of patching to an in-memory buffer and write
that to the partition; there's no convenient /tmp for us to us.
(This should be basically a no-op in recovery, since /tmp is a
ramdisk anyway.)
@since tags in the code, it's pulled from the API XML files also used by
apicheck.
The code now reads the apicheck XML, and applies it's versions to the DroidDoc
class models. The models output the version to HDF, and that's picked up by
the CS templates.
The clearsilver templates will be changed to be pretty in a follow up change.
Conflicts:
tools/droiddoc/src/DroidDoc.java
That way we don't have to wait for clearsilver to write the thousands
of html files during every build.
(This is the build change, there is also a frameworks/base change)
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!
* changes:
Since we're using gcc 4.4 in master, we can use the -Werror= option to make not having a virtual destructor in classes with virtual methods an error. I already fixed all code that had this problem, so now it's a matter of turning the option on. Also, as long as we don't have any C-specific options, it's probably best to copy the CPP flags from the C flags. We can always break them out later.
to make not having a virtual destructor in classes with virtual
methods an error. I already fixed all code that had this problem,
so now it's a matter of turning the option on.
Also, as long as we don't have any C-specific options, it's
probably best to copy the CPP flags from the C flags. We can
always break them out later.
Merge commit 'e41accf68eedfd17bc569aee8480cf8c48d82e61'
* commit 'e41accf68eedfd17bc569aee8480cf8c48d82e61':
Pass compiler flags for C++ too, and add a flag that enables warnings about missing virtual destructors
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.
When I moved the building of the recovery image upwards in the file, I
moved an 'endif' surrounding it but not the matching 'if'. How did
this ever work?
Merge commit '92c8ecbf99daf492a24408686017609763429251'
* commit '92c8ecbf99daf492a24408686017609763429251':
Add the JNI library of CertTool for handling certificates.
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.
This allows TARGET_ARCH_VARIANT to be set by the vendor before we choose the
architecture in core/combo/select.mk.
Also add a primitive armv7-a.mk for turning on hardware floating point.
When building an OTA package, TARGET_RELEASETOOLS_EXTENSIONS can be
set (in BoardConfig.mk) to specify where the device-specific
releasetools code is located. (The default location is the common
directory for the device's vendor.) The TARGET_OTA_SCRIPT_MODE can be
used to override the default script mode ("auto") for a particular
device.
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.
Merge commit 'edb6829f832bb79ba2e96ada74b3b971b73ad9a7'
* commit 'edb6829f832bb79ba2e96ada74b3b971b73ad9a7':
Put the java source file list files somewhere where they don't
* changes:
Put the java source file list files somewhere where they don't conflict with the .class files that are getting zipped up, and delete them when we're done with them.
Split the details of generating script syntax into a generator class:
one for amend (whose output should be equivalent to the current
output), and one for edify.
Fix 'otatools' build rule to build imgdiff.
The ota and img building scripts contained some hardcoded 'linux-x86'
paths. Remove and replace with a slightly redefined -p option.
Modify Makefile to pass correct -p when building.
Merge commit '1a28c1a4c1ad0c4adf0c63bb36f47394e9509360'
* commit '1a28c1a4c1ad0c4adf0c63bb36f47394e9509360':
remember in the target-files package what version of the API recovery uses
Some devices define a BOARD_KERNEL_BASE argument which must be given
as an argument to mkbootimg when building a bootable image. Store the
value of this var (if any) in the target-files zip and use it when
building images.
The SDK build used to have the update package as a dependency, in
order to force various image files to be built. Now the the update
package can't be built for sdk-eng, list the individual images needed
instead.
Merge commit 'cf348b97bdb52b7ffe7be0d17318b1fda425a211'
* commit 'cf348b97bdb52b7ffe7be0d17318b1fda425a211':
use releasetools scripts to build update and OTA packages
Merge commit '0347423753fb5d7207aa1ea93a8429f59468eb41'
* commit '0347423753fb5d7207aa1ea93a8429f59468eb41':
build 'updater' binary for use in OTA packages
Add VpnServices to PRODUCT_PACKAGES.
Merge commit '676477525bc40f7ccf196a6580480b9d44adabd8'
* commit '676477525bc40f7ccf196a6580480b9d44adabd8':
Add keystore in the pathmap of frameworks base.
Merge commit '4175bb90ae8e454416a956b3885995e59ac0454e'
* commit '4175bb90ae8e454416a956b3885995e59ac0454e':
Removing "tts" from the list of directories containing source code
Merge commit 'f1a55f8bfbaa1a68d96e229b4e73c9e9209d82cf'
* commit 'f1a55f8bfbaa1a68d96e229b4e73c9e9209d82cf':
Fix the usual build hanging issue by using -o (overwrite without prompting) option with unzip
This is currently a copy & paste of the armv5te parameters. I don't
know if there's a better way to encode this, or to what extent we will
need to specialize it vs. armv5te in a future build (e.g. to enable fp
instruction use in code gen).
Currently the only effect is to select the VFP-enabled mterp sources in
Dalvik.
Merge commit '46e9beca50057bd4ff375b35fd5958c05ce5bcb7'
* commit '46e9beca50057bd4ff375b35fd5958c05ce5bcb7':
core: Add support for static libraries to include other whole static libs.
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>
Merge commit '8b70e8c6574e6e6e80aaa84fe1a9426995fa0a78'
* commit '8b70e8c6574e6e6e80aaa84fe1a9426995fa0a78':
use minigzip instead of system gzip in the build
Use zlib's minigzip utility, built as part of our source tree, instead of
whatever installation of GNU gzip happens to be on the user's machine.
Using zlib's deflater, which is nicely available as a library (unlike
GNU gzip's deflater) will ultimately let us do binary patches to the
boot and recovery images.
Merge commit '6941562ed3b2ca8fe315ce95bf15a0e57efb4a81'
* commit '6941562ed3b2ca8fe315ce95bf15a0e57efb4a81':
Adding in the path the new android.tts package.
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.
Merge commit 'eefd0212f10ec83b21d1792130b4cad02d2ce4d5'
* commit 'eefd0212f10ec83b21d1792130b4cad02d2ce4d5':
Print the platform version and version codename in the big build header.
Merge commit '3de1fe627073608270f844714f24ed83ed4266db'
* commit '3de1fe627073608270f844714f24ed83ed4266db':
Fix makefile to be compatible with findbugs v 1.3.8
Merge commit '233728de06f3ce711c0be94d5a3427bc007674a3'
* commit '233728de06f3ce711c0be94d5a3427bc007674a3':
AI 148675: CTS: Copy only the 'startcts' script into the cts distribution
Merge commit '9e35a86b833c8bd520c9f889be3f2859a5ed7b45' into donut
* commit '9e35a86b833c8bd520c9f889be3f2859a5ed7b45':
AI 148675: CTS: Copy only the 'startcts' script into the cts distribution
Before CL 148645, 'startcts' called the 'cts' script. This is no longer the
case, so we want to exclude the 'cts' script from the distribution to avoid
confusion. The 'cts' script is only used when running cts directly on a
fully built source tree.
Automated import of CL 148675
Merge commit '9537884b0dabe81bf612c79d12c7b4bf40de10a5'
* commit '9537884b0dabe81bf612c79d12c7b4bf40de10a5':
Add new property for dev codename, update version to Donut.
Merge commit '6ea3b8856d656752c0310ca237ed99e7451be83b'
* commit '6ea3b8856d656752c0310ca237ed99e7451be83b':
core: Recovery image should have the custom kernel base as well.
Merge commit '1e0847c2fcbe1b95464f32a719d2b9e620d1e6ec'
* commit '1e0847c2fcbe1b95464f32a719d2b9e620d1e6ec':
core: Allow the board config to specify the kernel base address for mkbootimg
Merge commit '1f61dc3e19f1a18dabbc11ce6cf4a62851933ad0'
* commit '1f61dc3e19f1a18dabbc11ce6cf4a62851933ad0':
AI 148430: Adding a new CTS test runner that is basically
Merge commit '6178820340ccca2656fab0953bbe77da2e3e4bb7' into donut
* commit '6178820340ccca2656fab0953bbe77da2e3e4bb7':
AI 148430: Adding a new CTS test runner that is basically
a copy of the old one, but resides in android/cts
and is built and installed as part of the CTS.
This makes sure we always have the correct test
runner on a device, so we should see the various
improvements also on off-the-shelf Cupcake phones.
BUG=1537738
Automated import of CL 148430
Until now only generated assembly or C++ files would be compiled. This patch extends the build
system to compile generated C files as well. The new rule is modeled on the existing rules for
compiling generated C++ files and the existing rule for compiling ordinary C files.
* changes:
Change 77 from git master branch: change the prelink-linux-arm.map to include OC 2.0 new shared libs - remove redundant share lib from the map - remove 2way share lib from the map
Merge commit '7b2845ab1a47324a6fb25261048510e79656a732'
* commit '7b2845ab1a47324a6fb25261048510e79656a732':
Don't rebuild the NOTICE files when building with mm, mmm, etc.
Merge commit 'e468abda1c64923908ae711743d3e8c9f1b4a477'
* commit 'e468abda1c64923908ae711743d3e8c9f1b4a477':
AI 147775: Also add ApiDemos to make sure it gets included in the TestCase repository as
Merge commit 'ecc08d02b18f67a84df2f69e0d807761fc8dad15'
* commit 'ecc08d02b18f67a84df2f69e0d807761fc8dad15':
AI 147731: Forgot to submit the build changes for the
Merge commit '41ddfa903fe4e91e51d978d30bbbe6748ed1f100'
* commit '41ddfa903fe4e91e51d978d30bbbe6748ed1f100':
AI 147479: Update list of CTS test packages.
Merge commit 'ccd2def288d02ce5adab10bb28878fff05b70aed' into donut
* commit 'ccd2def288d02ce5adab10bb28878fff05b70aed':
AI 147847: CTS: Fix core test dependencies in CTS makefile
Merge commit 'f22b9a0ad531f66eb0b5710abae1feefecc42c2b' into donut
* commit 'f22b9a0ad531f66eb0b5710abae1feefecc42c2b':
AI 147775: Also add ApiDemos to make sure it gets included in the TestCase repository as
Merge commit 'b3e0126a7a2d32fbae2638e9419739d2d3907c40' into donut
* commit 'b3e0126a7a2d32fbae2638e9419739d2d3907c40':
AI 147731: Forgot to submit the build changes for the
Merge commit 'f23f5b486650a923e58e3e79b8ec23cc725b7b33' into donut
* commit 'f23f5b486650a923e58e3e79b8ec23cc725b7b33':
AI 147479: Update list of CTS test packages.
The core test descriptions did not list all dependencies. When building cts
for the first time, the descriptions were generated before the cts
repository was erased.
BUG=1813815
Automated import of CL 147847
apks. Each libcore module gets one apk and luni gets 4.
Original author: ursg
Merged from: //branches/cupcake/...
Original author: android-build
Automated import of CL 146827
This is only a preliminary CL. More will follow but this is
a good start, with the following caveats:
What it does:
- take an input jar, a list of includes, a list of excludes.
- generate actual Java source for the filtered classes.
What it doesn't do yet:
- some more work on filtering inner elements (methods, etc.)
- properly generate inner classes.
- hide synthetic fields.
- some classes body are missing
- directly generate a stubbed bytecode/jar rather than source.
I'll likely want to keep the source generator for debugging
purposes or if we want to integrate with a build system instead.
- classpath will be changed in the final CL to refer to the external
ASM lib rather than the project. I need the source for debugging
rigth now.
- will review comments before submitting.
Original author: raphael
Merged from: //branches/cupcake/...
Original author: android-build
Automated import of CL 146498
This is only a preliminary CL. More will follow but this is
a good start, with the following caveats:
What it does:
- take an input jar, a list of includes, a list of excludes.
- generate actual Java source for the filtered classes.
What it doesn't do yet:
- some more work on filtering inner elements (methods, etc.)
- properly generate inner classes.
- hide synthetic fields.
- some classes body are missing
- directly generate a stubbed bytecode/jar rather than source.
I'll likely want to keep the source generator for debugging
purposes or if we want to integrate with a build system instead.
- classpath will be changed in the final CL to refer to the external
ASM lib rather than the project. I need the source for debugging
rigth now.
- will review comments before submitting.
Original author: raphael
Merged from: //branches/cupcake/...
Automated import of CL 145983
- rename the directory and zip file
- make it build to the dist directory
Original author: joeo
Merged from: //branches/cupcake/...
Original author: android-build
Automated import of CL 146003
This is only a preliminary CL. More will follow but this is
a good start, with the following caveats:
What it does:
- take an input jar, a list of includes, a list of excludes.
- generate actual Java source for the filtered classes.
What it doesn't do yet:
- some more work on filtering inner elements (methods, etc.)
- properly generate inner classes.
- hide synthetic fields.
- some classes body are missing
- directly generate a stubbed bytecode/jar rather than source.
I'll likely want to keep the source generator for debugging
purposes or if we want to integrate with a build system instead.
- classpath will be changed in the final CL to refer to the external
ASM lib rather than the project. I need the source for debugging
rigth now.
- will review comments before submitting.
BUG=1778786
Automated import of CL 145911
Use a different name for prebuilt libraries based on their LOCAL_MODULE --
they were all colliding using the same name, javalib.jar. These names
are synthetic, since the libraries don't actually exist on the device
as such.
- rename the directory and zip file
- make it build to the dist directory
Original author: joeo
Merged from: //branches/cupcake/...
Automated import of CL 145850
because the commandline is too long
Original author: joeo
Merged from: //branches/cupcake/...
Original author: android-build
Automated import of CL 145659
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/...
Original author: android-build
Automated import of CL 145655
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
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.
Automated import of CL 145333
* changes:
Ensure that /system/etc/vold.conf is created in the "generic" product. This is necessary to let the emulator mount SD Card images properly through the "vold" mounting daemon
them from an external file in the recovery image. Use the
test-keys for all builds.
Original author: dougz
Merged from: //branches/donutburger/...
Automated import of CL 144132
Fixes http://b.android.com/2308
This is not meant to be a permanent fix, but since everyone except
a handful of people need this, it's easier to set it for everyone
and have that handful of people unset is locally than to force
everyone to make a local tweak.
Fixes http://b.android.com/2308
This is not meant to be a permanent fix, but since everyone except
a handful of people need this, it's easier to set it for everyone
and have that handful of people unset is locally than to force
everyone to make a local tweak.
armv4 was only implemented on StrongArm and Arm8 (See http://en.wikipedia.org/wiki/ARM_architecture)
and will be more difficult to support since it does not support the bx instruction.
armv4t on the other hand is used in a wide range of cpu:s.
armv4 is also not supported by bionic or dalvik, but armv4t is.
Thumb-mode is not yet enabled since there are some unresolved abi-issues.
architecture versions other than ARMv5TE.
The general approach is to provide TARGET_ARCH_VERSION, to complement
TARGET_ARCH. This defaults to the current armv5te. The variable
values should match the architectures as defined by gcc.
There is a block of defines for each supported architecture version
(currently ARMv5TE and ARMv4). Each block defines a set of features
using ARCH_ARM_HAVE_<x> variables. It also specifies a set of c
preprocessor defines to pass to the compiler. Finally it defines a
default CPU. (As for architecture versions, the default CPU should
match a CPU that gcc knows about.)
Support is added for architectures that do not support THUMB. Specifically
we change the 'thumb compile' target to simply compile as ARM code
instead, and we change the interworking flag passed to the compiler.
Finally, we ensure that the system/core/include/arch/linux-arm directory
is added to the default include path, which allows the use of asm/macros.h
header file described in review #1626. The way in which this done is
considerably unclean/hacky, if someone can suggest a better way please
let me know.
Note the hyphens in the error message are required because the output of
this scripts is used directly in a Makefile target.
Signed-off-by: Rod Whitby <rod@whitby.id.au>