Commit Graph

2991 Commits

Author SHA1 Message Date
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
Pirama Arumuga Nainar
fe2348fa21 Merge changes Ib23bad52,I1923ebde am: 3656beab20 am: c5a3ea48b5 am: 23fb908da4
am: 8cd5f8dbcd

Change-Id: I3fc9292b4872a75368bc99b9d18574d1b7692d58
2017-10-11 01:08:38 +00:00
Pirama Arumuga Nainar
0fdfc459cf Do not use profiles if ANDROID_PGO_NO_PROFILE_USE is set
Bug: http://b/65598278

Non-PGO builds (with this environment variable set) can be used to
measure the performance difference induced by PGO.

Test: Build PGO modules with ANDROID_PGO_PROFILE_USE set.
Change-Id: Ib23bad5208ac7f54894c7768d7532f53b6b91179
2017-10-10 15:41:25 -07:00
TreeHugger Robot
94595bd41b Merge "Change the directory scanned for PGO profiles" 2017-10-10 20:08:58 +00:00
Pirama Arumuga Nainar
f361d4a715 Change the directory scanned for PGO profiles
Bug: http://b/65598278

Test: None
Change-Id: I36cdb769a67831f0871dce67d33b1d0b52a81573
2017-10-10 11:13:31 -07:00
Pirama Arumuga Nainar
3f5bb9c89b Refactor methods to be on PgoProperties struct
These methods only need the 'PgoProperties' struct.  Avoid the extra
indirection by directly using this struct.

Test: Build modules with PGO property.
Change-Id: I1923ebde4b0d546810de8e696514d218b3a4f54b
2017-10-10 10:58:37 -07:00
Jiyong Park
82e2bf3b7f vendor_available:false hides a lib from vendors
When a lib is explicitly marked as `vendor_available: false`, then it
can't be directly depended by a vendor lib which is installed to /vendor
partition. This is to hide some VNDK libs (including llndk) from vendors
so that platform owners can have a freedom of modifying their ABI
without breaking vendors.

In addition, the list of the private libs are exported to the make world
as VNDK_PRIVATE_LIBRARIES.

Also, fixed a bug that allowed a vndk lib to link against to vendor
library (or vendor variant of a system lib) if the lib is prebuilt.

Bug: 64730695
Bug: 64994918
Test: Add `vendor_available: false` to libft2 and libcompiler_rt.
Add the libs to shared_libs property of a vendor library in soong
(i.e. libnbaio_mono). The build fails with the error message.

Change-Id: Iab575db96bb4f6739a592f3fa0a75124296bea0c
2017-10-10 19:38:06 +09:00
TreeHugger Robot
ba874a0328 Merge "Fixup location for jni.h automatic header include." 2017-10-09 22:51:19 +00:00
Steven Moreland
3afa3cd574 Fixup location for jni.h automatic header include.
include_deprecated -> include_jni

include_jni only includes jni.h. Other dependencies which
are provided as part of libnativehelper can be included
by using libnativehelper or by using them with in their
proper location (e.x. nativehelper/JNIHelp.h).

Bug: 63762847
Test: modules find their headers
Change-Id: I8674d2feed08bd80c1fc7b54e3ee38b9ee3484b2
2017-10-09 16:35:08 +00:00
Treehugger Robot
c7ba6a2e46 Merge "Use correct flags for host-side assembly" 2017-10-06 11:48:24 +00:00
Greg Hartman
09302bee38 Use correct flags for host-side assembly
BUG: 67434336
Test: Built libjpeg-turbo, confirmed flags
Change-Id: I54c1cc968d0a08d3a221ef4c46f2572269420c6a
2017-10-05 13:08:28 -07:00
Pirama Arumuga Nainar
6fc8d9126c Check if "instrumentation" and "sampling" are set together
Setting these simultaneously is an error.

Test: Check error generation in a test module

Change-Id: I2ee127fa1b7157fa5f4489d2541ff023c64f9ba5
2017-10-05 10:33:57 -07:00
Pirama Arumuga Nainar
49b53d5c7c Explicitly link the profile runtime during PGO
Bug: http://b/65598278

The profile runtime depends on libgcc for some symbols (only under some
circumstances - armv5, ndk r14, static executables).  Since Android
build passes -nostdlib and adds libgcc manually, the profile runtime
gets passed to the linker later than libgcc.

Instead, explicitly add the profile runtime to the linker command (and
pass one other flag added by the clang driver to the link).

Test: Build a library with profile instrumentation that otherwise fails
instrumented build.

Change-Id: I24b34cebd2c3bb6a540f8f4c465ace1be4eb90f3
Signed-off-by: Pirama Arumuga Nainar <pirama@google.com>
2017-10-04 22:25:19 -07:00
Jeff Gaston
60e38b613f Merge "Revert "Some clarifications in preparation to automatically order linker dependencies"" 2017-10-04 21:09:29 +00:00
Jeff Gaston
7b6118be6b Revert "Some clarifications in preparation to automatically order linker dependencies"
This reverts commit 2370af0e23.

Reason for revert: New Build Breakage: aosp-master/aosp_arm64_ab-userdebug @ 4376965

Change-Id: Ibe4b819c4292457c454bf42e6d94fba3071ec04b
2017-10-04 21:07:42 +00:00
Jeff Gaston
2ade0243ae Merge "Some clarifications in preparation to automatically order linker dependencies" 2017-10-04 17:45:40 +00:00