Commit Graph

804 Commits

Author SHA1 Message Date
Ying Wang
9df5043594 resolved conflicts for merge of 536d4a76 to master
Change-Id: Ib655d08e5c9272aef1fd1e130b5fb2b63148a55e
2014-05-28 11:05:47 -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
Ying Wang
bccdab8737 am 65475feb: am 29267309: am 294301bb: Merge "Exclude libstdc++ and libgcc if libc++ is requested."
* commit '65475feb5999068096b287faac9199d1c8e18340':
  Exclude libstdc++ and libgcc if libc++ is requested.
2014-05-27 17:59:11 +00: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
8200231ae1 am e50f2d9f: am 40b49d30: am a74ade94: Merge "Support host multilib build"
* commit 'e50f2d9f32a27d8290692dbf99ab8b247ef9d553':
  Support host multilib build
2014-05-15 01:09:49 +00: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
Ying Wang
4908595634 Automatically export generated .pb.h files.
- Automatically export the include path of the generated .pb.h files
- Set up the dependency to make sure the .pb.h files get generated
  before any dependent c/c++ files get compiled.
With this change, any module that links a proto library doesn't need
any extra setup.

Bug: 14563418
Change-Id: Iea7d19e9d8dce8e7d479c386b7a6151a95a0a0df
2014-05-06 13:06:08 -07:00
Andrew Hsieh
293ccf9ae6 am d815dbd1: am f14ba5b9: am 8afa2555: Merge "Rename my_ndk_version_root to my_ndk_sysroot; and _include and _lib"
* commit 'd815dbd1343d05aae5f5430dc38d8846107d202b':
  Rename my_ndk_version_root to my_ndk_sysroot; and _include and _lib
2014-04-29 00:23:52 +00:00
Andrew Hsieh
140761af09 Rename my_ndk_version_root to my_ndk_sysroot; and _include and _lib
prebuilts/ndk/current/platforms/android-19/arch-x86_64/usr/lib
is renamed to usr/lib64 to be more consistent with rest of
lib paths in x86_64 toolchain, which is multilib

See https://android-review.googlesource.com/#/c/92441/

Change-Id: I4e59245505d0fa87ae3608e81e715ccfcecc5ec8
2014-04-25 23:47:10 -07:00
Stephen Hines
46df181815 am f0dda8d0: am 9661b09f: am 9956bb6a: Merge "Build changes necessary for LLVM 3.5 switch."
* commit 'f0dda8d0cbb249be24a71776289b1d9ebe17faaf':
  Build changes necessary for LLVM 3.5 switch.
2014-04-25 22:51:38 +00:00
Tim Murray
43d5e1bbc4 Build changes necessary for LLVM 3.5 switch.
Change-Id: Icb6065daada7cb1d7425206830a4ef9e23454c03

Conflicts:
	core/clang/arm.mk
2014-04-24 13:14:32 -07:00
Evgeniy Stepanov
5d8029f234 Update ASan configuration.
Change runtime library name to keep in sync with upstream.
Enable frame pointers in instrumented code for fast stack unwind.

Change-Id: I815912bb856c56c399639ea76ad4cb6b97961840
2014-04-16 10:52:10 +00:00
Ben Cheng
19b7c4d5c9 am e4d787bf: am 7e793040: am eec11d97: Merge "Decouple platform compiler and NDK library versioning."
* commit 'e4d787bfbbde83bc4b868ed804c94118c2ea0080':
  Decouple platform compiler and NDK library versioning.
2014-04-11 17:10:37 +00:00
Ben Cheng
4de6fa4069 Decouple platform compiler and NDK library versioning.
TARGET_GCC_VERSION: select compiler from prebuilts/gcc/...
TARGET_NDK_GCC_VERSION: select libraries from prebuilts/ndk/...

Change-Id: I4422a42cdc97aa92b40798014cba82c3c123bbd2
2014-04-10 22:46:26 -07:00
Colin Cross
c93c10a75b am 8295d6cd: am ce087413: am 36a67a90: Merge topic \'tests\'
* commit '8295d6cd62ba73ea66e64204d2d0ea27b4b34889':
  add support for LOCAL_MODULE_STEM_32 and LOCAL_MODULE_STEM_64
  add support for LOCAL_MODULE_PATH_32 and LOCAL_MODULE_PATH_64
2014-03-25 23:48:13 +00:00
Colin Cross
87974056d9 add support for LOCAL_MODULE_PATH_32 and LOCAL_MODULE_PATH_64
Some executables will need to be built for both 32-bit and 64-bit.
For tests, it will be convienient to keep the name of the executable
the same, but install them in a different location.  Add
LOCAL_MODULE_PATH_32 and LOCAL_MODULE_PATH_64 to allow a module
to specify different paths for 32-bit and 64-bit executables.

Change-Id: I3be830e899c6d485fe55c25c66b20b3fe64c795e
2014-03-25 13:48:40 -07:00
Andrew Hsieh
1477080e34 am cde91b3e: am 0adc6431: am c550cd45: am fa97fe67: Merge "Pick gnu-libstdc++ based on TARGET_GCC_VERSION"
* commit 'cde91b3e6a42e66cb45e75eb69111f37840dffec':
  Pick gnu-libstdc++ based on TARGET_GCC_VERSION
2014-03-25 03:34:29 +00:00
Andrew Hsieh
92d50c1a10 Pick gnu-libstdc++ based on TARGET_GCC_VERSION
Previously we have only one set of include/lib paths for
LOCAL_NDK_STL_VARIANT:=gnustl_static regardless of GCC
version, which is wrong because each GCC version
come with its own libstdc++.

Change-Id: I2a01c2120b6948aedce00e2f8d08dfc6932126dd
2014-03-25 09:46:27 +08:00
Ying Wang
595f996f0d am 7a93f683: am 82a2ae71: am 5a4c783c: am 8c60a1df: Merge "Complete installed shared library dependency"
* commit '7a93f68322eca5ccf32ca9544ba63ec64548e050':
  Complete installed shared library dependency
2014-03-24 19:36:32 +00:00
Ying Wang
d8d3721240 Complete installed shared library dependency
Previously the installed shared library dependency doesn't include
modules introduced by LOCAL_SHARED_LIBRARIES_<arch>.
This change fix the problem.
It also cleans up use of the shared library variable.

Bug: 13528787
Change-Id: Id8d807cc57f0ec4a71f18b64545d91191efad8fb
2014-03-21 16:17:04 -07:00
Andrew Hsieh
96000a611a am 314b5c98: am 66a4ef8f: am d14f3cc7: am 5384c187: Merge "Add LOCAL_NDK_STL_VARIANT:=c++_static and c++_shared"
* commit '314b5c98cbd68d11e7484b5e35a1bea466cde66b':
  Add LOCAL_NDK_STL_VARIANT:=c++_static and c++_shared
2014-03-18 00:15:28 +00:00
Andrew Hsieh
73d800e519 Add LOCAL_NDK_STL_VARIANT:=c++_static and c++_shared
Add llvm libc++ static and shared libraries

Change-Id: I92af9b6ab21cbf8ea82e014a4c11aeb5455920f9
2014-03-17 20:30:45 +08:00
Ying Wang
df925cefc1 am f91a014f: am 0a196075: am 446f00c9: am ce156811: Merge "Split WITHOUT_CLANG to WITHOUT_HOST_CLANG and WITHOUT_TARGET_CLANG"
* commit 'f91a014f6f2c176f6e1f99cb3bb90d707e0be31c':
  Split WITHOUT_CLANG to WITHOUT_HOST_CLANG and WITHOUT_TARGET_CLANG
2014-03-11 02:15:11 +00:00
Ying Wang
ba8b377d89 Split WITHOUT_CLANG to WITHOUT_HOST_CLANG and WITHOUT_TARGET_CLANG
Still keep WITHOUT_CLANG, which enables both.

Bug: 13402154
Change-Id: I32cb668223997719875751bf3d64f592d6086830
2014-03-10 18:59:12 -07:00
Nicolas Geoffray
b19e62b3f6 am 77d4e8ed: am 2801735a: am d85ef325: am 460ed38a: Merge "Extend YACC and LEX handling to .yy and .ll files."
* commit '77d4e8ed4456c0d033d0740881f0843f00893248':
  Extend YACC and LEX handling to .yy and .ll files.
2014-03-03 18:15:22 +00:00
Nicolas Geoffray
9484e2e13f Extend YACC and LEX handling to .yy and .ll files.
The external mclinker project has .yy and .ll files that
require the same rules as .y and .l.

Change-Id: I2b02df9a74bac9c215f8aeb8ee2ff0d2616526ed
2014-03-03 15:58:46 +00:00
Ying Wang
031e0fb308 Generate .pb.cc/.pb.h to arch-neutral generated_sources_dir
So a library can export the proto's include path that can be used with
both archs in multilib build.

Change-Id: Ia0f92f0b40e39dc3fa426c69c52139a0a8f04077
2014-02-25 16:12:16 -08:00
Ying Wang
2bc6328ff7 am ead8944e: Generate .pb.cc/.pb.h to arch-neutral generated_sources_dir
* commit 'ead8944e8da9a4b6dbe344b8d93b2c6b2a730f68':
  Generate .pb.cc/.pb.h to arch-neutral generated_sources_dir
2014-02-25 21:47:15 +00:00
Ying Wang
ead8944e8d Generate .pb.cc/.pb.h to arch-neutral generated_sources_dir
So a library can export the proto's include path that can be used with
both archs in multilib build.

Change-Id: Ia0f92f0b40e39dc3fa426c69c52139a0a8f04077
2014-02-25 11:18:40 -08:00
Ying Wang
28edfe16f7 am 0c9c0bfc: am 9aadde67: Merge "Include in upper-level makefiles"
* commit '0c9c0bfcc6f2d10fa7235f48b0174a1a120ca599':
  Include $(BUILD_COPY_HEADERS) in upper-level makefiles
2014-02-21 04:19:45 +00:00
Ying Wang
bf4a8d3069 Include $(BUILD_COPY_HEADERS) in upper-level makefiles
This makes sure copy_headers.mk only be included onces, no matter
it's for the 1st arch or the 2nd arch.

Change-Id: I80a558fbdb52861f176bd27a21c302069a5cc3ce
2014-02-20 13:54:43 -08:00
Ying Wang
d3579f4ee0 Merge "Add a dummy build recipe for the proto generated header files" 2014-02-14 02:29:52 +00:00
Ying Wang
8c556594bf 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-02-13 18:04:00 -08:00
Colin Cross
2d20670380 Add generated sources dir to the default include path
Change-Id: I71fed98dfbc0bf5efad069a251eee2e5ab2e5fe6
2014-02-13 15:36:41 -08:00
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
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
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
44a752659c build: support LOCAL_*_32 and LOCAL_*_64
Support the following new variables based on whether the current multilib
target is 32 bit or 64 bit:
LOCAL_CFLAGS_32
LOCAL_CFLAGS_64
LOCAL_LDFLAGS_32
LOCAL_LDFLAGS_64
LOCAL_ASFLAGS_32
LOCAL_ASFLAGS_64
LOCAL_C_INCLUDES_32
LOCAL_C_INCLUDES_64

Change-Id: Ia868d56dff114be301bf8297eec768675f186927
2014-01-29 18:35:23 -08:00
Colin Cross
8f47fc379e Add support for TARGET_GLOBAL_UNSUPPORTED_CFLAGS
To ease the transition between toolchains, allow a target to specify
a list of cflags that the toolchain does not support.  These will be
filtered out of the cflags provided by the module.

Add TARGET_GLOBAL_UNSUPPORTED_CFLAGS := -fstack-protector for the
aarch64 toolchain, it does not yet suport -fstack-protector.

Change-Id: I168d0c6f131326fad305ec86fad46e6a3e03295a
2014-01-27 18:21:12 -08: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
Ying Wang
dbdafdb865 Support arch-specific LOCAL_C_INCLUDES.
Bug: 11654773
Change-Id: I89c7ce7ff8bea15cb81f9cd9b0188b54beed3422
2014-01-27 10:27:19 -08:00
Colin Cross
6e087a339b build: use correct arm vs thumb arguments for 2nd arch builds
Set arm_objects_mode and normal_objects_mode when building a
module for arm when it is the 2nd arch.

Change-Id: I5f7df519b6e1dde6cbf92d106681f07a58e1f1f2
2014-01-24 13:42:01 -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
ec6d6262ac Replace all references to LOCAL_GENERATED_SOURCES with my_generated_sources
Now the RS generated sources are only appended to my_generated_sources.

Bug: 11654773
Change-Id: If8dbf3c08fed0b9945dd32b8c809331c17c4bc85
2014-01-24 13:35:47 -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
4587455075 Remove aprof support from the build system.
This reverts the commit 70dc3e1d.

Change-Id: I480b005579805d2608d05dac41e32bb44642e813
2014-01-14 14:26:05 -08:00
Ying Wang
7fff9a1a56 Define PRIVATE_TARGET_ variables for only target modules.
Change-Id: I12c54bfffd9acb78a61d1032a087a0edaf3bf12c
2014-01-09 14:39:41 -08:00
Logan Chien
e6f65438a4 Allow clang to build host binaries.
Change-Id: I7e4f9dc6f69a97cfefdfa2ed55c5d7b8ad496da7
2014-01-07 14:49:20 +08:00
Andrew Hsieh
246daf755a resolved conflicts for merge of 2b5d2c55 to klp-dev-plus-aosp
Change-Id: Icd9d5eff3f9acba042c100f694309f902c9d56cf
2013-09-10 18:07:23 -07:00
Andrew Hsieh
906cb78168 Add "WITH_STATIC_ANALYZER=1 m/mm/mmm/mma/mmma ..."
The new option WITH_STATIC_ANALYZER=1 instructs build system to
run static analyzer via "clang --analyze" on a successful build.
If analyzer finds any issue, instruction to open report is displayed.
See http://clang-analyzer.llvm.org/scan-build.html for details.

WITH_STATIC_ANALYZER trumps WITH_SYNTAX_CHECK if both exist.

Project use lots of GCC extensions (eg. nested function) not supported
by clang may opt out by adding LOCAL_NO_STATIC_ANALYZER:=true

Change-Id: I9970560560bd52ce5f0fd7129c3488629627c735
2013-09-10 17:37:14 +08:00