Commit Graph

15033 Commits

Author SHA1 Message Date
Colin Cross f4f2fbe220 don't use LOCAL_*_arch for host builds
The LOCAL_*_$(TARGET_ARCH) variables don't make sense for host
modules, only append use them for target modules.

Also complete the list of LOCAL_*_arch and LOCAL_*_32/64 to be
consistent.

Change-Id: I00c83e5c4e08ed9a844f9f99a79ce4bcc3f0bf11
2014-02-13 13:48:23 -08:00
Colin Cross f10efbc15e Merge "make 64-bit builds into multiarch builds" 2014-02-13 21:15:00 +00:00
Stephen Hines 6d5dd2367a Fix incorrect x86 build rules.
combo/TARGET_x86*.mk mistakenly added TARGET_GLOBAL_CFLAGS to their
linker command lines. This results in clang builds not working properly,
since they strip some unknown flags from TARGET_GLOBAL_CFLAGS.

Change-Id: I60a1ff5df70305323134435e4ae107ea7acfe8ea
2014-02-13 09:24:29 -08:00
Colin Cross 930b5fbcb9 make 64-bit builds into multiarch builds
Also enable the 64-bit binder interface and make them only use ART.

Change-Id: I05de41ce348c14722c84a658f745659bde5ba423
2014-02-12 19:49:47 -08:00
Ying Wang 5c7039fb06 Merge "Remove dead code." 2014-02-13 01:39:41 +00:00
Ying Wang dc6bb0477d Remove dead code.
Change-Id: Ia36a04037e15cbf296f375f3ece9a7e977fdca1e
2014-02-12 17:38:46 -08:00
Colin Cross 7cd7bd65fd Merge topic 'arm64'
* changes:
  HACK: add 64-bit directory blacklist
  add support for module supported or unsupported target architectures
2014-02-12 20:57:25 +00:00
Ying Wang cd958154a5 Merge "Refactor a little bit and do the validation on also default.prop." 2014-02-12 20:56:31 +00:00
Colin Cross 02e31d240a HACK: add 64-bit directory blacklist
Change-Id: I431e8b220db81d51930dc0b3d95995df120c179a
2014-02-12 12:17:55 -08:00
Colin Cross 8e4041271d add support for module supported or unsupported target architectures
Add four new variables for module makefiles:

LOCAL_MODULE_TARGET_ARCH specifies that a module is only supported for
one or more architectures.  Any architecture not in the list will be
not attempt to build the module.  The expected use case is prebuilts
that are only suitable for a single architecture, or modules like llvm
that need per-architecture support.

LOCAL_MODULE_UNSUPPORTED_TARGET_ARCH specifies that a module cannot be
built for one or more architectures.

LOCAL_MODULE_TARGET_ARCH_WARN and LOCAL_MODULE_UNSUPPORTED_TARGET_ARCH_WARN
are the same, but warn that the arch is not supported, which is useful
for modules that are critical but not yet working.

The logic for whether or not to build an architecture is fairly
complicated, so this patch consolidates it into module_arch_supported.mk

Change-Id: I120caf4a375f484e1fd6017b60c2f53882ae01e6
2014-02-12 12:17:55 -08:00
Ying Wang 351232107e Refactor a little bit and do the validation on also default.prop.
Change-Id: I76c2344d9033eadede7048689a879c9a69a05b7f
2014-02-12 10:32:47 -08:00
Ying Wang de90b0307a Merge "A build property's value is returned empty in runtime when its length exceeds 92 symbols (91 valid symbols + \0). It is better to catch that issue on earlier stage, i.e. fail the build with an appropriate message." 2014-02-12 03:56:43 +00:00
Ying Wang bec954d05e Merge "Clean up dangling module names" 2014-02-12 01:31:22 +00:00
Ying Wang d18e570fba Clean up dangling module names
Those modules have disappeared from the source tree.

https://code.google.com/p/android/issues/detail?id=61210

Change-Id: Iab369d2f591f46eb86b9fccf2087515edf974662
2014-02-11 17:28:30 -08:00
Ying Wang b12cce10fa Merge "Refine module name resolving in multilib build" 2014-02-12 01:26:10 +00:00
Yu Liu 115c66bd74 A build property's value is returned empty in runtime when its length
exceeds 92 symbols (91 valid symbols + \0). It is better to catch that
issue on earlier stage, i.e. fail the build with an appropriate message.

For developer's build, show warning message instead of failing the build
(in the latter case, as developers do not usually care about build properties
too much).

Change-Id: I03ced7b486d43a71b1921e0a9c48b43aa30727c7
2014-02-11 15:31:49 -08:00
Elliott Hughes 993ffb802e Merge "Add all-S-files-under." 2014-02-11 22:01:32 +00:00
Elliott Hughes e3b044a0cc Add all-S-files-under.
Change-Id: I25416e2acc850c61226bc7a8e0536384f6eb2dce
2014-02-11 13:48:35 -08:00
Colin Cross 90ed06ef84 Merge "fix 2nd target clang prebuilt paths" 2014-02-11 20:58:08 +00:00
Colin Cross b0ef9111ac fix 2nd target clang prebuilt paths
Change-Id: I4c196221bd377e30bbff1aafa265952e29c85cb5
2014-02-11 12:48:12 -08:00
Ying Wang ba46260f8d Merge "Runtime resource overlay, iteration 2" 2014-02-11 19:27:59 +00:00
Ying Wang 14a6cbd902 Refine module name resolving in multilib build
-- Added TARGET_PREFER_32_BIT, which sets LOCAL_32_BIT_ONLY for an
   executable, if LOCAL_NO_2ND_ARCH is not true.

Name resolving in 64-bit multilib build:
-- Name resolving in PRODUCT_PACKAGES:
   foo:32 resolves to foo_32;
   foo:64 resolves to foo;
   foo resolves to both foo and foo_32 (if foo_32 is defined).

-- Name resolving for LOCAL_REQUIRED_MODULES:
   If a module is built for 2nd arch, its required module resolves to
   32-bit variant, if it exits;
   Otherwise for executable and shared library, a required module
   resolves to the default 64-bit variant; for other module classes,
   required module foo resolves to both foo and foo_32 (if foo_32 is
   defined)

Bug: 12898862
Change-Id: I5fda1a77f58814097b10b5ad2743ee25adfaecc4
2014-02-10 22:39:14 -08:00
Octavian Purdila e2525ade32 generic_x86: toggle 64bit binder ABI
Change-Id: I60b8d98ff1f1ba5f242d256279e27d780b5dabf9
Signed-off-by: Octavian Purdila <octavian.purdila@intel.com>
2014-02-11 13:32:15 +08:00
David 'Digit' Turner 145562fcef Merge "Add missing font files to SDK system images." 2014-02-10 11:31:18 +00:00
Ben Cheng 6c5d897648 Merge "Refreshed gcc predefines __ANDROID__" 2014-02-07 21:36:46 +00:00
Ben Cheng 859c826ffc Refreshed gcc predefines __ANDROID__
Change-Id: Id76f5a7490fba8190329e5ce3c4b138976a034ce
2014-02-07 13:16:18 -08:00
Ying Wang 5cc7f8a720 Merge "Select the arch_variant_cflags for the 2nd arch." 2014-02-07 20:32:02 +00:00
Ying Wang de9955c35e Select the arch_variant_cflags for the 2nd arch.
Change-Id: Id2f9d7073a4aae3ba0fe5e5464045761f4d42b4e
2014-02-07 10:44:10 -08:00
Ying Wang 737a51dd72 Merge "Refactor llvm_config.mk and support the 2nd arch" 2014-02-07 18:03:34 +00:00
Ying Wang 1f9828387d Refactor llvm_config.mk and support the 2nd arch
1. Following the setup of gcc in build/core/combo/,
we added the [HOST|TARGET]_<arch>.mk clang config files,
and load only the configs needed by the current product.
2. Added support for the 2nd arch.

Change-Id: I2a383418a9688a050b39492f8e489d40eeeb5f2d
2014-02-07 09:11:22 -08:00
Colin Cross 5e9a20337e Merge "don't rename 32-bit packages to *_32" 2014-02-07 05:00:22 +00:00
Colin Cross 58d879f4f4 don't rename 32-bit packages to *_32
Renaming 32-bit packages to *_32 breaks PRODUCT_PACKAGES dependencies.

Change-Id: I5457c07b64885d77a6bd8fbcbba97d28393c581d
2014-02-06 15:31:02 -08:00
Elliott Hughes 8b20d5b97e Merge "Turn 64-bit-related warnings into errors on 64-bit builds." 2014-02-06 20:54:05 +00:00
Elliott Hughes efb9603aeb Merge "[MIPS64] Add mips64 target" 2014-02-06 20:14:56 +00:00
Chris Dearman 1efd9e462a [MIPS64] Add mips64 target
Change-Id: Ice1621101c0d5a3314db288542ca8020e3f406bf
Signed-off-by: Duane Sand <duane.sand@imgtec.com>
2014-02-05 19:07:57 -08:00
Christopher Ferris afbbce3ff1 Merge "Add library test makefile solutions." 2014-02-06 02:16:35 +00:00
Elliott Hughes 18042e1960 Turn 64-bit-related warnings into errors on 64-bit builds.
I don't think we can realistically turn this on for 32-bit builds any
time soon.

Also, fix the arm64 stack-protector hack.

Change-Id: Ie1e7c875bbc06fb21bb372b8ca99879a23ef53d4
2014-02-05 17:40:02 -08:00
Christopher Ferris 70ca5e5b39 Add library test makefile solutions.
Change-Id: Ibc8df9b0e2342683158936bf011425780df8f02a
2014-02-05 16:36:42 -08:00
Colin Cross 054b0274fc Merge topic 'arm64'
* changes:
  add support for more LOCAL_*_arch variables
  don't rename 32-bit executables to *_32
  remove 2nd arch from ARCH_ARM_* defines
2014-02-05 23:57:08 +00:00
Colin Cross 717de0f553 Merge "Fix installing 2nd arch shared libraries" 2014-02-05 23:55:54 +00:00
Colin Cross 90353fe86f add support for more LOCAL_*_arch variables
Add support for:
LOCAL_SHARED_LIBRARIES_arch
LOCAL_STATIC_LIBRARIES_arch
LOCAL_WHOLE_STATIC_LIBRARIES_arch
LOCAL_GENERATED_SOURCES_arch
LOCAL_REQUIRED_MODULES_arch

Change-Id: Iad91702e140d8dba7dcaee13f236c77b1e626a34
2014-02-04 19:44:57 -08:00
Colin Cross 5394bf1950 Fix installing 2nd arch shared libraries
2ND_TARGET_DEPENDENCIES_ON_SHARED_LIBRARIES was not set,
which was causing the later += to act like = instead of
:=, and the dependencies would disappear as soon as
LOCAL_MODULE was cleared.

Change-Id: Idea291524fc06377deafec62f37d20eaa7f93bca
2014-02-04 19:44:09 -08:00
Colin Cross aee1e779f4 don't rename 32-bit executables to *_32
Renaming 32-bit executables to *_32 breaks PRODUCT_PACKAGES
dependencies.

Change-Id: I53d89991633ef4af03c4e618c463769937a70e38
2014-02-04 19:44:09 -08:00
Colin Cross ec14ce578b remove 2nd arch from ARCH_ARM_* defines
Users of ARCH_ARM_* defines don't care about first vs. second arch,
set ARCH_ARM_* regardless of which arch is arm.

Change-Id: I2ae83ec5c3f839ff91a0e352c95d76ec2cbd5dc5
2014-02-04 19:44:09 -08:00
David 'Digit' Turner b0dac93412 Add missing font files to SDK system images.
This adds a few missing font families to SDK system images.
This allows, in particular, support for the Korean language.

Note that this depends on other patches under device/generic/
to fix some board and product configuration files, otherwise
this change will have no effect.

See http://b.android.com/40340

Change-Id: Idba6471de32232833f511a4da97fd652906fec51
2014-02-04 14:49:23 +01:00
Tim Murray 5352018b0b Merge "Add new rs directory to list of Java subdirs of fw/base." 2014-02-03 22:35:54 +00:00
Ying Wang a77456b8e8 Merge "Dedup the targets and dependencies of required modules." 2014-02-01 03:25:47 +00:00
Ying Wang 3136010cdd Dedup the targets and dependencies of required modules.
For whatever reason, two modules may have the same file as their
installed module. In that case circular dependency is created if the two
modules have requited-by relation.

Change-Id: I15ed271ca3f3c343e4662182ded5ccc63d6c42cc
2014-01-31 19:22:35 -08:00
Tim Murray f6752d303f Add new rs directory to list of Java subdirs of fw/base.
Change-Id: I3213a314e7700162e781526c0450678495442759
2014-01-31 12:32:42 -08:00
Mårten Kongstad 2e1ade925c Runtime resource overlay, iteration 2
Support any number of overlay packages. Support any target package.

UPDATED PACKAGE MATCHING
------------------------
In Runtime resource overlay, iteration 1, only a single overlay package
was considered. Package matching was based on file paths:
/vendor/overlay/system/framework-res.apk corresponded to
/system/framework-res.apk. Introduce a more flexible matching scheme
where any package is an overlay package if its manifest includes

    <overlay targetPackage="com.target.package"/>

For security reasons, an overlay package must fulfill certain criteria
to take effect: see below.

THE IDMAP TOOL AND IDMAP FILES
------------------------------
Idmap files are created by the 'idmap' binary; idmap files must be
present when loading packages. For the Android system, Zygote calls
'idmap' as part of the resource pre-loading. For application packages,
'idmap' is invoked via 'installd' during package installation (similar
to 'dexopt').

UPDATED FLOW
------------
The following is an outline of the start-up sequences for the Android
system and Android apps. Steps marked with '+' are introduced by this
commit.

Zygote initialization
   Initial AssetManager object created
+    idmap --scan creates idmaps for overlays targeting 'android', \
           stores list of overlays in /data/resource-cache/overlays.list
   AssetManager caches framework-res.apk
+  AssetManager caches overlay packages listed in overlays.list

Android boot
   New AssetManager's ResTable acquired
     AssetManager re-uses cached framework-res.apk
+    AssetManager re-uses cached 'android' overlays (if any)

App boot
   ActivityThread prepares AssetManager to load app.apk
+  ActivityThread prepares AssetManager to load app overlays (if any)
   New AssetManager's ResTable acquired as per Android boot

SECURITY
--------
Overlay packages are required to be pre-loaded (in /vendor/overlay).
These packages are trusted by definition. A future iteration of runtime
resource overlay may add support for downloaded overlays, which would
likely require target and overlay signatures match for the overlay to
be trusted.

LOOKUP PRIORITY
---------------
During resource lookup, packages are sequentially queried to provide a
best match, given the constraints of the current configuration. If any
package provide a better match than what has been found so far, it
replaces the previous match. The target package is always queried last.

When loading a package with more than one overlay, the order in which
the overlays are added become significant if several packages overlay
the same resource.

Had downloaded overlays been supported, the install time could have been
used to determine the load order. Regardless, for pre-installed
overlays, the install time is randomly determined by the order in which
the Package Manager locates the packages during initial boot. To support
a well-defined order, pre-installed overlay packages are expected to
define an additional 'priority' attribute in their <overlay> tags:

    <overlay targetPackage="com.target.package" priority="1234"/>

Pre-installed overlays are loaded in order of their priority attributes,
sorted in ascending order.

Assigning the same priority to several overlays targeting the same base
package leads to undefined behaviour. It is the responsibility of the
vendor to avoid this.

The following example shows the ResTable and PackageGroups after loading
an application and two overlays. The resource lookup framework will
query the packages in the order C, B, A.

        +------+------+-     -+------+------+
        | 0x01 |      |  ...  |      | 0x7f |
        +------+------+-     -+------+------+
            |                           |
        "android"                Target package A
                                        |
                       Pre-installed overlay B (priority 1)
                                        |
                       Pre-installed overlay C (priority 2)

Change-Id: If49c963149369b1957f7d2303b3dd27f669ed24e
2014-01-31 14:44:07 +01:00