Commit Graph

3847 Commits

Author SHA1 Message Date
Stephen Hines
a8b65126ca Merge "Add -shared to clang LDFLAGS." 2014-05-30 22:59:48 +00:00
Nick Kralevich
45545761d2 arm64: restore relro/now
The bug which required this option has been fixed.

Bug: 11434996
Change-Id: I7ab7e2e8ba7b993281902832d01b3ee3ba9e06ef
2014-05-30 15:46:40 -07:00
Nick Kralevich
61cf065ae9 Merge "Use a separate policy for the recovery image." 2014-05-30 18:20:48 +00:00
Andrew Hsieh
5c2c70de88 Merge "Add -latomic to all target builds" 2014-05-30 07:44:02 +00:00
Tim Murray
0f9276d4ba Add -shared to clang LDFLAGS.
TOT clang doesn't do the right thing with regards to -pie without this.

Change-Id: Ic14cfb25d96359eb18899c09ebaf1d311e937d01
2014-05-29 17:54:07 -07:00
Stephen Smalley
5520f28653 Use a separate policy for the recovery image.
Only the recovery image needs to include the recovery domain
in its policy, so create a separate policy for the recovery image
and replace the root policy with this one when building the
recovery image.

Depends on the change with the same Change-Id in external/sepolicy.

Change-Id: I444107f9821eabf4164ba07a44d03bd71e719989
Signed-off-by: Stephen Smalley <sds@tycho.nsa.gov>
2014-05-29 16:42:49 -04:00
Andrew Hsieh
4c952d72b7 Add -latomic to all target builds
Projects using stdatomic.h needs libatomic.a in case compiler can't
expand all __atomic* intrinsics. eg, __atomic_is_lock_free in
armeabi/mips.

Adding libatomic.a globally makes more sense than adding
"LOCAL_LDLIB += -latomic " in each project including <stdatomic.h>.
Projects don't need atomic operations won't get redundant DT_NEEDED
entry because libatomic.a is not a shared library.

Change-Id: I81dbf524544c848e667e18ab5eeabff75b5063ef
2014-05-29 11:40:46 -07:00
Brian Carlstrom
3f5ff08dc5 Only enable WITH_DEXPREOPT by default for libdvm.so
Bug: 14298175

(cherry picked from commit 9f8e214a91)

Change-Id: I96ba4e198b7bc1b7d9a502c432590f41c87d05c4
2014-05-29 09:38:04 -07:00
Ying Wang
b3bed5952b Merge "Add a dummy build recipe for generated RS cpp files." 2014-05-28 23:33:35 +00:00
Ying Wang
65afd710a5 Merge "Add a dummy build recipe for the proto generated header files" 2014-05-28 23:26:01 +00:00
Ying Wang
81ab8339fe Add a dummy build recipe for generated RS cpp files.
Previously the RS cpp files are generated by the timestamp rule. Though
we have the generated RS cpp files depend on the timestamp file, we
don't have a build recipe. In such case gmake does some "optimization"
that it skip recompiling the generated cpp files, because it assumes the
generated cpp files are already up to date even if the rs files have
been updated.

Bug: 15313144
Change-Id: Ie69ecd2c788057d3619f9c7d2a125d44c4a534a1
2014-05-28 16:17:09 -07:00
Ying Wang
5186dac02b Add a dummy build recipe for the proto generated header files
This fixed issue that gnumake skip updating the cpp file that includes
the generated header file when the .proto file gets updated.
For example:
Say a.cc includes b.pb.h, since b.pb.h is just byproduct of the rule
that generates b.pb.cc, and though we have dependency "b.pb.h :
b.pb.cc", but we don't have build recipe for that rule.
Gmake stupidly thinks that b.pb.h must not be updated in that case so
it skips all targets that depends on b.pb.h!
With the dumy build recipe, gmake now doesn't skip the depedent targets.

Bug: 13009798
Change-Id: I39adc09b7656bdd023f578fb8933667944fd974c
2014-05-28 16:15:13 -07:00
Brian Carlstrom
31f5db27c6 Move to dalvik.vm.lib.2 to force default to libart
Bug: 14298175

(cherry picked from commit 7e127ebe0b)

Change-Id: I0a94e01f46fcc074d8c8fd1e5558fb764ab47361
2014-05-28 14:49:34 -07:00
Ying Wang
994c226b91 Fix pattern rules for $(installed_odex) for libdvm.
When the VM is libdvm, we don't put the odex files in an arch specific
subdirectory. The previous pattern rules don't work because of the extra
"/". With this change, % evaluates to empty string when it's built for
libdvm; % evaluates to "<arch_name>/" when it's built for libart.
Also removed use of $(create-empty-package), which may causes file name
(dummy) conflict with the rule of package.apk.

Bug: 15311527
Change-Id: I9f9089bc1896b78c1f47834afdb28a3a51d34480
2014-05-28 14:23:26 -07:00
Ying Wang
824344af00 Support LOCAL_CLANG with arch/bit suffix.
Precedence: LOCAL_CLANG_<arch> > LOCAL_CLANG_<32|64> > LOCAL_CLANG.

Bug: 15257067
Change-Id: I86b72f3bec162834591287d3b5231b5f40f9a431
2014-05-27 13:06:08 -07:00
Dan Albert
3805f61915 Merge "Revert "Fix for duplicate names in whole static libs"" 2014-05-27 19:41:46 +00:00
Dan Albert
3c12b5c02b Revert "Fix for duplicate names in whole static libs"
This reverts commit 0e5ce8be34.

Change-Id: I68b776cb915fd7be8299ddb2899907046dddadf3
2014-05-27 19:30:36 +00:00
Dan Albert
31101623b3 Merge "Fix for duplicate names in whole static libs" 2014-05-27 18:23:26 +00:00
Dan Albert
0e5ce8be34 Fix for duplicate names in whole static libs
_extract-and-include-single-(host|target)-whole-static-lib was written such that
only the first file of a given name would be extracted and included into the new
library. This patch iterates over each identically named archive member,
extracts them individually, and adds them to the new archive.

Bug: 15110069
Change-Id: Ia08c7be6f40bfc8403908a8808898ada479099b1
2014-05-23 18:23:47 -07:00
Ying Wang
d90de32951 Exclude libstdc++ and libgcc if libc++ is requested.
Bug: 15174002
Change-Id: I24fe428c3520f76cd61f0660b59ba18a1f2d2dad
2014-05-23 16:42:37 -07:00
Ying Wang
6cb69bd4f2 Merge "Add HOST_PREFER_32_BIT to support 32-bit-by-default multilib build" 2014-05-23 17:39:40 +00:00
Colin Cross
e45c8607b3 Merge changes Ibc943b75,Ib4ccf373,I30ff439b,I7bde0130
* changes:
  set a prebuilt directory name for the 2nd arch
  add vendor directories to gdb shared library search path
  add 2nd arch gcc to the path
  fix paths when 2nd arch gcc is a different version
2014-05-22 19:28:01 +00:00
Colin Cross
12d18eb563 set a prebuilt directory name for the 2nd arch
In order to install 32-bit gdbserver on a 64-bit build,
prebuilts/misc/Android.mk needs to know the prebuilt directory name
for the 2nd arch.

Change-Id: Ibc943b758eb9404f7f5f9fbbd8720cc67f6a6f01
2014-05-22 12:01:23 -07:00
Ying Wang
b0143e2fff Merge "Add some more flags to CLANG_CONFIG_UNKNOWN_CFLAGS" 2014-05-22 17:38:01 +00:00
Ying Wang
8a3f514d44 Merge "Split the rules to build the odex file" 2014-05-22 02:24:59 +00:00
Dmitriy Ivanov
38bba065e0 Clarify multiarch warnings
* Show multiarch related warnings only if my_module_multilib is both

Change-Id: If0c467c1d9b953bd3f40949ab4b97d9329ec021f
2014-05-21 16:40:35 -07:00
Ying Wang
36142f64ae Split the rules to build the odex file
Previously the odex file is byproduct generated by the package.apk rule.
Though we have the odex file depend on the package.apk it doesn't have
its own build recipe. In case package.apk isn't updated but we still
need to update the odex file (such as changed LOCAL_MULTILIB), the odex
file will never be rebuilt.
This change split out the rules to build the odex file and make sure the
build recipe get executed if the odex file needs rebuild.

Change-Id: I60c2f32b536b3d59045301ee863aae1451734aad
2014-05-21 16:24:59 -07:00
Ying Wang
966c1e0cae Add HOST_PREFER_32_BIT to support 32-bit-by-default multilib build
We already support pure 32-bit and 64-bit-by-default multilib build.
With HOST_PREFER_32_BIT we can build 32-bit-by-default multilib build.
This will be lest disruptive during the period we transition to
64-bit-by-default.

Bug: 13751317
Change-Id: I0d56ce4abbe4afeaacfd70d709f6a349791c0722
2014-05-20 18:03:21 -07:00
Ying Wang
7cf9f28b5f Support to extract JNI libs from prebuilt APK
Use LOCAL_PREBUILT_JNI_LIBS to install prebuilt JNI libraries extracted
from the prebuilt apk, or prebuilts as source, to the app specific lib path.
LOCAL_PREBUILT_JNI_LIBS accepts 2 kinds of files:
- Files like @path/to/libfoo.so (path inside the apk) are JNI libs
  extracted from the prebuilt apk. In this case, all embedded JNI libs
  inside the prebuilt apk are stripped.
- Files like path/to/libfoo.so (path relative to LOCAL_PATH) are
  prebuilts in the source tree.

Those prebuilt JNI libs are not defined as modules in the build system,
so this works around possible module name conflict.

Bug: 13170859
Change-Id: I91bb844cc11b3621a85733bc7e8910f168957ef0
2014-05-20 18:02:17 -07:00
Ben Cheng
54bea362ab Merge "Use aarch64-linux-android-4.9 for arm64 build (attempt #4)" 2014-05-20 16:00:08 +00:00
Ben Cheng
d033121431 Use aarch64-linux-android-4.9 for arm64 build (attempt #4)
GCC: 4.9 (which supports -fstack-protector)
Binutils: 2.24 (which supports gc-sections)
GDB: 7.7

NDK libraries are still picked up from prebuilts/ndk/*/4.8/*

GCC has been patched to disable codegen for calling
__cxa_throw_bad_array_new_length.

Source code has been sync'ed against the 2014-05-14 snapshot which
contains many important fixes (devirtualization, codegen, ...).

Change-Id: I43229360ad0132193d5208cb0d1acba55084853c
2014-05-19 16:22:21 -07:00
Brian Carlstrom
64f3a191f9 Merge "Multilib support for odex" 2014-05-19 16:50:17 +00:00
Ying Wang
b9aa5d43de Multilib support for odex
If the VM is libart and DEXPREOPT is enabled,
- For a Java library and the boot image, we build for both 1st arch and
  2nd arch.
- For an app, we build for the multilib arch the module is targeted for.
The odex file will be in <arch_name>/<module_name>.odex inside the same
dir where the jar/apk file gets installed.
Nothing changed if it's built for libdvm.

Bug: 14694978
Change-Id: I45118a83758b41d52d6c9e38f93f0ba2775a6c74
2014-05-18 22:04:58 -07:00
Ying Wang
4636abe589 Merge "Real "LOCAL_MULTILIB := both" for prebuilts" 2014-05-17 03:03:44 +00:00
Ying Wang
d450706704 Default TARGET_CPU_SMP to true.
Change-Id: If8c52c8ed66d52452967d09885dfe1ca9da13688
2014-05-16 16:27:11 -07:00
Ying Wang
ef773d22ca Fix the missing 2nd arch prefix.
Bug: 13751317
Change-Id: Ie5a323a0a89245576dbc91271d3178574942627d
2014-05-16 16:22:32 -07:00
Dan Albert
9b0c6ff69c Use libc++ versions of gtest libs when needed
Change-Id: Id8752ea946cbaa747dfa4fccf38d680dfeee5b45
2014-05-16 14:55:50 -07:00
Dan Albert
a82b32a7a7 Merge "Use libc++ versions of gtest libs when needed" 2014-05-16 21:50:27 +00:00
Dan Albert
965bfefb6b Use libc++ versions of gtest libs when needed
Change-Id: I19aa58a83a9da680d441af5f3956a2fbdf18c4e4
2014-05-16 11:22:44 -07:00
Ying Wang
34d5f1b27e Real "LOCAL_MULTILIB := both" for prebuilts
This uses the fact that unsetting LOCAL_MULTILIB equals "either".
It's useful to build for both 32-bit and 64-bit in the same prebuilt
module definition.

Bug: 13751317
Change-Id: I4f1625a83e13f22f807039afebae73f69ed35918
2014-05-16 10:49:57 -07:00
Ying Wang
6374153fbf Force to build llvm from source in 64-bit host build.
Bug: 13751317
Change-Id: I4a4150bfe21607eb7a2342bbd8120b431427eee5
2014-05-16 09:37:23 -07:00
Ji-Hwan Lee
a7748859d7 Merge "Clear *.ini and skin directory on installclean" 2014-05-16 01:54:49 +00:00
Ying Wang
a303c4f546 x86_common.mk has been replaced by HOST_x86_common.mk
Change-Id: I19eea82bb35d3f65a2d894c687131a1eafbe2cc9
2014-05-15 18:50:06 -07:00
Christopher Ferris
f8cfbc0a10 Merge "Print all 2ND variables." 2014-05-16 01:14:43 +00:00
Ji-Hwan Lee
0a5b178fc3 Clear *.ini and skin directory on installclean
Currently, skin directory remains across different emulator targets, and
need manual removal.  Also, clear hardware-qemu.ini and config.ini.
(See https://android-review.googlesource.com/94692 for config.ini)

Change-Id: Iaa5849ad043ed3f317325ba1d6df287953636f7a
2014-05-15 20:59:01 +09:00
Narayan Kamath
944a38104a Merge "Fix executable symlinks." 2014-05-15 09:36:26 +00:00
Christopher Ferris
4fe22ae9e8 Print all 2ND variables.
Change-Id: I11180a3ec3481d293100c59c331f05db9e6a689b
2014-05-14 19:16:25 -07:00
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
Narayan Kamath
4fb8122bcb Fix executable symlinks.
32 bit targets will leave TARGET_PREFER_{32,64}_BIT_APPS unset
so adjust accordingly. Also clean up an explanatory comment.

Change-Id: I1f6faa640e4e862631fff49f7c565766ef2c567f
2014-05-14 18:26:48 +01:00
Ying Wang
fb910ddb1d Treat denver like cortex-a15.
See also build/core/combo/arch/arm/armv7-a-neon.mk.

Change-Id: Ie18e1f133f56a9f7da80e304052c92edad933a31
2014-05-13 09:02:56 -07:00