Bug: 5769921
With this change, to build factory_ramdisk.img, set
PRODUCT_FACTORY_RAMDISK_MODULES in your product config.
PRODUCT_FACTORY_RAMDISK_MODULES consists of
"<module_name>:<install_path>" pairs.
<install_path> is relative to the root of the factory ramdisk output.
For example:
PRODUCT_FACTORY_RAMDISK_MODULES := \
toolbox:bin/toolbox adbd:sbin/adbd adb:bin/adb
On the other hand you can use PRODUCT_COPY_FILES to copy prebuilt files
to the factory ramdisk.
Or you can define modules that are specific for the factory ramdisk
(with LOCAL_MODULE_PATH pointing to TARGET_FACTORY_RAMDISK_OUT) and add
the module names to PRODUCT_PACKAGES.
Change-Id: I80ff72606415cd74fe6f3bc93020a05d84e45b70
Bug: 5769921
With this change, to build factory_ramdisk.img, set
PRODUCT_FACTORY_RAMDISK_MODULES in your product config.
PRODUCT_FACTORY_RAMDISK_MODULES consists of
"<module_name>:<install_path>" pairs.
<install_path> is relative to the root of the factory ramdisk output.
For example:
PRODUCT_FACTORY_RAMDISK_MODULES := \
toolbox:bin/toolbox adbd:sbin/adbd adb:bin/adb
On the other hand you can use PRODUCT_COPY_FILES to copy prebuilt files
to the factory ramdisk.
Or you can define modules that are specific for the factory ramdisk
(with LOCAL_MODULE_PATH pointing to TARGET_FACTORY_RAMDISK_OUT) and add
the module names to PRODUCT_PACKAGES.
Change-Id: I3778e3d091979261cb476628da1365f931e11f49
Bug: 5448433
Instead of deferring the removal to building the app.
In that case any R/Manifest classes in any static Java libraries will be
deleted, no matter if they are generated from Android resource, or just
source R.java/Manifest.java in the source tree by accident.
Change-Id: I656f45e3cbc3796c5d4832363231480b3f1dc5b8
Unfortunately there is R.java checked in the source tree that gets built
into static library.
So we have to find a way to delete classes from R.java generated by the
build system on the fly.
Change-Id: I2d82d28234cecbf6dd5b02b2dd4f7dbd47e3b626
Bug: 5714516
The rationale behind this change:
- the library is compiled into a jar file, but its R class is generated
making the constant not constant (static, not final static) (aapt
option --non-constant-id). Also the jar file does not contain the R
class.
- this allows the integer value to not be inlined in the compiled
class files. Note that this prevents using switch statements.
- the main project use this jar file as a normal static library: it will
add all the class files except the R.class.
- the main project uses the library res folder as a resource
folder with lower priority than the main project (basically the
main project is an overlay. This is accomplished using aapt's
--auto-add-overlay to handle resources only in the main project
(which the normal overlay mechanism doesn't allow).
- the main project creates R classes in the main project's
package but also in the library's package. This is done with
aapt's --extra-packages which accept as many packages as
needed, separated by a :.
- manifest merging is not done yet, so
activities/services/permissions/etc... have to be manually declared in
the main app.
To use a static library with Android resource in your app,
1. Add the library's resource dir to your app as an overlay:
LOCAL_RESOURCE_DIR := <app_resource_dir> <static_library_resource_dirs>
2. Set the proper aapt flags:
LOCAL_AAPT_FLAGS := <apps_own_flags> --auto-add-overlay \
--extra-packages <lib1_package_name>:<lib2_package_name>:...
Change-Id: Ifb4d2300b952ea4aaee74da1bb0c6c72ea0698a3
This is the result of a recent conversation around the x86 ABI
and its relationship with how we build platform images. Briefly:
- We want to use feature-based macros like ARCH_X86_HAVE_$FEATURE
instead of relying on explicit compiler macros like -DUSE_$FEATURE
- We want to allow for other x86-based arch variants, e.g. if
someone wants to build Android for a CPU that doesn't support
the NDK x86 ABI. However, we need to ensure these are not
tagged compatible by mistake (see check at the end of TARGET_linux-x86.mk)
- There are several flags which use is dubious now that we have
a dedicated toolchain to build all the x86 stuff. Comment them
as 'to be considered for removal'. We'll do the proper checks
later.
Change-Id: I7768d7c34d73e274cbf4c09ae831b55280d6bb58
Bug 4970300
Adds two new variables, CTS_TEST_CASES and CTS_TEST_XMLS, to be read
from CtsTestCaseList.mk. The CTS_TEST_CASES variable can be used to
copy any sort of file to the repository/testcases CTS directory.
The CTS_TEST_XMLS variable can be used to inject test package xmls
from any source rather than relying upon the monolithic and
mostly serial buildCts.py script.
The existing CTS_CORE_CASE_LIST is coded to only support APKs, so
it could not be retrofitted to support native tests. However, the
two new variables can do even more than CTS_CORE_CASE_LIST due to
their generality. In the future, the idea is move away from
CTS_CORE_CASE_LIST and also generate XMLs using separate tools
rather than just buildCts.py.
Change-Id: Ib52722861c37e0f4d511f9041928395bcaba5dea
Bug: 5692177
If you set "PRODUCT_RESTRICT_VENDOR_FILES := true" in a product
configuration, this changes restricts that:
- No overlays in the vendor tree.
- No PRODUCT_COPY_FILES coming from the vendor tree.
- Any referenced package with Android.mk in the vendor tree must have
LOCAL_MODULE_OWNER set to a value that's compared against a whitelist
stored in the core build system.
Change-Id: I172b84c7c853e9a04bf9879ea8dec90bd5054230
Bug: 5620615
Before this change it only reports the limit if the real size exceeeds
or approaches the limit.
Change-Id: Ie1737d6ba2dc2d57ad82c487990e109882526d6e
Bug: 5573756
With this change, we can set LOCAL_EXPORT_C_INCLUDE_DIRS in the module
definition to export include dir paths.
Paths in LOCAL_EXPORT_C_INCLUDE_DIRS should be relative to the top dir
of the source tree.
If a library (shared or static) exports some include paths, any module
using it will import the include paths and add them to the compiler
command line.
Change-Id: I49aabc589d2cf214044d13ccd5532ef68209adf0
Bug: 5153694
To build cache.img, set BOARD_CACHEIMAGE_FILE_SYSTEM_TYPE (required,
ext4 only for now), BOARD_CACHEIMAGE_PARTITION_SIZE (optional) in
BoardConfig.mk.
Change-Id: I1d8b91646aa1dba88285e008ad3335768bcbddd2
While building Android with latest host gcc, it causes the following
build error:
Install: out/host/linux-x86/bin/mkbootimg
host C++: obbtool <= frameworks/base/tools/obbtool/Main.cpp
<command-line>:0:0: error: "_FORTIFY_SOURCE" redefined [-Werror]
<built-in>:0:0: note: this is the location of the previous definition
cc1plus: all warnings being treated as errors
In order to make build system happy, this patch does unset macro
_FORTIFY_SOURCE and then define it in host cflags.
Change-Id: Ic37a90f05081a2c3650b3335bc87e9e895900fb2
Compile all x86 programs on Android with -fPIE and -pie. This enables
PIE (Position Independent Executables), which helps protect Android
applications from exploitation due to memory management bugs.
Note 1: PIE *static* executables are not supported at this time and
require additional linker changes.
Note 2: This change compliments 026a85b129,
which was the exact same change, except for ARM.
Testing: Rebuilt the tree completely from scratch, and verified
that the system boots and basic functionality works in the emulator.
Change-Id: I990064c37da3d857e663b27f31fee05f689a2824
Bug 5563917
This stops packaging the startcts script and the cts.jar into
the android-cts.zip. Since we are only testing using Tradefed,
we should prevent confusion by removing the old test runner.
Change-Id: I79f991617dd9e6a51a314207b4727cce3136d60f
Bug: 5398808
Before this change we have duplicate code in the Makefile and the
python-based releasetool. That's a real headache to maintain.
Change-Id: I8ddf04a79c6886540e89d990f723d8f77c9dd883
They are relative to PRODUCT_OUT so can be used in PRODUCT_COPY_FILES.
If TARGET_COPY_OUT_VENDOR instead of hardcoded system/vendor is used, we
will be able to transition smoothly to a separate vendor staging directory.
Change-Id: Ia9fdb208768cf4699180306280b4c02421b2ea9c
While building Android with latest host gcc, it causes the following
build error:
Install: out/host/linux-x86/bin/mkbootimg
host C++: obbtool <= frameworks/base/tools/obbtool/Main.cpp
<command-line>:0:0: error: "_FORTIFY_SOURCE" redefined [-Werror]
<built-in>:0:0: note: this is the location of the previous definition
cc1plus: all warnings being treated as errors
In order to make build system happy, this patch does unset macro
_FORTIFY_SOURCE and then define it in host cflags.
Change-Id: Ic37a90f05081a2c3650b3335bc87e9e895900fb2
Set "LOCAL_DEX_PREOPT := nostripping" to do dex-preopt while not strip
the classes.dex.
Bug: 5396625 5502338
Change-Id: Ie8dea4414ebeefeae89c6433b246faea27baa5e7
Compile all programs on Android with -fPIE and -pie. This enables
PIE (Position Independent Executables), which helps protect Android
applications from exploitation due to memory management bugs.
Stop using the armelf.x linker script. This script hard codes the
load address of the executable, defeating the position independence
PIE requires.
Note: PIE *static* executables are not supported at this time and
require additional linker changes.
Bug: 5323301
Change-Id: Ieafcc9c4f142495847e163881889d371a59d0878
While building Android with latest host gcc, it causes the following
build error:
Install: out/host/linux-x86/bin/mkbootimg
host C++: obbtool <= frameworks/base/tools/obbtool/Main.cpp
<command-line>:0:0: error: "_FORTIFY_SOURCE" redefined [-Werror]
<built-in>:0:0: note: this is the location of the previous definition
cc1plus: all warnings being treated as errors
In order to make build system happy, this patch does unset macro
_FORTIFY_SOURCE and then define it in host cflags.
Change-Id: Ic37a90f05081a2c3650b3335bc87e9e895900fb2
Before, if a module had several proto source files,
they would all be compiled in a single invocation
of aprotoc. If any of the files imported one of the
other files, you got an aprotoc error about duplicates.
And if you removed the files that were imported
from the list of source files, no Java code
would be generated for the imported files,
causing a Java compile time error.
This changes compiles each proto file separately, which
avoids both of the problems above. It's slightly more
inefficient, but aprotoc is really fast.
Change-Id: I7bd8092ec2953c20269367a1c68ff84acceea3be
To use the new aapt --preferred-configurations option. For use with Prime
to be able to strip everything but xhdpi density bitmaps selectively,
not stripping when this would result in no data for the resource.
Change-Id: I4e1012929b8f9b0b1e79c06496647f69661ba1f2
To package libstlport_shared.so, use the following syntax in the app
module definition:
LOCAL_NDK_STL_VARIANT := stlport_shared
LOCAL_NDK_VERSION := <num>
The rationale behind is:
The NDK prebiult libstlport_shared.so is intentionally different from
the system libstlport.so.
Essentially they are slightly different versions of the library so
shouldn't be mixed up.
libstlport.so is used by the system, but not exposed by the NDK, it is
routinely tweaked in various ways between platform releases, and there
is no guarantee that its ABI is stable, or that it will not be replaced
by something else in the future.
libstlport_shared.so is typically distributed with application packages,
and should not be part of the system.
Change-Id: I72c9911781f7d8402687e9891f3f605f3a60be22
Bug: 5430740
- Remove nonexistent names in PRODUCT_PACKAGES.
- Push down bluetooth-health, hostapd and wpa_supplicant.conf to
generic_no_telephony.mk and large_emu_hw.mk because they are not needed
by sdk builds.
- Remove core.mk from generic_armv5.mk and generic_x86.mk because they
already inherit from generic.mk.
Change-Id: Ie44b95f1cae7ed0d4cf827ffce6a91d41902434d
The fingerprint should only say dev-keys if it's actually using custom
keys; builds with the old default (from build/target/product/security)
should still say test-keys.
Change-Id: Ib8c662c348cf63f5db47e2f8f81bc3246cb15fdc
Since dev keys can now vary per device, we can't assume they are
checked in with the correct signature.
Change-Id: I7577a3a6bd98d005c15936c99b2944acc4412798
Generate an empty target even if there is no packages defined in the
source tree. Such case can happen when building in an unbundled branch.
Change-Id: Id8b94bc00557cd5ea2066859e440427474ced5f5
This allows an app to target a different SDK level for its resources
than it uses for its Java code. This is useful because it is generally
safe to use various newer symbols like attribute names, as older versions
of the platform will simply ignore them.
Change-Id: Ida19ec9f259c4ea70de846e9a63546e263b1c91e
So that prebuilt shared libraries can be referenced with the module name
in other module's Android.mk.
Change-Id: I4c4b471696642694b805b71dd7605b91724ad924
Bug: 5200343
Before this change the build system assumes that shared libraries will
be installed to $(TARGET_SHARED_LIBRARIES). That's not true if the
module uses custom LOCAL_MODULE_PATH.
With this change we defer the evaluation of the dependency to after all
Android.mks are loaded and all modules have their installed path
determined.
Change-Id: Ib6628ed44154a90e8668d31691fbbac67125be6c
Bug: 5265104
- Move installed-files.txt forward to ahead of system.img in the
dependency graph, so that even if the system.img fails to build due to
too large size we can still get the size stats.
- Change the script tools/fileslist.py to sort items in decreasing size.
Change-Id: I5913bc51971e341ffbfcf3fa449c987f126e409b
Bug 5267392
After coming across another place where I would have to use
package.apk.unaligned, I decided maybe it is best to just
disable dexpreopt as was previously suggested.
Use package.apks in the CTS Makefile task.
Change-Id: Iec839a72f4b53441337523b8a9cccda657eec8e8
Save these in the target_files so we don't have to depend on using the
contents of android_filesystem_config.h at the tip of tree.
Bug: 5266067
Change-Id: Ica5dd43a2013c9db72d7c9434f9d7de1abaf18f9
Bug 5252989
This prevents dexopt installation failures when trying to
install CTS apks on production devices.
Change-Id: I1eeb0ac567c3be3b831c8c27dee4005ec00fd7cd
This patch fixes the broken builds for PRODUCT-google_sdk-sdk_addon
and PRODUCT-google_sdk_x86-sdk_addon.
Change-Id: Iba0f23a03c143cd38aaba98b0bd0d52686330ed6
BUG=5206223
This allows us to set the RS API level independent of the other SDK
versions that a developer might choose.
Change-Id: Id8b476abcbbbdaa86e04ba0ea16414cb2fa5bd15
Since classes from this jar are part of the public API, it should be
included by default.
Also add the jar into the dex_preopt list.
Bug: 5098987
Change-Id: Ib39deffea43714eb56630ad1d65411cfde5878fd
This patch defines the DLL_EXTENSION variable to the host
shared library suffix (i.e. either ".so", ".dll" or ".dylib")
when packaging the SDK.
This is required by another patch to sdk/build/tools.atree that
will use ${DLL_EXTENSION} to copy the GLES emulation host libraries
to $SDK/tools/lib
Change-Id: I120d39e905afb453b0702d5f0eb2707f214385cc
This patch enables the build of OpenGLES emulation libraries
(both in the guest and the host) for any emulator-specific
product config.
+ update core/main.mk to ensure that the right path is parsed
when building the Windows SDK
Change-Id: Ifde047f8c0ef922504a7286c8c5b57f7c79c71f8
Aapt will discard the hidden files anyway.
With this change, we can avoid unnecessary rebuild if a module has only
hidden files in its resource dir.
Change-Id: Iaf0a13e038cca5fb60012c550cc90f7abbe967e1
$(eval) in the commands does not evaulate in the same order in emake as
in gmake. Using shell vars work in both makes.
Change-Id: I4e95adb2bc6f4600e29b9a8524275a099f47a401
To avoid race condition:
Say a module with LOCAL_NDK_VERSION built in the full source tree,
Before this change it may be linked against TARGET_GLOBAL_LD_DIRS/libc.so
that's being partially written out by the linker, because there is no dependency
between the module and TARGET_GLOBAL_LD_DIRS/libc.so.
Change-Id: If6e4921d226fee133b53e4d819a07b48f4fca016
We used to do that unconditionally but that caused lots of spurious
warnings in gcc-4.4.x about an unrecognized gcc option.
Change-Id: Idb5118b069871859e07a7efa04914ab6ed0b1372
* commit '36331f8455822539fe4fbb0a25fbc377bbc80a89': (23 commits)
sdk-addon.mk: Copy image files to ABI-specific dir
emulator: Enable dex-preoptimization
sdk: provide ABI-dependent atree files
emulator: Build emulator platform images as ARMv7-A
x86: Add proper gcc-4.4.3 x86 toolchain support.
sdk: Add pc-bios files for IA qemu emulator
x86: qemu emulator is the default build target
Add full_x86 product.
x86: sdk_x86 build target
Minor cleanup - DO NOT MERGE
Clean up full config - DO NOT MERGE
Make a full list of locales available
Truly default to the full config.
generic_x86 builds don't need/use the sparse ext4 format.
Use ext4 file system for generic_x86 userdata partition
GB Updates for init.rc and boot command line
Fix TARGET_PREBUILT_TAG so that get_build_var can retrieve the correct value across architectures
Display the TARGET_ARCH_VARIANT
Add generic_x86-eng to the lunch menu
Move buildspec vars to BoardConfig.mk
...
Backport from AOSP master
This patch allows development/sdk/ to provide ABI-specific .atree
files. This is useful to copy prebuilt CPU model-specific files
to the SDK platform image directory.
This is needed to deal with the fact that for ARMv7 platform builds,
the kernel image to use is prebuilt/android-arm/kernel-qemu-armv7 instead
of prebuilt/android-arm/kernel/qemu
Change-Id: Ib76caa54a059eca2dafc9cdba812b29f98b5e3c3
Orig-Change-Id: Icdca751852c01421fccf196436a9bc1114ea90f7
Currently, prebuilt binaries with debug symbols are installed unstripped.
There are only a few of prebuilt shared library (that I'm trying to fix),
so I can do this manually by making intermediate target and applying
TARGET_STRIP, each of them, one by one.
But dynamic_binary.mk has more features than stripping binaries
(like copying unstripped binaries to symbols directory)
and if I do it manually, they will lose all the benefits.
Note that this doesn't change anything when LOCAL_STRIP_MODULE is not set.
I actually tried to force strip every BUILD_PREBUILT'ed modules,
but there were a few problems:
- Some packages are not installed (i.e. not in PRODUCT_PACAKGES)
but are built (i.e. in ALL_MODULES). And some of them are built in spite
that they do not have appropriate prebuilt shared library for TARGET_ARCH.
Stripping them causes "unknown format".
- Some prebuilt modules set LOCAL_MODULE_CLASS incorrectly.
Example is default.supp of external/valgrind/main, which should be ETC,
not SHARED_LIBRARY.
Both are better fixed, but I concluded that it's better to be conservative.
Bug: 4585734
Change-Id: If71723b1d76007d45b02429ea5161a8265dd5b6d
This patch combines 7 AOSP patches to add proper support
to build x86 platform images using the 4.4.3 toolchain.
The Orig-Changed-Id fields below correspond to the change ids
of the original changes in the AOSP master branch history.
Define __ANDROID__ for x86 to be on par with ARM build requirements
Orig-Change-Id: I79c8f29af1f20b694f22a39f848216022809a5c6
Signed-off-by: Bruce Beare <brucex.j.beare@intel.com>
Enables x86-atom as a valid TARGET_ARCH_VARIANT for the simulator build.
Orig-Change-Id: Idbceb6c7d4117fbecd35e4261330e6405666189e
IA: enable SSE fpmath, Separate ARCH_VARIANT and ARCH makefile settings
Change-Id: I9ba661d68a3b375c21eb6b56442d8ba66a5369b3
Orig-Change-Id: I60b8121c92b39a60b513bc2496a1e0a21015c586
Signed-off-by: Bruce Beare <bruce.j.beare@intel.com>
x86: Use GCC 4.4.3
Orig-Change-Id: I083c1afcbb98cfeb48d7bcb7681e5c34db52e767
Author: H.J. Lu <hjl.tools@gmail.com>
Signed-off-by: Bruce Beare <bruce.j.beare@intel.com>
x86: the -mbionic flag is needed for IA builds.
Orig-Change-Id: I00c75f37d7ea46b9f8ad3d7b2ff7094477ff0916
Signed-off-by: Bruce Beare <bruce.j.beare@intel.com>
x86: Disable stack-protector until bionic is fixed
Orig-Change-Id: I2862de5c1b02490197704f4578a8a91d0565eef0
Signed-off-by: Bruce Beare <bruce.j.beare@intel.com>
Clean up of X86 build flags
Orig-Change-Id: Ife75c32cd49b32345712dee28fa5f2283069a90e
Signed-off-by: Mark D Horn <mark.d.horn@intel.com>
Author: Bruce Beare <bruce.j.beare@intel.com>
x86: Enable -fstack-protector
Orig-Change-Id: I1fe10159b7a29452ecfc6ba328164948cf9950d6
Signed-off-by: Bruce Beare <bruce.j.beare@intel.com>
This is used by debug tools to find symbols for the stripped binary.
Adds ~70 bytes to each DSO, ~25000 bytes total, which is about 0.01% of the
system image.
This change only affects -eng and -userdebug builds, and does not affect -user.
Change-Id: I0c92a9e09fbc97184dea66813923568cbcc2a3fe
This patch allows development/sdk/ to provide ABI-specific .atree
files. This is useful to copy prebuilt CPU model-specific files
to the SDK platform image directory.
This is needed to deal with the fact that for ARMv7 platform builds,
the kernel image to use is prebuilt/android-arm/kernel-qemu-armv7 instead
of prebuilt/android-arm/kernel/qemu
Change-Id: Icdca751852c01421fccf196436a9bc1114ea90f7
This small patch prevents GNU Make from stating RCS and SCCS
specific files on the filesystem. This makes the output of
"make -d" slightly more readable, and also reduces the no-change
time on AOSP master by a bit less than a second on average.
Change-Id: Ifa50ace32e8689717956d7247b0d6f53ef72b7a1
"lunch sdk-eng" on cygwin tries to use a gcc.exe from the
prebuild arm toolchain, but it doesn't exist. This prevents
from setting variables to point on a gcc toolchain if there
is none for the given arch.
Change-Id: I3b72220663687f9fdaacc050899aef00632f2c3c