Commit Graph

275 Commits

Author SHA1 Message Date
Ying Wang
6feb6d5607 Support host multilib build
This change basically ported our target multilib to the host side.
It supports 2 host build modes: x86 and x86_64 multilib build.
For now you need to set "BUILD_HOST_64bit=true" to switch to x86_64
multilib build. Later we'll default to x86_64 build and have a flag
to force 32-bit only build, which may be needed by SDK build.

In host module definition, like in target ones, you can use the
following
LOCAL variables to set up multilib configuration:
LOCAL_MULTILIB: can be "both", "first", "32" or "64".
It also supports the same set of arch or 32-vs-64 specific LOCAL
variables.
By default, it builds only for the first arch.

To keep path compatibility, in x86_64 build files are still output to
out/host/linux-x86; Both 32-bit and 64-bit executables are in
out/host/linux-86/bin;
In x86_64 build 32-bit shared libraries are installed to
out/host/linux-x86/lib32
and 64-bit shared libraries are installed to out/host/linux-x86/lib;
32-bit object files are output to out/host/linux-x86/obj32 and 64-bit
object files
are output to out/host/linux-x86/obj.

Bug: 13751317
Change-Id: I6044f83b7db369a33e05209e8c588eb6dc83409f
2014-05-14 16:55:04 -07:00
Ying Wang
b8888432f0 Set up rules to build oem.img
To build oem.img:
- You must define BOARD_OEMIMAGE_PARTITION_SIZE in your BoardConfig.mk
- The file system type will be the same as system.img and userdata.img.
- To install a module to oem.img, use "LOCAL_OEM_MODULE := true"
- run "make -j48 showcommands oem_image dist". By default it's not
  built.

Bug: 13367676
Change-Id: I1a26d4d0c61b72ecffe60279667b1b3de050780d
2014-04-28 09:43:51 -07:00
Narayan Kamath
110ea46e09 resolved conflicts for merge of 8af7e8ed to master
Change-Id: Ib427b36e133e29d1c2e9cea065e4e63c1e2e2122
2014-04-09 12:33:03 +01:00
Narayan Kamath
7303ebda84 Add 32 / 64 bit abi lists to system properties.
Introduce ro.product.cpu.abilist32 / abilist64, which are
comma separated lists of the 32 and 64 bit ABIs that the
device supports. These properties are used by the zygote and
system server to determine what ABI an app should be
started with.

This changes move abilist related make steps out of envsetup.mk
and into config.mk because they depend on variables set by
core/combo/***. Additionally, config.mk performs a few additional
cleanups of these variables (like stripping them) after the
inclusion of envsetup.mk so this seems like a better place to
put them.

bug: 13647418

Change-Id: I3db39bdd761220c5b4966f651892fb592396f9a1
2014-04-08 17:40:40 +01:00
Narayan Kamath
b4d757b1b2 am f6811abe: am 9fbd3afd: am 431b4bb3: Merge "Extend the CPU ABI specification mechanism."
* commit 'f6811abe12601c9753f329cb34da568f0072ca76':
  Extend the CPU ABI specification mechanism.
2014-03-31 12:35:14 +00:00
Narayan Kamath
1a43b375b4 Extend the CPU ABI specification mechanism.
Add a (read only) system property that is a comma
separated list of ABIs supported by the device in order
of preference. For example, typical arm-v8 device might
define:

ro.cpu.abilist = arm64-v8a,armeabi-v7a,armeabi

For most purposes, a single flattened list like the above is
probably more useful than the parallel system of variables
TARGET_CPU_ABI{2} / TARGET_2ND_ARCH_CPU_ABI{2} that we use
in the build system.

Change-Id: If9102669ad9f5f8fd89a8bcc5bf88cca1acadc3c
2014-03-28 17:10:47 +00:00
Colin Cross
40826c170c am 8c89a9ff: am 4695598d: am ae49acbd: am 1acb1b64: Merge changes I62504bad,I16208cca,I4e4ceec6
* commit '8c89a9ff9cd461e4bc077a91a0c7c32b17a92ebd':
  add new gen/ directory for generated sources
  warn on LOCAL_MODULE_PATH in multiarch shared libraries
  Support LOCAL_MODULE_RELATIVE_PATH
2014-01-27 23:48:52 +00:00
Colin Cross
d826264621 add new gen/ directory for generated sources
Allow modules to generate source into $OUT/gen, which will then
be copied into $OUT/obj and $OUT/obj_$(TARGET_2ND_ARCH) as
necessary.  This allows a single build rule invocation that includes
generated source to build for the first and second architectures.

Modules will need to change calls to local-intermediates-dir into
local-generated-sources-dir.

Change-Id: I62504bad9454b3d9fde7b84ab9f0a487a2ecf0bf
2014-01-27 14:45:44 -08:00
Colin Cross
f6c0e042fd am 088319dd: am dda94546: am 4a1f42d7: am 7c7f28e7: Merge changes Ib1d950e1,I3d020a3c,Ic9594718
* commit '088319dd22ac4bc65eb284dfeeab368ac2e90ca9':
  Add 2nd arch directories for apps
  Set up rules to build prebuilts for TARGET_2ND_ARCH
  Set up rules to build packages for TARGET_2ND_ARCH
2014-01-25 00:58:58 +00:00
Colin Cross
d9574462d8 Add 2nd arch directories for apps
Apps built for 2nd arch install in the same directories as when
built for the 1st arch.

Change-Id: Ib1d950e186eef88212b44d04e6bc6c30a3d56155
2014-01-24 16:44:06 -08:00
Ying Wang
b8e0185489 Support arch-specific LOCAL_ variables
With those variables, you can set up different values for TARGET_ARCH
and TARGET_2ND_ARCH.
Also fixed a couple of variables.

Bug: 11654773
Change-Id: I4c7684a562cd5877d18f67d4f848b8df07d0103b

Conflicts:
	core/base_rules.mk
2014-01-24 13:38:34 -08:00
Ying Wang
dd814bf8c2 Support to build executables for TARGET_2ND_ARCH
By default, an executable is built for TARGET_ARCH.
To build it for TARGET_2ND_ARCH in a 64bit product, use:
LOCAL_32BIT_ONLY := true
To skip a module for TARGET_2ND_ARCH, use:
LOCAL_NO_2ND_ARCH := true

Bug: 11654773
Change-Id: Ieb293d25b21024bfe1b554044df338e064ac7b46
2014-01-24 13:36:30 -08:00
Ying Wang
6ef6519170 Set up rules to build static libraries for TARGET_2ND_ARCH
The rules for the 2nd arch are set up in the second inclusion
of static_library_internal.mk.
libfoo of the 2nd arch will be built into
$(PRODUCT_OUT)/obj_$(TARGET_2ND_ARCH)/libfoo_intermediates/libfoo.a.

Bug: 11654773
Change-Id: I1d92733968fc442e9225b4df5bd1b551a81d89f7
2014-01-24 13:35:09 -08:00
Ying Wang
1d274d2686 Load compiler environment for a second arch.
This is the first step to build 32-bit libraries in a 64-bit product.
It will work like this:
1) In the product's BoardConfig.mk, define:
TARGET_2ND_ARCH, TARGET_2ND_ARCH_VARIANT, TARGET_2ND_CPU_VARIANT.
The build system uses those variables to set up an additional compiler
environment for the second arch.

2) When parsing Android.mks, the build system sets up rules to build a
module for both the 1st arch and the 2nd arch, unless it's explicitly
asked to skip so.
Android.mk will be adapted if there is additional rule of generating
source files.
The build system will accept arch-specific LOCAL_ variables, such as
LOCAL_CFLAGS_arm, LOCAL_CFLAGS_armv7-a-neon, LOCAL_CFLAGS_cortex-a15,
LOCAL_CFLAGS_aarch64 etc. Modules use such variables to set up build for
various archs at the same time.

3) Install binary of the 2nd arch by adding "<module_name>:32" to
PRODUCT_PACKAGES. All 2nd-arch libraries linked in by "<module_name>:32"
will be installed automatically.

Bug: 11654773
Change-Id: I2df63cd5463a07bf5358bee2a109f8fb9590fe30

Conflicts:
	core/combo/TARGET_linux-arm.mk
2014-01-24 13:34:26 -08:00
Ying Wang
e3d067926f Support arch-specific LOCAL_ variables
With those variables, you can set up different values for TARGET_ARCH
and TARGET_2ND_ARCH.
Also fixed a couple of variables.

Bug: 11654773
Change-Id: I4c7684a562cd5877d18f67d4f848b8df07d0103b
2014-01-23 15:12:51 -08:00
Ying Wang
72b01d6121 Support to build executables for TARGET_2ND_ARCH
By default, an executable is built for TARGET_ARCH.
To build it for TARGET_2ND_ARCH in a 64bit product, use:
LOCAL_32BIT_ONLY := true
To skip a module for TARGET_2ND_ARCH, use:
LOCAL_NO_2ND_ARCH := true

Bug: 11654773
Change-Id: Ieb293d25b21024bfe1b554044df338e064ac7b46
2014-01-21 11:26:39 -08:00
Ying Wang
61d499b965 Set up rules to build static libraries for TARGET_2ND_ARCH
The rules for the 2nd arch are set up in the second inclusion
of static_library_internal.mk.
libfoo of the 2nd arch will be built into
$(PRODUCT_OUT)/obj_$(TARGET_2ND_ARCH)/libfoo_intermediates/libfoo.a.

Bug: 11654773
Change-Id: I1d92733968fc442e9225b4df5bd1b551a81d89f7
2014-01-16 14:34:13 -08:00
Ying Wang
e1d44c3b4a Load compiler environment for a second arch.
This is the first step to build 32-bit libraries in a 64-bit product.
It will work like this:
1) In the product's BoardConfig.mk, define:
TARGET_2ND_ARCH, TARGET_2ND_ARCH_VARIANT, TARGET_2ND_CPU_VARIANT.
The build system uses those variables to set up an additional compiler
environment for the second arch.

2) When parsing Android.mks, the build system sets up rules to build a
module for both the 1st arch and the 2nd arch, unless it's explicitly
asked to skip so.
Android.mk will be adapted if there is additional rule of generating
source files.
The build system will accept arch-specific LOCAL_ variables, such as
LOCAL_CFLAGS_arm, LOCAL_CFLAGS_armv7-a-neon, LOCAL_CFLAGS_cortex-a15,
LOCAL_CFLAGS_aarch64 etc. Modules use such variables to set up build for
various archs at the same time.

3) Install binary of the 2nd arch by adding "<module_name>:32" to
PRODUCT_PACKAGES. All 2nd-arch libraries linked in by "<module_name>:32"
will be installed automatically.

Bug: 11654773
Change-Id: I2df63cd5463a07bf5358bee2a109f8fb9590fe30
2014-01-16 14:30:02 -08:00
Ying Wang
734afe4e42 am 94ff79ea: am adc66128: am b6c57051: am f5ce4fa9: Merge "Install 64-bit libraries to /system/lib64."
* commit '94ff79eaf2d66be4c83656a41b4efa38ad34a970':
  Install 64-bit libraries to /system/lib64.
2014-01-14 20:15:45 +00:00
Ying Wang
c634974d37 Install 64-bit libraries to /system/lib64.
/system/lib always contains 32-bit libraries, and /system/lib64 (if
present) always contains 64-bit libraries.
Move things around a little bit, so TARGET_ARCH can be used to define
the build paths.

Bug: 11654773
Change-Id: I2edd91e162c7a20d7719d7bae15e5fa6c2a5b498
2014-01-13 16:20:31 -08:00
Ying Wang
ec900ac4dc Support host phony package.
Bug: 11467421
Change-Id: I146387aecc57aaabbbb81f8c8bc9b5c9a5e81f05
2013-11-13 15:56:18 -08:00
Tsu Chiang Chuang
40da8832c9 add a fake data target.
(cherry picked from commit 3ba7baf14875d3cd360006be7dffe7e4e0cf1882)

Change-Id: I691d4dda65437d3f57e77ed207da406fd1f53355
2013-05-14 10:58:26 -07:00
Ying Wang
5338fbfaca Install to TARGET_OUT_APPS_PRIVILEGED if LOCAL_PRIVILEGED_MODULE is true
Change-Id: I268b8652f18034aa3fdd3126ebf6196f78c4bbb2
2013-05-08 15:49:08 -07:00
Ying Wang
0abb0fd409 Default install path of shared Java library with tag tests
To $(PRODUCT_OUT)/data/framework/.

Change-Id: Iff6bbada47258344c13853d4fd71c7ad4b709c2c
2013-03-26 16:01:02 -07:00
Ying Wang
d0244b395a Remove build variant "tests"
Bug: 5368571
Now we have a phony target "tests" instead.
The target can be built in any other build variant (eg userdebug).
For example, "make PRODUCT-full-userdebug tests dist" will build and
put the *-test-* zip file in the dist dir.
The "tests" target will include all modules tagged as "tests" in
addition to other modules in specific target out directories.

Change-Id: I8383097380d8e6846c3e2107d6dd5f68788cfc39
2012-10-01 10:18:40 -07:00
Joe Onorato
6a185e453d Remove support for user tags in the build system.
It is not forbidden to say LOCAL_MODULE_TAGS := user,
and if you don't say LOCAL_MODULE_TAGS, it now defaults
to optional.

Change-Id: I0a0b200bb6f1c7bf1fe3a89cdc8f69678617526c
2012-08-16 22:45:56 -07:00
Jean-Baptiste Queru
049d97d778 am 2387857d: am 968f20a4: Merge "MIPS support to *.mk files and envsetup.sh"
* commit '2387857dad06b3437ffcf0c14e2bc9f5956a5888':
  MIPS support to *.mk files and envsetup.sh
2012-08-10 12:43:59 -07:00
Raghu Gandham
8da4310646 MIPS support to *.mk files and envsetup.sh
Change-Id: Iba4d046e3202524b29cfe32980927f8cc0aa8496
Signed-off-by: Chris Dearman <chris@mips.com>
Signed-off-by: Raghu Gandham <raghu@mips.com>
2012-08-10 09:15:38 -07:00
Ying Wang
3f7246a081 Delete unused variable.
Change-Id: I17f0e2c0b911e505c7ddd3c9c9c56e8a38239e17
2012-05-16 10:16:49 -07:00
Ying Wang
b1a4e4e89e Delete the misleading var TARGET_OUT_STATIC_LIBRARIES.
Which can be replaced by TARGET_OUT_INTERMEDIATE_LIBRARIES.

Change-Id: I965ff1ebe70fc3113c19e4896277c876dcedb6a5
2012-05-15 16:12:18 -07:00
Dima Zavin
8e4042cc79 Revert "core: the device/board/product kernel headers will be auto-generated"
This reverts commit 992a52990c.

Change-Id: I9919f13705509a793f856da8ef7207b3feb47092
Signed-off-by: Dima Zavin <dima@android.com>
2012-03-30 10:46:28 -07:00
Dima Zavin
992a52990c core: the device/board/product kernel headers will be auto-generated
So, just add the output include directory to the include path

Change-Id: Ia370454237913a748288124f65a6b731b17d6e1a
Signed-off-by: Dima Zavin <dima@android.com>
2012-03-19 12:32:08 -07:00
Ying Wang
89686538d7 Support to build factory ramdisk image.
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
2011-12-16 13:54:10 -08:00
Jean-Baptiste Queru
316febd715 am 78b68045: am ffe03c98: Set OUT_DIR based on a common base path
* commit '78b680458b3ba53fb2f88a603e371c002eb8944b':
  Set OUT_DIR based on a common base path
2011-12-06 22:53:44 -08:00
Jean-Baptiste Queru
ffe03c984b Set OUT_DIR based on a common base path
Change-Id: I2c4ba8b101d4d186ed4b371b9d07b3bcf75bbcc9
Author: Jean-Baptiste Queru<jbq@google.com>
Signed-off-by: Bruce Beare <bruce.j.beare@intel.com>
2011-12-06 14:36:49 -08:00
Ying Wang
9f8e8db188 Build cache.img on demand
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
2011-11-10 14:30:34 -08:00
Ying Wang
c0debb9b5e Revert "Build cache.img."
This reverts commit 531bdb546a.
2011-11-02 11:19:28 -07:00
Ying Wang
531bdb546a Build cache.img.
Change-Id: I3dbe7afa4934fa718ba20605eebd2e3ce2ae82ab
2011-11-01 10:44:19 -07:00
Ying Wang
2b6aaa367a Add TARGET_COPY_OUT_* variables.
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
2011-10-27 15:18:39 -07:00
Ying Wang
8f77936dd8 Install path support for vendor modules.
Bug: 5284764
Set "LOCAL_PROPRIETARY_MODULE := true" to install module to vendor
partition.

Change-Id: I1301acc10664a12e313f3b868d9fd6400ac8b133
2011-09-13 13:57:26 -07:00
Jeff Brown
e33ba4c49e Remove the simulator target from all makefiles.
Bug: 5010576

Change-Id: Ie814f4c8d3aa1e7cc7f5735822ab25542f36cf62
2011-07-11 23:51:37 -07:00
Ryo Fujii
cbb3266b47 fix broken build rules for host VM. 2011-06-17 11:58:58 -07:00
Jean-Baptiste Queru
1607ba1c87 am 554eeb6c: am 493306f7: Merge "Fix TARGET_PREBUILT_TAG so that get_build_var can retrieve the correct value across architectures"
* commit '554eeb6c7426c8c1df551516cff903d69ae94f26':
  Fix TARGET_PREBUILT_TAG so that get_build_var can retrieve the correct value across architectures
2010-11-19 16:56:26 -08:00
Jean-Baptiste Queru
554eeb6c74 am 493306f7: Merge "Fix TARGET_PREBUILT_TAG so that get_build_var can retrieve the correct value across architectures"
* commit '493306f7c318d632186bebd732708d4299e66a62':
  Fix TARGET_PREBUILT_TAG so that get_build_var can retrieve the correct value across architectures
2010-11-19 11:15:19 -08:00
Jean-Baptiste Queru
6c75cb3752 am 0332f0ac: Truly default to the full config. 2010-10-22 12:12:52 -07:00
Jean-Baptiste Queru
0332f0ac1e Truly default to the full config.
It is much better than generic for emulator-based work.

Change-Id: I8b69b208bc4969d3f95c3467ca6737de8fd9460d
2010-10-22 10:03:49 -07:00
Bruce Beare
f1582e5499 Fix TARGET_PREBUILT_TAG so that get_build_var can retrieve the correct value across architectures
Change-Id: I5c1010d9caaa8d9ffaf65999fa3649c3c2be8caa
Signed-off-by: Bruce Beare <bruce.j.beare@intel.com>
2010-10-14 14:31:48 -07:00
Ying Wang
1406613b63 am bf2ed191: am a83940fa: Move odex related files to product-specific dir.
Merge commit 'bf2ed191fe229b6a83684c19a57e11e7b50c8637'

* commit 'bf2ed191fe229b6a83684c19a57e11e7b50c8637':
  Move odex related files to product-specific dir.
2010-10-01 17:07:29 -07:00
Ying Wang
bf2ed191fe am a83940fa: 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.
2010-10-01 15:51:35 -07:00
Ying Wang
a83940fa78 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
2010-10-01 14:41:43 -07:00