Commit graph

278 commits

Author SHA1 Message Date
Ying Wang
57d9060ffd Split [CC|CXX]_WRAPPER from [TARGET|HOST]_[CC|CXX]
- Don't overwrite [TARGET|HOST]_[CC|CXX] with the [CC|CXX]_WRAPPER prefix,
  so that we can disable the wrapper per module.
- Disable ccache on a module when FDO is enabled.

Bug: 22612634
Change-Id: Ibc04a4742d589955066c7eceb43a0da9a2b893bc
(cherry-pick from commit c671a7cf5c)
2015-07-21 14:07:50 -07:00
Evgenii Stepanov
8f5e67a98c Use a different linker for ASan binaries.
Another change in bionic/linker adds linker_asan/linker_asan64 that
know where to find ASan shared libraries.
Also, include linker_asan to the required packages list when building
for ASan.

Change-Id: I8ebe7c0091bbeb0c135708a891d33d9844373d37
2015-07-14 11:10:40 -07:00
Ying Wang
491fca9809 Simplify LOCAL_NO_CRT.
Change-Id: If2486e4861071df6b225fe7f387530a38f554484
2015-07-02 15:58:34 -07:00
Dan Albert
d160041149 Force some clang Werrors that *will* break things.
Clang is really aggressive at optimizing a handful of cases (read:
clang will ruin your day some if you write bad code). Fortunately, it
also emits a warning when it's about to do this.

To prevent anyone from suffering from these optimizations, make these
warnings errors and make them impossible to disable.

Change-Id: I5e10bb0fc2ca23190017da716b3b84635577a0bd
2015-06-10 17:24:38 -07:00
Dmitriy Ivanov
3b51f20be9 Disable packed relocations for NDK builds
Bug: http://b/20537715
Change-Id: I1289a88d5eb694980b026b695cb25edd8ba76ed5
2015-04-23 18:55:23 -07:00
Dan Albert
30a9c351d6 Use libcompiler_rt-extras on the host too.
Clang will sometimes generate this call (dex2oat with ubsan is one
known case), and it doesn't exist in libgcc.

Change-Id: I2eb68e2a326eb0407dca03b5870077eeebca1c0a
2015-04-09 16:38:55 -07:00
Ying Wang
b931956076 Convert bc depfiles to .P files.
So you don't need clean step when a header file gets moved or deleted.

Change-Id: Iec0d63b89ba17c4ef0ad75f4a52b6759f2bff58a
2015-04-03 16:55:09 -07:00
Dan Albert
343ed674e3 Use prebuilt libclang_rt.profile.
Bug: 17574078
Change-Id: I4838cd5d125a0b2bf76aad2fdaef1ee3122687e8
2015-04-01 19:03:22 -07:00
Ying Wang
d791463511 Support "LOCAL_FDO_SUPPORT := always".
"LOCAL_FDO_SUPPORT := always" enables FDO without user specifying
"BUILD_FDO_OPTIMIZE := true", i.e. it turns on FDO for a
module in any build configuration.

Change-Id: I05d8db2edb2b3f5db073fa14d5bf1083a04571c0
(cherry picked from commit 45d0143ab1)
2015-03-13 11:36:15 -07:00
Ying Wang
dedff62c8e Merge "Contain obj of ../ source files in their intermediate dir." 2015-03-11 20:43:41 +00:00
Ying Wang
168357aeda Merge "Support .asm being compiled by yasm targeted for x86_64." 2015-03-11 16:37:25 +00:00
Ying Wang
fb22a42d4f Contain obj of ../ source files in their intermediate dir.
Previously when a file in LOCAL_SRC_FILES starts with "../", the object
file may escape out of the module's intermediate directory, because we
insert the source file's path (but not with LOCAL_PATH) to the object
file's path. Even worse when two object files escape to the same destination
and cause conflict.
This change fixes the issue by removing the "../" inside the object
files' paths. To do that, we have to set up the compilation rules for
those files one by one, instead of using the one-for-all static
pattern rules.

Bug: 19641115
Change-Id: I19f3c48ece3244fa14acb2caa609deea710840d3
2015-03-10 19:05:15 -07:00
Ying Wang
fe1e5c3453 Support .asm being compiled by yasm targeted for x86_64.
Change-Id: Ia6425c38dd2f7ad2dc697213cd61b7515b9e7aff
2015-03-09 18:57:40 -07:00
Dan Albert
f633e28168 am 172cd765: Merge "Allow coverage with clang."
* commit '172cd7653e4dfb628065349ea915329076e44e1d':
  Allow coverage with clang.
2015-01-24 23:42:11 +00:00
Dan Albert
3723af1b4e am 9ba25d6b: Merge "Enable host coverage."
* commit '9ba25d6bfd983655dc9c0584887db2b6cb3be999':
  Enable host coverage.
2015-01-24 23:42:09 +00:00
Dan Albert
2c03e04480 Allow coverage with clang.
Note that this doesn't play nicely with acov out of the box. Clang
apparently generates .gcno files that aren't compatible with gcov-4.8.
This can be solved by installing gcc-4.6 and invoking lcov with
`--gcov-tool /usr/bin/gcov-4.6`.

http://stackoverflow.com/questions/17758126/clang-code-coverage-invalid-output

Change-Id: I79547e1c579fa79db47ff07d5e90c42cedbd5cbb
2015-01-24 15:18:01 -08:00
Dan Albert
43e128acfc Enable host coverage.
Don't remember why I didn't enable this for the host when I made the
first pass, but it works just fine.

Change-Id: I0892c0bc353bf8b60b432ba9f69f97281177d41d
2015-01-24 13:24:19 -08:00
Ying Wang
de9b91b01b am 6aa932ca: Merge "Add dependency of import_includes on LOCAL_MODULE_MAKEFILE"
* commit '6aa932cabf6ed14c35ae49b78464e2504af87c58':
  Add dependency of import_includes on LOCAL_MODULE_MAKEFILE
2015-01-23 00:50:39 +00:00
Ying Wang
14d02a39b0 Add dependency of import_includes on LOCAL_MODULE_MAKEFILE
So the build system regenerates import_includes when you modify
Android.mk to add a new dependency library.

Change-Id: Ic92b097b659bb68a9065e1d66da59e0dc7e2836a
2015-01-22 15:44:04 -08:00
Ying Wang
c0ff83aebd am 17967eb7: Merge "[MIPSR6] Adjust prebuilts/ndk libraries for mips32r6"
* commit '17967eb72f0eb7f495800d5065b64db4a0174362':
  [MIPSR6] Adjust prebuilts/ndk libraries for mips32r6
2015-01-16 18:32:18 +00:00
Duane Sand
1a07487493 [MIPSR6] Adjust prebuilts/ndk libraries for mips32r6
Change-Id: Ice2d0f65eced4fb7dd209fb15610ba555dd45f2c
2015-01-16 18:13:17 +00:00
Jeff Davidson
0c949bd867 am 64606bd5: Merge "Update protobuf library from 2.3 to 2.6."
* commit '64606bd5b0b702b7f6d7fd1088486b5380ccc25f':
  Update protobuf library from 2.3 to 2.6.
2015-01-15 23:01:59 +00:00
Jeff Davidson
64606bd5b0 Merge "Update protobuf library from 2.3 to 2.6." 2015-01-15 22:49:00 +00:00
Jeff Davidson
ee65f03b3c am dd198b77: Merge "Move installed module dependency setup after proto handling."
* commit 'dd198b77a1bae9974b741cc7d1dad328dce3c3b6':
  Move installed module dependency setup after proto handling.
2015-01-09 02:51:41 +00:00
Jeff Davidson
680f071ca4 Move installed module dependency setup after proto handling.
The proto handling will modify the set of dependent libraries, but
this was not actually accounted for in dependency handling because
dependencies had already been established.

Change-Id: Iba1582f3c9eeeada19569e4b5358b6ec4168fccc
2015-01-08 18:25:30 -08:00
Jeff Davidson
b1055a195a Update protobuf library from 2.3 to 2.6.
Change-Id: I02d308b01f635307dbb63ea9610db2e56eb1f31b
2015-01-08 16:35:11 -08:00
Dan Albert
023fd1fca8 am e98755f9: Merge "Add a SANITIZE_HOST flag."
* commit 'e98755f9d6619ff141d099f9da655d141da72b8e':
  Add a SANITIZE_HOST flag.
2014-12-09 13:18:44 +00:00
Dan Albert
ee582aac41 am cd814343: Merge "Let clang decide ASan linker flags for the host."
* commit 'cd814343e897ae8b6d19874163eec8d89c6ae37f':
  Let clang decide ASan linker flags for the host.
2014-12-09 13:18:43 +00:00
Dan Albert
4ae5d4b331 Add a SANITIZE_HOST flag.
We had discussed the idea of making all host tools default to using
ASAN. Even if we don't make it the default, this makes it easy for the
user to switch all host binaries over.

Change-Id: I64a5c741b1b4e9aefed3a6be8dcd4f386e06b29c
2014-12-05 22:20:37 -08:00
Dan Albert
b58fb4aac6 Let clang decide ASan linker flags for the host.
Pass -fsanitize=address instead of manually specifying asan libraries
and other linker flags.

Note that we enable LOCAL_ALLOW_UNDEFINED_SYMBOLS by default for host
builds because ASAN only links symbols in the final executable, so
there will _always_ be undefined symbols in intermediate libraries.

Bug: 18208352
Change-Id: Ief55ab296e94974560eeb10507ec8d90f0025d5c
2014-12-05 14:52:56 -08:00
Stephen Hines
b2f5510365 am 4bad2d21: Merge "Add more support for GLOBAL_CONLYFLAGS."
* commit '4bad2d2156bcb589c2d1bb223a074edc39aa428c':
  Add more support for GLOBAL_CONLYFLAGS.
2014-12-02 18:52:12 +00:00
Stephen Hines
1568029218 Add more support for GLOBAL_CONLYFLAGS.
This will be necessary to support -std=gnu99 mode for clang 3.6, which
defaults to C11 mode (unlike prior releases that use C99).

Change-Id: Iea84582f9f12ba76b988463cbc0a20bd61042538
2014-12-01 15:36:26 -08:00
Dan Albert
49d062864b am 7dcbc563: Merge "Fix a typo in my_cppflags assignment."
* commit '7dcbc563f8811259809b754d0c0edc717e1476e6':
  Fix a typo in my_cppflags assignment.
2014-12-01 18:11:05 +00:00
Dan Albert
d2fa96d7c6 Fix a typo in my_cppflags assignment.
Make strikes once again...

Change-Id: I295b4157fc7566b1a2cb925b06918dc0a96a7bce
2014-11-28 14:00:12 -08:00
Dan Albert
a4ad6442d6 am 9b0ccb74: Merge "Fix the libgcc/libatomic link order."
* commit '9b0ccb7480a0b86d27bb6c7352b5cd5e79bfbf82':
  Fix the libgcc/libatomic link order.
2014-11-18 00:03:54 +00:00
Dan Albert
9b0ccb7480 Merge "Fix the libgcc/libatomic link order." 2014-11-17 23:55:57 +00:00
Dan Albert
330f808b24 am f63ca1e9: Merge "Disable gnu style linker hash for NDK builds."
* commit 'f63ca1e9ea392d6aea7e2cfd6239d904e6ae017d':
  Disable gnu style linker hash for NDK builds.
2014-11-17 20:35:06 +00:00
Dan Albert
d3d894da74 Disable gnu style linker hash for NDK builds.
This feature is now available in AOSP, but not for any shipped
release. We don't have an API version for the release that this will
be available in yet, so for now the check is commented out.

Bug: 18395015
Change-Id: I247233d047ed5a7564d6602d47c9ad962313c8dc
2014-11-15 01:50:52 +00:00
Dan Albert
741b36e922 Fix the libgcc/libatomic link order.
The previous position of libgcc.a/libatomic.a on the link line causes
the linker to prefer satisfying dependencies from these libraries from
other libraries that might include them, rather than from libgcc.a (or
libatomic.a) itself. This imposes an ABI requirement that those
intermediate shared libraries _always_ export those symbols, which is
undesirable.

Change-Id: Ib593236b475d3e98356b2b1be6f96cee2b67378f
2014-11-13 21:29:28 -08:00
Dan Albert
5245bc8b34 am 201f6b3e: Merge "Make modules depend on their makefile."
* commit '201f6b3e92a2ef2f3a117f33cd399d5304dd385a':
  Make modules depend on their makefile.
2014-11-11 22:56:01 +00:00
Dan Albert
954b5bdcf4 Make modules depend on their makefile.
This should obviate much of the need for cleanspecs, and also make it
unnecessary to continue adding LOCAL_ADDITIONAL_DEPENDENCIES for this
sort of thing all over the tree.

Change-Id: I97aa8fd280ae868a5f6364f8b7bf3c2fe235d6ce
2014-11-11 14:30:54 -08:00
Dan Albert
a9abc487a8 am 1f637158: Merge "Use platform protobuf unless building with NDK."
* commit '1f6371583ef6ce3a384262ebb291515f5ca3a7b6':
  Use platform protobuf unless building with NDK.
2014-11-11 19:58:42 +00:00
Dan Albert
c3031c70f7 Use platform protobuf unless building with NDK.
The NDK protobuf library depends on the final target linking stlport
(since it is a static library). Since the platform stlport is going
away, we need to use a separate version of the protobuf library that
is compiled for the platform against libc++.

Note that this should be the case for _all_ libraries built with the
NDK. If a library needs to be used by both an NDK built final target
and a platform built final target, there should be both an NDK and
platform version of the library.

Bug: 15193147
Change-Id: I0ead61c2d1cd9d0248b304ab7d8682dedd6e8366
2014-11-11 11:05:27 -08:00
Jeff Davidson
4e4660961b am ed9981d9: am 427d1e98: Merge "Pull in latest protolib when using LOCAL_PROTOC_OPTIMIZE_TYPE."
* commit 'ed9981d927cb24b106df9b3c350b6b63e570026f':
  Pull in latest protolib when using LOCAL_PROTOC_OPTIMIZE_TYPE.
2014-10-29 20:42:11 +00:00
Jeff Davidson
ed9981d927 am 427d1e98: Merge "Pull in latest protolib when using LOCAL_PROTOC_OPTIMIZE_TYPE."
* commit '427d1e98eceb78f5cb8f1e50d00d342fc7f359c6':
  Pull in latest protolib when using LOCAL_PROTOC_OPTIMIZE_TYPE.
2014-10-29 17:40:05 +00:00
Jeff Davidson
427d1e98ec Merge "Pull in latest protolib when using LOCAL_PROTOC_OPTIMIZE_TYPE." 2014-10-29 17:35:17 +00:00
Dan Albert
d905ec2ac6 am ef8912d9: am d274e04a: Merge "Don\'t sort shared library link order."
* commit 'ef8912d93f5ca3722d761da6c0b0f05e2480a41d':
  Don't sort shared library link order.
2014-10-29 17:11:50 +00:00
Dan Albert
ef8912d93f am d274e04a: Merge "Don\'t sort shared library link order."
* commit 'd274e04ac4317d7cfc2de02ca215e064c018c234':
  Don't sort shared library link order.
2014-10-28 04:46:53 +00:00
Dan Albert
04eead7e2b Don't sort shared library link order.
Only sort the list of shared libraries used for naming dependencies,
not the order they are actually linked in. The order in which shared
libraries appear to the linker affects which symbols get used if there
is a multiply defined symbol.

Also link system shared libraries _after_ user provided libraries,
since a user will want their functions to override the system's if
they exist.

Change-Id: I071059d940d40a648d69d90e0699073ef520138a
2014-10-23 14:04:02 -07:00
Jeff Davidson
b8ddd55b55 Pull in latest protolib when using LOCAL_PROTOC_OPTIMIZE_TYPE.
If a module is explicitly depending on a versioned protolib, we strip
the dependency and log a warning so the unneeded dependency can be
removed.

Change-Id: I949d32fb5126f1c05e2a6ed48f6636a4a9b15a48
2014-10-23 07:20:16 -07:00