Commit Graph

592 Commits

Author SHA1 Message Date
Dan Shi 4df566d313 Correct variable name LOCAL_COMPATIBILITY_SUITE
Test: m -j checkbuild
Bug: 35394669
Change-Id: I117224b2266520e6aec44aef62551b0836a83520
2017-04-03 12:29:25 -07:00
Dan Albert 2e5d7d41f4 Add `sdk_version: "minimum"`.
This maps to the lowest supported API level for the given
architecture.

Test: make checkbuild # after setting some things to use this
Bug: None
Change-Id: Ied6d44cb2719b73f35dde38a2dca6d3c87c7c924
2017-03-31 16:19:51 -07:00
Treehugger Robot 94e1747051 Merge "Refactor sanitized library on-disk layout - Soong." 2017-03-31 16:35:53 +00:00
Stephen Hines 971b9848c0 Merge "Switch to clang-3859424." 2017-03-31 04:51:10 +00:00
Vishwath Mohan 1dd8839286 Refactor sanitized library on-disk layout - Soong.
This CL moves the location of ASAN-ified libraries on disk in the
following manner:
/data/lib* --> /data/asan/system/lib*
/data/vendor/* --> /data/asan/vendor/*

There are a couple of advantages to this, including better isolation
from other components, and more transparent linker renaming and
SELinux policies.

Bug: 36574794
Bug: 36674745
Test: m -j40 && SANITIZE_TARGET="address" m -j40 and the device
boots. All sanitized libraries are correctly located in /data/asan/*.

Change-Id: I06bf459260ec451d4495a02562f640ad622f34c2
2017-03-31 01:03:56 +00:00
Colin Cross c31994825a Fix include order
Include order should be module includes, dependency exported includes,
and then global includes.  Module includes and global includes are
computed during compileFlags, but dependency exported includes are
not handled until later.  Move the global includes into a new
flags variable so that the dependency includes can be appended
to the module includes.

Test: m -j native
Change-Id: Ifc3894f0a898a070d6da8eed4f4b9e8cc0cd2523
2017-03-31 00:48:53 +00:00
Fabien Sanglard 4a825c7450 Merge "[CMakeList generator] Add headers to source files" 2017-03-30 23:41:52 +00:00
Dan Albert d2130a9359 Use a timestamp file for preprocessed_ndk_headers.
Having a directory as an output causes superfluous rebuilds, but we
can't have *only* implicit outputs.

Test: make ndk && make ndk
Bug: None
Change-Id: I8c2cd1df2ebf6e0cdb3a0441365d486708554010
2017-03-29 18:33:28 -07:00
Dan Albert 8d4e936630 Merge "Move versioner's -o before positional arguments." 2017-03-29 19:03:35 +00:00
Dan Albert e6a4d7c5e8 Move versioner's -o before positional arguments.
Mac's getopt can't handle this.

Test: make ndk # on mac
Bug: None
Change-Id: I5a4911632f3da77a5489571520526f90f5d80abf
2017-03-29 11:58:40 -07:00
Stephen Hines 4442c2f98e Switch to clang-3859424.
Bug: http://b/36442361
Test: Build and run multiple devices/targets.
Change-Id: Ib2ba71acdc5ae5100122bb498c5a51db74953d42
2017-03-28 22:10:38 -07:00
Dan Willemsen 11b261472a Rework vndk detection
Instead of having a module define `use_vndk: true`, assume that we're
building with the VNDK if we're installed on the vendor partition, and
BOARD_VNDK_VERSION==current. This now matches our behavior in Make.

Once BOARD_VNDK_VERSION!=current, we'll need to disable modules that
need to otherwise compile against the VNDK, since we can only compile
against the current VNDK.

Test: build.ninja for aosp_arm is the same before/after
Test: Ensure there are no boards that set BOARD_VNDK_VERSION
Change-Id: If937fa7bdb119648137af52daebadf486163484b
2017-03-29 04:33:25 +00:00
Treehugger Robot 9e3f627ea7 Merge "Export TSAN_RUNTIME_LIBRARY make variable" 2017-03-29 00:45:35 +00:00
Colin Cross 32b692240f Merge changes If05b0f5f,I8cd1ef21
* changes:
  Add support for test_suites property on cc_test modules
  Remove -Wl,--allow-shlib-undefined from arm64
2017-03-28 21:25:54 +00:00
Dan Willemsen 7cbf5f8e22 Fix variant errors when compiling with the NDK
This was corrupting the nonvariants list with the variants list whenever
it hit the else case, causing a missing variant issue, since we need to
use the variant when linking against lib*.ndk.

Test: aosp_arm build.ninja is the same before/after
Test: https://android-review.googlesource.com/c/355163/, set
      BOARD_VNDK_VERSION := current
Change-Id: I047937e838464670d0902506871d2203ec8cc17d
2017-03-28 07:15:11 +00:00
Dan Willemsen 107ed82035 Merge "Fix absolute paths in clang debug output" 2017-03-28 05:17:38 +00:00
Fabien Sanglard d9233f1e7c [CMakeList generator] Add headers to source files
Refactor doesn't work in CLion unless we also add the headers in
the header search path to the list of source file in a project.

Change-Id: Idc6223149ecf7ddf0c21bc0873ad3019ec6ccdd3
2017-03-27 17:32:14 -07:00
Fabien Sanglard 27b812d0d2 Merge "[CMakeList generator] Fix executable name" 2017-03-28 00:30:18 +00:00
Dan Willemsen 253cab89ee Fix absolute paths in clang debug output
As of the latest clang python wrapper, clang is being executed with an
absolute path. That means that clang-provided headers are written with
absolute paths in the debug info, making the builds non-reproducible
(especially with ccache).

So keep our current PWD=/proc/self/pwd -fdebug-prefix-map=/proc/self/cwd=,
but add a new -fdebug-prefix-map=$PWD/= to rewrite these absolute paths.

Bug: 36463318
Test: m -j libc adb; grep for path names
Test: spot check objdump -W before/after, see only expected diffs.
Change-Id: Ic2cdfca051d3c38b753fd5c1fcbeaca8bafc29ae
2017-03-27 16:58:43 -07:00
Colin Cross a929db05b3 Add support for test_suites property on cc_test modules
Add a test_suites property that is passed through to make as
LOCAL_COMPATIBILITY_SUITES.

Test: m -j checkbuild, examine out/soong/Android-${TARGET_PRODUCT}.mk
Bug: 35394669
Change-Id: If05b0f5f7d6dd85228546123bebe32859bcc8186
2017-03-27 16:27:50 -07:00
Nan Zhang 43a485cfb1 Removed unused return variables.
Sometimes it is confused that these variables are mixed with ninja
parameters when invoking pctx.AndroidStaticRule()/SourcePathVariable().

Test: m -j
Change-Id: Ibcf17eeed6ac79aafaa5edeec27427721b36e75a
2017-03-27 14:27:58 -07:00
Pirama Arumuga Nainar 16b626b827 Export TSAN_RUNTIME_LIBRARY make variable
TSAN_RUNTIME_LIBRARY is used by external/clang/Android.mk to get the
name of the per-arch TSAN runtime.  This CL also factors-out common code
out of functions that construct names of the sanitizer libraries.

Test: python external/clang/build.py with all CLs in this topic

Change-Id: Ie5fac242c0d5a9296ab8936db927a4c934061aa4
2017-03-27 11:29:52 -07:00
Fabien Sanglard 7da4926263 [CMakeList generator] Fix executable name
Treble genererated project name feature character no accepted by
CMake. So far only @ is a problem.

Change-Id: Iac460033f1181f46ab8205e5706271f99ab798d3
2017-03-23 17:50:26 -07:00
Colin Cross dc03a8407e Remove -Wl,--allow-shlib-undefined from arm64
Hopefully this isn't needed any more.

Test: m -j checkbuild
Change-Id: I8cd1ef21c37bb85a322674532b3cd6816280da67
2017-03-22 17:10:29 -07:00
Fabien Sanglard 6747241b83 CMakelists generator: Maintain include order
For some library, the order of includes is important. e.g: library
can include "system/window.h". Dependending on the dependency order
this could mean libs/nativewindow/include/system/window.h or
system/core/include/system/window.h

This patch changes search path storage from map to array in order
to preserve order the order in which they were received from
soong.

Change-Id: I8ef788633985f4ed04ec3432686eb1427f73d600
Test: Manual
2017-03-21 11:18:10 -07:00
Treehugger Robot ed1665dc8a Merge "Add ar flags for CFI enabled components in Soong." 2017-03-20 22:08:03 +00:00
Colin Cross e3918170ae Merge changes from topic 'prebuilts'
* changes:
  Add support for binary and static library and prebuilts
  Rename to cc_prebuilts_library_shared
  Fix installing prebuilts with no source module
2017-03-20 20:51:45 +00:00
Treehugger Robot 3250879667 Merge "Revert "install *.so in different paths for their types"" 2017-03-17 22:45:31 +00:00
Colin Cross de89fb8707 Add support for binary and static library and prebuilts
Add cc_prebuilt_library_static and cc_prebuilt_binary module types.

Bug: 35576244
Test: Add cc_prebuilt_library_static and cc_prebuilt_binary modules
      and verify they are used
Change-Id: I708ec7b1ed1a0eddae083159575ae04d5ea25a37
2017-03-17 14:06:28 -07:00
Colin Cross dfee1bcf43 Rename to cc_prebuilts_library_shared
Rename cc_prebuilts_shared_library to cc_prebuilts_library_shared
to match cc_library_shared.

Test: builds
Change-Id: I2f48263c3a0830a99ace4e2374de4a702d48c2e4
2017-03-17 14:06:28 -07:00
Colin Cross 054350e8f1 Merge "Use a minimal set of mutators, module types, and singletons for tests" 2017-03-17 05:05:03 +00:00
Dan Willemsen 615609854f Revert "install *.so in different paths for their types"
This reverts commit 4c48f724e1. It's
causing test failures, warnings and complaints, so backing it out and
we'll resolve those before putting it back in.

Bug: 33681361
Test: m -j
2017-03-16 19:48:32 -07:00
Colin Cross 795c377e14 Use a minimal set of mutators, module types, and singletons for tests
Calling android.NewContext() in tests results in a context that
contains all the mutators, module types, and singletons, which
causes unexpected interactions in unit tests.  Create an empty
context instead, and add in only the necessary mutators, module
types, and singletons.

Bug: 36366816
Test: soong tests
Change-Id: Ic61262c37e3436b3ad4ccaca18b737021c304be6
2017-03-16 16:50:10 -07:00
Vishwath Mohan 7a5b46db91 Add ar flags for CFI enabled components in Soong.
CFI enabled components need ar to use the gold linker. This CL adds
that.

Bug: 36290748
Test: Enabling CFI for a Soong component builds without error.
Change-Id: Icbf78fa1ca0d845350516b4dd345b54fbb7ef847
2017-03-16 16:36:16 -07:00
Vishwath Mohan 83d9f71cc5 Allow custom ar flags to be set.
Adds the ability to set custom flags for ar in Soong, similar to how
they can currently be set for make.

Bug: 36290748
Test: sanitize.go is able to correct set custom ar flags for CFI. CFI
enabled Soong components build and boot without issue.

Change-Id: I3212793aa84ba51df910c184d8bb376b3650376e
2017-03-16 14:06:30 -07:00
Dan Willemsen 01a405a481 Add LinuxBionic toolchain and switch
This adds a toolchain definition for LinuxBionic that only supports
Clang/64-bit. It pulls pieces from the x86_linux_host and x86_64_device
configs, and uses the android clang triple, with some manual overrides.

To enable building this, set your soong.config file to:

 {"Host_bionic": true}

Bug: 31559095
Test: out/soong/{Android,make-vars}-aosp_arm64.mk the same with or
      without host bionic turned on
Test: No change to out/soong/build.ninja before/after this change
Change-Id: Id97dda8bd9aa670c32aed31fbe6aaa8175e70b59
2017-03-15 14:18:42 -07:00
Dan Willemsen 0e2d97b4b1 Stop making the ndk headers host-specific
This breaks when I enable a second host configuration for host bionic.

Make non-arch modules !Device and !Host by adding "Generic" as the zero
value. Make the SkipDeviceInstall config only apply to Device modules.

Test: out/soong/build.ninja is identical expect for comments
Change-Id: I6e2bd3814a9968554d3901a508d822d5c79d08a0
2017-03-15 20:20:22 +00:00
Dan Willemsen 7752bca25d Enable large-address-aware for 32-bit windows
Bug: 36046324
Test: m -j winsdk-tools
Change-Id: I232d7dac9a6708542e70392801259141bec297c6
2017-03-14 13:37:26 -07:00
Jiyong Park 4c48f724e1 install *.so in different paths for their types
Shared libraries are now installed to different directories depending on
their types.

* NDK libraries: /system/lib/ndk
* VNDK libraries: /system/lib/vndk
* VNDK-ext libraries: /system/lib/vndk-ext
* Framework-only libraries: /system/lib
* Vendor-only libraries: /vendor/lib
* Same-process HALs: /vendor/lib/sameprocess

In addition, a new module type vndk_ext_library is added. It is almost
identical to cc_shared_library but it introduces another attribute
'extends'. This is use to reference the vndk library that this vndk-ext
library is extending.

For example, in order to extend a vndk library libFoo:

cc_library {
  name: "libFoo",
  srcs: [...]
}
---------------------
vndk_ext_library {
  name: "libFoo-extended",
  srcs: [...]
  extends: "libFoo"
}

Then, libFoo will be installed as /system/lib/vndk/libFoo.so and
libFoo-extended will be installed as /system/lib/vndk-ext/libFoo.so.
Note that file name of the latter is libFoo.so, not libFoo-extended.so:
file name of an extending module is automatically set to that of the
extended module.

Bug: 33681361
Test: build & run. Libraries must be in the correct directories.
Change-Id: Ia1eb3940605d582a252c78da0f3a5b36fdab062b
2017-03-14 09:13:44 +09:00
Dan Willemsen 300151ba19 Always use the standard OSX SDK tools
Instead of whatever happens to be in PATH.

Test: port install gcc5; attempt to build host binaries
Change-Id: If4af32596edd6fd3e459c3d574ab0ff495f236ff
2017-03-13 12:40:30 -07:00
Josh Gao 664806a843 Merge "Add libwinpthread, link it into win32 binaries." 2017-02-24 21:02:24 +00:00
Josh Gao 7bd4c5c339 Add libwinpthread, link it into win32 binaries.
Bug: http://b/31665213
Test: wine adb.exe
Test: wine fastboot.exe
Change-Id: I6d6ff69f0c016e2654119a09161685841cbccc7e
2017-02-23 17:57:03 -08:00
Dan Albert 269fab82eb Add preprocessed_ndk_headers.
Prototypes in the bionic headers are annotated with `__INTRODUCED_IN`
tags that are processed by bionic/tools/versioner into their usable
form (tags replaced with `#if __ANDROID_API__ >= foo` guards). We've
previously done this as a periodic manual step with the results
checked in to prebuilts/ndk, but that's been a huge hassle for me.
Make the tool a part of the build instead.

Test: make checkbuild
Bug: http://b/35673791
Change-Id: I2f5c1aeae239ac4ab6616eb5c71360e3055f86d5
2017-02-22 14:52:52 -08:00
Dan Willemsen d5781347e0 Export cc_library_headers as BUILD_HEADER_LIBRARY
And support the reverse translation in androidmk.

Test: Use a cc_library_headers using LOCAL_HEADER_LIBRARIES in make
Test: androidmk with LOCAL_HEADER_LIBRARIES
Test: androidmk with soong's Android-*.mk file for BUILD_HEADER_LIBRARIES
Change-Id: I17adedb62151f62e67e2168b09ad87f1d5648df6
2017-02-16 10:58:26 -08:00
Colin Cross 449887957c Merge "Export header libraries to make as static libraries" 2017-02-16 16:05:20 +00:00
Colin Cross 4ac44809af Export header libraries to make as static libraries
Header libraries were building an empty .a file but setting
LOCAL_MODULE_CLASS := SHARED_LIBRARIES.  Make the static and shared
checks in libraryDecorator.AndroidMk explicit.

Bug: 35228396
Test: builds, examine out/soong/Android-${TARGET_PRODUCT}.mk
Change-Id: I5653ae92bb41d440d8c3ff4b6d509be188feb961
2017-02-15 23:26:15 +00:00
Treehugger Robot 367a7da041 Merge "Blacklist code for CFI." 2017-02-15 22:52:46 +00:00
Treehugger Robot 31160bef1e Merge "Ban --coverage now that we have native coverage" 2017-02-15 20:58:49 +00:00
Vishwath Mohan f3918d37fb Blacklist code for CFI.
Adds the -fsanitize-blacklist option for CFI, using the built in
blacklist at external/compiler-rt/lib/cfi/cfi_blacklist.txt.

Also refactors the CFI cflags and ldflags into cc/makevars.go to
ensure they're consistent across Soong and make projects.

Bug: 30227045
Test: ENABLE_CFI=true m -j40 builds and boots.
Test: The blacklist prevents runtime errors that otherwise occur.
Change-Id: I91c5420478e7290061d89338a86abdef69c67fe2
2017-02-15 12:46:52 -08:00
Colin Cross a48ab5b207 Build a static library for header-only libraries
library.static() was being used to determine if a library was static,
shared, or header only, which resulted in header only libraries
behaving like shared libraries, when they should be treated as static
libraries with no sources.  Explicitly use library.static(),
library.shared(), and library.header() instead.

Bug: 35228396
Test: builds, manually examine changes to build.ninja and Android.mk
Change-Id: I51729992cc6338deda1396b86f12bc9f73e674d8
2017-02-14 17:52:10 -08:00
Dan Willemsen 17ff636322 Ban --coverage now that we have native coverage
Bug: 32749731
Test: m -j
Change-Id: Icb6ca0d846cba0ca842d3fb12dde1f1e8701cf5d
2017-02-14 13:05:48 -08:00
Dan Willemsen 581341d4f2 Native Coverage support in Soong (gcov)
This is configured the same as make -- a global NATIVE_COVERAGE=true
flag to allow native coverage, then COVERAGE_PATHS=path1,path2,... to
turn it on for certain paths.

There are .gcnodir files exported to Make and saved in $OUT/coverage/...
files which are `ar` archives containing all of the compiler-produced
.gcno files for a particular executable / shared library.

Unlike the Make implementation, this only passes links the helper
library (automatically through --coverage) when one of the object files
or static libraries being used actually has coverage enabled.

Host support is currently disabled, since we set -nodefaultlibs, which
prevents libclang_rt.profile-*.a from being picked up automatically.

Bug: 32749731
Test: NATIVE_COVERAGE=true COVERAGE_PATHS=system/core/libcutils m -j libbacktrace libutils tombstoned
      $OUT/coverage/system/lib*/libcutils.gcnodir looks correct (self)
      $OUT/coverage/system/lib*/libbacktrace.gcnodir looks correct (static)
      $OUT/coverage/system/lib*/libutils.gcnodir doesn't exist (shared)
      $OUT/coverage/system/bin/tombstoned.gcnodir looks correct (executable)
Test: NATIVE_COVERAGE=true COVERAGE_PATHS=external/libcxxabi m -j libc++
      Confirm that $OUT/coverage/system/lib*/libc++.gcnodir looks correct (whole_static_libs)
Change-Id: I48aaa0ba8d76e50e9c2d1151421c0c6dc8ed79a9
2017-02-14 13:05:48 -08:00
Vishwath Mohan e13374d3c1 Merge "Disble CFI for ARM32 processes." 2017-02-13 20:49:20 +00:00
Vishwath Mohan 6d67e6e68e Disble CFI for ARM32 processes.
This CL disables CFI for 32-bit ARM processes, which is broken due to
a compiler error in the most recent version of clang.

Bug: 35157333
Test: ENABLE_CFI=true m -j40 does not enable CFI for 32-bit processes
Change-Id: I52ccf60d91ff1a2af4cf024376b7d70f87040674
2017-02-08 19:46:27 -08:00
Jayant Chowdhary 89a0d797d7 Merge "Add RenderScript toolchain information to soong." 2017-02-08 17:45:38 +00:00
Jayant Chowdhary e622d20659 Add RenderScript toolchain information to soong.
Test: make -j64 from top of tree.

Change-Id: I9e853e64924f26719c0cd7ae8de4958fe97ca04e
2017-02-07 12:15:45 -08:00
Fabien Sanglard 5cb35194c2 Fix CMakeList generator CFlag bug
Properly process CFlags featuring quotes and double quotes.

Test: on libui and libgui
Change-Id: I8581cef9ccc595b6e05d77bee7bea82f2efd219b
2017-02-07 09:43:02 -08:00
Fabien Sanglard d61f1f4559 Add support for CMakefile generation
Test: Manually generated CMakeLists.txt for gui/ui/aapt2.

Change-Id: I7dedc300c1e50b8e39bc58091b650c0bbe2c62da
2017-02-07 09:43:02 -08:00
Nan Zhang 6d34b308ff Added phony module type for soong.
The "required" field within "phony" module in .bp file has to be
non-empty. And "phony" module doesn't contain any "src" files.
Bug: b/32981153
Test: make -j out/soong/build.ninja

Change-Id: Iaa2009467c44702572b97ca9cbd02c1d368c8d83
2017-02-06 22:23:19 -08:00
Colin Cross 77de5a4b9d Merge "Support data properties for test binaries" 2017-02-06 21:17:12 +00:00
Treehugger Robot 721197de2c Merge "Add c_std and cpp_std properties." 2017-02-06 19:18:27 +00:00
Dan Albert 043833ca81 Add c_std and cpp_std properties.
Test: Checked showcommands ouput for each setting.
Bug: None
Change-Id: Ibe02352f19ca2777b9a419136270e5c4390f1149
2017-02-03 16:45:38 -08:00
Evgenii Stepanov a83fdacf7c Disable CFI on Mips and add -march to linkflags on ARM.
Mips toolchain does not have ld.gold.
ARM change is a workaround for LLVM r290384.

Bug: 33678192
Test: make ENABLE_CFI=1
Change-Id: I189ffd42760f0ea8d151717337b9355b37cb207b
2017-02-03 23:50:28 +00:00
Evgenii Stepanov cb3f890263 Remove duplicate code.
Test: NFC
Change-Id: I63a1b1ee244c2ab015914e1879aefc3ba8f886b0
2017-02-03 13:25:03 -08:00
Colin Cross faeb7aa135 Support data properties for test binaries
Allow tests to specify a data property that lists files or filegroup
modules that will be packaged alongside the test.  Also add a path
property to filegroup modules to allow shifting the path of the
packaged files, and add ExpandSourcesSubDir to expand the filegroup
sources while including a shifted relative path in the Paths objects.

Test: soong tests, manually adding data to a module
Change-Id: I52a48942660e12755d313ef13279313361b4fc35
2017-02-02 16:23:30 -08:00
Stephen Hines e25bc9ba83 Merge "Switch to clang-3688880." 2017-02-01 21:25:03 +00:00
Stephen Hines d19f58a162 Switch to clang-3688880.
Bug: http://b/31532493
Test: Manual validation.
Change-Id: I386c7fc06bd4ca092535365bccbed0a898eb69da
2017-01-31 12:13:37 -08:00
Colin Cross 7a108bccad Allow clang builds to disable -pie
-pie triggers a bug in glibc's linker when used with goma
(https://sourceware.org/bugzilla/show_bug.cgi?id=16381).  Allow
the clang build to disable -pie for host modules through the
DISABLE_HOST_PIE environment variable so it can produce a toolchain
that works with goma.

Bug: 15814177
Bug: 34722791
Change-Id: Ic664a1b821aaeaf2bde14b0afa1a1975e31300cb
2017-01-30 22:51:59 -08:00
Dan Albert dc2597d25a Don't force libraries upon static executables.
The linker uses libc++_static but needs to avoid the libc.a
dependency. It does this by setting `stl: "none"` and manually
linking libc++. This behavior matches make.

A better approach would probably be to generalize system_shared_libs
to system_libs and apply those to static executables the same way we
do for dynamic ones, but that's a patch for another day.

Test: make checkbuild
Bug: http://b/34740564
Change-Id: Ie9da0d49a453a220593e8ec2ee721e9af9378007
2017-01-26 17:44:26 -08:00
Treehugger Robot 29c69e83dd Merge "Add libc++ and libc++_static aliases for SDK builds." 2017-01-26 21:28:11 +00:00
Brian Carlstrom 7f205c8289 Merge "Revert "Switch to clang-3625443."" 2017-01-26 08:05:35 +00:00
Stephen Hines 73431cb86e Revert "Switch to clang-3625443."
This reverts commit 1d7513decd.

Reason for revert: <INSERT REASONING HERE>

Change-Id: Ida39c91bfc70ba60b2a3113544ec43c566b6c494
2017-01-26 07:59:16 +00:00
Treehugger Robot 49110a5d88 Merge "Switch to clang-3625443." 2017-01-26 07:13:21 +00:00
David Benjamin 87f9f03d3f Add libc++ and libc++_static aliases for SDK builds.
c++_shared and c++_static are named libc++ and libc++_static in every
other mode. Allow the same names so targets which are built for both
host and device with SDK may specify a single name for the STL.

Test: external/boringssl is able to use "libc++_static" as the STL.
Change-Id: Ibc579c7e24ddb8de12fbfc6e1b5d80648efa589e
2017-01-25 16:47:31 -05:00
Evgenii Stepanov 774cb81796 Disable global coverage when a module disables asan.
With SANITIZE_TARGET="address coverage", if a module disables ASan
(address: false), it is left with just coverage, which is not
supported. In that case, disable coverage as well.

Bug: 33091541
Test: see above
Change-Id: Idcd04dad8cab7c7e2644d2408b1b8a381490e5af
2017-01-24 20:55:11 +00:00
Stephen Hines 1d7513decd Switch to clang-3625443.
Bug: http://b/31532493
Test: Manual validation.
Change-Id: I9891e817342e45f16afa4acb57d2d136e16161a6
2017-01-23 15:05:27 -08:00
Evgenii Stepanov 7ebf9fa3c9 Force Thumb for CFI targets.
Bug: 22033465
Test: bionic device tests
Change-Id: I672ccc970309631fa895b7134a32c0d403a2151e
2017-01-20 14:13:32 -08:00
Vishwath Mohan 97673c06d8 Merge "Hide CFI behind a global flag." 2017-01-20 01:32:44 +00:00
Vishwath Mohan 1b017a76e1 Hide CFI behind a global flag.
This CL ensures that locally enabling CFI in a .bp file is not honored
unless it is enabled globally using ENABLE_CFI=true first, effectively
hiding it behind a flag.

Bug: 30227045
Bug: 22033465
Test: m -j40 works and device boots
Test: cfi is correctly honored only when the global flag is set.
Change-Id: Iccc6e4bf5e7828ab8ce6056f3e40922712faa0d8
2017-01-19 14:40:34 -08:00
Dan Willemsen 0fe7253718 Export cc_test as Make class NATIVE_TESTS
So that make can tell the difference.

Bug: 32177952
Test: Diff build-aosp_arm64.ninja before/after
Change-Id: Icd98ea5f5b4127bf84197c6b651a72708eec57f1
2017-01-17 13:25:49 -08:00
Dan Albert 022e7a3839 Allow `unversioned_until: "current"`.
Since most system libraries aren't actually versioned yet, we
shouldn't be building the stub libraries with version info just yet.
Setting `unversioned_until: "current"` will not use the version
script for anything but android-current (this way when the version
script is applied, we'll immediately catch it if they don't match).

Test: Updated frameworks/wilhelp to use this, make ndk
Bug: https://github.com/android-ndk/ndk/issues/278
Change-Id: I0dab7fd21bb0f063c39368d37feaa3f822e908ce
2017-01-05 15:49:09 -08:00
Dan Albert 98dbb3bc2d Add unversioned_until to ndk_library.
This defaults to the value of first_version, and should almost never
be used. This is only needed to work around platform bugs like
https://github.com/android-ndk/ndk/issues/265.

Test: Set `unversioned_until: "24"` for libGLESv3.ndk, readelf on the
      android-23 and android-24 outputs to check for version info.
Bug: https://github.com/android-ndk/ndk/issues/265

Change-Id: Ie44b170daad692fdc98e7d7c5f10f9077930b8a9
2017-01-03 15:16:29 -08:00
Dan Albert ae452ccb7f Support versioned=%d at the section level.
Test: nose2
Bug: https://github.com/android-ndk/ndk/issues/265
Change-Id: I4c22cb8069f41861613ecf01f7e1adbe1d3118a9
2017-01-03 14:27:41 -08:00
Dan Willemsen 3340d6091c Allow disabling the named test directory for cc_test
Some external test suites (LTP in this case), have their own expected
layout, and don't fit well with our
/data/nativetest/<testname>/<testname> layout, nor do they work with
test_per_src.

So allow setting no_named_install_directory along with
relative_module_path to specify a custom test path:

  no_named_install_directory: true,
  relative_module_path: "ltp/testcases/bin",

Test: Convert LTP
Change-Id: Ib002c058674e8b960a4fdc3af1a25c8bcaeb1d63
2016-12-27 14:40:40 -08:00
Colin Cross 068e0feace Support filegroups
filegroup is a module that contains a list of files, and can be used
to export files across package boundaries.  filegroups (and genrules)
can be referenced from srcs properties of other modules using the
syntax ":module".

Test: m -j
Change-Id: I3d6fc4819c0b4225b474e0ad42f0d947f55a5961
2016-12-17 16:34:03 +00:00
Colin Cross 35e3972068 Remove frameworks/base/include from the global include path
It is empty now.

Bug: 33630870
Test: m -j native
Change-Id: I8f41b56594241aced0f874af2fa73207b51ff8d6
2016-12-16 08:42:35 -08:00
Colin Cross 32ec36c631 Only export exported header libs
Test: m -j native
Change-Id: Ia0e5b28495e049ba8037884d2c498a1b59012bbe
2016-12-15 07:40:13 -08:00
Treehugger Robot 1bd40ba84b Merge "Export LLVM_RELEASE_VERSION" 2016-12-15 07:19:03 +00:00
Treehugger Robot 41e6002483 Merge "Move frameworks/native/opengl/include from -isystem to -I" 2016-12-15 07:12:24 +00:00
Dan Willemsen 100911909c Export LLVM_RELEASE_VERSION
Test: m -j libc; check out/soong/make_vars-*.mk
Change-Id: Ic29407d8b2ecc69f8d95102bca81bec3f0c5012b
2016-12-14 16:26:48 -08:00
Colin Cross 14e8dd73d0 Move frameworks/native/opengl/include from -isystem to -I
-isystem hides all warnings.  The warnings in
frameworks/native/opengl/include have been fixed, move it from
-isystem to -I.

Test: m -j native
Bug: 31751828

Change-Id: If182ab5664e22f0cfd5be8cb1d0309d07dc85ceb
2016-12-14 11:13:16 -08:00
Colin Cross 37047f1c7e Pass DepsContext to dependency methods
Pass a DepsContext that embeds android.BottomUpMutatorContext
instead of android.BaseContext so that dependency methods can
directly add dependencies.

Test: m -j
Change-Id: Id4c157975d3d6f03efd99785d217bef486a76139
2016-12-13 17:32:29 -08:00
Colin Cross 5950f3827c Support explicit header-only libraries
To date we have been using static libraries with no source files as
header-only libraries.  Switch to using header_libs to make the user's
expectations clear, in case we need to differentiate the semantics of
static libraries and header-only libraries when we enable transitive
static library dependencies.

Test: mma -j external/llvm
Change-Id: I3ce16df11076b637bd192880e86ec9027738b9e7
2016-12-13 15:03:42 -08:00
Colin Cross ab3b7323c4 Remove boolean arguments from NewLibrary()
NewLibrary is going to be used for header only libraries.  Instead
of adding more boolean arguments, replace the existing ones with
BuildOnlyStatic and BuildOnlyShared calls on the libraryDecorator
returned by NewLibrary.

Test: m -j, compare build.ninja
Change-Id: Id390b66cbf2a5f0932b32f40a5e18eb9e3852ee7
2016-12-13 14:50:51 -08:00
Colin Cross a8f5e9a8b2 Allow disabled dependencies when SOONG_ALLOW_MISSING_DEPENDENCIES is set
Push the "depens on a disabled module" dependency to runtime when
SOONG_ALLOW_MISSING_DEPENDENCIES is set so that subsets of the tree
can build when some modules are disabled.

Test: external/clang/build.py on llvm branch
Change-Id: I47e4f41d04aa3df173757f03a0c581b0bafb93f0
2016-12-13 12:53:47 -08:00
Colin Cross be360ae4c1 Permit allow_undefined_symbols inside arch blocks
Renderscript builds need to allow undefined symbols only for linux
host builds.

Test: mmma -j frameworks/compile/libbcc
Change-Id: Ieb83fc13fed16ae386261e0a1855fdd9c4fdf9bd
2016-12-08 09:45:21 -08:00
Colin Cross 989c66e370 Use toolchain to get binary extension for symlinks
Get the binary extension directly from the toolchain instead of
computing it from the target.

Test: mmma -j external/clang
Change-Id: Ib181bc60d0617ad50529791e7b9fc61268376819
2016-12-08 09:44:58 -08:00
Colin Cross 9b09f248d8 Install symlinks with same suffix and extension as installed file
Move symlink installation into the binaryDecorator so that it can
access the suffix and extension when installing symlinks.  Also
consolidates the symlink and symlink_preferred_arch handling.

Test: m -j clang, ls -l out/host/windows-x86/bin/clang++.exe
Change-Id: I1204afb71fac87b276bd6b625b52ee21274855a0
2016-12-07 17:35:37 -08:00
Treehugger Robot 394cf47ac4 Merge "Always check tidy properties" 2016-12-06 19:32:29 +00:00
Colin Cross 7a7cf97597 Fix mac build
Darwin doesn't support --start-group/--end-group, and groups
libraries anyways.

Test: m -j
Change-Id: I0fdbe24973cad3cd84164cdfeced2507a4c6ee91
2016-12-06 02:52:43 +00:00