Commit Graph

722 Commits

Author SHA1 Message Date
Dan Willemsen
bab0fa6928 Add basic VNDK support in Make
Add BOARD_VNDK_VERSION and LOCAL_USE_VNDK to specify the version of the
VNDK that will be used globally, and whether to use the VNDK on a module
basis.

If the board is using the VNDK:

* LOCAL_COPY_HEADERS may only be used by modules defining LOCAL_USE_VNDK
* LOCAL_USE_VNDK modules will compile against the NDK headers and stub
  libraries, but continue to use the platform libc++.
* LOCAL_USE_VNDK modules will not have the global includes like
  system/core/include, but it will use device-specific kernel headers.

This change does not attempt to enforce any linking constraints, that
will come in a later patch.

Test: out/build-aosp_arm.ninja is identical before/after
Change-Id: Icce65d4974f085093d500b5b2516983788fe2905
2016-11-28 13:46:17 -08:00
Dan Albert
4bf74cdcb2 Merge "Support LOCAL_SDK_VERSION := current for NDK." am: c7d2fe614e am: 6cac9ba834 am: 1cb992bc8e
am: a7019e2493

Change-Id: I4573c205d92f659d4a72a64fe87f957605a57f70
2016-11-18 19:20:08 +00:00
Treehugger Robot
c7d2fe614e Merge "Support LOCAL_SDK_VERSION := current for NDK." 2016-11-18 19:04:40 +00:00
Dan Willemsen
2c0c8d89ac Merge "Use new -ninja flag to aidl-cpp" am: 7d4c926ed7 am: 676610e090 am: bcb8dfe2b2
am: 31488c301b

Change-Id: I779d280bf82171e2e4579ec2cdb0784eda596d79
2016-11-13 20:22:18 +00:00
Dan Willemsen
fb84281342 Use new -ninja flag to aidl-cpp
This make aidl-cpp write out a dep file that ninja parses correctly.

Test: Manually inspect ninja depfile
Change-Id: I4890a91eb29a6388e17b1ffac23a3dc0ffe6c212
2016-11-13 09:44:25 -08:00
Dan Willemsen
20a9e9f18e Merge "Remove transform-d-to-p" am: da85fecaf1 am: 39826d3cc7 am: 1551f77f83
am: db4c584a67

Change-Id: I85bdc0c4a30681078565be159b7d6b83737d6787
2016-11-11 22:02:57 +00:00
Dan Willemsen
461d844a40 Remove transform-d-to-p
Ninja doesn't need the phony make targets, in fact, the parser doesn't
handle them correctly and ends up duplicating the dependencies. This
shrinks a `m native` deps file from 54M -> 35M on AOSP.

Test: Compare out/build-aosp_angler.ninja before/after
Test: wrote a tool to dump the .ninja_deps, added dedup feature, files
      identical after dedup.
Change-Id: Iec7a9a0739e8678c1f4db79c68e423a39b9aad4b
2016-11-10 21:55:01 -08:00
Dan Albert
988107d35c Support LOCAL_SDK_VERSION := current for NDK.
Test: Added a module using this and checked the link command line.
Bug: None
Change-Id: I3a55e4638340d8835c09ebc6a1440bece962d36e
2016-11-08 15:37:43 -08:00
Dan Willemsen
74550c8b72 Merge "Improve dotdot workaround when src begins with '/'" am: 7918e5121a am: 05b0da9441 am: 371c403fa8
am: f7df136f07

Change-Id: I7d906092c8619cf79a9a07a85ff0e4729cb1851d
2016-10-31 23:51:01 +00:00
Dan Willemsen
c57894c204 Improve dotdot workaround when src begins with '/'
There are some source files in our tree that use some text processing to
find source files, and end up with source file names that look like:

  /../../dir/file.c

This isn't fixed by our dotdot workarounds because the filename doesn't
start with '../', so strip the initial '/' from any source files, since
they are all relative to $(LOCAL_PATH) anyways.

Bug: 32514380
Test: Build internal source with this problem
Test: Compare build-aosp_angler.ninja before/after
Change-Id: If869419c3d3ba35d55f6e19d9332515695e47d24
2016-10-28 16:30:48 -07:00
Colin Cross
342c220531 Merge "Don't pass -Wl,--no-undefined to host targets" am: fe3e1818e5 am: 44d966cf6a
am: 4db457e030

Change-Id: I54550bb97594d2b9949026beb0c4dd2088563c06
2016-10-21 23:15:06 +00:00
Colin Cross
a82fa12c54 Don't pass -Wl,--no-undefined to host targets
Host builds were compiling without -Wl,--no-undefined because of an ASAN
issue.  Pass -Wl,--no-undefined for host builds unless sanitzers are
enabled.  Also fix LOCAL_ALLOW_UNDEFINED_SYMBOLS on darwin, where
disallowing undefined symbols is the default.

Test: m -j host
Test: m -j SANITIZE_HOST=address host
Bug: 32305815
Change-Id: I0344c321610c55eb8b2092b01e50e4a93a0e85df
2016-10-20 16:25:18 -07:00
Colin Cross
fb824ab27e Merge "Use default -std values exported from soong" am: dcd73b5043 am: b03ba67ebc
am: 9fa9e2a4cd

Change-Id: I7209379c041ad4ffd3f53e4404f4e6d49b9567dd
2016-10-20 22:07:34 +00:00
Colin Cross
e56e356c46 Use default -std values exported from soong
Test: builds
Change-Id: Ic7b7d226131a2a0ea1f099f8a0fc895448384081
2016-10-20 14:09:24 -07:00
Ryan Campbell
7a923a4dc1 Merge "Define coverage paths using comma-separated list." am: 8a4b4e8432 am: 96bc733ae9
am: 78055c2bfe

Change-Id: If414c9d2868242e03abf20b2d21e317ffccca677
2016-10-20 01:29:03 +00:00
Ryan Campbell
20f301f4bb Define coverage paths using comma-separated list.
Change COVERAGE_PATHS to access a comma-separated list of paths
instead of a space-separated list to make for easier escaping in
configuration files.

Test: tested using local bullhead build with coverage on lights and nfc
Change-Id: Iec014c8b4fbefcbcc5d865e6acba92bf6364ee3a
2016-10-18 10:25:15 -07:00
Ryan Campbell
47684fdad6 Merge "Fix bug preventing multi-module native coverage." am: 3372ce615a am: 74ef8e0a88
am: 9a0b234763

Change-Id: Ia145ecc5e64abc138baca462c5ca953eb9b19e2b
2016-10-18 01:02:33 +00:00
Ryan Campbell
4a3be3db47 Fix bug preventing multi-module native coverage.
Fix a whitespace bug causing coverage to be enabled on all modules
whenever more than one module is specified. This is caused by
comparing whitespace to the empty string, which are not equal. Fix
by stripping the output to check for path matches.

Test: tested using local build with coverage enabled on NFC, lights
Change-Id: I61a775cfd135f94ea1e1ee9fdbed3c64c5bb1a2e
2016-10-17 15:43:21 -07:00
Chih-hung Hsieh
a9d484ac3a Merge "Add -Werror to compile warning free projects." am: 355e96774b am: 05388b7618 am: 9f82feb9e6
am: a70f8fc5d5

Change-Id: Ia43c8ed7cadbbc90e3199101d1f56a96ad10b5f2
2016-10-13 01:12:47 +00:00
Chih-Hung Hsieh
bab0488828 Add -Werror to compile warning free projects.
* Add -Werror if LOCAL_PATH is in the WARNING_DISALLOWED project list,
  or not in the WARNING_ALLOWED project list.

Test: Build for major targets.
Change-Id: I12235ee1ca1c1837530693699e705e1955275565
2016-10-11 15:38:39 -07:00
Colin Cross
1132b04aba Merge "Enable toc optimization for host builds" am: 5d8c73e373 am: 4276c12d20 am: e4e04c2f92
am: 46e7aa81e0

Change-Id: Id50148e31237e6b9fdf2f795aa2d41233fe2adaf
2016-10-04 21:10:15 +00:00
Colin Cross
d2ff157159 Enable toc optimization for host builds
The toc optimization had been disabled for host builds to ensure that
the timestamp of the final binary changed whenever its implementation
changed, in order to support rerunning host tools that were modified
during incremental builds.  However, only the final install rule must be
re-run to update the timestamp, and not the link rule.

Update the shared library install dependencies to use normal
dependencies instead of order-only dependencies for host modules, and
then enable the the toc optimization for host modules.  If the
implementation of a library changes it will be reinstalled, and
libraries or binaries that depend on it will also be reinstalled.

Bug: 26015464
Test: m -j; touch art/disassembler/disassembler_x86.cc; m -j, verify
      out/host/linux-x86/bin/oatdump is updated
Change-Id: I0a14decc1994eb55ad269d841943aef66e320c63
2016-10-03 17:53:44 -07:00
Dan Willemsen
3fbe1f7327 Merge "Optimize rebuilds by reducing $(shell) usage" am: f009531772 am: 466f4f2b9e am: c1aff754c4
am: 09bd2ae7d8

Change-Id: I3250258380faa279e6533e0eed3d7f12b916a4d3
2016-10-03 21:31:40 +00:00
Dan Willemsen
b011810c25 Optimize rebuilds by reducing $(shell) usage
$(shell) isn't particularly fast in Kati, and they have to be executed
both when reading the makefiles and determining whether the ninja file
needs to be regenerated.

Right now, the regen time is mostly hidden because we run them in
parallel. We've also configured it to ignore any commands that contain
"echo", "date", or the output directory. That happens to remove most
commands that contain side effects, so running them in parallel is fine.

But the side effects contain some important things, like the clean up
necessary when switching products. So I'm removing those filters, and
then we'll need to run the shell commands in sequence, since there will
be side-effects. That makes regen take longer though, so use pure-Make
implementations instead of $(shell) where possible.

This set of changes reduces aosp/master aosp_arm64-eng build $(shell)
usage and time by 2/3:

*kati*: func shell time: 3.135095 / 709
*kati*: func shell time: 1.067331 / 236

Bug: 30947985
Test: Manual test lines for math functions
Test: Compare build-aosp_arm64.ninja before/after
Change-Id: I4fc9d6318957992921972994f277c17918e7e1eb
2016-09-30 21:14:13 -07:00
Dan Willemsen
a5fa6ca7fa Merge "Add LOCAL_EXPORT_C_INCLUDE_DEPS" am: 1c0b5eaf83 am: b1fdb9745f am: b42e166273
am: a7d2992ba3

Change-Id: I4011f484aa2295a7cd42d161370bb4374ed91c58
2016-09-30 01:52:46 +00:00
Dan Willemsen
ba6a164da7 Add LOCAL_EXPORT_C_INCLUDE_DEPS
This shouldn't be necessary for most makefiles, since we add
$(LOCAL_GENERATED_SOURCES) to this already included, but for prebuilts
that aren't actually prebuilts (Soong modules), we need to pass
dependencies so that the generated headers are built before being used.

Bug: 31742855
Test: Use, inspect build-*.ninja
Change-Id: I8d9f675af639d3f40780d48a016fc079a82531c2
2016-09-29 12:08:29 -07:00
Dan Willemsen
2d254448ce Merge "Remove WITH_SYNTAX_CHECK" am: c114bd9dbf am: d640e062e8 am: 28d50c498b
am: a4c82e7b3a

Change-Id: I7f15e1ff7949a0061a387b84000811611e3aa266
2016-09-28 02:00:53 +00:00
Dan Willemsen
e68100e8bb Remove WITH_SYNTAX_CHECK
It's no longer used. The majority of the platform is on clang anyways.

Test: m -j
Change-Id: I4fb4375eaad2469e169d34c47ae3fe2a0540aeec
2016-09-26 17:37:19 -07:00
Keun Soo Yim
949c422dd3 Merge "support vts compile mode flag" 2016-09-22 03:08:43 +00:00
Dan Willemsen
98b277b930 Merge "Fix link_type checking" am: 665cda08f0 am: 1347d959de am: 8459bbca6f
am: 83aba3a7ab

Change-Id: I0cca5c1e262c8a8d92858ed5c927e4775c2e3a6e
2016-09-20 03:29:59 +00:00
Dan Willemsen
665cda08f0 Merge "Fix link_type checking" 2016-09-19 21:54:09 +00:00
Dan Albert
222f6b4361 Use libcompiler-rt_extras with NDK builds. am: c28e4bcb1c am: d042352816 am: d7c48e9f9d
am: d11f78fbd5

Change-Id: I63661c6eb5ab5172732bbb60367483cec3eecf8b
2016-09-16 06:56:35 +00:00
Dan Albert
9ef0a8bb26 Always link libdl with libc++ for the NDK. am: 2936a1e84b am: ec6223ec3c am: 7fde1f9c6e
am: 3f0f58a60b

Change-Id: Ic924ff213b2a9c3e847ea721f836b05bbac3bc3e
2016-09-16 06:56:26 +00:00
Dan Willemsen
121e284b46 Fix link_type checking
This was printing "error:", but not actually triggering an error.
Instead of trying to write a single line bash script to handle this,
move the actual check into python. This allows us to print all of the
errors for a single module before triggering the failure.

Also updates the warning format and the warn.py script to properly parse
these warning. Many of the java:sdk -> java:platform warnings are false
positives due to the lack of LOCAL_SDK_VERSION markings on prebuilts.

Individual tags can be marked as warnings now, which lets us check for
system libraries linking against vendor libraries (which won't work on
AOSP). I'm not sure this is a completely valid check, which one reason
that it's just a warning.

Test: m all_link_types (with some missing libs commented out)
Change-Id: I333e418c9a4511b7c7e826891ae481da08fbf6f9
2016-09-15 14:40:39 -07:00
Dan Albert
c28e4bcb1c Use libcompiler-rt_extras with NDK builds.
We want to build things in CTS (things built against the NDK) with
integer overflow checks. Some projects in the tree also make explicit
calls to the overflow checked builtins, and those projects need to be
built with the NDK (external/dng_sdk is the specific example that
brought this up).

Test: make checkbuild tests
Bug: None
Change-Id: Iab27dd0d931f723140de242049fa72f3b1ce0fb8
2016-09-14 16:08:48 -07:00
Dan Albert
2936a1e84b Always link libdl with libc++ for the NDK.
libc++ requires libdl whether it's statically linked or not.

Test: make checkbuild tests
Bug: None
Change-Id: I8abdcfaef779b358196716ab1193cebe278317ac
2016-09-14 16:08:04 -07:00
Ryan Campbell
af2091b217 Merge "Implement path-based enabling of code coverage." am: 1e1ecd5d07 am: 6b92bb4ebb am: 577eab3323
am: 5a63fe6856

Change-Id: I264e7ee9d8139c79fb882f40f1cb6854d2e24a8b
2016-09-14 03:05:55 +00:00
Dan Willemsen
a7919bd18c Merge "Fix building static linux binaries" am: 8bb71cef9f am: 5cf6a4578d am: a4f8d8b2a3
am: 93a0afc749

Change-Id: I374e33412c727a0df4522156db7cd47268e4c1e3
2016-09-14 03:05:52 +00:00
Ryan Campbell
1e1ecd5d07 Merge "Implement path-based enabling of code coverage." 2016-09-13 19:48:34 +00:00
Dan Willemsen
c9aa6fca41 Fix building static linux binaries
BUILD_HOST_static has been broken because I was stripping
-Wl,--start-group/-Wl,--end-group into a separate set of ldflags instead
of keeping them wrapped around some of the ldlibs. So don't pass some of
the build system flags through the ldlibs checker.

Bug: 30898128
Change-Id: I332b42679695cdc5da3cb0036290b6a3544699c0
2016-09-13 17:48:07 +00:00
Ryan Campbell
81c9d29dad Implement path-based enabling of code coverage.
Native coverage is enabled by setting NATIVE_COVERAGE to true
and specifying a list of paths in the COVERAGE_PATHS
environment variable. Files are exported to a zip file in the
target out directory.

Change-Id: I66a2ddd88e849bec1cc0cdae1b51fe18a007e2c3
2016-09-13 10:27:25 -07:00
Dan Willemsen
8eb4d8589d Merge "Fix libgcov.a dependency" am: f9d5fb97cb am: 4b9f214a7b am: 64deaba889
am: 2277a46756

Change-Id: I57dc91cf9b928b4f1b6661474b653e453e2f9041
2016-09-12 19:42:17 +00:00
Dan Willemsen
7db70a3b0a Fix libgcov.a dependency
Now that Soong is generating libgcov.a, we need a dependency here.

Change-Id: Ie8d97339fd584eed178cc57b9333d38754ab1135
2016-09-12 18:09:20 +00:00
Keun Soo Yim
3c0ffa319c support vts compile mode flag
Change-Id: I05c347851cfc41c617b055209d81318a1a60918e
2016-09-08 20:36:34 -07:00
Chih-hung Hsieh
6afe656b6d Merge "Define DEFAULT_TIDY_HEADER_DIRS." am: 9d66e2c2ef am: 84be3dc50a am: 59ac695071
am: e28fd9f2e4

Change-Id: I40f077e04438e2b3c54887d82a782af460304aa3
2016-09-08 20:42:34 +00:00
Chih-Hung Hsieh
0a33f65cc8 Define DEFAULT_TIDY_HEADER_DIRS.
Let clang-tidy report warnings in header files in the
system and current directories but not the external
and vendor directories.

Test: build with WITH_TIDY=1
Change-Id: I1723b8eb95948961fb7164a19989e0a926e5bf8a
2016-09-06 20:06:28 -07:00
Dan Willemsen
cfa84e90bd Merge "Identify modules ready to be converted to Soong" am: c6bada8acd am: 6596082d00 am: 52438f9fcf
am: b2bf9125f2

Change-Id: Ib249a1cdd546cf3bafed7002ac9e05080f55715d
2016-08-26 23:28:07 +00:00
Dan Willemsen
fc92fb2b9b Identify modules ready to be converted to Soong
The output will be in the `m dist` results as soong_to_convert.txt, or
can be built using:

  $ m $OUT/soong_to_convert.txt

The output is a list of modules that are probably ready to convert to
Soong:

  # Blocked on Module (potential problems)
           283 libEGL (srcs_dotarm)
           246 libicuuc (dotdot_incs dotdot_srcs)
           221 libspeexresampler
           215 libcamera_metadata
               ...
             0 zram-perf (dotdot_incs)

The number at the beginning of the line shows how many native modules
depend on that module.

All of their dependencies have been satisfied, and any potential
problems that Make can detect are listed in parenthesis after the
module:

  dotdot_srcs: LOCAL_SRC_FILES contains paths outside $(LOCAL_PATH)
  dotdot_incs: LOCAL_C_INCLUDES contains paths include '..'
  srcs_dotarm: LOCAL_SRC_FILES contains source files like <...>.c.arm
  aidl: LOCAL_SRC_FILES contains .aidl sources
  dbus: LOCAL_SRC_FILES contains .dbus-xml sources
  objc: LOCAL_SRC_FILES contains Objective-C sources
  proto: LOCAL_SRC_FILES contains .proto sources
  rs: LOCAL_SRC_FILES contains renderscript sources
  vts: LOCAL_SRC_FILES contains .vts sources

Not all problems can be discovered, but this is a starting point.

Change-Id: I45674fe93fd267d4d1fb0bc3bc9aa025e20c5ac6
2016-08-26 13:33:31 -07:00
TreeHugger Robot
a2071052e8 Merge "aux: allow non-clang toolchains for AUX builds" 2016-08-19 17:43:50 +00:00
Alexey Polyudov
65d7a34b85 aux: allow non-clang toolchains for AUX builds
Change-Id: I38fcc0ad66cadd1f6008169fb1c1baea77734695
Signed-off-by: Alexey Polyudov <apolyudov@google.com>
2016-08-19 09:06:36 -07:00