Commit Graph

6456 Commits

Author SHA1 Message Date
Vishwath Mohan
9ee01976fe Merge "Build system changes for CFI (Soong)" 2017-10-31 01:42:16 +00:00
Stephen Hines
62110067b7 Switch to clang-4393122. am: 0ed7d24f7a am: bc7ab77eb9
am: a3b8634ce3

Change-Id: I537685aa802ea64842b3416f25f7520b3f5a06d8
2017-10-30 20:06:47 +00:00
Stephen Hines
0ed7d24f7a Switch to clang-4393122.
Bug: http://b/62580008
Bug: http://b/68236239
Bug: http://b/68236396
Test: https://goto.google.com/clang-4393122-testing
Change-Id: Ib6bcf93e356172aad2a762b730a6f93916a5d845
2017-10-30 16:00:44 +00:00
Vishwath Mohan
d4b484b070 Build system changes for CFI (Soong)
This CL makes multiples changes in preparation for platform-wide CFI.

(a) Adds a second -version-script=... to the command line
when building components that use a version script. This ensures that
__cfi_check is also exported, and allows CFI to be enabled for these
components.

(b) Adds both topdown and bottom up mutators for CFI to help propagate
dependencies correctly for components that may need CFI disabled.

(c) Fixes an issue with the mutators to correctly apply settings to
both generated variants

(d) Fixes issues when components have more than a single visibility
flag.

Bug: 30227045
Test: SANITIZE_TARGET=cfi m -j40 # dependencies are correctly built
                                 # with/without CFI

Change-Id: I44793cc03bcbcdaa957cc49c7240b87d7c9db327
2017-10-30 01:42:31 -07:00
Jayant Chowdhary
cc793be92b Merge "Make clang libTooling tools ignore all lto flags." am: bdb04acd57 am: 4b26316680
am: a744ff6711

Change-Id: I9ba560a610d5341b10e9dece263e97e175082ab9
2017-10-27 21:01:39 +00:00
Treehugger Robot
bdb04acd57 Merge "Make clang libTooling tools ignore all lto flags." 2017-10-27 20:42:19 +00:00
Dan Albert
6227619e54 Merge "Add support for packaging static libs in the NDK." am: 3ae6d30804 am: 33196e13c3
am: 7998e52156

Change-Id: I1ba9584d7d081ff1bc70a9a152aa96368f3eaf6f
2017-10-27 18:38:28 +00:00
Jayant Chowdhary
20f5d137ed Make clang libTooling tools ignore all lto flags.
LLVM r275480 does not recognize flto flags, suppress the option in clang
libTooling tools for now.

Bug: 62839002

Test: mma

Change-Id: Ia9d80b46320e551a93dbff780405d8ff8ad73f35
2017-10-27 11:29:52 -07:00
Treehugger Robot
3ae6d30804 Merge "Add support for packaging static libs in the NDK." 2017-10-27 18:20:31 +00:00
Dan Albert
f563d25578 Add support for packaging static libs in the NDK.
Adding `static_ndk_lib: true` to a module installs the static library
to the NDK sysroot.

Test: Set property for libc.a, make ndk
Test: Set property for libc.a, scripts/build-ndk-prebuilts.sh
Bug: https://github.com/android-ndk/ndk/issues/272
Change-Id: Ib368a25705f2adb7129dac207c1b727d4ccc1eb2
2017-10-26 12:19:29 -07:00
Dan Willemsen
208506f373 Merge "Switch instruction_set to *string" am: b563989f97 am: 4f487cdd96
am: 9d2cb72bb8

Change-Id: I43a56b7dc30ff2b1a8441efec233cbeb35109ea2
2017-10-26 07:09:23 +00:00
Treehugger Robot
b563989f97 Merge "Switch instruction_set to *string" 2017-10-26 06:56:35 +00:00
Dan Willemsen
5922f3cb6e Switch instruction_set to *string
So that the contents gets replaced when prepended/appended instead of
merged.

Test: Set instruction_set in a cc_defaults, and in a module.
Change-Id: I0f2c789231d89efa1ab053f9dc118cd19f11b0e6
2017-10-25 15:20:50 -07:00
Jiyong Park
9e272b9f69 LLNDK can re-export headers am: 2a45412445 am: 939658c4a8
am: 4d7d02483e

Change-Id: Icfb55fd76d74752ce7a44c5d27fe213439f09ddd
2017-10-25 03:15:22 +00:00
Jiyong Park
2a45412445 LLNDK can re-export headers
Added export_llndk_headers properties to llndk_library module. And a new
module type llndk_headers is added. This is to enable an LLNDK library
to reexport other LLNDK headers.

Bug: 65395259
Test: do the following
// frameworks/native/libs/arect/Android.bp
llndk_headers {
    name: "libarect_vendor_headers",
    export_include_dirs: ["include"],
}

// frameworks/native/libs/nativewindow/Android.bp
llndk_library {
    name: "libnativewindow",
    ....
    export_llndk_headers: ["libarect_vendor_headers"],
}

check that
-Iframeworks/native/libs/arect/include is in LOCAL_EXPORT_CFLAGS of
libnativewindow.vendor in out/soong/Android-<product>.mk

Change-Id: If1650414b2967f2042f4ebe2b593ed3f3ea45d3a
2017-10-25 10:30:05 +09:00
Colin Cross
64e6cac877 Merge changes Id806633d,I05e945f3,Ieac84040,I18eb8cc0,If11c298e am: 17ae970a92 am: 70898c5f45
am: cee7bf36c3

Change-Id: I6316265003aec91f8e68c78785ca184ddf35c328
2017-10-24 21:36:45 +00:00
Colin Cross
d11fcda940 Convert Visit*Deps from blueprint.Module to android.Module
Also adds checks that the dependencies are android.Modules and
are not disabled.

Test: m checkbuild
Change-Id: I05e945f38915d49cd3c0ab72a86576949bc7eff2
2017-10-24 13:01:03 -07:00
Colin Cross
b671544973 Move first/last unique elements utility functions to android package
Move firstUniqueElements to android.FirstUniqueStrings,
lastUniqueElements to android.LastUniqueStrings, and lastUniquePaths
to android.LastUniquePaths.

Test: m checkbuild
Change-Id: Ieac840405126c7f8f98afb4a4ef35c01a18fe7fb
2017-10-24 12:12:32 -07:00
Colin Cross
ae88703df5 Move ModuleContext.ModuleBuild to ModuleContext.Build
Now that android.ModuleContext does not include blueprint.ModuleContext
we can rename android.ModuleContext.ModuleBuild to
android.ModuleContext.Build without colliding with
blueprint.ModuleContext.Build.  Leave ModuleBuild as a wrapper around
Build for now to avoid having to update all the users outside
build/soong simultaneously.

Test: m checkbuild
Change-Id: I18eb8cc04faf002049a11d9aac97e9732ff5d638
2017-10-24 10:59:00 -07:00
Jiyong Park
810f7c7293 Merge "Allow macro definition with space" am: d8cc795f86 am: f14986b8a6 am: 7fdca00c33
am: a771b248dd

Change-Id: I8f554c6388ccc1c9fc594320c24b770593fd5897
2017-10-22 07:49:04 +00:00
Treehugger Robot
d8cc795f86 Merge "Allow macro definition with space" 2017-10-22 07:38:51 +00:00
Colin Cross
477dc0ef34 Add $ORIGIN to rpath for host tests am: bd75e1d0bd am: 24d1ed50ac am: 0c10682d7e
am: 9dd0f4dc0b

Change-Id: I8f6a67ee0213ed57e38713bb608c1a73c120ffe5
2017-10-21 17:58:12 +00:00
Colin Cross
bd75e1d0bd Add $ORIGIN to rpath for host tests
Allow loading test libraries installed into the test directory.

Test: builds
Change-Id: I15a462ebd41b99e9eb76b5be889ed3bd013732e0
2017-10-21 16:04:14 +00:00
Yabin Cui
f6e7f03f88 Merge "Support tsan in Android.bp." am: ef784b537e am: 3e6e44e0e3 am: a02b5e6be2
am: 5936252d8d

Change-Id: Ib9b6226b53c4ec6d69de4934c40479390f424ee7
2017-10-20 18:21:58 +00:00
Yabin Cui
ef784b537e Merge "Support tsan in Android.bp." 2017-10-20 17:56:00 +00:00
Jiyong Park
0d2a24117b Merge "Add two more vendor-specific properties" am: fa9ff8441a am: 34f79d0edd am: 5cc211852a
am: 671505b62d

Change-Id: I68d56ce7a48c0e4e2e3ac8e7ca63d5a26001c8b4
2017-10-20 02:37:31 +00:00
Yabin Cui
6be405ef69 Support tsan in Android.bp.
Bug: http://b/25392375
Test: build a unit test with tsan.

Change-Id: Ifbd30e41e3a9558a8f106750c2a08778db5d5c81
2017-10-19 15:53:02 -07:00
Jiyong Park
d08b697828 Allow macro definition with space
cflags: ["-DMACRO=\" definition \""] should not be rejected.

Bug: 66914194
Test: TestCompilerFlags in cc_test.go

Change-Id: I7f96505a83898616415ef1fb7e13596b56a063f3
2017-10-19 22:39:32 +09:00
Jiyong Park
52d25bd812 Add two more vendor-specific properties
target.vendor.exclude_static_libs: this is the static counterpart of
target.vendor.exclude_shared_libs. This removes the libs from the static
dependency when build the vendor variant.

target.vendor.version_script: vendor-specific version script.

Right now, these are required to merge libseliux_vendor into libselinux
and make it vendor_avaialble:true. libselinux is using libpackageparser
which is a platform-only library. The vendor variant of libselinux can't
depend on the library.

Bug: 66914194
Test: lunch aosp_arm64_ab-userdebug; m libselinux.vendor

Change-Id: I163e634f2f54d419f9471a585a3b04731b63f809
2017-10-19 17:30:48 +09:00
Jeff Gaston
923e9dff62 Merge "Automatically reorder C/C++ link dependencies in Soong" am: 92d3dadf3b am: 3e8af0143a am: caa76581d0
am: a1e1cf38cc

Change-Id: Ibe8122f476c3f2e895298bbd21172075dc42b19f
2017-10-18 23:31:10 +00:00
Jeff Gaston
294356f045 Automatically reorder C/C++ link dependencies in Soong
This uses knowledge of transitive dependencies to reorder
linker command line arguments such that if module A depends
on module B, then module A is automatically listed before
module B in the linker command line.

This should mostly remove the need for Android.bp files to
list all of their static dependencies in link order

Bug: 66260943
Test: reorder the entries of static_libs in an Android.bp and see that linking still succeeds

Change-Id: I20f851ab9f2f30031254e4f30023b6140d15d6c3
2017-10-18 14:30:05 -07:00
Jeff Gaston
ec24f41b7a Some clarifications in preparation to automatically order linker dependencies am: af3cc2d23c am: f7ed978c87 am: ed0515a951
am: 2cc7443190

Change-Id: I6b85e23ed62fc5820241ea5b7e9d5567440f3377
2017-10-18 20:04:39 +00:00
Goran Jakovljevic
9a6ceb55c2 Merge "MIPS: Remove -U__unix and -U__unix__ from cflags" am: 16b9ce4dff am: d58c6031ed am: 8fc41212e2
am: 1796fabc88

Change-Id: If492fb50c308d2bb8bb8ce45478fbc02e9d1001c
2017-10-18 18:42:04 +00:00
Jeff Gaston
af3cc2d23c Some clarifications in preparation to automatically order linker dependencies
Test: Browse the code and determine whether it's easier to understand
Bug: 66260943
Change-Id: I88c24a8a31ef68f428919087d206433659265684
2017-10-18 18:06:02 +00:00
Goran Jakovljevic
68a321d92f MIPS: Remove -U__unix and -U__unix__ from cflags
Leave '__unix' and '__unix__' defined on mips/mips64, like arm.
This is needed to avoid a warning in external/libcxx project.

Test: successful build and boot aosp_mips-eng
Test: successful build and boot aosp_mips64-eng

Change-Id: I8f0e17bdbeffd5078c19aa7506564b8e79a9c945
2017-10-18 16:37:21 +02:00
Colin Cross
2ab89c3cd0 Merge "Explicitly document that export_include_dirs implies local_include_dirs" am: 63160240d8 am: 546a5af5a5 am: f7f633e299
am: ffb3720cc4

Change-Id: Ic3fc58854559ba59ca7c5abaff5f719a0d535257
2017-10-18 07:35:58 +00:00
Colin Cross
5d19560e5e Explicitly document that export_include_dirs implies local_include_dirs
Test: none
Change-Id: I601919447a5539c49350378d7422083f5a076bf7
2017-10-18 05:44:31 +00:00
Pirama Arumuga Nainar
5f1de0f704 Merge "Add enable_profile_use property" am: 0e8afed83a am: ba6593f5fa am: 4b5fab84eb
am: 062a825a08

Change-Id: I179ae252f43aeeebc61e440a1949222e2a3e8318
2017-10-17 04:07:46 +00:00
Pirama Arumuga Nainar
0e8afed83a Merge "Add enable_profile_use property" 2017-10-17 03:00:05 +00:00
Pirama Arumuga Nainar
6aeed8b439 Add enable_profile_use property
Bug: http://b/65598278

This property defaults to 'true' and setting it to false skips profile
use.  This escape hatch lets us disable PGO for a module without
completely removing the 'pgo' property.  Additionally, this also helps
selectively disabling PGO for some architectures, if desired.

Test: Test that -fprofile-use is not added for a test module if
'enable_profile_use: false' is set.

Change-Id: Ifcf1a48c194bc86efd88a529cc2d66a47b7ab080
2017-10-16 13:36:29 -07:00
Elliott Hughes
a92ecc9b36 Merge "Unified sysroot: arch-X/include directories are gone." am: 4d219e801d am: 3808a8c1a6 am: 394944459a
am: d5b4607533

Change-Id: Ibe8e592e76a0ad9203c57aa572e0e31407e4d308
2017-10-15 04:19:53 +00:00
Jiyong Park
5b5854b4ef Squash vendor sources before linkageMutator runs am: 6a43f04777 am: be4d89249a am: 7c7ce296ee
am: dcbdb9e18a

Change-Id: Iafccc06704367f933206d42ec419246675fc1dcf
2017-10-15 04:19:17 +00:00
Elliott Hughes
4d219e801d Merge "Unified sysroot: arch-X/include directories are gone." 2017-10-13 17:35:41 +00:00
Jiyong Park
6a43f04777 Squash vendor sources before linkageMutator runs
linkageMutator removes srcs property of the shared variant of a lib in
order to reuse *.o files compiled for the static variant also to the
shared variant.

However, this causes problem when vendor-specific srcs are specified in
target: {vendor: {srcs: ["..."]}}. For example, let's assume

cc_library {
    name: "libfoo",
    srcs: ["foo.c"],
    target: {
        vendor: {
            srcs: ["bar.c"],
        },
    },
}

Then,
static_vendor: inputs = foo.o, bar.o
shared_vendor: inputs = foo.o (from static_vendor), bar.o (from
static_vendor), bar.o

So, bar.o is included twice and this causes multiple symbol definition
error.

In order to handle the problem, vendor mutator is applied before the
linkage mutator and the vendor-specific srcs are squashed in the vendor
mutator.

Bug: 67731122
Test: build
Test: cc_test.go

Change-Id: I2a5390295dddfc41260e9b6f02746908cdf47228
2017-10-13 14:36:12 +09:00
Elliott Hughes
de28deb460 Unified sysroot: arch-X/include directories are gone.
Bug: N/A
Test: builds
Change-Id: I98fc6a1a3c0be1c90b1deb35b54f36ab16a202ac
2017-10-12 09:07:53 -07:00
Colin Cross
9624f6025e Merge "Let tests override environment" am: 432a2d4033 am: 786a19151b am: 6623676b08
am: 3e9df09d7c

Change-Id: I6b7126657130fa57c7cefb14121f90ae9392a3ba
2017-10-11 08:31:29 +00:00
Treehugger Robot
432a2d4033 Merge "Let tests override environment" 2017-10-11 08:18:17 +00:00
Colin Cross
6ccbc913e4 Let tests override environment
Pass an environment to TestConfig that will be used for
all Config.Getenv calls.

Test: none
Change-Id: I683cd9c9e0db61c9bfd2adb27fca78f558f225c4
2017-10-10 23:28:43 -07:00
Jiyong Park
fea11db35a Merge "vendor_available:false hides a lib from vendors" am: 7228a62297 am: b08d2636ef am: da14b3a0af
am: bd0f961c72

Change-Id: Ib9581e92c5b30dc43c52f221b1ec416ba2a56513
2017-10-11 02:06:20 +00:00
Treehugger Robot
7228a62297 Merge "vendor_available:false hides a lib from vendors" 2017-10-11 01:45:36 +00:00