Commit graph

418 commits

Author SHA1 Message Date
Ying Wang
8e770bc67f We still use acp in copy-file-to-target in this branch.
Change-Id: Ibae51f8db69d8ab3b5ae7c086f519236e5d2043e
2016-05-06 15:44:25 -07:00
Ying Wang
bb37c657ae Harden dependency on generated sources.
Previously if a library has custom generated headers in
LOCAL_GENERATED_SOURCES and export its include path with
LOCAL_EXPORT_C_INCLUDE_DIRS, there is almost no way for the users of the
library to set up dependency of their object files on the generated
headers.
This change makes the generated sources dependency of the library's
export_includes, which is guaranteed generated before client code gets
compiled.

Also we added proto-generated cpp files to my_generated_sources so that
we can deal solely with $(my_generated_sources). Because many
Android.mks assume the generted .pb.hs are in $(generated_sources_dir)
instead of $(intermediates), we have to generate the source files in
$(generated_sources_dir) and make a copy in $(intermediates).

Bug: 28622149
Change-Id: I73b21443fa706f3735faf16356ed8c08fbfecca6
(Cherry-pick from commit 05f9f35836)
2016-05-06 13:55:47 -07:00
Keun Soo Yim
3d4847525f build rule change for VTS (vendor test suite)'s metadata files
Change-Id: I76b81529a97b672e08632703d2f6a2777ee8811e
2016-04-25 13:06:57 -07:00
Shinichiro Hamaji
0f846c73e1 Replace last -includes by .KATI_DEPFILE
There was a typo in binary.mk. compile-dotdot-XXX-file in
definitions.mk was also using -include.

Bug: 26839129
Bug: 27886012
Change-Id: I4a0145fb70413998cc65d30d2efcd68af07b4800
(cherry picked from commit 72904774a3)
2016-03-29 12:10:48 -07:00
Shinichiro Hamaji
2fb7b61a2e Use KATI_DEPFILE for .P associated with object files
Also specify "-d keepdepfile" to ninja so .P files won't be
deleted by ninja.

-include for .s files are removed because GCC doesn't
generate .d files for .s files.

Bug: 26839129
Bug: 27886012
Change-Id: If00e93c7a33449ec314a5cdba438475a32979f4e
(cherry picked from commit 4037c4225a)
2016-03-29 12:10:03 -07:00
Chih-Hung Hsieh
71d8cbd9b6 Use newest clang static analyzers.
* When WITH_STATIC_ANALYZER is set and non-zero, and clang compiler is used,
  call new clang ccc-analyzer or c++-analyzer.
* Otherwise, if WITH_SYNTAX_CHECK is set and non-zero,
  call compiler with -fsyntax-only.
* Replace "--sysroot=path" with "--sysroot path", to work with ccc-analyzer.
* ccc-analyzer executes the original compilation command to generate
  object files before calling clang with --analyze to do static analysis.
* When clang is called with --analyze, macro __clang_analyzer__ is defined.

BUG: 13287788

(cherry picked from commit 765c1ea6d7)

Change-Id: I6e51e51ff4ed3ce514f60d090494dcdf6e520b04
2016-02-26 18:51:26 -08:00
Dan Willemsen
6fca454c41 Merge "Fix unused src tracking for generated .o files" am: 478913f88f
am: d02bb7bfc5

* commit 'd02bb7bfc51343ab88eb2e05157155673ddf8130':
  Fix unused src tracking for generated .o files
2016-02-05 18:20:34 +00:00
Dan Willemsen
444c323bc1 Fix unused src tracking for generated .o files
*.o files that are passed in via LOCAL_GENERATED_SOURCES are added
directly to all_objects, they are not mixed with the normal_objects that
we track. So omit them from they my_gen_src_files list so that we don't
warn that they're unused.

Change-Id: I94b85504032e70fbcc00207d6200557700dd0a89
2016-02-04 14:22:31 -08:00
Dan Willemsen
f244691a14 Merge "Track ObjC object mapping" am: fedafc879d
am: d3212f55c3

* commit 'd3212f55c3ee2b762144089a932e8995519b0a57':
  Track ObjC object mapping
2016-02-02 09:13:48 +00:00
Dan Willemsen
62f2e56c72 Track ObjC object mapping
Objective-C .m/.mm files were not being tracked, so they were showing
up as unused source files (on Darwin). They were also triggering an
internal build system warning because the new object list did not
match the current list.

Change-Id: I01fff8c5587fe168106c60782080d60744311f6f
2016-02-01 18:55:23 -08:00
Dan Willemsen
917de453ee Merge "Order objects based on LOCAL_SRC_FILES and LOCAL_GENERATED_SOURCES" am: 224466b1af
am: 991c840313

* commit '991c8403131dc5781d3d4a1d10d292dc99fee202':
  Order objects based on LOCAL_SRC_FILES and LOCAL_GENERATED_SOURCES
2016-01-30 02:49:08 +00:00
Dan Willemsen
3bb168f10d Order objects based on LOCAL_SRC_FILES and LOCAL_GENERATED_SOURCES
We have been reordering objects to the linker based on how they were
generated. In soong, they're ordered based on the order listed in the
src_files.

Keep track of which source files created which object files so that we
can create the ordered list. Optionally change the order, based on
BINARY_OBJECTS_ORDER. That way we can compare make and soong builds.

Since we're keeping track of the used source files, warn when an entry
in LOCAL_SRC_FILES is not used. (whether it is an unused file like a
header, or a typo)

LOCAL_GENERATED_SOURCES is not verified, since it is valid to add
headers and other files in that list (to set up dependencies).

Change-Id: I1dfbbb3aa570c11c1db3b7133e46ed0b8c3b8989
2016-01-27 16:48:02 -08:00
Shinichiro Hamaji
d6cad82b89 Merge "Use dependency files generated by llvm-rs-cc" am: 19f99a742d
am: d39a629d3a

* commit 'd39a629d3ae3b072f419972356bcfa3fc340b1bd':
  Use dependency files generated by llvm-rs-cc
2016-01-26 06:41:53 +00:00
Shinichiro Hamaji
2e45fd036a Use dependency files generated by llvm-rs-cc
This was a regression since kati has been introduced. This CL
introduces include-depfile function to make it easier to write
Makefiles which work with both make and kati.

As ninja can handle only a single dependency file per a build
rule, now we merge multiple .d files generated by llvm-rs-cc
into a .d file.

Change-Id: Iaf64a8f0523ab98115837e6e06abd50f06620363
2016-01-26 14:24:46 +09:00
Dan Willemsen
37693fc24b Merge "Pass the arm/thumb cflags to assembly files" am: 60c9200c1e
am: 537e093fe8

* commit '537e093fe893e21ecab7aba2a32c99f18f5350b6':
  Pass the arm/thumb cflags to assembly files
2016-01-21 23:25:34 +00:00
Dan Willemsen
60c9200c1e Merge "Pass the arm/thumb cflags to assembly files" 2016-01-21 22:31:11 +00:00
Christopher Wiley
e46193a608 Merge "Separate aidl dependencies from compiler dependencies" am: 8edda3afdf
am: cfd817d058

* commit 'cfd817d058994ebda3b98db4e8113752753d422e':
  Separate aidl dependencies from compiler dependencies
2016-01-21 18:29:25 +00:00
Christopher Wiley
d1eea90a72 Merge "Keep aidl generated C++ inside the generated folder" am: 11feb8b075
am: 7c52b2d878

* commit '7c52b2d878e6234cb6e36942c87c438fa1e80240':
  Keep aidl generated C++ inside the generated folder
2016-01-21 18:29:15 +00:00
Christopher Wiley
087f327304 Separate aidl dependencies from compiler dependencies
Both aidl and clang/gcc were putting their dependencies in the same
place.  Move aidl's dependencies to a file ending with .aidl.P rather
than the compiler's .P.

While here, inform kati that we have these special dep files.

Bug:26409006
Test: Rebuild, note both files being generated

Change-Id: I29d2eea822235d60713c2059f3a314e475eb5aa3
2016-01-20 12:54:09 -08:00
Christopher Wiley
257796c62d Keep aidl generated C++ inside the generated folder
Transform ../ to dotdot/ for C++ generateds from .aidl source files.
This forces us to use one layer of indirection to calculate the build
rules for .aidl files, since we can no longer use a pattern rule.

This was tested by modifying system/tools/aidl's Android.mk to refer to
its .aidl files by going up two directories and then repeating the
directories again.  When I print the build rules with $(info) I see that
dotdot/ appears in appropriate places (C++ paths, but not .aidl paths).

Bug: 26407018
Test: Described above.

Change-Id: I397c9d10408c0c66d8b5a247a1f34eb4bf4f74ce
2016-01-20 09:17:20 -08:00
Dan Willemsen
45d38c06b4 Pass the arm/thumb cflags to assembly files
This effectively changes the default instruction set of assembly files
from arm to thumb in order to match the default for C/C++.

Change-Id: I8684f144a1195b53b3e0fdd04cacf77f6a131c7e
2016-01-19 12:37:17 -08:00
Ying Wang
f0ebe165b9 Generate .c for .y and .l
- For .l/.y source files, generate .c files; for .ll/.yy source files,
  generate c++ files.
- Simplified the rules by adding the generated sources to
  my_generated_sources.
- Simplified generated header file naming by always using .h extension
  with bison's "--defines=" option.
- Removed the unnecesarry conditional inclusion to the generated
  headers. Bison already automatically generates such things.

Bug: 26492989
Change-Id: I9ab6dc149c258f7642bc36c3fa32f90ff7ee51a4
2016-01-12 21:07:27 -08:00
Ying Wang
64088f2459 Generate .c for .y and .l
- For .l/.y source files, generate .c files; for .ll/.yy source files,
  generate c++ files.
- Simplified the rules by adding the generated sources to
  my_generated_sources.
- Simplified generated header file naming by always using .h extension
  with bison's "--defines=" option.
- Removed the unnecesarry conditional inclusion to the generated
  headers. Bison already automatically generates such things.

Bug: 26492989
Change-Id: I9ab6dc149c258f7642bc36c3fa32f90ff7ee51a4
2016-01-11 17:41:56 -08:00
Chih-Hung Hsieh
b5da9d94a2 Change USE_CLANG_PLATFORM_BUILD default to true.
When USE_CLANG_PLATFORM_BUILD is not set, default will be clang/llvm.
USE_CLANG_PLATFORM_BUILD=false can be used to select gcc as default.

Bug: 23163853
Bug: 26102335
Change-Id: I434176732fa4a382be9d8d8642a1c705b023cf84
2016-01-06 11:49:25 -08:00
Ying Wang
4106b2e4c9 Merge "Disable .toc optimization for host modules." am: 7b92312ea1
am: 8449b88b2e

* commit '8449b88b2e64f49a6858ec36acca9e877585802e':
  Disable .toc optimization for host modules.
2015-12-15 19:32:42 +00:00
Ying Wang
c01f2dcb10 Disable .toc optimization for host modules.
Host binaries may be run during the build process and the internal
implementation of the shared libraries makes a difference for the build
result. This change makes sure host tools get re-linked and re-run when
any of its dependency libraries gets updated.
DEX2OAT is such a host tool. We also changed DEX2OAT as full dependency
of dex-preoptimization, so we rebuild the odex files if DEX2OAT itself,
or any dependency libraries changed.

Bug: 24597504
Change-Id: Idf0d9be82ccebd826d9c5b405a39cff437e0af29
2015-12-15 10:00:19 -08:00
Stephen Hines
2967be8a2b Merge "Revert "Change USE_CLANG_PLATFORM_BUILD default to true."" am: eca3206abb
am: 67b6cc2201

* commit '67b6cc2201f41508ea36bd0943aef545a68a679f':
  Revert "Change USE_CLANG_PLATFORM_BUILD default to true."
2015-12-13 15:13:26 -08:00
Stephen Hines
eca3206abb Merge "Revert "Change USE_CLANG_PLATFORM_BUILD default to true."" 2015-12-13 23:06:03 +00:00
Stephen Hines
7a0c88ec3e Revert "Change USE_CLANG_PLATFORM_BUILD default to true."
This reverts commit 3c8036da53.

Change-Id: I930bbebce8396d7c0abd847530640a696d3418e7
2015-12-13 22:58:22 +00:00
Dan Albert
1f6d007a23 Merge "Use lib64 for mips64 as well." am: 6674573897
am: 3340159339

* commit '33401593392cf903cb3228a7a998f91a7e392be0':
  Use lib64 for mips64 as well.
2015-12-13 13:14:37 -08:00
Dan Albert
445bc2fc2d Use lib64 for mips64 as well.
This was previously working because for some reason prebuilts/ndk had
a tangled mess of hand assembled symlinks that pointed lib -> lib64
for the multilib architectures.

Change-Id: I294d67f58f2008b1a53790cf676f5223df449cbc
2015-12-11 15:04:59 -08:00
Chih-hung Hsieh
c0b23c4780 Merge "Change USE_CLANG_PLATFORM_BUILD default to true." am: eb486309d8
am: a3fbb3b0e4

* commit 'a3fbb3b0e49bfbec697f73d4c4e77bb12f8e348e':
  Change USE_CLANG_PLATFORM_BUILD default to true.
2015-12-11 10:25:29 -08:00
Chih-Hung Hsieh
3c8036da53 Change USE_CLANG_PLATFORM_BUILD default to true.
When USE_CLANG_PLATFORM_BUILD is not set, default will be clang/llvm.
USE_CLANG_PLATFORM_BUILD=false can be used to select gcc as default.

BUG: 23163853
BUG: 26102335

Change-Id: I00604c2aef4849e8c3505b2c4002eb1c46cd1fd1
2015-12-10 14:41:55 -08:00
Dan Albert
0ba8a9cecc Merge "Fix the mips build." am: 0f8bd686e1
am: 064b18f155

* commit '064b18f1558c2a2ef9a82451a8955c4bfebbbac4':
  Fix the mips build.
2015-12-10 00:37:26 +00:00
Dan Albert
8dca15f287 Fix the mips build.
The linker can't do --hash-style=gnu for mips.

Change-Id: I66a77067f8be6fc92ca686d3e6e159beb72cf76b
2015-12-09 16:26:20 -08:00
Dan Albert
17310f6e65 Merge "Add support for LOCAL_NDK_STL_VARIANT := none." am: 2ad9079305
am: 9a986a6e68

* commit '9a986a6e682e2c22b5a63637589a88314a83316b':
  Add support for LOCAL_NDK_STL_VARIANT := none.
2015-12-09 16:24:31 -08:00
Dan Albert
2ad9079305 Merge "Add support for LOCAL_NDK_STL_VARIANT := none." 2015-12-10 00:17:23 +00:00
Dan Albert
0e2e71dc2e Add support for LOCAL_NDK_STL_VARIANT := none.
Sometimes we don't want any STL.

Change-Id: I08b4389b7882702c0e483a1456f7775fe4da1c75
2015-12-09 15:59:17 -08:00
Dan Albert
7de99574dc Merge "Build NDK binaries with --hash-style=both." am: 30cb36ff5e
am: 0477dce031

* commit '0477dce031cadff3f2b9d64fe35a3bd9afa8810f':
  Build NDK binaries with --hash-style=both.
2015-12-09 23:50:25 +00:00
Dan Albert
ee629c9ffb Build NDK binaries with --hash-style=both.
Change-Id: I1c3b7415c654b783c6bb7e38a40d4c279826400f
2015-12-09 14:52:25 -08:00
Dan Willemsen
1da3ae6fab Merge "Sanity check LOCAL_SRC_FILES_EXCLUDE" am: cc3b2a5854 am: a4769d2956
am: 2b661fe7e0

* commit '2b661fe7e03b73be082b1d5be0d21e9c64393f4b':
  Sanity check LOCAL_SRC_FILES_EXCLUDE
2015-12-05 02:08:42 +00:00
Dan Willemsen
c29172c333 Sanity check LOCAL_SRC_FILES_EXCLUDE
Error out if there is a file listed in LOCAL_SRC_FILES_EXCLUDE but not in
LOCAL_SRC_FILES. This should catch typos or other mistakes that would
otherwise be missed.

Change-Id: Iaddf575a6ce35238998ac47b59591a7d05fbcd0d
2015-12-03 22:58:39 -08:00
Colin Cross
699cc1ddf4 Merge "Make export_includes a restat rule" am: 615d66e2c2 am: b16a63cbb0
am: ceac25c571

* commit 'ceac25c5719aab39d7a15fd1c1578d8839a86911':
  Make export_includes a restat rule
2015-12-01 01:52:33 +00:00
Colin Cross
6b9bddde6f Make export_includes a restat rule
There is currently an intentional incremental rebuild issue with
import_includes.  export_includes might get updated with an identical
version, but we don't want to force everything downstream of it to
rebuild.

When BUILDING_WITH_NINJA==true, only update export_includes if it
changes, and use .KATI_RESTAT to only run downstream rules if it
changes.  import_includes will only be updated if one of the
export_includes files is updated, so object files can have a normal
dependency on import_includes instead of an order-only dependency.
All downstream object files will now be recompiled if their imported
include paths change.

Bug: 25910568
Change-Id: I626f3b24ac02ac1309049cf1ce66cfe8ec816513
2015-11-30 17:33:26 -08:00
Michael Wright
0fb087fc73 Add new Test API for CTS testing.
Bug: 25608286
Change-Id: I0334061b548970959e46392dc3a1feed8533548c
2015-11-25 11:38:44 +00:00
Christopher Wiley
2d91c61ef0 Fix race in C++ AIDL file generation
The export_includes file for a library needs to express a dependency on
all generated exported headers.  For aidl generated headers, express a
dependency on the .cpp file instead, since the generator promises to
generate this file last.  Unfortunately, the C++ headers generated from
a .aidl file depend on the contents of the file.

Change-Id: I9402b364e4538b502c0958ac8c7bd72cb0add724
2015-11-19 13:52:15 -08:00
Christopher Wiley
c7e936f530 Export generated AIDL headers
It is common for developers to generate/compile AIDL in a static
library, then link that library into an executable.  When doing this,
developers need to export the generated headers.

Bug: 25779424
Test: a refactoring of the aidl Android.mk shows this works

Change-Id: I4f7d471a601d2a683cb5a9da5e02e3fab576c26a
2015-11-19 11:04:18 -08:00
Shinichiro Hamaji
0e7587a9ea Use .KATI_RESTAT to reduce unnecessary rebuilds of binaries
When a shared object is rebuilt, all dependent libraries and
executables are rebuilt. Such rebuild is unnecessary when there
is no interface change. With this patch, .toc files will be
generated for all .so files. The rule which generates .toc files
has ninja's restat=1 and .toc files are not changed ninja won't
rebuild dependent targets.

Performance:

$ m && touch bionic/libc/stdio/stdio.c && time m
Before: 1m03s (2563 targets)
After: 21s (90 targets)

Bug: 24597504
Change-Id: Ia5dd950273d143f4e99eee8bef7478f1a94cd138
2015-11-04 15:23:59 +09:00
Dan Albert
da63739767 Drop GCC back to C++11.
Our GCC does not use a valid C++14 ABI.

Bug: http://b/25022512
Change-Id: I6f4b3450137c24a6a0c00bf956bae7a0ba280094
2015-10-26 11:28:33 -07:00
Christopher Wiley
2df75d17a8 Invoke the aidl-cpp compiler to generate C++
Bug: 23599697
Test: test application compiles generated code

Change-Id: I35255517dd0b7ef7a82134be1c862093eaa3ce6b
2015-10-19 16:18:03 -07:00