History log of /art/build/Android.executable.mk
Revision Date Author Comments
e7bc70b7c5d704a9ecc5d3b6e0851921e59ba9af 20-Oct-2014 Dmitriy Ivanov <dimitry@google.com> Link libsigchain.a instead of sigchain.o

Relative paths may sometimes lead to failed builds
if sources are built in particular order.

Also it is possible to export symbols from static lib
with LOCAL_WHOLE_STATIC_LIBRARIES variable.

(cherry picked from commit e49a4f6db74f4e66486a6aaf6564f997a94e230f)

Bug: 18701723
Change-Id: I6d62594c2e84020d67254747c1fd465e1144920e
f4450a359a08c09b88cb64c4a2ea25f983535dfb 15-Oct-2014 Dmitriy Ivanov <dimitry@google.com> Fix mac build (second attempt)

It appears that the version of mac ld with
-export_dynamic is pretty recent.

Remove -export_dynamic to fix build for older
mac versions (?)

(cherry picked from commit 8b5b69813ef4d718db2e38e51867883511a3eeea)

Change-Id: I272d4b2c95411cc8126f27468f5199ff932fc9ef
09eff05e08865660c049d1d38cdeb93662e95f0d 14-Oct-2014 Dmitriy Ivanov <dimitry@google.com> Fixing mac build

MacOS static linker does not understand --export-dynamic
and --version-script. According to man ld there is
-export_dynamic option which should do the same
thing.

(cherry picked from commit 1d74e57fa22fbcad1e14d776c771472b2d8438fb)

Change-Id: If9c096e099c8c070b62dda87dd0ed3ce77addcd6
7f1fa9e802efa4cc6ded166ce090f7c33d5546ba 07-Oct-2014 Dmitriy Ivanov <dimitry@google.com> Remove libsigchain from LD_PRELOADS

Link sigchain.cc statically with dalvikvm, app_process,
surfaceflinger, dex2oat, patchoat and objdump.

Replace libsigchain.so with dummy implementaions to avoid
situations when it is used incorrectly.

Bug: 15345057
Bug: 15426766

(cherry picked from commit f57874dddefc03fef9ad36fbdd87e39a08a8d641)

Change-Id: I07fe3ca4eeef423d78d7e9a639f03fc59aae3b29
afd9acc30bdd11cdd12d8209eb994cb371c65e33 17-Jun-2014 Ian Rogers <irogers@google.com> Multilib ART host.

Build ART for the host as a multilib project with dalvikvm32 and dalvikvm64
running as 32 or 64-bit repsectfully. Note, currently multilib host builds
are not the default, you make the so by setting BUILD_HOST_64bit=1.
Extend tests to execute in both 32 and 64-bit modes. By default both 32 and
64-bit tests are run, add 32 or 64 to the end of a test name to run it in
purely that flavor.
Given the extra spam, modify oat tests to only generate console output when
the test fails.
Change the test harness so that common commands are run when a test should be
skipped, when it passes or when it fails. Use these commands to generate a
summary of passing, skipped and failing tests. Tests will be skipped if they
are known to be broken or if a test has already failed. Setting the variable
TEST_ART_KEEP_GOING=true will force working tests not to be skipped.
In this change all tests running on the optimizing compiler are marked broken
due to breakages running them in a multilib environment.
Break apart Android.common.mk into its constituent parts, along with other
pieces of reorganization.

Stylistic nit, we refer to make rule targets as targets thereby overloading
the term target. While consistent with make's terminology, its confusing with
the Android notion of target. I've switched to just calling targets rules to
avoid confusion in host tests.

Change-Id: I5190fc3de46800a949fbb06b3f4c258ca89ccde9
5ca4eaace8ba513f97309bbdc2e156de4b1d648a 29-May-2014 Andreas Gampe <agampe@google.com> ART: Make LOCAL_CLANG architecture dependent for the target

Be selective for which target we compile with Clang. Currently we
only want to compile with Clang for ARM64, which means we need to
be careful about ARM, which is the second architecture for that.

Bug: 15014252

(cherry picked from commit 9689e3768621130b2536564f4e00fcb6b3d25df4)

Change-Id: I312e1caea08f2f3a20304b27f979d3c7b72b0a04
ffddfdf6fec0b9d98a692e27242eecb15af5ead2 03-Jun-2014 Tim Murray <timmurray@google.com> DO NOT MERGE

Merge ART from AOSP to lmp-preview-dev.

Change-Id: I0f578733a4b8756fd780d4a052ad69b746f687a9
9689e3768621130b2536564f4e00fcb6b3d25df4 29-May-2014 Andreas Gampe <agampe@google.com> ART: Make LOCAL_CLANG architecture dependent for the target

Be selective for which target we compile with Clang. Currently we
only want to compile with Clang for ARM64, which means we need to
be careful about ARM, which is the second architecture for that.

Bug: 15014252
Change-Id: I239591f65eab537deac39a25bd20530dce5c4786
2a0e954ecf7c60e6ec62d64b9382cc4ee447e224 21-May-2014 Dan Albert <danalbert@google.com> Move art host to libc++

Change-Id: Ia51a4fdfdbae7377130a43c401c2d8d241671d1e
700a402244a1a423da4f3ba8032459f4b65fa18f 20-May-2014 Ian Rogers <irogers@google.com> Now we have a proper C++ library, use std::unique_ptr.

Also remove the Android.libcxx.mk and other bits of stlport compatibility
mechanics.

Change-Id: Icdf7188ba3c79cdf5617672c1cfd0a68ae596a61
ba0c51fd282c4f47b95230c5444e76f342900cfa 16-May-2014 Ian Rogers <irogers@google.com> Switch ART to libc++.

TODO: remove all vestiges of stlport.

Change-Id: I95a3cb0b53d0898f0a5d388b606e79522f4d85e0
bd5ea6a2f7c61c4cd7b66fead1bedd96e938369d 17-Apr-2014 Ian Rogers <irogers@google.com> Preparation for transition to libc++.

Move the dependency on libc++ to its own makefile so that we can switch in a
single place between libc++ and stlport.

Change-Id: Ie61e7d054dcd049e36d5e7298c27d8a4abe6edf7
d74754320e4706796ebb1d4b413dc1fede6e4854 20-Mar-2014 Colin Cross <ccross@android.com> force dex2oat target executables to be compiled for 32-bit

64-bit dex2oat doesn't support 32-bit targets yet, force dex2oat
target executables to compile 32-bit for now by passing in a
value for LOCAL_MULTILIB to build-art-executable.

Bug: 13764385
Change-Id: I41adba1e64f373e4b61a3c13af2592ed4f7d0b57
afbaa1aab02cfe519d00336870b1bcd24b61378d 26-Mar-2014 Andreas Gampe <agampe@google.com> Build changes to build multilib tests

Test files will be emitted into directories for both first and second
target architectures. Going with the naming scheme for binaries,
single-architecture and 32b cases have the standard name, and
64b goes into a directory with "64" suffix.

In multi-architecture setups, the default concrete test targets are
extended with a "32" and "64" suffix, e.g., test-art-target-oat-JniTest64.
The suffix-less form is linked to the primary architecture target (usually 64).
That means running combined targets, e.g., test-art-target-oat, will only
test the primary architecture right now.

Fixed target run tests calling the right dalvikvm. Fixed library search
path for tests derived from CommonRuntimeTest.

Missing in this work-in-progress is correct handling of dex2oat for the
secondary architecture. To make it work on 64b, comment out line 101
in build/Android.executable.mk

Change-Id: I3d260994e6efe8b73b56c71994053cc9392943a9
cae10f73bdad63774a3a8bc67d568b131f9bd591 01-Apr-2014 Andrew Hsieh <andrewhsieh@google.com> Add -lpthread -ldl to link executable/tests

The new binutils-2.23 based linker in
prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.11-4.6
no longer implicity adds dependencies on *so an executable needs.
eg.

ld -o barrier_test barrier_test.o common_runtime_test.o ... -lartd

produces error messages read

art/runtime/thread-inl.h:43: error: undefined reference to 'pthread_getspecific'
art/runtime/common_runtime_test.h:219: error: undefined reference to 'dlsym'
external/gtest/src/../include/gtest/internal/gtest-port.h:1482: error: undefined reference to 'pthread_getspecific'

because libartd.so DT_NEEDED libdl.so and libpthread.so, and new linker no longer
implicitly add both to dependencies. Explicitly add -lpthread -ldl to fix the issue

Change-Id: Ic29c68480b2ed55d282be949640b9158411f213d
2269d2a647dbd4ad60a32be0238eda4db844d95b 20-Mar-2014 Colin Cross <ccross@android.com> HACK: force target art executables to be compiled for 32-bit

64-bit dex2oat doesn't support 32-bit targets yet, force all
art executables to compile 32-bit for now.

Change-Id: If69f0a45e55104a5e915a9c58afa9009aa68b71c
dc781a13ddb4dabf646bb45d0c53b65cab948e5b 05-Feb-2014 Colin Cross <ccross@android.com> art: convert makefiles to support multilib build

Convert makefiles to allow for building two architectures at the
same time. More changes may be necessary to get the tests to
build.

Change-Id: I02ba11706b7e5b5592d76e43c167bcbf0e665b93
1bd2ceb3a8c68ae6ea1f9627b588a7bc7a74487f 06-Nov-2013 Brian Carlstrom <bdc@google.com> Make missing DEX2OAT_TARGET_INSTRUCTION_SET_FEATURES an error

Change-Id: I3ca23e4db80c8ab8a86da6408cf38daccd4cfaf1
7020278bce98a0735dc6abcbd33bdf1ed2634f1d 23-Oct-2013 Dave Allison <dallison@google.com> Support hardware divide instruction

Bug: 11299025

Uses sdiv for division and a combo of sdiv, mul and sub for modulus.
Only does this on processors that are capable of the sdiv instruction, as determined
by the build system.

Also provides a command line arg --instruction-set-features= to allow cross compilation.
Makefile adds the --instruction-set-features= arg to build-time dex2oat runs and defaults
it to something obtained from the target architecture.

Provides a GetInstructionSetFeatures() function on CompilerDriver that can be
queried for various features. The only feature supported right now is hasDivideInstruction().

Also adds a few more instructions to the ARM disassembler

b/11535253 is an addition to this CL to be done later.

Change-Id: Ia8aaf801fd94bc71e476902749cf20f74eba9f68
fa50baa45bf7c82e489bd66bbba70544f7981997 02-Aug-2013 Brian Carlstrom <bdc@google.com> Restore build-art minimal build

Change-Id: I0f4f2e8c6d2505a339cb9a1175d30ed9b229c45d
025218c7e4330a4942b14f9a8f1f68bd3390261c 31-Jul-2013 Elliott Hughes <enh@google.com> Clean up stlport usage.

Change-Id: I133cd88f1da37f6f801a9e07a78ae23b671cf4f1
7940e44f4517de5e2634a7e07d58d0fb26160513 12-Jul-2013 Brian Carlstrom <bdc@google.com> Create separate Android.mk for main build targets

The runtime, compiler, dex2oat, and oatdump now are in seperate trees
to prevent dependency creep. They can now be individually built
without rebuilding the rest of the art projects. dalvikvm and jdwpspy
were already this way. Builds in the art directory should behave as
before, building everything including tests.

Change-Id: Ic6b1151e5ed0f823c3dd301afd2b13eb2d8feb81
51c2467e8771b56e25ae4f17f66522f979f57a7e 12-Jul-2013 Brian Carlstrom <bdc@google.com> libart-compiler cleanup

- Move compile-time code to src/compiler and libart-compiler
OatWriter, ImageWriter, ElfWriter, ElfFixup, ElfStripper, stub generation
- Move ClassReference and MethodReference to remove MethodVerifier dependency on CompilerDriver
- Move runtime_support_llvm.cc out of src/compiler and next to runtime_support.cc
- Change dex2oat and gtests to directly depend on libart-compiler
- Move non-common definitions from Android.common.mk to more specific makefiles
- Add LOCAL_ADDITIONAL_DEPENDENCIES on appropriate makefiles

Change-Id: I897027e69945914128f21f317a92caf9255bc600
fa42b4410d49134a8e63dc2196be4013d286f2d6 17-Jun-2013 Brian Carlstrom <bdc@google.com> Move to new art dalvikvm

Change-Id: Ib04bc9853b7084965fa0c9899c3e5f5ac42d4ce7
cd5d0422ac07b03220970a3606f8b402a3636528 18-May-2013 Ian Rogers <irogers@google.com> Clang build support, -Wthread-safety with GCC 4.6.

Change-Id: Idccb4daa012c66a6ece3f7a037c9c2c029beba64
52e55cbc6d18694556176b58ef79b5ae52c8039c 22-Mar-2013 Brian Carlstrom <bdc@google.com> Remove gcc-based tsan support

Change-Id: I145331e295f69e99408e03cb59df26fb337510f5
265091e581c9f643b37e7966890911f09e223269 30-Jan-2013 Brian Carlstrom <bdc@google.com> Remove ExtractCodeAndPrelink and switch Portable to MCLinker

Change-Id: Ia2459c7da6b79e0a1c0f1148c6e28ad9cbbe27a2
c928de90ad22ecdf83c18a07008409595f13d3b1 27-Feb-2013 Ian Rogers <irogers@google.com> Remove Iceland.

ART_USE_LLVM_COMPILER is removed and when necessary ART_USE_PORTABLE_COMPILER
is used in #ifdefs.

Change-Id: Iffa9ce5b0246c7c427ccc4e67ecc134624632e55
c531cefbfb5394413122e9f57d211ba436cff012 18-Oct-2012 buzbee <buzbee@google.com> Eliminate #ifdef ART_USE_QUICK_COMPILER

One of several steps towards having a single compiler build.
In this CL, we introduce a compiler_backend command-line option
to select between Quick, Quick w/ GBC, Portable and Iceland
back ends. The Iceland option is temporary, and will go away once
we combine with Portable. The Quick variants are with
and without GBC conversion. In time, those will converge to a
single option.

All uses of "#if defined(ART_USE_QUICK_COMPILER)" are eliminated. All
previous uses in the Quick compiler have been converted to runtime
tests. On the llvm side, ART_USE_QUICK_COMPILER was previously
used to differentiate between Portable and Iceland builds. Those
usages have been replaced with ART_USE_PORTABLE_COMPILER, and in
a following CL will also be converted to run-time tests.

As of this CL, we're still generating separate libraries for
Quick and Portable/Iceland. Next up is elminating the target-specific
libraries for Quick-arm, Quick-x86 and Quick-mips. Once that is
complete, we will consoldate Quick and Portable into a single build.

To build either Iceland or Portable, touch USE_PORTABLE_COMPILER or
USE_LLVM_COMPILER as usual. Otherwise, the build will default
to Quick (non-GBC).

Change-Id: Ic86c56f51710c9b06d4430b71a429ae12903cc47
21d28f510eb590f52810c83f1f3f37fe5f4adf46 12-Jun-2012 Shih-wei Liao <sliao@google.com> GBC Expander. Removed lir.

Change-Id: If8d13e36f1e6d82c2a7f7bfec62b8fb41fd8cdaa
2cfc639fc803bf67e3d2a961f2b637220c86d5f7 07-May-2012 buzbee <buzbee@google.com> Foundation for Quick LLVM compiler

Ready for review - probably better get this cleaned up and
checked in even though much work remains.

Basic conversion from MIR to GreenlandIR and from GreenlandIR
back to LIR. Support sufficient to run Fibonacci test.

Note some structural changes in MIR to support this work:
o retaining incoming label for phi nodes
o constant propagation
o include object reference detection in type inference pass

Change-Id: I8ba63c73e76d071aa40cae0f744e598b96f68699
e94d9b23c52ec0f36c8a132914eac33bc707faff 22-May-2012 Shih-wei Liao <sliao@google.com> Add dex_lang as common frontend to lir and LLVM. dex_lang + bc2lir =
Greenland

First commit of Greenland compiler: It's working in the sense of oat
tests. E.g., mm test-art-host-oat-Fibonacci. It shows the correct
bitcode before lir.

Change-Id: I91cbb02188325eb1fa605ed71ec7108fd2b0dbb9
c4c9881e5d22432f3f1a30eeec5aa109dfc08a7d 11-Mar-2012 Shih-wei Liao <sliao@google.com> Fix the LLVM build. Separate out libart-compiler-llvm.so.

After this refactoring:
If (!USE_LLVM_COMPILER), I pass the test-art and boot the phone alright.
The behavior is the same for non-LLVM builds as before. Multi-target
art-compiler shared libraries are generated as before.
If (USE_LLVM_COMPILER), I generate libart-compiler-llvm.so successfully.

Note that the ideal refactoring for the next step will be to always build
art-compiler and LLVM-[arm|mips|x86] shared libraries. Currently, we
haven't removed all the ifdefs for libart.so yet, so this is not ideal yet.
Reason for not-done-yet is that the next step requires discussions.
I can remove all the ifdefs today, but then the (!USE_LLVM_COMPILER)
build will incur extra fields and overhead.

This refactoring allows us to restore the LLVM build situation to be before
the breakage yesterday, so we can continue making forward progress again.

One difficulty in the refactoring is that LLVM is not a method compiler
in default, unlike (!USE_LLVM_COMPILER). LLVM actually compiles an LLVM module
at a time normally. So we need to do more call backs and tell
libart-compiler-llvm.so in each invocation where we are in terms of
OatCompilationUnit.

Another difficulty is that currently our LLVM compiler is not
multithreaded and requires locking, unlike (!USE_LLVM_COMPILER). So more
callbacks are needed. This will be fixed when we fix the multithreading
issue.

Change-Id: I93bce21b6d673254188f2a60b1a7f91b508e497f
06e3ad4a651c2c58dba5e865cd06d2f98462bf1d 07-Feb-2012 Elliott Hughes <enh@google.com> Turn on some basic tsan annotations.

The most useful bit here is that tsan now knows the names of our threads.

Change-Id: I8eef8f31e954ffc373555b392d6d9678d76ead34
a6cc893c4b142cd410fc956963b6f5a014e983ad 04-Jan-2012 Brian Carlstrom <bdc@google.com> Add installd support to dex2oat

Change-Id: Id1a64403ccea7dc2c1e8b8340d33d383d4045a33
89521898b56f2ebc3fb68acfb6bc6dde9b6f5c38 08-Dec-2011 Brian Carlstrom <bdc@google.com> Merge art-cache dex files into oat files

Change-Id: I5a327a4e0b678bd9dabb12de4e21ef05e3fefd0b
3b6baaa203fa63f1522b2172a1645f90412afdae 15-Oct-2011 Elliott Hughes <enh@google.com> Bring our native stack usage down.

I'd have preferred to have a 512-byte limit, but there are some monsters
in the verifier; 2000-line functions and the like. I'm also not policing
tests (except for one silly one). They can use all the stack they like.

This fixes the IntMath test (the stack overflow test was failing because
we were using more than 4KiB to throw!).

Change-Id: I7e53e2fde2b39fde1910f8ee5b1712e8a66069c7
b7bbba49d88eae58223d9878da4069bf6d7140bf 13-Oct-2011 Brian Carlstrom <bdc@google.com> Add oatopt drop in replacement for dexopt

Change-Id: I094375230af2d9a88e30245b390cac71be7b50f4
0796af03edc06d92bb8d631f1c0c23befdae2315 12-Oct-2011 Brian Carlstrom <bdc@google.com> Fix Object::IsSoftReference

Also changed -Xzygote to default boot.art and log arguments

Finally Makefile work:
- separate out test dependencies
- changed zygote with art to work by replacing libdvm with libart[d]
- changed Makefile defines to name and error check their arguments
This was to fix bug in generating ART_TARGET_EXECUTABLES
where we used $(1) when we meant $(3)

Change-Id: I7ef6008eff1fe99b59d151b6793e8fd8ea5304d4
bc512351f95163157712cbf1a35e38f00355bde2 17-Sep-2011 Brian Carlstrom <bdc@google.com> Remove redundant libgtest_host linkage

Change-Id: I2932347166fa993c7125c32ecf6a3497462f3115
78128a63b2615744760b7f8ab83df9764a5d4a95 16-Sep-2011 Brian Carlstrom <bdc@google.com> oatdump

FROM MAKE:
mm dump-boot-oat

ON HOST:
oatdump --dex-file=$ANDROID_PRODUCT_OUT/system/framework/core.jar --image=$ANDROID_PRODUCT_OUT/system/framework/boot.oat --strip-prefix=$ANDROID_PRODUCT_OUT
oatdump --boot-dex-file=$ANDROID_PRODUCT_OUT/system/framework/core.jar --boot=$ANDROID_PRODUCT_OUT/system/framework/boot.oat --dex-file=$ANDROID_PRODUCT_OUT/system/framework/art-test-dex-HelloWorld.jar --image=$ANDROID_PRODUCT_OUT//system/framework/art-test-dex-HelloWorld.oat --strip-prefix=$ANDROID_PRODUCT_OUT

ON TARGET:
adb shell oatdump --dex-file=/system/framework/core.jar --image=/system/framework/boot.oat
adb shell oatdumpd --boot-dex-file=/system/framework/core.jar --boot=/system/framework/boot.oat --dex-file=/system/framework/art-test-dex-HelloWorld.jar --image=/system/framework/art-test-dex-HelloWorld.oat

Change-Id: Iad2ae40a9cf2dc28799ff5dc5222d50f1bc6b39f
8692721dd8a3679ca874c3d1be0cecb62ff148f6 15-Sep-2011 Brian Carlstrom <bdc@google.com> Fix ClassLinker::LinkInterfaceMethods bug

Also:
- Expanded class_linker_test with additional vtable and iftable coverage
- Added -fkeep-inline-functions where it works on host for debugging
- Added disabled test for running command line Fibonacci with oatexec

Change-Id: Ie295551e42493c7cca05684e71e56bf55bd362a4
1d3f114124b140629a7d22fa5cfa20ab8fc96934 13-Sep-2011 Elliott Hughes <enh@google.com> Support 32-bit volatiles.

Change-Id: If40ead8e13986d589ac1d1637034e25fc4108189
4b620ffb1b4d0c96a94bb3afe314f35d53990ec6 11-Sep-2011 Brian Carlstrom <bdc@google.com> Finish moving state to managed heap

Change-Id: I8a3b0e353b30268a05d6ed8ea0a6a4bead100660
69b15fb098162f19a4c20e6dccdcead04d9c77f0 03-Sep-2011 Brian Carlstrom <bdc@google.com> Working dex2oat and oatexec

adb shell dex2oatd --dex-file=/system/framework/core.jar --image=/system/framework/boot.oat --base=0x50000000 "'--method=Ljava/lang/System;logI(Ljava/lang/String;)V'" "'--method=Ljava/lang/System;log(CLjava/lang/String;Ljava/lang/Throwable;)V'"
adb shell dex2oatd --boot-dex-file=/system/framework/core.jar --boot=/system/framework/boot.oat --dex-file=/system/framework/art-test-dex-HelloWorld.jar --image=/system/framework/art-test-dex-HelloWorld.oat
adb shell oatexecd -Xbootclasspath:/system/framework/core.jar -Xbootimage:/system/framework/boot.oat -classpath /system/framework/art-test-dex-HelloWorld.jar -Ximage:/system/framework/art-test-dex-HelloWorld.oat HelloWorld

09-05 17:58:18.912 2385 2385 I System : Hello, world!

Change-Id: I53e534068584f0c3a837313e4d517a0e4a7154fc