Commit graph

1729 commits

Author SHA1 Message Date
Colin Cross
a5662d5e4e Merge "Support genrules with multiple tools" 2016-11-07 20:28:25 +00:00
Colin Cross
6f080dff81 Support genrules with multiple tools
To allow genrules with more than one tool, rename the tool property to
tools and make it an array, replace $tool with $(location <label>),
and use $() for other variables for consistency.

Also remove the host bin directory from the genrule path, and the
$srcDir variable, using either of them would have caused dependency
issues.

Bug: 31948427
Test: compare build.ninja
Change-Id: Icf6d3bce2bea00fec1363fd65c0bdf96d09281bf
(cherry picked from commit de6bd86d24)
2016-11-07 10:53:49 -08:00
Colin Cross
a912be4d5b Merge "Add android.Expand"
am: 6718d0ffac

Change-Id: I76cec89f9ec6965d43967322aa9592b2cd177d0b
2016-11-05 08:08:51 +00:00
Treehugger Robot
6718d0ffac Merge "Add android.Expand" 2016-11-05 08:04:09 +00:00
Dan Albert
a562428df4 Merge "Support a "platform-only" version tag."
am: f543ff67ad

Change-Id: I6e09d6593e1240c535fbe66b1f7c5a8cb613e47d
2016-11-05 00:42:55 +00:00
Treehugger Robot
f543ff67ad Merge "Support a "platform-only" version tag." 2016-11-05 00:35:47 +00:00
Colin Cross
6bde0948d2 Add android.Expand
Add android.Expand to expand $() variables in properties.

Test: expand_test
Bug: 31948427
Change-Id: Id30856a1d21d02e8997fcf2358e4a5feeede05be
2016-11-04 15:59:23 -07:00
Dan Albert
300cb2fe87 Support a "platform-only" version tag.
We tried to support this by version name convention (foo_PLATFORM and
foo_PRIVATE), but not everything follows those conventions. libm has
a LIBC_DEPRECATED, which is a bit to generic to apply this convention
to.

Support a "platform-only" tag which omits the tagged version in the
NDK.

Test: nose2
Bug: None
Change-Id: Iba34628ea02a813d22c8b32d10e54064f17ac6df
2016-11-04 14:52:30 -07:00
Colin Cross
1797477765 Merge "Move globbing to Blueprint"
am: 19ce4bddf1

Change-Id: Ib46054619cfb12beefe1a5d03bddc1be567f212c
2016-11-04 18:17:40 +00:00
Colin Cross
19ce4bddf1 Merge "Move globbing to Blueprint" 2016-11-04 18:09:36 +00:00
Colin Cross
f723c11136 Merge "Move more includes from -isystem to -I"
am: fea56e1220

Change-Id: I9b530954788cddccff712b0a7a666e2f5772da30
2016-11-04 15:35:20 +00:00
Colin Cross
fea56e1220 Merge "Move more includes from -isystem to -I" 2016-11-04 15:31:32 +00:00
Colin Cross
7f19f37443 Move globbing to Blueprint
Move Soong's globbing-with-dependencies support into Blueprint so it can
be used for subdirs= lines in Android.bp files.

Blueprint has a slight change in behavior around subname= lines, it now
always uses the subname and doesn't fall back to Blueprints.  To support
the Blueprints files in build/blueprint, use them directly with build=.

Test: build, add source file that matches glob, rebuild
Change-Id: Ifd0b0d3bc061aae0a16d6c7ca9a1cd8672656b4d
2016-11-04 04:54:16 +00:00
Colin Cross
04972fa4bc Merge "Add proto property struct"
am: 28f9094ee7

Change-Id: Ifeff48c97c5c9013e8bf27c5dd342bce2a422130
2016-11-04 01:07:30 +00:00
Treehugger Robot
28f9094ee7 Merge "Add proto property struct" 2016-11-04 01:02:27 +00:00
Dan Willemsen
610c494886 Add support for Implicit Outputs
am: 9f3c574a39

Change-Id: I6958429c73a4c6e656241b75d444506a2832acc1
2016-11-04 00:53:59 +00:00
Colin Cross
328f04e778 Move more includes from -isystem to -I
-isystem hides all warnings.  There were no warnings in
hardware/libhardware_legacy/include, hardware/ril/include, or
libnativehelper/include, move them from -isystem to -I.

Test: m -j native
Bug: 31751828
Change-Id: I64cf08b6f6a7f2cfbb19f7d3cc2d2cc9f0157a38
2016-11-03 15:49:36 -07:00
Colin Cross
0feb169460 Add proto property struct
The ProtoProperties struct was not being added to the property struct
list, preventing proto.type and proto.static properties from being set
in Android.bp files.

Bug: 32286026
Test: Add proto.type to system/extras/perfprofd/Android.bp, run soong
Change-Id: I9a5b63ddd3e7a53881ddbfd381c42aa1b4c4f454
2016-11-03 14:38:52 -07:00
Dan Willemsen
9f3c574a39 Add support for Implicit Outputs
Test: mmma -j system/tools/hidl
Test: Inspect out/soong/build.ninja before/after
Change-Id: I8e91a033342a12302d51358c5be244e32ad689d7
2016-11-03 14:35:12 -07:00
Colin Cross
a0411a2cf6 Fix race condition writing soong.config
am: d8f2014d3b

Change-Id: I5624e6749aa57beb6fc0eefb3058ac2b019ef75d
2016-11-03 19:27:37 +00:00
Colin Cross
d8f2014d3b Fix race condition writing soong.config
soong_build is run twice simultaneously now, once for manifest
generation and once for docs generation.  If one starts writing the
default soong.config file, and the other starts reading it, the reader
can see an empty file and fail.  Write the soong.config file to a
temporary file and the atomically rename it into place.

Bug: 32628314
Test: rm out/soong/soong.config && m -j blah && cat out/soong/soong.config
Change-Id: I8119b11d45093284b24cbc926d81eb9ea4bf2e27
2016-11-03 16:48:37 +00:00
Dan Willemsen
f1bc35a478 Merge changes from topic 'genpath_yacc'
am: 5a054df23c

Change-Id: Ib0ca3236c028b181c5adc4870d44e7c5f0b753ae
2016-11-03 07:19:08 +00:00
Dan Willemsen
967f8d4750 Add yacc generated headers to the include path
am: e1a3ce3609

Change-Id: I403fa749b607f860298e12454c3774c97e597791
2016-11-03 07:19:07 +00:00
Dan Willemsen
37e1142b77 Add subdir to GenPath
am: 21ec49068f

Change-Id: Iea27631a3214f515aec100381806d7ea1abbf482
2016-11-03 07:19:06 +00:00
Colin Cross
e41ddecd1f Merge "Support sanitizing a single device arch"
am: 42e04de8a7

Change-Id: I8fe2556a325e31c32144309c9570087dc3acdadf
2016-11-03 07:18:29 +00:00
Dan Willemsen
5a054df23c Merge changes from topic 'genpath_yacc'
* changes:
  Add yacc generated headers to the include path
  Add subdir to GenPath
2016-11-03 07:13:32 +00:00
Treehugger Robot
42e04de8a7 Merge "Support sanitizing a single device arch" 2016-11-03 07:12:54 +00:00
Dan Willemsen
e1a3ce3609 Add yacc generated headers to the include path
Test: mmma -j system/tools/aidl
Change-Id: I444c7f2b004877e027f67e36e016b528511e1a32
2016-11-02 21:19:18 -07:00
Dan Willemsen
21ec49068f Add subdir to GenPath
We were emulating this for proto files, standardize it and make the
other generators use it as well.

Test: Compare out/soong/build.ninja before/after change
Test: mmma -j system/tools/hidl
Change-Id: I1888c7b981749060a398387bbb9b481270bf6d75
2016-11-02 21:19:11 -07:00
Dan Willemsen
79cfc83f6e Merge "Update build.ninja.in for blueprint upgrade"
am: eb716e2559

Change-Id: Icb0a3136dda5c41db7772a6e9f553203493fea4a
2016-11-03 02:45:16 +00:00
Dan Willemsen
eb716e2559 Merge "Update build.ninja.in for blueprint upgrade" 2016-11-03 02:39:18 +00:00
Dan Willemsen
568be82106 Allow overriding tidy configs using environment variables
am: 318af8be27

Change-Id: Id73b8894bc6b33943ac131fe48a2620edee622f4
2016-11-03 00:44:00 +00:00
Dan Willemsen
627803256f Update build.ninja.in for blueprint upgrade
Bug: 32574042
Test: m -j
Change-Id: I34a3180a34b156955baf49c87fa985583083687e
2016-11-02 16:21:56 -07:00
Dan Willemsen
318af8be27 Allow overriding tidy configs using environment variables
This matches what Make did.

Bug: 32244182
Test: WITH_TIDY=1 m -j
Test: WITH_TIDY=1 DEFAULT_GLOBAL_TIDY_CHECKS=* m -j
Test: WITH_TIDY=1 DEFAULT_EXTERNAL_VENDOR_TIDY_CHECKS=* m -j
Change-Id: I12ee413829d35e20f21f8ca49bb315ea831a6506
2016-11-02 15:47:20 -07:00
Colin Cross
23ae82a2b2 Support sanitizing a single device arch
Allow specifying one or more architectures to sanitize for.  Defaults to
sanitizing all architectures.  Allows reducing the cost of sanitization
by only sanitizing half of the platform.

Bug: 29498013
Test: No change to build.ninja files with m -j SANITIZE_TARGET=address
Test: m -j SANITIZE_TARGET=address SANITIZE_TARGET_ARCH=arm
Test: nm -D $OUT/system/bin/app_process64 | grep asan, no asan symbols found
Change-Id: I972cccc2f19443895d47b44bd8104105f93ffb7d
2016-11-02 15:18:19 -07:00
Dan Willemsen
f763a52f3e Merge changes from topic 'soong-clang-tidy'
am: 9194d8076c

Change-Id: Idbe3f27c087f50b8719e60d519f93e80af757a9d
2016-11-01 01:23:06 +00:00
Dan Willemsen
b274202d2a Add clang-tidy support
am: a03cf6d322

Change-Id: Idd480832fa400f6f7f401fce619426f61bb69525
2016-11-01 01:22:24 +00:00
Dan Willemsen
40d479babe Start using "struct Objects" to store object Paths
am: 5cb580f407

Change-Id: I40aa1ef054eab887c56d55ce56f179ea9ae58d48
2016-11-01 01:22:23 +00:00
Treehugger Robot
9194d8076c Merge changes from topic 'soong-clang-tidy'
* changes:
  Add clang-tidy support
  Start using "struct Objects" to store object Paths
2016-11-01 01:19:00 +00:00
Evgenii Stepanov
45d131b88d [soong] Enable LOCAL_SANITIZE:=cfi and add LOCAL_SANITIZE_DIAG.
am: 1e405e160a

Change-Id: I43ed2fdc9a4b32d22d229eca9f48cb4f9c4672de
2016-11-01 01:00:49 +00:00
Dan Willemsen
a03cf6d322 Add clang-tidy support
For every file which we can run clang-tidy (C/C++ clang-built), we add a
new build node that depends on the object file (since clang-tidy does
not export a depfile), and is depended on by the link step. This is
better than how we're doing it in make, since calling tidy can be turned
on or off without needing to rebuild the object files.

This does not attempt to port WITH_TIDY_ONLY from Make, since the way
that it works is broken (due to the lack of a depfile).

Bug: 32244182
Test: WITH_TIDY=true mmma -j bionic/libc
Test: ./soong (Setting ClangTidy: true)
Change-Id: I40bbb5bb00d292d72bf1c293b93080b5f9f6d8ea
2016-10-31 16:21:01 -07:00
Dan Willemsen
5cb580f407 Start using "struct Objects" to store object Paths
So that we can represent other files that get generated along with the
objects, like the gcno coverage information, and per-file clang-tidy
runs.

Test: Soong's build.ninja identical before/after
Change-Id: I5c553a153c436d5403549f62c73fe79c5f101779
2016-10-31 16:18:49 -07:00
Evgenii Stepanov
1e405e160a [soong] Enable LOCAL_SANITIZE:=cfi and add LOCAL_SANITIZE_DIAG.
LOCAL_SANITIZE_DIAG works for ubsan, too.

Bug: 22033465
Test: build a test target with cfi and diag { cfi } properties.

Change-Id: I9cd8e8df9b330430b321709d7f05b4da0294e771
2016-10-31 15:29:08 -07:00
Dan Willemsen
82c9ed6100 Merge "Remove support for building with OSX 10.8/9 SDKs"
am: 5d5db02bf6

Change-Id: I7741e225ff063368d83ff74ba7c2b2f4556ad6cd
2016-10-28 22:59:43 +00:00
Treehugger Robot
5d5db02bf6 Merge "Remove support for building with OSX 10.8/9 SDKs" 2016-10-28 22:50:20 +00:00
Dan Willemsen
85e3d0110f Remove support for building with OSX 10.8/9 SDKs
Our minimum build version listed on source.android.com is 10.10. Change
the minimum used SDK to 10.10, but keep the deployed version at 10.8 so
that our distributed tools still work on older versions.

CoreBluetooth/CoreBluetooth.h isn't available directly in older SDKs,
but we need to include it in the 10.12 SDK.

Test: `m -j` with 10.11, 10.12 SDKs.
Test: Verified the builders all have at least 10.10 sdk available.
Change-Id: I82321875b8b3a4099ea829ce2d75e1af29cb38c6
2016-10-28 13:57:34 -07:00
Colin Cross
e9c465d644 Merge changes from topic 'proto'
am: d41935f34d

Change-Id: Iebcf780af405dc7182937a59cbcb42ee24aba210
2016-10-28 20:21:00 +00:00
Colin Cross
6fded76595 Add support for .proto files
am: 0c461f1f6e

Change-Id: I1f96fc0bf85cc9afec18b1323922a319db6dbf64
2016-10-28 20:10:12 +00:00
Colin Cross
656028558b Add Path.Base helper
am: 4f6fc9c1d8

Change-Id: I2e671b0916588d960d5ed5e496a5522564d4dee2
2016-10-28 20:10:10 +00:00
Colin Cross
dc90f3bd71 Simplify compileObjs
am: 2f33635542

Change-Id: I5766b8964fc1da175d74408c2ffe089f989305c7
2016-10-28 20:10:09 +00:00