Commit Graph

1778 Commits

Author SHA1 Message Date
Dan Willemsen 5a050c0183 Support Mac 10.14 SDK
Now that we don't compile 32-bit binaries, this seems to work, at least
in Xcode 10 beta 6.

Test: m checkbuild host
Change-Id: I61a98a3c31b331d6d01cd633f8d949fad86047cb
2018-08-28 16:48:45 -07:00
Evgenii Stepanov a6302337c8 Pass hwasan extra cflags to make.
Bug: 112438058
Test: SANITIZE_TARGET=hwaddress
Change-Id: If57e5f4cf78037992936ce94a98f017676b7e74b
2018-08-28 13:51:05 -07:00
Chih-hung Hsieh 4cef9cbbad Merge "Define PATH_TO_CLANG_TIDY_SHELL for build/make rules."
am: 4b42edbca0

Change-Id: Ie19f560057ef5d3e2ef0671e8af42dd3d1261626
2018-08-28 12:21:36 -07:00
Chih-hung Hsieh 4b42edbca0 Merge "Define PATH_TO_CLANG_TIDY_SHELL for build/make rules." 2018-08-28 18:18:32 +00:00
Jiyong Park 58918f3e69 Merge "link type of recovery variant of a vendor module should not be native:vendor"
am: c842742f5d

Change-Id: I934a5dcb8dfb84d3e1e044ada1d2c2dd25c3fbff
2018-08-28 07:27:46 -07:00
Jiyong Park 5baac54d58 link type of recovery variant of a vendor module should not be native:vendor
This CL fixes a bug that when a module is configured as 'vendor: true' &&
'recovery_available: true', the link type of the recovery variant of the
module is incorrectly set to 'native:vendor'. This was because,
androidmk.go emits 'LOCAL_PROPRIETARY_MODULE := true' whenever
Proprietary property is set to true, regardless of whether it is a
recovery variant or not. This in turn makes LOCAL_USE_VNDK := true for
the module which in turn causes the link type to be 'native:vendor'.

Fixing the bug by resetting the properties like Proprietary, Vendor,
Soc_specific, etc. for the recovery variants.

Bug: 113277544
Test: m -j (test added)
Change-Id: I5d6ae76e46ef8fcd9204d386d0809862a7b0ff7e
2018-08-28 10:03:17 +09:00
Chih-Hung Hsieh b699c43f89 Define PATH_TO_CLANG_TIDY_SHELL for build/make rules.
* PATH_TO_CLANG_TIDY_SHELL is ${config.ClangTidyShellPath},
  wich is "build/soong/scripts/clang-tidy.sh"

Bug: 110538415
Test: build with WITH_TIDY=1
Change-Id: I27d7be095c998583fa9ad4d705aa1332bd018140
2018-08-27 16:19:59 -07:00
Ryan Prichard f867f36e2f Merge "NDK sysroot: include each license file only once"
am: 09664bd9a5

Change-Id: I4f84c5adb80b0e368c881ffe53cf0f50bf24e9e4
2018-08-24 15:53:23 -07:00
Treehugger Robot 09664bd9a5 Merge "NDK sysroot: include each license file only once" 2018-08-24 22:40:32 +00:00
Ryan Prichard b1c9d40b6f NDK sysroot: include each license file only once
bionic/libc/NOTICE file is 6000 lines long and is referenced by 10
modules in bionic/libc/Android.bp. We're currently including 10 copies of
the license file, which makes it hard to view a "platform prebuilts" CL
in Gerrit.

For example, click "Expand All" on:
https://android-review.googlesource.com/c/platform/prebuilts/ndk/+/730825

Bug: none
Test: m out/soong/ndk.timestamp
Change-Id: I857e70d7d900688532ab988800c98bbd0899cc31
2018-08-24 13:28:04 -07:00
Chih-Hung Hsieh 1cc0227af2 Remove flto dependent flags when -flto is removed.
am: 9e88ba9f22

Change-Id: I174a627fe877f66b81ae889a82eefadff8216dc4
2018-08-24 12:53:01 -07:00
Chih-Hung Hsieh 9e88ba9f22 Remove flto dependent flags when -flto is removed.
* C++ source files could be compiled with "-fwhole-program-vtables"
  in cppflags. We need to filter out those flto dependent flags
  in flags.CppFlags and use flags.toolingCppFlags instead of
  flags.cppFlags.

Test: build with WITH_TIDY=1
Change-Id: Ic2b0f99b95a5f0422f879226e6f6060cab71456a
2018-08-24 18:42:22 +00:00
Chih-hung Hsieh 5761ca65c6 Merge "Add clang-tidy.sh to filter out troublesome flags."
am: a644fbfa2c

Change-Id: I79f64979576431e85d6196110615450da1c4eea3
2018-08-23 15:34:55 -07:00
Chih-Hung Hsieh a7aa958e6e Add clang-tidy.sh to filter out troublesome flags.
* Some flags are accepted by clang but not clang-tidy.
  They could cause the diagnostic-unused-command-line-argument warning.
  Flag -flto messed up the -I flags.
* Add clang-diagnostic-unused-command-line-argument to
  default clang-tidy checks.
* Move CLANG_TIDY_UNKNOWN_CFLAGS to build/make/core/clang/tidy.mk.

Bug: 111850071
Bug: 111885396
Test: build with WITH_TIDY=1
Change-Id: Iabeeb27715acf83ef6aafe3e77206b9a01a0d889
2018-08-22 09:21:45 -07:00
Evgenii Stepanov 72a8984921 Merge "Add "hwaddress" sanitizer."
am: 9b4f9afbaf

Change-Id: I163b6cbcf9c14ee6fd7a55b86f5db642abe52d0a
2018-08-20 17:11:00 -07:00
Treehugger Robot 9b4f9afbaf Merge "Add "hwaddress" sanitizer." 2018-08-20 23:22:35 +00:00
Evgenii Stepanov d97a6e9483 Add "hwaddress" sanitizer.
This is a new sanitizer similar to ASan, but with a few differences
from the build system perspective:
* Only runs on AArch64.
* Supports static binaries.
* Bionic itself will be built with HWASan.
* Does not have any "if a library is sanitized than the binary must
  be, too" requirements unlike ASan. Even better, individual static
  libraries can be freely sanitized or not. We propagate "nosanitize"
  from binaries to static libraries anyway, because otherwise there
  is no good way to disable hwasan on a binary as a whole.

Same a CFI, we export a list of sanitized static libraries to make.
In fact, we export separate lists for vendor and regular libraries,
because it is possible for one to be sanitized without the other
(i.e. there can be mylib.hwasan.vendor w/o mylib.hwasan or vice
versa).

Bug: 112438058, 112709969
Test: manual, part of a bigger patch set

Change-Id: Ie4fdeb522ac03cf9684526882e84dfee3807b6a7
2018-08-16 13:18:47 -07:00
Colin Cross f83e82933e Move autogenerated test config into Soong
am: 303e21f695

Change-Id: Ia2a12f6a398b8273e4c726b95e7e84a4825c7518
2018-08-14 19:34:04 -07:00
Colin Cross 303e21f695 Move autogenerated test config into Soong
Move autogenerating the test config for Soong modules into Soong
for java_test and android_test modules.

Bug: 70770641
Test: m checkbuild
Test: atest CtsUiRenderingTestCases
Change-Id: I02593add0407ef694b91c14cf27411a4f3cc4745
2018-08-14 15:44:08 -07:00
Logan Chien 70c797395f Merge "Support prebuilt shared libs end with versions" am: 0c3b508d2b
am: 31e8907827

Change-Id: Ic37a0c2e5c4c02dd42d13cb3bc413e40cfeb67f8
2018-08-12 19:01:34 -07:00
Logan Chien 0c3b508d2b Merge "Support prebuilt shared libs end with versions" 2018-08-13 01:52:23 +00:00
Hridya Valsaraju 80f85655a0 Add exclude_header_libs for recovery_available:true libs am: 280febfb14
am: 877a4c1fbc

Change-Id: Ie1b482962df94f4746c629d7fe93a8cd535cedb9
2018-08-10 12:30:40 -07:00
Hridya Valsaraju 280febfb14 Add exclude_header_libs for recovery_available:true libs
Bug: 78793464
Test: mmm
libhardware needs to be made available in recovery without
exporting bluetooth and audio headers.

Change-Id: Ib1d1bcda49abccfb9a4768580e1c1d92ead68773
2018-08-10 09:35:47 -07:00
Jiwen 'Steve' Cai e5d9bde094 Add exclude_header_libs for vendor_available:true libs am: 8dbc653dff
am: 76180a8c7d

Change-Id: I455cbcb8e1ad894213fb4047d44d156b730d7fac
2018-08-09 23:06:04 -07:00
Jiwen 'Steve' Cai 8dbc653dff Add exclude_header_libs for vendor_available:true libs
Adding a mechanism to conditionally exclude some header library
dependencies when a lib is built for vendors.

Without this, some libraries cannot be earily marked as vendor_available
if they are depending on header libs can shouldn't be marked as
vendor_available.

By using exclude_header_libs with exclude_srcs (or __ANDROID_VNDK__
macro), we can eliminate the unnecessary dependency for vendors.

Bug: 112338314
Test: build
Change-Id: If12dceb6045099fe828fe33af2ac4428f88499a2
2018-08-09 21:19:32 -07:00
Dan Albert 0d205d4d85 Dedup version-script handling code. am: 61f32128aa
am: 3475e072b6

Change-Id: I95eb9b85c90ef5c19921f1895cbbd57763cc44c7
2018-08-09 11:51:26 -07:00
Logan Chien 031d2b32e3 Support prebuilt shared libs end with versions
This commit changes how `cc/androidmk.go` generates LOCAL_MODULE_STEM,
LOCAL_MODULE_SUFFIX, and LOCAL_BUILT_MODULE_STEM.  Now, `splitFileExt()`
takes a file name and a list of expected file extensions.
`splitFileExt()` searches the first occurrence of expected file
extensions in the file name.  If it can not find any, it will simply
return the last file extension.

Before this commit, `cc/androidmk.go` simply extracts the last file
extension (e.g. `.so`).  However, if the prebuilt shared libs end with
version numbers (e.g. `libc++.so.1`), it will use `$(LOCAL_MODULE).1` as
LOCAL_BUILT_MODULE_STEM and this will lead to missing target ninja
error.

Bug: 111579848
Test: Build a program that links libc++_host (from prebuilts/clang)
Change-Id: Id96726c69705d518ea725bb6abd8ff4527ca0cbc
2018-08-09 10:45:18 +08:00
Dan Albert 61f32128aa Dedup version-script handling code.
This is common to binaries and libraries, so move it from library.link
and binary.link to baseLinker.linkerFlags and baseLinker.linkerDeps.

Test: make checkbuild
Bug: None
Change-Id: I5fb24118e601673ae0713a6adc773a1565749be8
2018-08-08 14:36:34 -07:00
Julien Desprez eee05612fe Merge "Support 'test_config' into soong modules" am: 7a127f97b6
am: 687965c36b

Change-Id: I4cdc3ed50e813c85951372383a707d0dc3e19793
2018-08-08 10:59:39 -07:00
Julien Desprez e146e39fa6 Support 'test_config' into soong modules
Test: make general-tests
Bug: 110982517
Change-Id: Ib2eab2653fdfce6f699b85c9fbc64558b6d40363
2018-08-07 15:51:21 -07:00
Logan Chien 42cf4b8715 Merge "Remove LinuxClangCppflags" am: 7a1d4418d6
am: dc9321b257

Change-Id: I0988dcf773d249db6b636c936bc4b6b05e79f686
2018-07-31 11:00:34 -07:00
Logan Chien dc9321b257 Merge "Remove LinuxClangCppflags"
am: 7a1d4418d6

Change-Id: I5507797e2ff5e7c08b9dfd1d04d15d29c290ac69
2018-07-31 10:56:27 -07:00
Logan Chien 7a1d4418d6 Merge "Remove LinuxClangCppflags" 2018-07-31 17:51:17 +00:00
Logan Chien bef00a2c52 Remove LinuxClangCppflags
This commit removes LinuxClangCppflags.  Adding these `-isystem` flags
results in build failures when we build a module with `libc++_host`.
Furthermore, these headers are not being used anymore.

Bug: 111579848
Test: make checkbuild  # on aosp and internal
Change-Id: Ideca268431d9d60d383e3e5b7bb3f73ece416bd2
2018-07-31 01:45:00 +08:00
Chih-Hung Hsieh bafbeac702 Do not pass -flto dependent flags to clang-tidy. am: ff7cff7268
am: 9e7e09b77a

Change-Id: Ia26281d74e74cb4aa6f111e2273a012e9a266350
2018-07-26 20:23:10 -07:00
Chih-Hung Hsieh 9e7e09b77a Do not pass -flto dependent flags to clang-tidy.
am: ff7cff7268

Change-Id: I0da058960c67b69ecf2df63e5f2b385b82eea80e
2018-07-26 20:19:07 -07:00
Chih-Hung Hsieh ff7cff7268 Do not pass -flto dependent flags to clang-tidy.
Bug: 111885396
Test: run with WITH_TIDY=1
Change-Id: I92468491cdc5894d1197f6c1631e2073c6e7c4fa
2018-07-26 17:43:12 -07:00
Chih-Hung Hsieh d31b3f87dd Merge "Do not pass -flto and -fsanitize flags to clang-tidy." am: 9f65ef8cd9
am: 167d8c77ba

Change-Id: Ibe7416e9ae2b5b1f73dda5862a3c3eebda33bc60
2018-07-26 17:04:54 -07:00
Chih-Hung Hsieh 167d8c77ba Merge "Do not pass -flto and -fsanitize flags to clang-tidy."
am: 9f65ef8cd9

Change-Id: I7edbaaa8cccabe2b2952fa88499bdfbecfecf60a
2018-07-26 16:59:42 -07:00
Chih-Hung Hsieh 5942fe4fd1 Do not pass -flto and -fsanitize flags to clang-tidy.
Some flags stop clang-tidy to search included header files.

Bug: 111885396
Test: run with WITH_TIDY=1
Change-Id: Ie1ac37298793c015286db0f5caa252b67f4db365
2018-07-26 15:00:28 -07:00
Ryan Prichard 07c5952b1d Revert part of "Stop versioning NDK stubs pre-M." am: 37ebbdee6c
am: 81947d241c

Change-Id: I49be6f68894928f09557305d8ddedf5616b9c1e7
2018-07-24 17:14:57 -07:00
Ryan Prichard 81947d241c Revert part of "Stop versioning NDK stubs pre-M."
am: 37ebbdee6c

Change-Id: Icd202a99e39622e9d788763bf819a0d7be5acfad
2018-07-24 17:05:41 -07:00
Dan Albert 6bc5b8320f Stop versioning NDK stubs pre-M.
Test: make ndk # readelf various stubs to check version info
Bug: https://github.com/android-ndk/ndk/issues/622
Change-Id: Ic2930cfe5ee8377bb89bfb1bc051b6975f6e57d3
Merged-In: Ic2930cfe5ee8377bb89bfb1bc051b6975f6e57d3
(cherry picked from commit c229f38e93)
2018-07-24 22:52:57 +00:00
Ryan Prichard 37ebbdee6c Revert part of "Stop versioning NDK stubs pre-M."
This reverts commit e67144e302.

Keep the getApiLevelsMap function and keep using it in
shouldUseVersionScript. It seems useful. (Also, keeping it probably avoids
an AOSP->internal merge conflict...)

Bug: https://github.com/android-ndk/ndk/issues/750
Test: m out/soong/ndk.timestamp, examine dynsym in stubs
Change-Id: Icbb26fc46a9a1dc99f22af195468f08713c4f216
2018-07-24 12:46:35 -07:00
Dan Willemsen 6f952934cb Remove `clang: false` support am: 742a5453c2
am: 4713e25788

Change-Id: Ib39f9ad249a632ac4d8024a5c37a29f096c6ae1f
2018-07-23 19:26:00 -07:00
Dan Willemsen 4713e25788 Remove `clang: false` support
am: 742a5453c2

Change-Id: Idcb738ca7cb39882157f36ca44ef492fe2a8b0a0
2018-07-23 19:20:56 -07:00
Dan Willemsen 742a5453c2 Remove `clang: false` support
Most everything in Soong is using clang (and we're getting very close
for Make as well), so remove the ability to select GCC to build a
module.

We still need to keep the internal functionality around to find libgcc.a
and other toolchain_library modules with GCC.

Test: m blueprint_tools
Change-Id: I5ef3e3836b9ad3e160669ac32aee39698c9b72c3
2018-07-23 17:19:36 -07:00
Dan Willemsen 7c6bbd6c1f Fix `go vet` issues am: 59339a29e1
am: af42826aee

Change-Id: I6e8d7a9d3abb13b035e394f7c0657d49d64f8b5b
2018-07-22 23:28:00 -07:00
Dan Willemsen af42826aee Fix `go vet` issues
am: 59339a29e1

Change-Id: I6c5de64ee36c1dde4e043b36f84d2cf140afac41
2018-07-22 23:23:59 -07:00
Dan Willemsen 59339a29e1 Fix `go vet` issues
Test: go vet ./...
Change-Id: Ifb936ccc5e2b5a2c3fcbbbcb54f680e2973ea1b3
2018-07-22 21:18:45 -07:00
Logan Chien 68fa0cfc5a Merge changes I420a5953,I8e2352f3,I7a6bb905 am: 23be383843
am: 8847412281

Change-Id: I8438e42982d62a68f4dea625e2b9c3f0bd444545
2018-07-18 21:26:21 -07:00
Logan Chien 8847412281 Merge changes I420a5953,I8e2352f3,I7a6bb905
am: 23be383843

Change-Id: Ie35e110f38405cb018a887274c6099456844c454
2018-07-18 21:22:24 -07:00
Treehugger Robot 23be383843 Merge changes I420a5953,I8e2352f3,I7a6bb905
* changes:
  Support text ABI dump file format
  Remove vndkVsNdk()
  Remove isSourceDump from PathForVndkRefAbiDump()
2018-07-19 04:15:30 +00:00
Treehugger Robot cdf399c40a Merge "Stop versioning NDK stubs pre-M." 2018-07-18 01:13:49 +00:00
Dan Albert e67144e302 Stop versioning NDK stubs pre-M.
Test: make ndk # readelf various stubs to check version info
Bug: https://github.com/android-ndk/ndk/issues/622
Merged-In: Ic2930cfe5ee8377bb89bfb1bc051b6975f6e57d3
Change-Id: Ic2930cfe5ee8377bb89bfb1bc051b6975f6e57d3
2018-07-17 23:26:00 +00:00
Dan Albert c229f38e93 Stop versioning NDK stubs pre-M.
Test: make ndk # readelf various stubs to check version info
Bug: https://github.com/android-ndk/ndk/issues/622
Change-Id: Ic2930cfe5ee8377bb89bfb1bc051b6975f6e57d3
2018-07-13 13:25:33 -07:00
Jiyong Park 84e78c4973 Merge "Don't create non-primary arch variant for recovery-only module" am: 9ea9fc3dee
am: 7f413148ed

Change-Id: I7aa7634ee2ece3c39b1dcaebccfedf7d785857f1
2018-07-12 18:44:11 -07:00
Jiyong Park 7f413148ed Merge "Don't create non-primary arch variant for recovery-only module"
am: 9ea9fc3dee

Change-Id: Ibe1274c36c9233ee396d323544c6aa599f635ae5
2018-07-12 17:14:44 -07:00
Jiyong Park 37b252096a Don't create non-primary arch variant for recovery-only module
To save space, only the primary arch variant is installed to the
recovery partition. This has been done in the imageMutator by not
creating recovery variant for the non-primary arch.

However, this caused a problem for recover-only module, i.e., recovery:
true. Such module ends up creating no variant for the non-primary arch.
Since every other modules are at least in one image variant, any
dependency fro such module with no image variant can't be satisfied.

In order to solve the problem, archMutator is modified to create only
the primary arch for recovery-only modules.

Bug: 111321972
Test: m -j (TestRecovery added)
Change-Id: Ie32ae06fb094efcfd8531cdf6071139d292d93ab
2018-07-12 10:49:30 +09:00
Logan Chien 7eefdc4ed2 Support text ABI dump file format
This commit adds an option to read ABI reference dump in text file
format directly from `prebuilts/abi-dumps`.  If both the text file and
the gzip format exist, an error will be emitted.

Bug: 78650426
Test: create libexif.lsdump.gz and it works as usual
Test: create libexif.lsdump (decompressed) and it works
Test: touch both libexif.lsdump.gz and libexif.lsdump and it errors
Change-Id: I420a5953fb80855cb5c07e5a4d347fb6709f0340
2018-07-11 18:37:50 +08:00
Logan Chien 5237bed1c4 Remove vndkVsNdk()
This commmit removes `vndkVsNdk()`, which is essentially
`!inList(ctx.baseModuleName(), llndkLibraries)`.

Test: lunch aosp_arm64_ab-userdebug && make
Change-Id: I8e2352f302df30057997944678f176f4550d3f75
2018-07-11 17:30:39 +08:00
Logan Chien 83c415f955 Remove isSourceDump from PathForVndkRefAbiDump()
This commit removes `isSourceDump` from `PathForVndkRefAbiDump()`
because the binary dump paths are not being used at all.

Test: lunch aosp_arm64_ab-userdebug && make
Change-Id: I7a6bb9053a6b052590fb1152982949fee897df8d
2018-07-11 15:27:36 +08:00
Logan Chien 2fbf1cba9d Merge "Cleanup createVndkSourceAbiDump()" am: f33dca0ada
am: 322ab10d5a

Change-Id: I0e1abe56f73cb0285e14b26ac13217978ff36aeb
2018-07-10 20:23:14 -07:00
Logan Chien 322ab10d5a Merge "Cleanup createVndkSourceAbiDump()"
am: f33dca0ada

Change-Id: I4be5bfa5f3c9affc946942f9dd6915c1f36e0e65
2018-07-10 20:18:54 -07:00
Logan Chien 2f2b890a18 Cleanup createVndkSourceAbiDump()
This commit cleans up `createVndkSourceAbiDump()` and renames it to
`shouldcreateVndkSourceAbiDump()`.

Test: lunch aosp_walleye-userdebug && make
Change-Id: Iff4379e2812c4b5c5baff288b938eed5d92e024f
2018-07-10 15:03:44 +08:00
Jiyong Park 236c6202b5 Merge "Fix: recovery module is disabled on 32-bit targets" am: bdf16ec5b2
am: 0d08b06820

Change-Id: I82f5dad19bdb10083c13441a6ca525ff97478bb1
2018-07-09 18:54:40 -07:00
Jiyong Park 0d08b06820 Merge "Fix: recovery module is disabled on 32-bit targets"
am: bdf16ec5b2

Change-Id: Ice8e0442c79ec3d673f33e8f8a229c1eccaa8b78
2018-07-09 18:45:11 -07:00
Jiyong Park 8d52f86baf Fix: recovery module is disabled on 32-bit targets
Fixed a bug that recovery variant of a module is not created on 32-bit
targets. The bug was happening because the creation of the recovery
variant relied on DevicePrefer32BitExecutables() which returns false
for 32-bit only targets.

Now, recovery variant is checked against the primary architecture of the
device that is returned by DevicePrimaryArchType().

Test: m -j adbd.recovery on aosp_arm and aosp_arm64
adbd is built under recovery/root/system/bin and it is ELF32 and ELF64,
respectively for the targets.
Test: m -j libc.recovery on aosp_arm, aosp_arm64, aosp_sailfish
and the x86+arm target in mater. Only one libc.so is installed
under recovery/root/system/lib (or lib64).

Change-Id: I83a248d81f2c71dcfb0e9d887a75b71338f27b4d
2018-07-08 09:43:10 +09:00
Steven Moreland 77debe2167 Merge "aidl: -ninja -> --ninja" am: 17bef8f034
am: b3fec2c4c2

Change-Id: Ib47a96dc4e91caafccff9ce31a2b29404c4cc3ea
2018-07-06 17:29:18 -07:00
Steven Moreland b3fec2c4c2 Merge "aidl: -ninja -> --ninja"
am: 17bef8f034

Change-Id: I9745a188c77ede18c1a106239cba35abd25fea2c
2018-07-06 17:24:57 -07:00
Steven Moreland b468bca551 aidl: -ninja -> --ninja
Bug: 110967839
Test: AIDL's runtests.sh
Change-Id: I49c0a2526b6d4083c927104a3e66017080000847
2018-07-06 11:36:32 -07:00
Yi Kong c888227e7d Merge "Revert^6 "Move -Wno-enum-compare{,-switch} to external cflags""
am: c415116333

Change-Id: I352ec6a79d3d525c17bde9eceaf3b348b63d6a9a
2018-06-29 17:18:21 -07:00
Pirama Arumuga Nainar 8db11184e6 Merge "Remove unsupported/unused No_pie property"
am: b830e84821

Change-Id: Ief33f0e4bcf5c9323e012e4cefbc8e957eba6a34
2018-06-29 17:06:16 -07:00
Yi Kong c415116333 Merge "Revert^6 "Move -Wno-enum-compare{,-switch} to external cflags"" 2018-06-30 00:03:55 +00:00
Pirama Arumuga Nainar 19fae4e803 Remove unsupported/unused No_pie property
Bug: http://b/111000882

Doesn't seem to be supported.

Test: AOSP build, TreeHugger
Change-Id: Idaab52caa876102b062b3c21acd42c37328bd328
2018-06-29 14:57:46 -07:00
Yi Kong e1e83e4279 Revert^6 "Move -Wno-enum-compare{,-switch} to external cflags"
This reverts commit c729b508c3.

Reason for revert: New breakages fixed

Change-Id: I8b5e597fdb2af782d591ddcf5b4e7534273a2e7b
Merged-In: I8b5e597fdb2af782d591ddcf5b4e7534273a2e7b
2018-06-29 20:35:35 +00:00
Roland Levillain cda6b350c6 Merge "Revert^5 "Move -Wno-enum-compare{,-switch} to external cflags""
am: cf96428ef4

Change-Id: I5521b4b7e10da012897018333e1209e00742f3f3
2018-06-29 02:45:53 -07:00
Roland Levillain cf96428ef4 Merge "Revert^5 "Move -Wno-enum-compare{,-switch} to external cflags"" 2018-06-29 09:37:42 +00:00
Yi Kong c729b508c3 Revert^5 "Move -Wno-enum-compare{,-switch} to external cflags"
This reverts commit e0050ebda1.

Reason for revert: Breaks build

Change-Id: I01bc218553ae6efb6140b66f035ccb129d3e5028
2018-06-29 08:19:46 +00:00
Yi Kong 71fd304741 Merge "Revert^4 "Move -Wno-enum-compare{,-switch} to external cflags""
am: e758c83bb5

Change-Id: I16b295a98f503685db2bd4ec1a91b52d93f65ab7
2018-06-29 00:03:50 -07:00
Yi Kong e758c83bb5 Merge "Revert^4 "Move -Wno-enum-compare{,-switch} to external cflags"" 2018-06-29 06:57:27 +00:00
Yi Kong e0050ebda1 Revert^4 "Move -Wno-enum-compare{,-switch} to external cflags"
This reverts commit 8ad44855e6.

Reason for revert: Breakage fixed, try again

Change-Id: Ia648b9513d2224a5e363b65f44f9b2f838db1d3d
2018-06-28 21:05:34 +00:00
Pirama Arumuga Nainar e4f89be932 Do not set entry-point for Windows
am: 204165320e

Change-Id: I7db0a7134cc7a6ae85b624d58e72794e0dd53bca
2018-06-27 13:26:41 -07:00
Pirama Arumuga Nainar 204165320e Do not set entry-point for Windows
Bug: http://b/62424007

This breaks 64-bit Windows executables.  Probably due to the Clang
migration, the entry-point need not be set even for 32-bit executables.

Test: 32-bit and 64-bit aapt2_tests.exe and ziparchive-tests.exe can
start.  (There are some failed tests, though).

Change-Id: Id3a7d3d2802f6b671332afff4558840bdabddeb5
2018-06-27 11:27:06 -07:00
Pirama Arumuga Nainar b6682c47b8 Merge "Do not enable sanitizers on Windows"
am: d7e5c05eac

Change-Id: I7398e6b08154c5bc7fad0507bd9e1dae8c14da0a
2018-06-26 17:05:30 -07:00
Pirama Arumuga Nainar 83d716c413 Do not enable sanitizers on Windows
Bug: http://b/69933068

Test: m native-host-cross SANITIZE_HOST=address
Change-Id: Ia9ff941fb569b0a2e9c4eef604fd165f94bca31a
2018-06-26 14:18:16 -07:00
Pirama Arumuga Nainar cd53ba1bab Merge changes from topic "mingw-clang"
am: 9d951a10f3

Change-Id: Ie7e0794c98d4b0d317cea9f1d2bf2c02e760b1e5
2018-06-26 12:54:17 -07:00
Pirama Arumuga Nainar 9af0f2d42a Use -static-libgcc for Windows
am: abf1b31a20

Change-Id: Id8eea1c93a97061fa6e50df7c9ba06a9ec62d306
2018-06-26 12:54:01 -07:00
Treehugger Robot 9d951a10f3 Merge changes from topic "mingw-clang"
* changes:
  Use clang for windows host modules
  Use -static-libgcc for Windows
2018-06-26 19:47:53 +00:00
Chih-hung Hsieh 52bd011b72 Merge "Define CLANG_TIDY_UNKNOWN_CFLAGS for build/make."
am: 95894d8ffe

Change-Id: Iac0463e8b7b8603e5d10f84e26aac7cccafc37ec
2018-06-26 10:03:25 -07:00
Pirama Arumuga Nainar 8a852e7694 Use clang for windows host modules
Bug: http://b/69933068

- Remove GCC's intrinsic header path so Clang's headers get included.
- Add '-B' with GCC's binary directory so Clang detects the linker.
- Bug: http://b/109759970 - Pass '--allow-multiple-definition' linker
flag to deal with ld.bfd's inability to handle Clang-generated section
names is fixed.
- Bug: http://b/110800681 - lld cannot link Android's Windows modules
yet

Test: m native-host-cross and run adb_test.exe under wine.

Change-Id: I9be9cfc34a47cbeee04024438dea214305112eaa
2018-06-25 18:36:50 -07:00
Pirama Arumuga Nainar abf1b31a20 Use -static-libgcc for Windows
Bug: http://b/69970955

With the MinGW prebuilts update (http://aosp/709402), executables get a
runtime dependency on libgcc_s_sjlj-1.dll with both gcc and Clang.
Passing -static-libgcc removes this dependency and is a better option
than having to package an extra dll with executables.

Test: Run gcc-built adb_test.exe under wine
Change-Id: I18e5fadb1b8ace510ae684e2d4cfa7fe7d007cff
2018-06-25 18:31:01 -07:00
Chih-Hung Hsieh ad47a27d9c Define CLANG_TIDY_UNKNOWN_CFLAGS for build/make.
Bug: 110538415
Test: build with WITH_TIDY=1
Change-Id: I6c5b5a0cb3ad3c2756bbae5e7c0234a0dafe5991
2018-06-25 13:48:42 -07:00
Colin Cross e98238b3ab Merge "Use WalkDeps instead of VisitDepsDepthFirst"
am: cbafd0fb48

Change-Id: Ic22ffa9ac8a5e3b5c29cd5e85664acb1afebc04f
2018-06-22 17:14:31 -07:00
Colin Cross 6b75360cbc Use WalkDeps instead of VisitDepsDepthFirst
VisitDepsDepthFirst is almost never correct, as it can't query
dependency tags of multiple dependencies between the same two modules.
Replace VisitDepsDepthFirst with WalkDeps in sanitize.go and
python.go.  Also verify the dependency tag before continuing to
recurse to ensure that they don't recurse through genrules and into
unrelated modules.

Test: m checkbuild
Change-Id: I2f7560126f56b51a40ec39dfbdcc18b5891489f7
2018-06-22 12:44:35 -07:00
Jiyong Park 48bdb37b4a Merge "Recovery partition uses the first architecture only"
am: 87e50a0d14

Change-Id: I2da330f2a4062039f83ecb90800e65595982ad32
2018-06-19 18:20:35 -07:00
Treehugger Robot 87e50a0d14 Merge "Recovery partition uses the first architecture only" 2018-06-20 01:11:10 +00:00
Kostya Kortchinsky 9cba8204b1 Soong support for Scudo
am: d18ae5ce98

Change-Id: I0c0fcf29ccd99575de573a915c7da5d51b14cd45
2018-06-19 13:11:58 -07:00
Kostya Kortchinsky d18ae5ce98 Soong support for Scudo
Scudo is a hardened usermode allocator that is part of LLVM's compiler-rt
project (home of the Sanitizers). clang allows for -fsanitize=scudo as a
possible command line option to link the shared Scudo library to a binary.

This patch add Scudo as a potential sanitize option. Scudo is not compatible
with ASan and TSan and will be disabled if either is enabled.

Bug: 72112048
Test: aosp compiled with m -j
Test: local experiment with scudo: true to ensure that a test target
(tombstoned) could be linked with scudo.

Change-Id: I76bb6c60891d4782f6665a112c4c2bf7c31645da
2018-06-19 09:46:09 -07:00
Jiyong Park 413cc744b8 Recovery partition uses the first architecture only
To save space in the recovery partition, modules installed to the
partition are restricted to be built in the first architecure (i.e.,
32bit for 32bit-only device or when TARGET_PREFER_32_BIT is true, and
64bit otherwise).

Most notably, this change removes the 32-bit variant of the linker
(about 1MB). The linker was installed regardless of whether there is a
32-bit executable or not. Now, the unnecessary linker is not installed
and it is guaranteed that all modules in the partition are built with the
same architecture.

Bug: 79146551
Test: m -j
Test: out/target/product/<name>/recovery/root/system/bin/ has only one
variant of the linker.

Change-Id: I4070a43555bad4cfa8eff5253b09dcd004ea8251
2018-06-19 10:49:21 +09:00
Yi Kong 904ba56bb9 Merge "Remove workaround for cortex-a55/a75"
am: bbabc7b67e

Change-Id: Ic8cbeab81b1c75902c95bd5e2b4e9185a2f8feb6
2018-06-17 02:08:19 -07:00
Yi Kong 9c63363119 Remove workaround for cortex-a55/a75
Test: m checkbuild
Test: boot on a55/a75 device, pass bionic tests
Bug: 110235326
Change-Id: I5ab2102352a6efe1173b3097875e6e779d4a1a09
2018-06-15 23:15:54 +00:00
Yi Kong 86b2b31736 Merge "Update ToolingCFlags overrides to include other new architectures"
am: 8eb8704cf1

Change-Id: I8b2763f16c1a2da5ec91edf3f668264ee3ea7cf2
2018-06-14 22:19:04 -07:00
Yi Kong 8eb8704cf1 Merge "Update ToolingCFlags overrides to include other new architectures" 2018-06-15 05:08:53 +00:00
Yi Kong 72f9a0b2f5 Update ToolingCFlags overrides to include other new architectures
Bug: 110235326
Test: m checkbuild
Change-Id: I9d0ada05d95bb260500c1d694332a73363b0f299
2018-06-14 18:45:54 -07:00
Jiyong Park 1598abf6df Merge changes from topic "sharedlib_in_recovery"
am: 33ab6f6134

Change-Id: I0cfce2564ba7e785bbb4db43626155cce3302ecc
2018-06-13 16:41:09 -07:00
Jiyong Park eb946e1231 Recovery partition has same layout as system
am: 2e6743176a

Change-Id: Ib59834db180f6ec06cb005291bdf527d9cc50c8b
2018-06-13 16:40:53 -07:00
Treehugger Robot 33ab6f6134 Merge changes from topic "sharedlib_in_recovery"
* changes:
  Recovery variants are built with -D__ANDROID_RECOVERY__
  Recovery partition has same layout as system
2018-06-13 23:14:29 +00:00
Jayant Chowdhary 695da73801 Merge "Fix VNDK-Ext ABI check regression"
am: 4038a6ea9f

Change-Id: I51230cf8c0f72b3492eea1fa042228c77dd1f99f
2018-06-13 11:05:08 -07:00
Logan Chien ef1ff3de98 Fix VNDK-Ext ABI check regression
VNDK-Ext are modules with `vndk.enabled: true` but not having
`vendor_available: true`.  In addition, VNDK-Ext should be checked by
source ABI checker.  This change fixes the regression introduced in

Bug: 110142940
Test: Create libminijail_ext, break some ABIs, and see an error.
Change-Id: I8b47ac12d2e132f641129c9549ed22c3971d6c89
2018-06-13 22:32:16 +08:00
Martijn Coenen 2de6cdcecb Merge "Revert "Revert "Revert "Move -Wno-enum-compare{,-switch} to external cflags""""
am: 4de27d7e4f

Change-Id: Ia8ffa6818e19128e1a4c058a64c8b503435136d3
2018-06-13 00:51:05 -07:00
Martijn Coenen 4de27d7e4f Merge "Revert "Revert "Revert "Move -Wno-enum-compare{,-switch} to external cflags"""" 2018-06-13 07:37:56 +00:00
Martijn Coenen 8ad44855e6 Revert "Revert "Revert "Move -Wno-enum-compare{,-switch} to external cflags"""
This reverts commit cc4bbdccd3.

Reason for revert: breaks builds

Change-Id: Ia8908eb372ce46b23aea73283baf37add4477312
2018-06-13 07:36:05 +00:00
Yi Kong 0ca4f2e1d2 Merge "Revert "Revert "Move -Wno-enum-compare{,-switch} to external cflags"""
am: 6da4f7d747

Change-Id: Ia388e92f279eac5a07dafbd241d879c280e0d156
2018-06-12 19:19:10 -07:00
Yi Kong 6da4f7d747 Merge "Revert "Revert "Move -Wno-enum-compare{,-switch} to external cflags""" 2018-06-13 02:10:12 +00:00
Yi Kong cc4bbdccd3 Revert "Revert "Move -Wno-enum-compare{,-switch} to external cflags""
This reverts commit 2f71a6adcd.

Change-Id: I09abb194b25813b8b1e4470b22171121cc3f8c11
2018-06-12 22:59:16 +00:00
Yi Kong 40a43808a4 Merge "Revert "Move -Wno-enum-compare{,-switch} to external cflags""
am: 04f0140479

Change-Id: Iff0ddb70ac23f8d4b6b97ce9a6c0f9ba11876a4c
2018-06-12 01:28:13 -07:00
Treehugger Robot 04f0140479 Merge "Revert "Move -Wno-enum-compare{,-switch} to external cflags"" 2018-06-12 06:44:00 +00:00
Yi Kong 2f71a6adcd Revert "Move -Wno-enum-compare{,-switch} to external cflags"
This reverts commit 96d221f914.

Reason for revert: build breakage for sdk target

Change-Id: I933df62738c08b48d8ae4ea951b2cb4837616c78
2018-06-12 04:51:49 +00:00
Yi Kong d60cb4a7cc Merge "Move -Wno-enum-compare{,-switch} to external cflags"
am: 276e82ef2a

Change-Id: If341e9b12017430d0b54a6f35db9f57598217ee4
2018-06-11 20:51:20 -07:00
Colin Cross cb9b2bda11 Merge "Only write CMakeLists.txt for normal variants"
am: d27a18ff2f

Change-Id: I1fc886940823868fc0bc7b130eedac168c5f0871
2018-06-11 20:50:59 -07:00
Chih-Hung Hsieh c970278167 Merge "Add lld --no-rosegment flag to work with unwinder."
am: 01c66c199e

Change-Id: If38e1b593b1332982ac57e8d00c6d638c7126126
2018-06-11 20:50:44 -07:00
Yi Kong 276e82ef2a Merge "Move -Wno-enum-compare{,-switch} to external cflags" 2018-06-12 02:58:15 +00:00
Treehugger Robot d27a18ff2f Merge "Only write CMakeLists.txt for normal variants" 2018-06-12 01:36:13 +00:00
Treehugger Robot 01c66c199e Merge "Add lld --no-rosegment flag to work with unwinder." 2018-06-12 00:13:27 +00:00
Chih-Hung Hsieh b18814e7a4 Add lld --no-rosegment flag to work with unwinder.
Bug: 109657296
Test: make checkbuild and boot
Change-Id: If8eda7ced31f5d4abb357935e9292b81936af6be
2018-06-11 15:07:34 -07:00
Yi Kong 96d221f914 Move -Wno-enum-compare{,-switch} to external cflags
Test: m checkbuild
Bug: 72330874
Change-Id: I8aaa020f5efafa8746b2c5ae29cea1a313a28045
2018-06-11 14:54:35 -07:00
Jayant Chowdhary 280ee69f47 Merge "For llndk libraries add -consider-opaque-types-different to header-abi-diff invocation."
am: 694b1c7c94

Change-Id: Id7f9b5efa5d157c3fb9c00c140a02d7937a289a9
2018-06-11 14:18:27 -07:00
Jayant Chowdhary 694b1c7c94 Merge "For llndk libraries add -consider-opaque-types-different to header-abi-diff invocation." 2018-06-11 20:16:21 +00:00
Jayant Chowdhary c7434e28d3 For llndk libraries add -consider-opaque-types-different to header-abi-diff invocation.
Bug: 79576032

Test: Create abi reference for libmediandk; build libmediandk;
      header-abi-diff gets invoked with '-consider-opaque-types-different'

Change-Id: I132138e333cc944b54051243b44fa072af74aa83
Signed-off-by: Jayant Chowdhary <jchowdhary@google.com>
2018-06-11 10:51:43 -07:00
Justin Yun 89aa92c6aa Merge "Add binder32bit to vndk_prebuilt module"
am: 30f9382654

Change-Id: I35ca3f845a7bb677af7aeba09915e9765d898d94
2018-06-10 18:55:05 -07:00
Jiyong Park d54aee574d Recovery variants are built with -D__ANDROID_RECOVERY__
Recovery variant of a module is now by default built with
-D__ANDROID_RECOVERY__, thus eliminating the need to define a custom
macro to conditionally compile the module for the recovery mode.
(Of course, they can define their own macro if needed)

Bug: 63673171
Test: m -j
Change-Id: I1d1b990329793472b93c2f56080e72d690eef9ec
2018-06-09 02:03:45 +09:00
Jiyong Park 2e6743176a Recovery partition has same layout as system
Recovery partition has same layout as system. In other words,
executables are installed to <recovery_root>/system/bin and libs are
installed to ../system/lib.

This is made possible because the recovery partition is now
self-contained, i.e., shell, adbd, etc. are hosted in the recovery
partition and thus we no longer has to mount the real system.img
to /system. So /system is now available to executables built for
recovery mode.

Bug: 63673171
Test: `adb reboot recovery; adb devices` shows the device ID
Test: Select 'mount /system' in the recovery mode, then `adb shell`.
$ lsof -p `pidof adbd` shows that libm.so, libc.so, etc. are loaded from
the /lib directory.

Change-Id: I6c4f903ad21fd3dd10a07c4588be85d3d678c099
2018-06-09 01:57:00 +09:00
Justin Yun 3e2323d202 Add binder32bit to vndk_prebuilt module
For a vndk_prebuilt module that was built with 32 bit binder, add
"binder32bit: true" to its Android.bp module.
This will add .binder32 suffix to the name.

Bug: 74362637
Bug: 80450527
Test: m -j vndk_snapshot_package
Change-Id: I81049adbf5e67fe5e63d5ea3a8b027aaf6eb355b
2018-06-08 15:56:40 +09:00
Chih-Hung Hsieh 410f48ca0e Use llvm-{objcopy,strip} when clang lld is used. am: 30485c920c
am: c6f8e4f025

Change-Id: Ia05a21c77f0aade23201f95140563de12417bab7
2018-06-07 21:07:55 -07:00
Chih-Hung Hsieh 30485c920c Use llvm-{objcopy,strip} when clang lld is used.
* Pass LLVM_{OBJCOPY,STRIP} to makefile rules.
* strip.sh is used only in soong-only mode.
  It will use llvm-strip and  and llvm-objcopy
  when --use-llvm-strip is given.
  Keep flags of strip.sh in alphabetic order.
* Tested build/soong/scripts/build-ndk-prebuilts.sh
  by adding "UseClangLld": true, to soong.variables file.

Bug: 80093681
Test: build/soong/scripts/build-ndk-prebuilts.sh
Change-Id: I612267304eea434c7a33cc086b27b577d5f64094
2018-06-07 16:04:14 -07:00
Colin Cross dfe4752181 Only write CMakeLists.txt for normal variants
Modules may have multiple variants for each architecture, and
SOONG_GEN_CMAKEFILES=1 was generating CMakeLists.txt for all of
them, overwriting the first normal variant with the last (and
likely least normal) variant.

Keep a map of generated CMakeLists.txt files, and only generate
each one once.

Bug: 72283227
Test: m SOONG_GEN_CMAKEFILES=1
Change-Id: If31087264d2809088fe36965b9a0ff0f44089852
2018-06-07 21:34:03 +00:00
Yi Kong b9e2a10093 Merge "Revert "Revert "Add external projects only CFlags option""" am: 8d29e1e024
am: 2090540f19

Change-Id: I8d1872552155864a7fa175c9fc1b25031ed8bc76
2018-06-06 23:57:25 -07:00
Yi Kong cc80f8d64f Revert "Revert "Add external projects only CFlags option""
This reverts commit a9ccbb7b87.

Test: m
Change-Id: I92d7b7707f73ef3af5824d3e8cb6da0465b5e07d
2018-06-06 16:41:26 -07:00
Colin Cross 3a11cd03b8 Remove references to SourceDepTag in module types am: 2d24c1b654
am: 069ebe6692

Change-Id: I0b7f249b3224ca8099f10eac53ee782f552ce951
2018-06-06 15:23:07 -07:00
Colin Cross 2d24c1b654 Remove references to SourceDepTag in module types
SourceDepTag is going to become a set of tags of the same type
instead of a single tag, remove references to it outside the
android module.

Bug: 80144045
Test: soong tests
Change-Id: I00b2ea5040e4fc95dfbfdd79e21579853c478fcb
2018-06-06 17:05:20 +00:00
Kevin Rocard 0a5fee786f Revert "Add external projects only CFlags option"
This reverts commit 6a350878d8.

Reason for revert: Breakage of many AOSP targets

Change-Id: I917e6daa04ac02ecb98c7bb1816f9bdaf46429f5
2018-06-05 16:47:31 -07:00
Kevin Rocard a9ccbb7b87 Revert "Add external projects only CFlags option"
This reverts commit 6a350878d8.

Reason for revert: Breakage of many AOSP targets

Change-Id: I917e6daa04ac02ecb98c7bb1816f9bdaf46429f5
2018-06-05 21:43:46 +00:00
Yi Kong 328ec9e7ee Add external projects only CFlags option am: 6a350878d8
am: 92e4e46184

Change-Id: I39dc3ace804e9a1242d1f63b3138cbdcc8c5da91
2018-06-05 14:19:25 -07:00
Yi Kong 6a350878d8 Add external projects only CFlags option
Every time the toolchain adds a new warning, we had to suppress the
warning in every external projects that violates it, or disable it
globally -- which we end up doing most of the time since the first
option is way too time consuming.

Add a separate cflags option for external projects and move existing
-Wno-* flags there so that we can enforce better code quality for
internal projects.

TODO: Move more -Wno-* flags to ClangExtraExternalCflags

Test: m checkbuild
Change-Id: If3dee491616a1e7ba6223c2f522d100e10c5ee76
2018-06-05 19:32:02 +00:00
Dan Willemsen 5fcdd551e3 Merge "Fix mac sdk build" am: 85b1e39ffe
am: 793791e6bc

Change-Id: I544c61212f950e511edf5f1d59f63931a759abf5
2018-06-04 18:36:47 -07:00
Treehugger Robot 85b1e39ffe Merge "Fix mac sdk build" 2018-06-05 00:47:16 +00:00
Dan Albert f984e93162 Merge "Add a preprocessed_ndk_headers module type." am: 1efd4a9c81
am: 25cb14eb52

Change-Id: I9be1a4504816f33de3ca3ff5affafaa951939066
2018-06-04 17:38:46 -07:00
Treehugger Robot 1efd4a9c81 Merge "Add a preprocessed_ndk_headers module type." 2018-06-04 23:40:03 +00:00
Dan Willemsen 60533776be Merge "Allow more PATH tools, expose HOST_STRIP" am: 1d2318d6cd
am: fe3f651a8c

Change-Id: Ia46f06522640875096ccf444cb2c1a678450a100
2018-06-04 10:02:20 -07:00
Dan Willemsen fdb20d05bc Fix mac sdk build
Use the host platform "strip", and also expose "nm" and "otool" used for
toc.

Test: `m PRODUCT-sdk-sdk` on Mac
Change-Id: I7a6d127f479d3e563385ead46bc3a4b49b99776b
2018-06-03 16:19:56 -07:00
Treehugger Robot 1d2318d6cd Merge "Allow more PATH tools, expose HOST_STRIP" 2018-06-01 23:58:15 +00:00
Chih-hung Hsieh 21ef2a54f9 Merge "Handle pack_relocations in linker.cc" am: a4181126ee
am: 7bc0f8dbd6

Change-Id: I7cf2e5bcce66f09f13260bad63a1fb3769b4b89a
2018-06-01 14:07:16 -07:00
Chih-hung Hsieh a4181126ee Merge "Handle pack_relocations in linker.cc" 2018-06-01 20:43:11 +00:00
Dan Willemsen f6d300662e Allow more PATH tools, expose HOST_STRIP
atree was using the host's strip tool during sdk generation, so expose
the prebuilt for use instead.

`id` was used with a test running minijail0 during the build

`sha1sum` is used by development/build/tools/mk_sdk_repo_xml.sh

`rmdir` was being used to remove some tmp files

Test: m PRODUCT-sdk_arm64-sdk dist sdk_repo
Test: Run other builds through forrest
Change-Id: I49c756a3e9497c0bbd9030754e6aa193a2d989a4
2018-06-01 12:48:41 -07:00
Dan Albert cb1b4b2d53 Add a preprocessed_ndk_headers module type.
Unlike the old version of this (which has been renamed to
verioned_ndk_headers), this module includes a property to specify the
preprocessor to be used.

This is going to be used for preprocessing ICU4C's unicode/uconfig.h
to alter a config value that needs to differ between the platform and
the NDK.

Test: make checkbuild
Bug: https://github.com/android-ndk/ndk/issues/548
Change-Id: If5c6f54f90cf5a4187693a941748d72f39b0d797
2018-06-01 11:02:38 -07:00
Vishwath Mohan 722b64e0ad Don't enable diagnostics for CFI when setting the CFI sanitizer. am: 05b002dea0
am: dc55e621bb

Change-Id: I04214a9fcb50363bd5d82362b366e5bf69355183
2018-05-31 11:03:56 -07:00
Vishwath Mohan 05b002dea0 Don't enable diagnostics for CFI when setting the CFI sanitizer.
The SetSanitizer() method in cc/sanitize.go was also enabling
diagnostics for CFI when invoked from the sanitizer mutator. We
shouldn't be doing this, so this CL disables that.

Bug: 79785496
Test: strings libziparchive.so | grep 'ubsan'
Change-Id: Iffe0d4e9c333ac5dfbec3f48e381c232ce5d4463
2018-05-30 20:52:39 -07:00
Jiyong Park 311086ab68 Merge "LOCAL_SDK_VERSION is not emitted for recovery variant" am: f3c251c5de
am: 28f6db54f4

Change-Id: I075e5c50ccad4059a309db554a117831a8f7e9ff
2018-05-29 21:20:50 -07:00
Jiyong Park 97686288dd LOCAL_SDK_VERSION is not emitted for recovery variant
recovery variants are not built with NDK (useSdk() is false for
recovery). So LOCAL_SDK_VERSION shouldn't be emitted for the recovery
variants as well.

Test: m -j liblzma.recovery does not show any link type check error

Change-Id: Icb6c4fc766060e3f1555c405d5785ef5a015c629
2018-05-30 10:37:25 +09:00
Vishwath Mohan 4cac067ca1 Disable CFI for vendor variants of all components
am: 9ccbba0200

Change-Id: I6a6a839475f58f92180bfd391035dd538df71a50
2018-05-29 16:36:13 -07:00
Chih-Hung Hsieh 8681471e70 Handle pack_relocations in linker.cc
When pack_relocations is false and clang lld is used,
pass --pack-dyn-relocs=none to lld.

Bug: 80093890
Test: build and boot with USE_CLANG_LLD=true
Change-Id: I0ffe77a111d7fbab5afaa1395d09734a8a390e09
2018-05-29 15:39:47 -07:00
Vishwath Mohan 9ccbba0200 Disable CFI for vendor variants of all components
The current VNDK ABI snapshot expects that CFI is disabled for
components that either in the include paths (from cfi-common.mk) OR
enabled directly in the makefile/blueprint. However, on non-arm64
architectures, the build system was only disabling CFI for vendor
components in the include paths.

This topic corrects it by (a) removing the include paths check to
disable CFI for vendor variants (this CL), and (b) inheriting the CFI
include paths in all product configs to ensure that when we update the
ABI we're able to move to relying exclusively
on (PRODUCT_)CFI_INCLUDE_PATHS.

Bug: 66301104
Test: ABI matches for all architectures.
Change-Id: I648edf13346b18fd88b623682e8590ed44709e0d
2018-05-28 13:57:48 -07:00
Dan Willemsen 34ec95cea8 Merge "Use new flex binary" am: 523cef04cb
am: da6bd163e2

Change-Id: Idd8eff00ced0e082e8d8f25469e25271630a614a
2018-05-25 16:02:12 -07:00
Treehugger Robot 523cef04cb Merge "Use new flex binary" 2018-05-25 22:44:35 +00:00
Vishwath Mohan 40aaea2321 Restrict CFI_INCLUDE_PATHS to Arm64
am: 1c54f66bd5

Change-Id: I379932454f8f18d7029f3fa3eb1654f4f36997c1
2018-05-25 00:24:53 -07:00
Jiyong Park 777a29f71a Merge changes from topic "recovery_available" am: c8036c17ab
am: 3936b21565

Change-Id: I9e50134baf4f7a3bf59c34e488d61bddd17e4dac
2018-05-24 23:15:49 -07:00
Jiyong Park eebab40b19 Mark as recovery_available:true am: 6caa21aa82
am: e9ff1887fa

Change-Id: I96c6d3843197299f75062780c04a2a8b87d78c1b
2018-05-24 23:15:42 -07:00
Jiyong Park 7fbe82540d Add recovery_available to cc_genrule am: 3f736c9661
am: f1e8411c2a

Change-Id: I7ff0a6a08293024161e307171776d988eea10ec7
2018-05-24 23:15:37 -07:00
Jiyong Park e9ff1887fa Mark as recovery_available:true
am: 6caa21aa82

Change-Id: I1e1246b5c921c3cdea1ff8a6ea9dc7659e1fce82
2018-05-24 23:07:16 -07:00
Jiyong Park f1e8411c2a Add recovery_available to cc_genrule
am: 3f736c9661

Change-Id: I88d3a144e56ef090ffce41e28339a24bb665f89a
2018-05-24 23:07:04 -07:00
Treehugger Robot c8036c17ab Merge changes from topic "recovery_available"
* changes:
  fix: recovery.cflags now works
  Mark as recovery_available:true
  Add recovery_available to cc_genrule
2018-05-25 05:58:01 +00:00
Vishwath Mohan 1c54f66bd5 Restrict CFI_INCLUDE_PATHS to Arm64
This CL restricts CFI_INCLUDE_PATHS and PRODUCT_CFI_INCLUDE_PATHS to
Arm64 only.

Bug: 66301104
Test: x86 targets do not respect the include paths variables
Change-Id: I66ec2fb05435535aaf5d59fdfc7a170a4fdd4f26
2018-05-24 18:36:18 -07:00
Dan Albert e6ab4f9657 Merge changes from topic "preprocessed_ndk_headers" am: 5ae3652d99
am: 7435738d53

Change-Id: Iac614f6376163d527709ed57a37a4f3111a5dfe3
2018-05-24 17:08:48 -07:00
Jiyong Park 4a2dcb5c4b fix: recovery.cflags now works
There was a bug that recovery.cflags is ignored. Respect the property
when building for recovery.

Bug: 79146551
Test: m -j
Change-Id: I24c1c1b593c83eb1992721571c6d5c42483a41a0
2018-05-25 08:43:50 +09:00
Dan Willemsen b7adae8aaf Use new flex binary
Test: treehugger
Change-Id: Ie1d41a3ee223a80b6f471b7b1cbede63cc7051f5
2018-05-24 15:45:21 -07:00
Dan Albert 97f9c963ad Rename preprocessed_ndk_headers to versioned_ndk_headers.
The current rule runs a specific preprocessor over the source files,
and I'm adding support for generic preprocessed headers in a follow
up patch.

Test: make checkbuild
Bug: None
Change-Id: I1f3193cd595f151309e6321e1b41d8d16085379d
2018-05-24 15:12:51 -07:00
Dan Albert 19ff8b4662 Add exclude_srcs property to ndk_headers modules.
Test: make checkbuild
Bug: None
Change-Id: I2778c1140ab50abc0f7dee66da35ebacef77ea72
2018-05-24 15:12:26 -07:00
Dan Albert 7122205a5a Fix typo. Properies -> Properties.
Test: make checkbuild
Bug: None
Change-Id: I0b5e3dd44f507207f2de90e922dd7016cffce118
2018-05-24 15:12:20 -07:00
Vishwath Mohan 9b87f812ea Disable CFI for vendor variants of VNDK libraries
am: 7589c82eec

Change-Id: I3d44d7c66d777df15ce8ecbd7f4577eaf293affb
2018-05-24 14:43:32 -07:00
Vishwath Mohan 7589c82eec Disable CFI for vendor variants of VNDK libraries
Enabling CFI changes the VNDK ABI from the frozen snapshot, so the
only solution for now is to temporarily disable CFI on all vendor
variants for the sake of compatibility.

Bug: 66301104
Test: ABI is consistent.
Change-Id: Ie7dca41e0f647808b08adede09a30f3c746e6bda
2018-05-23 23:39:38 -07:00
Jiyong Park 6caa21aa82 Mark as recovery_available:true
Libraries that are direct or indirect dependencies of modules installed
to recovery partition (e.g. adbd) are marked as recovery_available:
true. This allows a recovery variant of the lib is created when it is
depended by other recovery or recovery_available modules.

Bug: 79146551
Test: m -j
Change-Id: I1181fa0646d840c0194e4af2043ec228ec9eff16
2018-05-24 14:14:08 +09:00
Jiyong Park 3f736c9661 Add recovery_available to cc_genrule
recovery_available property is required in cc_genrule. Specifically,
we will mark libminijail as recovery_available:true as part of building
adbd and other stuffs for recovery. Some source code of libminijail is
created via cc_genrule, so we need recovery_available in the module
type.

Bug: 79146551
Test: m -j
Change-Id: I0cf0d9b1004dda055373573e5c5a7debd112685f
2018-05-24 14:01:54 +09:00
Vishwath Mohan 165e01b744 Merge "Allow abi diffs sanitized variants of vndk libraries on production devices." into pi-dev 2018-05-23 17:47:38 +00:00
Christopher Ferris 1a6e5c0c15 Remove cortex-a53 linker workaround for new cpus.
Bug: 78133793

Test: Built target with cortex-a53 and verified that the flag is still
Test: there.
Test: Build target with cortex-a55/cortex-a75 and verified that the flag
Test: is not there.
Test: Built and booted on a taimen, ran bionic unit tests.
Change-Id: Ibd7f497ecf46e5781cd0265463b0782babdf062a
Merged-In: Ibd7f497ecf46e5781cd0265463b0782babdf062a
(cherry picked from commit a98d721485)
2018-05-21 12:57:51 -07:00
Jayant Chowdhary 3e2f0ff226 Temporarily remove -check-all-apis from header-abi-diff invocation.
-check-all-apis currently, produces noise for some libraries
(eg:libstagefright_soft_vpxenc), so remove this till a good solution
arrives.

Bug: 79928919

Test: create abi reference for libstagefright_soft_vpxenc; m -j
      libstagefright_soft_vpxenc.vendor; no warnings about struct LAYER_CONTEXT
      layout changing.

Merged-In: I8f30700c1b619c72504ca9aef69075f6e334ba5f
Change-Id: I8f30700c1b619c72504ca9aef69075f6e334ba5f
(cherry picked from commit 39d167aa2c)
2018-05-18 11:38:34 -07:00
Jayant Chowdhary 4c9cbf2d63 Temporarily remove -check-all-apis from header-abi-diff invocation. am: 39d167aa2c
am: dd15760c35

Change-Id: Ief2cec5011d5b9066dfd12a7f2632ffa2b37e736
2018-05-18 11:37:53 -07:00
Jayant Chowdhary 39d167aa2c Temporarily remove -check-all-apis from header-abi-diff invocation.
-check-all-apis currently, produces noise for some libraries
(eg:libstagefright_soft_vpxenc), so remove this till a good solution
arrives.

Bug: 79928919

Test: create abi reference for libstagefright_soft_vpxenc; m -j
      libstagefright_soft_vpxenc.vendor; no warnings about struct LAYER_CONTEXT
      layout changing.

Change-Id: I8f30700c1b619c72504ca9aef69075f6e334ba5f
2018-05-18 08:10:58 -07:00
Ivan Lozano 1838ef9be4 Don't export UBSan minimal runtime symbols.
When linking in the UBSan minimal runtime, don't export the symbols.
This was resulting in an edge case where symbols were sometimes
undefined at runtime on address sanitized builds if static library
dependencies were integer overflow sanitized.

Bug: 78766744
Test: readelf on libraries show either inclusion of the shared library
or no undefined symbols related to the minimal runtime.

Change-Id: Ide85c8c6b53b400ce9166ccaf96d250797fe4b24
Merged-In: Ide85c8c6b53b400ce9166ccaf96d250797fe4b24
(cherry picked from commit 59fdea2ac2)
2018-05-16 10:42:39 -07:00
George Burgess IV 739e92e036 Merge "Disable dtor inlining for clang-tidy" am: 5e011a2531
am: e4f8bd3770

Change-Id: I1177a324072e2f2689d5870d973b1cfea989e710
2018-05-15 15:41:26 -07:00
Treehugger Robot 5e011a2531 Merge "Disable dtor inlining for clang-tidy" 2018-05-15 22:15:55 +00:00
Christopher Ferris 6290b64f3d Remove cortex-a53 linker workaround for new cpus.
am: 79dff70b46

Change-Id: Ib6e6b334611973c524c850ce8133fe0885f7f0a3
2018-05-15 15:03:24 -07:00
Ivan Lozano 3262054a81 Merge "Don't export UBSan minimal runtime symbols." am: 9bf049dcbb
am: faa09cd8c2

Change-Id: Ic47917f3fece1ddd2a571c155f69ddc7761b90af
2018-05-15 13:04:26 -07:00
Christopher Ferris 79dff70b46 Remove cortex-a53 linker workaround for new cpus.
Bug: 78133793

Test: Built target with cortex-a53 and verified that the flag is still
Test: there.
Test: Build target with cortex-a55/cortex-a75 and verified that the flag
Test: is not there.
Test: Built and booted on a taimen, ran bionic unit tests.
Change-Id: Ibd7f497ecf46e5781cd0265463b0782babdf062a
2018-05-15 11:23:01 -07:00
Ivan Lozano 59fdea2ac2 Don't export UBSan minimal runtime symbols.
When linking in the UBSan minimal runtime, don't export the symbols.
This was resulting in an edge case where symbols were sometimes
undefined at runtime on address sanitized builds if static library
dependencies were integer overflow sanitized.

Bug: 78766744
Test: readelf on libraries show either inclusion of the shared library
or no undefined symbols related to the minimal runtime.

Change-Id: Ide85c8c6b53b400ce9166ccaf96d250797fe4b24
2018-05-15 08:37:18 -07:00
Jiyong Park 07ba19c49e Support recovery and recovery_available am: f9332f1c86
am: 84c2e79acf

Change-Id: I3e99976bd8277a7f318e28e2357ac3853c64d5db
2018-05-15 02:17:44 -07:00
Jiyong Park f9332f1c86 Support recovery and recovery_available
`recovery: true` installs a module to the recovery partition.
`recovery_available: true` makes a module to be available to other
`recovery:true` or `recovery_available: true` modules.

These to are very similar to vendor, vendor_available properties, except
for the target partition.

Bug: 67916654
Bug: 64960723
Test: m -j, toybox_recovery is installed to the recovery/root/sbin
Change-Id: Iaebe0593de16c69fa70de251a61f4d018a251509
2018-05-15 16:27:12 +09:00
Dan Willemsen 5cd937bdc9 Merge "Remove the unused `tags` property" am: ff9d8911f6
am: ff1b69616d

Change-Id: I2800ceee079e1236992d116102ed847d28b8a223
2018-05-15 00:16:29 -07:00
Jayant Chowdhary f267f715eb Allow abi diffs sanitized variants of vndk libraries on production devices.
Previously abi diffs were allowed only on unsanitized variants of vndk
libraries. This CL allows them on all sanitized variants which go onto
production devices, eg: cfi variants.

Bug: 66301104

Test: Without this change, for arm64 libstagefright_foundation doesn't
      get an lsdump file since we don't build an unsanitized variant
      (aosp_arm64_ab).

Test: With this change, for arm64 libstagefright_foundation does
      get an lsdump file (aosp_arm64_ab)

Merged-In: I94f82fd84fc898e4980c3f3619df9677ed723c32
Change-Id: I94f82fd84fc898e4980c3f3619df9677ed723c32
(cherry picked from commit b7e08ca830)
2018-05-14 18:34:40 -07:00
Dan Willemsen f923f2b54c Remove the unused `tags` property
And fix up androidmk / bpfix to provide warnings about what to do
instead.

Test: m blueprint_tools  (runs the tests, ensures there aren't any tags left)
Change-Id: I1a3ad8600211050420041740207d6957f44463c8
2018-05-15 00:33:11 +00:00
Jayant Chowdhary 2a9b72b43c Merge "Allow abi diffs sanitized variants of vndk libraries on production devices." am: ce617bbbdb
am: 516bc12773

Change-Id: Ib743113b3d093a7d1a52033377329ec080af2031
2018-05-14 17:27:33 -07:00
Jayant Chowdhary ce617bbbdb Merge "Allow abi diffs sanitized variants of vndk libraries on production devices." 2018-05-14 23:54:49 +00:00
George Burgess IV 030ccee01c Disable dtor inlining for clang-tidy
LLVM r328258 turned on a feature called temporary dtor inlining by
default for all of C++ in clang-tidy. This feature appears to be
somewhat over-aggressive when objects are being passed by value. For
example, given:

void foo(std::unique_ptr<int> i);

void bar() {
  auto x = std::make_unique<int>();
  int *i = x.get();
  foo(std::move(x));
  *i = 99;
}

...clang-tidy will complain about `*i = 99;` being a definite
use-after-free. This is incorrect, however: `foo` could stash the
`unique_ptr` it's given in a global, or a class member, or ...

Until upstream fixes this bug, it's probably best to keep this disabled.

Bug: None
Test: Ran the analyzer across Android locally. Nothing broke; number of
complaints dropped significantly.

Change-Id: I806c7ead34b61f4a88a7e6ec1c94751836a21e70
2018-05-14 16:30:46 -07:00
Christopher Ferris 01dd3fb504 Add support for cortex-a55/cortex-a75.
Bug: 78133793

Test: Builds when using cortex-a75 as a target.
Change-Id: Ie3fbe40b15f4d89eeba0d630a82097122fc83b33
(cherry picked from commit 0612597a41)
2018-05-11 11:23:00 -07:00
Christopher Ferris 0026c37438 Merge "Add support for cortex-a55/cortex-a75." am: 9623892890
am: c6752f63e3

Change-Id: Icd948d532b0896ffc290942fc3382184ae085d19
2018-05-11 11:13:13 -07:00
Christopher Ferris ba14a8f4bb Add support for cortex-a55/cortex-a75.
Bug: 78133793
Bug: 78242072

Test: Builds when using cortex-a75 as a target.
Change-Id: Ie3fbe40b15f4d89eeba0d630a82097122fc83b33
Merged-In: Ie3fbe40b15f4d89eeba0d630a82097122fc83b33
(cherry picked from commit 0612597a41)
2018-05-11 00:43:39 +00:00
Jayant Chowdhary b7e08ca830 Allow abi diffs sanitized variants of vndk libraries on production devices.
Previously abi diffs were allowed only on unsanitized variants of vndk
libraries. This CL allows them on all sanitized variants which go onto
production devices, eg: cfi variants.

Bug: 66301104

Test: Without this change, for arm64 libstagefright_foundation doesn't
      get an lsdump file since we don't build an unsanitized variant
      (aosp_arm64_ab).

Test: With this change, for arm64 libstagefright_foundation does
      get an lsdump file (aosp_arm64_ab)

Change-Id: I94f82fd84fc898e4980c3f3619df9677ed723c32
2018-05-10 15:32:18 -07:00
yangbill d80b9a3068 Merge "Build System: Fix rpath error if native executable under testcase folder." am: cfedb7bdb3
am: 70ccb36e75

Change-Id: Ia852f849810445c8bd0d2d01c10d4de8c64e3ec6
2018-05-09 17:56:43 -07:00
Treehugger Robot cfedb7bdb3 Merge "Build System: Fix rpath error if native executable under testcase folder." 2018-05-10 00:41:27 +00:00
Yi Kong 2b4168754a Merge "Take Enable_profile_use into account when checking if PGO is enabled" am: ea144bf779
am: 9522351748

Change-Id: Ife84ad856fe58f96fe1eb8aa568e56c2928ef0bf
2018-05-08 12:52:11 -07:00
Yi Kong ea144bf779 Merge "Take Enable_profile_use into account when checking if PGO is enabled" 2018-05-08 19:37:29 +00:00
android-build-prod (mdb) 78ca3047ea Merge changes I52f88bfd,I4263b7d5 am: 720f04b964
am: d2bb2b5c6c

Change-Id: Ia5ff67a34bc96467778e13766b7779ea1f2aa0cd
2018-05-07 18:21:39 -07:00
Dan Willemsen 4339853a20 Add a dependency fixer for proto deps
protoc dependency files, at least for C++ outputs, uses the form of:

  a/b.c \
  a/b.h: <dep1> <dep2>...

Ninja will fail the command when it parses a dep file and there's more
than one output file (even though it doesn't care what the output file
name is). So this tool will parse the original file, and output a
version with only a single output file.

Bug: 67329638
Test: NINJA_ARGS="-t deps ...pb.c" m
Test: NINJA_ARGS="-t deps ...srcjar" m
Test: NINJA_ARGS="-t deps ...srcszip" m
Test: Run dep_fixer across all of taimen's dep files, no failures.
Test: Run dep_fixer against the processed files, no changes.
Test: Run androidmk across all of our Android.mk files, inspect the diffs
Change-Id: I4263b7d5faea37285afa6b24dedf5964aa7d19dc
2018-05-07 16:21:59 -07:00
Yi Kong ca610d2be4 Take Enable_profile_use into account when checking if PGO is enabled
Test: m
Change-Id: I3c589043af145450d0d97ef354a74845e9fae483
2018-05-07 15:16:36 -07:00
yangbill b3174d190e Build System: Fix rpath error if native executable under testcase folder.
error while loading shared libraries: libc++.so:
cannot open shared object file: No such file or directory

BUG: N/A
Test: make -j16 hello_world_test
      out/host/linux-x86/testcases/hello_world_test/x86_64/hello_world_test
      out/host/linux-x86/testcases/hello_world_test/x86/hello_world_test

Change-Id: I0ecb1955cd67295abe12fc19ab811fe046ac5f23
2018-05-07 07:46:16 +00:00
Colin Cross a4ffa9addb Fix format string issues
Fix issues caught by go vet.

Bug: 73724997
Test: m checkbuild
Change-Id: Ib8d740457c15432dabe1575a6707726ddaf93084
Merged-In: Ib8d740457c15432dabe1575a6707726ddaf93084
(cherry picked from commit f46e37f5f7)
2018-05-03 14:38:12 -07:00
Pirama Arumuga Nainar d86bd3fb0a Merge "Update clang to r328903" am: 470969df19
am: 182b37783e

Change-Id: I7f5208efac7aa04450dfce6e85515f74baf48037
2018-05-03 08:08:11 -07:00
Pirama Arumuga Nainar 470969df19 Merge "Update clang to r328903" 2018-05-03 14:55:21 +00:00
android-build-prod (mdb) 4ed0841ed1 Merge changes I9f68c887,Ic18f2dc5 am: b6ffb625eb
am: 07b758e2cf

Change-Id: I2cacae235b58dd0e9e1aaa65d0551517a90493f4
2018-04-30 19:09:34 -07:00
Colin Cross d2343a331e Fix data race when ALLOW_MISSING_DEPENDENCIES=true
Missing dependencies were modifying a slice owned by a dependency,
which could cause a data race.  Return a copy instead.

Test: build with race detector enabled
Bug: 70706626
Change-Id: I9f68c887bee94348f3e11284c0833d2e04d62599
2018-04-30 16:19:31 -07:00
Pirama Arumuga Nainar d7feb380c1 Update clang to r328903
Bug: http://b/77532044

* b/77967848 - Disable -Wc++98-compat-extra-semi

Test: Test various targets in AOSP and internal branches.  For Googlers,
go/clang-r328903-testing

Change-Id: If08dafb9ad993fb686dfd6eeb5e2d61a9c99bd0b
2018-04-30 15:18:05 -07:00
android-build-prod (mdb) 4f65d80312 Merge "Fix incomplete LTO bug workaround." am: 6bcee9abff
am: 990e3f3caf

Change-Id: I3de17998c8b11289d182ea0d58ec8807af66a486
2018-04-25 18:06:36 -07:00
android-build-prod (mdb) 6bcee9abff Merge "Fix incomplete LTO bug workaround." 2018-04-26 00:51:07 +00:00
Logan Chien 5f4da1cd13 Introduce runtime_libs to cc_binary and cc_library am: 43d34c38d8
am: 2a2833185a

Change-Id: Ib2f0dfeb1b496b60942bbd0283299063b88fb924
2018-04-25 17:01:47 -07:00
Dan Albert ea4b7b9ced Fix incomplete LTO bug workaround.
https://android-review.googlesource.com/c/platform/build/soong/+/641827
forgot this use of ClangTriple(), so static libraries aren't being
installed to the correct place.

Test: OUT_DIR=ndk-out DIST_DIR=ndk-dist \
    build/soong/scripts/build-ndk-prebuilts.sh && \
    ls ndk-out/soong/ndk/sysroot/usr/lib
Bug: None

Change-Id: I750ab198deff92aac06935d38d529b53030f9636
2018-04-25 16:05:30 -07:00
Logan Chien 43d34c38d8 Introduce runtime_libs to cc_binary and cc_library
This commit adds `runtime_libs` to cc_binary and cc_library.

Similar to the `required` property, if a module specifies the
`runtime_libs` properties and it is installed, then the modules
specified in `runtime_libs` will be installed as well.

Differnt from the `required` property, if a module is using VNDK and the
module names specified in `runtime_libs` are resolved to the modules
with both core and vendor variants, then '.vendor' will be appended to
those module names.

For example, if `libb` is vendor_available and `libd` is a vendor lib,
then LOCAL_REQUIRED_MODULES will contain `libb.vendor` (instead of
`libb`).

Bug: 72343507
Test: lunch aosp_arm64_ab-userdebug && make  # this runs the unit tests
Test: Create a vendor module with runtime_libs property to a
vendor_available shared library and check the generated Android.mk.

Change-Id: I9e245d80004dab597a5d3db5acd8a09117118db7
2018-04-25 14:47:50 +08:00
Chih-hung Hsieh 3e77d5128b Merge "Disable LLD for Darwin host executables." am: 95ba30aa56
am: 74db54674a

Change-Id: I3a6bdf16ff65133d49736a3cd218a0231974f9c2
2018-04-24 23:41:24 -07:00
Chih-Hung Hsieh e5ac609355 Disable LLD for Darwin host executables.
* See upstream status of lld for Mach-O at https://lld.llvm.org/AtomLLD.html

Bug: 73768157
Test: make checkbuild
Change-Id: I2e892193b6d75afd4358df8b2f674aa94888fb32
2018-04-24 18:07:16 -07:00
Alex Light b497452fd7 Merge "Add support for generating Compdb file" am: 2782ca4102
am: 46a9de3860

Change-Id: Ia807be7de7bf6136618a04eab8df55d9b4500307
2018-04-24 10:19:28 -07:00
Treehugger Robot 2782ca4102 Merge "Add support for generating Compdb file" 2018-04-24 17:07:42 +00:00
Alex Light ec868fc42a Add support for generating Compdb file
Some tools (i.e. you-complete-me) make use of a 'compdb' file
(compile_commands.json) that records (among other things) the
arguments needed to compile a file. These tools can use this with
libclang to provide semantic completions and perform other IDE
actions. This CL adds support for soong to generate a (simple)
compile_commands.json file.

Test: make SOONG_GEN_COMPDB=1 SOONG_LINK_COMPDB_TO=$ANDROID_BUILD_TOP nothing
      examine $ANDROID_BUILD_TOP/compile_commands.json

Change-Id: I751bb344b90dfcdad1dfd71c2a85bacd345f0464
2018-04-24 08:15:02 -07:00
Pirama Arumuga Nainar 29a41f9398 Merge "Revert "Support coverage instrumentation for Linux host"" am: 0d12ebce88
am: 7d42d70b0a

Change-Id: I819ebdc7e934015e07c18d4752e6e9abb43c2070
2018-04-23 17:26:45 -07:00
Pirama Arumuga Nainar 0b882f0394 Revert "Support coverage instrumentation for Linux host"
This reverts commit 358056c058.

Reason for revert: Breaks build_test target in some branches.

Change-Id: I604561033038d4ff15b74caf7b81ff5c8dd9632f
2018-04-23 22:44:39 +00:00
Pirama Arumuga Nainar d2e0e46fc1 Support coverage instrumentation for Linux host am: 358056c058
am: ba4d455e87

Change-Id: Iac4bf787b15a68c7071dc1917f06d7f462da17c9
2018-04-23 14:08:18 -07:00
Pirama Arumuga Nainar 358056c058 Support coverage instrumentation for Linux host
Bug: http://b/77792074

- Add the libclang_rt.profile runtime libraries directly to the compile
command (for both host and target) instead of relying on the Clang
driver.
- Move the coverage mutator to PreDepsMutators so the mutation has
already happened when runtime libraries are added during dependence
computation.
- Factor out cc/config/toolchain to identify libclang_rt.profile modules
for the x86 and x86_64 host.

Test: make NATIVE_COVERAGE=true produces coverage-enabled host binaries.
Change-Id: I1ebc8cffdf11622bfc18199a57674672888b3a5f
2018-04-23 10:34:37 -07:00
Jiyong Park e8f0eab420 Merge "Add double_loadable property and checks for it" am: 4884a172de
am: 0cc2713142

Change-Id: I75eabc65ef04d33f30c4356c8d3d93ad395059fc
2018-04-20 21:00:57 -07:00
Treehugger Robot 4884a172de Merge "Add double_loadable property and checks for it" 2018-04-21 02:14:51 +00:00
Nelson Li 8b51984bb8 Merge "build/make: set LOCAL_NATIVE_BENCHMARK for Google Benchmark Test" am: 7e1130cded
am: aa88c2f7d0

Change-Id: Id55eb015b946246b9f9eff27d81068bab932adc1
2018-04-20 16:24:19 -07:00
Treehugger Robot 7e1130cded Merge "build/make: set LOCAL_NATIVE_BENCHMARK for Google Benchmark Test" 2018-04-20 23:08:36 +00:00
Pirama Arumuga Nainar 73e48810a6 Make 'use_clang_lld' property specifiable per architecture am: 2b8959ad5a
am: c2bfbcf3f1

Change-Id: If373b40e4274d9ebf51437a995901970ce2cdddc
2018-04-20 13:47:23 -07:00
Pirama Arumuga Nainar 2b8959ad5a Make 'use_clang_lld' property specifiable per architecture
Bug: http://b/73768157

Test: Mark 'use_clang_lld: true' for one arch of a module and verify by
inspection that only that arch variant uses lld.

Change-Id: I4b0d7a2bc43ee0b8462ab09a5f5c50807129a7fb
2018-04-20 19:11:50 +00:00
Chih-hung Hsieh c02a47647b Merge "Define clang lld flags for hosts." am: 94853de469
am: 473af9f5c7

Change-Id: Ie8ee2a49eeb55b4a2997055fed7d2602854cf425
2018-04-19 10:15:45 -07:00
Chih-hung Hsieh 94853de469 Merge "Define clang lld flags for hosts." 2018-04-19 17:03:02 +00:00
Jiyong Park 2cfe880b5b Merge "Friendlier message for ABI reference update" am: 21838336c4
am: 482e6f1b57

Change-Id: If5293c012e43c03c9910472eedae6f0db9300097
2018-04-18 20:30:37 -07:00
Treehugger Robot 21838336c4 Merge "Friendlier message for ABI reference update" 2018-04-19 03:15:57 +00:00
Jiyong Park a5f11e426c Friendlier message for ABI reference update
This change is to let people to just copy & paste the update command

Test: break the ABI of libbinder intentionally and make.
The message includes absolute path to the create_reference_dump.py tool.

Change-Id: If7703d64be1f51ea4b054aa1e815276e1d6dbc14
2018-04-19 10:42:40 +09:00
Pirama Arumuga Nainar 6c77d18183 Fix few issues with filegroups am: 955dc4999e
am: daf0ac55ea

Change-Id: I28fe1931c64564cf1a0f34e4a0cc042e6c9ccc9e
2018-04-18 14:15:29 -07:00
Pirama Arumuga Nainar 955dc4999e Fix few issues with filegroups
Bug: http://b/64121881
Bug: http://b/78188880

- Allow filegroup's properties to be extended by a LoadHook
- Support a filegroup (':module') in a prebuilt's 'Srcs' property to
export files from a different path as the prebuilt's sources.

This change also includes a refactoring that moves genrule/filegroup.go
to android/filegroup.go so that FileGroupFactory is visible in
prebuilt_test.go.

Test: Test
https://android-review.googlesource.com/c/platform/development/+/469159
in clang-tools branch on Linux, Darwin.  Test regular build in
aosp/master.

Change-Id: I3ff6215ab2e62955f039fd1086c31f1bd50ebcf6
2018-04-18 18:56:33 +00:00
Jayant Chowdhary 31db990217 Merge "Setting SKIP_ABI_CHECKS=true will make soong skip native abi checks." into pi-dev 2018-04-18 18:08:00 +00:00
Nelson Li 1f6b14e822 build/make: set LOCAL_NATIVE_BENCHMARK for Google Benchmark Test
Set LOCAL_NATIVE_BENCHMARK to true. Then, build system can use it
to auto generate the related Test config file of Google Benchmark
Test

Bug:74844131
Test: Use mm to rebuild any module in cc_benchmark
Change-Id: I6a8f1ff78f7aec3f4eb17e218845f0cdf3f57f32
2018-04-18 17:28:57 +00:00
Jiyong Park 5fb8c10f2b Add double_loadable property and checks for it
double_loadable is a property that tells whether a module is capable or
being loaded with other instance (possibly an older version) of the same
module in the same process. Currently, a shared library that is a member
of VNDK can be double loaded in a vendor process if the library is also
a dependency of an LLNDK library. Such libraries now must be explicitly
marked as `double_loadable: true` by the owner, or the dependency from
the LLNDK lib should be cut if the lib is not designed to be double
loaded.

Bug: 77155589
Test: m -j
Merged-In: I3b839f860cbdc01f43b59872cd7bb84ac4a7d73e
Change-Id: I3b839f860cbdc01f43b59872cd7bb84ac4a7d73e
(cherry picked from commit 89943d8be2)
2018-04-18 11:46:51 +09:00
Chih-Hung Hsieh 3101a969aa Define clang lld flags for hosts.
* Add -fuse-ld=lld to hostGlobalLldflags.
* Set up *ClangLldflags variables for hosts.
  They are the same as *ClangLdflags, but could be changed in the future.

Bug: 73768157
Test: make checkbuild
Change-Id: I3d61504ab7262d472bbf933df7c1a9bef62519e1
2018-04-17 16:01:08 -07:00
Dan Willemsen af9c40d8da Merge "Fix ABI diff reporting with dist" am: 556752d3d4
am: 860d3a907f

Change-Id: Icec22e75caf3128b24055656564b1802c67bcc3c
2018-04-17 12:52:14 -07:00
Jayant Chowdhary d0b76712fd Merge "Setting SKIP_ABI_CHECKS=true will make soong skip native abi checks." am: 7e88af3258
am: b90c85da9e

Change-Id: Iff9150c64ef1afe2e185a7946fb7a010bffcaee5
2018-04-17 12:40:08 -07:00
Treehugger Robot 556752d3d4 Merge "Fix ABI diff reporting with dist" 2018-04-17 19:35:35 +00:00
Jayant Chowdhary 0e5afde2f6 Setting SKIP_ABI_CHECKS=true will make soong skip native abi checks.
Bug: 78118272

Bug: 72225642

Test: SKIP_ABI_CHECKS=true mm -j64 in external/libjpeg-turbo; no abi
      dumping / diffing happens

Test: SKIP_ABI_CHECKS=false mm -j64 in external/libjpeg-turbo; abi
      dumping / diffing happens

Test: SKIP_ABI_CHECKS=foo mm -j64 in external/libjpeg-turbo; abi
      dumping / diffing happens

Merged-In: I6330bc6de81abd589e78572af8efdf70d4c69b80
Change-Id: I6330bc6de81abd589e78572af8efdf70d4c69b80
(cherry picked from commit b391feaea5)
2018-04-17 12:25:53 -07:00
Jayant Chowdhary b391feaea5 Setting SKIP_ABI_CHECKS=true will make soong skip native abi checks.
Bug: 78118272

Bug: 72225642

Test: SKIP_ABI_CHECKS=true mm -j64 in external/libjpeg-turbo; no abi
      dumping / diffing happens

Test: SKIP_ABI_CHECKS=false mm -j64 in external/libjpeg-turbo; abi
      dumping / diffing happens

Test: SKIP_ABI_CHECKS=foo mm -j64 in external/libjpeg-turbo; abi
      dumping / diffing happens

Change-Id: I6330bc6de81abd589e78572af8efdf70d4c69b80
2018-04-17 18:13:45 +00:00
Dan Willemsen edd1ae0817 Fix ABI diff reporting with dist
When we're doing ABI diffing, we run something like:

  (run-abi-diff) || (echo && exit 1)

When `dist` is added, we attempt to copy out the result:

  (run-abi-diff) || (echo) && (copy && exit 1)

But this always fails, since it will always run exit 1. We really want
the parenthesis around the entire second section. This change switches
it to:

  (run-abi-diff) || (echo && (copy) && exit 1)

This matches the behavior before Iae25374fe937a0cbe8a8ddf9e23c3bc1f62bbb2a

Test: treehugger on P
Change-Id: Ic39da4d4630ee950b811ec7854d55d65c52f8661
2018-04-17 10:42:18 -07:00
Dan Willemsen cb3bff1b65 Expose ProductVariables from TestConfig
In preparation for unexporting ProductVariables, explicitly return a
pointer to the structure from TestConfig / TestArchConfig.

Bug: 76168832
Test: m blueprint_tools
Change-Id: Iccfb4c912f8e0ee3f620cc1ee00f0cdc5cba7735
Merged-In: Iccfb4c912f8e0ee3f620cc1ee00f0cdc5cba7735
(cherry picked from commit 674dc7f7f0)
2018-04-17 10:34:23 -07:00
Dan Willemsen 050ca73dbf Use Config/DeviceConfig functions to access ProductVariables
An upcoming change will stop exporting ProductVariables from Config, so
switch to using existing accessor functions, and add more when they're
missing.

Bug: 76168832
Test: out/soong/build.ninja is identical
Change-Id: Ie0135bdbd2df3258ef3ddb53e5f8fc00aa9b97f7
Merged-In: Ie0135bdbd2df3258ef3ddb53e5f8fc00aa9b97f7
(cherry picked from commit 3fb1faeeb9)
2018-04-17 10:34:23 -07:00
Dan Willemsen e9216117dd Add DistPath to reference the dist folder
Instead of open-coding the logic of whether there is one, or where to
find it.

Bug: 76168832
Test: diff out/soong/build.ninja without dist
Test: diff out/soong/build.ninja with dist specified
Change-Id: Ia3f1ef335e2d6e2175343338d04867d778a50300
Merged-In: Ia3f1ef335e2d6e2175343338d04867d778a50300
(cherry picked from commit bc0c509267)
2018-04-17 10:34:23 -07:00
Dan Willemsen bf4f0a0965 Switch PackageContext functions to take a ctx
So that the Path and similar functions can be used directly, without
manually adding something like configErrorWrapper (it just uses it all
the time now).

Bug: 76168832
Test: out/soong/build.ninja is identical
Change-Id: I8cb524b09a84d0b8357d7c3501c71270af411e17
Merged-In: I8cb524b09a84d0b8357d7c3501c71270af411e17
(cherry picked from commit 54daaf0371)
2018-04-16 19:27:14 -07:00
Dan Willemsen 0c1f7bd956 Remove obsolete Brillo variable
Unlike the original change on master, this does not remove
product_variables.brillo, as I'm not backporting all of the other
removal CLs.

Bug: 76168832
Test: none
Change-Id: I6a5ce57b317f0cdae1abef15def01e6a31e18d3e
Merged-In: I6a5ce57b317f0cdae1abef15def01e6a31e18d3e
(cherry picked from commit a052599bb6)
2018-04-16 19:27:14 -07:00
Chih-Hung Hsieh 505b2c69ac Add USE_CLANG_LLD and use_clang_lld. am: 02b4da53a7
am: 98fda157fb

Change-Id: I3fc25e6332ae02dc4736e1f77b6de52822968d80
2018-04-13 12:44:15 -07:00
Chih-Hung Hsieh 02b4da53a7 Add USE_CLANG_LLD and use_clang_lld.
* USE_CLANG_LLD is unedefined in current builds.
* When USE_CLANG_LLD is defined to 'true' or '1',
  use clang's lld instead of ld or ld.gold.
* When lld is enabled:
  * ld-only flags are not passed to 'lld'.
  * location_packer is disabled.
  * Use new lld's --pack-dyn-relocs=android.
* When lld does not work:
  * In Android.mk files use LOCAL_USE_CLANG_LLD := false.
  * In Android.bp files use use_clang_lld: false.
* Only arm, arm64, x86, and x86_64_devices have LLD flags;
  all other hosts and targets do not call lld yet.

Bug: 73768157
Test: make checkbuild and boot
Change-Id: I06b8a1e868a600997a7e70fe05c299d751d23d5f
2018-04-12 14:37:35 -07:00
Inseob Kim bb34873db5 Merge "Remove early-return statements of link-type check" am: 18f568f651
am: 0221151a8d

Change-Id: I323a1e145f8056363348a0a871d4ebc700661d84
2018-04-11 16:28:37 -07:00
Treehugger Robot 18f568f651 Merge "Remove early-return statements of link-type check" 2018-04-11 23:18:32 +00:00
TreeHugger Robot 13a828764c Merge "Fixing protoOutParams concatenation." into pi-dev 2018-04-11 23:02:14 +00:00
Colin Cross f5a4488d82 Merge "Consistently use Bool instead of proptools.Bool" am: b3f16dea37
am: e56f26526c

Change-Id: Idb3d752fa245e611454cbfe6dc2c3eae22d7b29c
2018-04-11 08:01:27 -07:00
Colin Cross b3f16dea37 Merge "Consistently use Bool instead of proptools.Bool" 2018-04-11 14:46:31 +00:00
Inseob Kim 5e6f0101a0 Fix misleading error messages am: 34b22839f2
am: 500156a876

Change-Id: Iead759a89f9fb169e9535ee9ee2223dbc27c5d4a
2018-04-11 02:21:24 -07:00
Inseob Kim 47133f0fdd Check compatibility between STLs correctly am: 01a2872c05
am: 5604c01bb6

Change-Id: I0ec936d25c6143633426eb6d8df8d870dde8a210
2018-04-11 02:21:14 -07:00
Inseob Kim da2171ae9d Remove early-return statements of link-type check
Bug: 77834464
Test: m -j
Change-Id: I75e431ee48e23130167d1fafbe80e88c8222d79b
2018-04-11 06:45:38 +00:00
Inseob Kim 34b22839f2 Fix misleading error messages
Bug: 77834464
Test: None
Change-Id: I5c21625d1e6406399f5c397ac466f3d36a2c0cbc
2018-04-11 06:08:56 +00:00
Inseob Kim 01a2872c05 Check compatibility between STLs correctly
During link-type check, if a module with sdk_version "current" refers
another, compatibility check between STLs has not been performed.

Bug: 77834464
Test: m -j succeeded
Change-Id: Id82a39372670daca779d4fb4af2deb202170a2fd
2018-04-11 06:08:47 +00:00
Colin Cross ff3ae9da74 Consistently use Bool instead of proptools.Bool
Use Bool instead of proptools.Bool and String instead of proptools.String.

Test: m checkbuild
Change-Id: I32d84add9f27128c7a65413e9612fd920613584f
2018-04-10 22:50:34 -07:00
Colin Cross 25f6677370 Merge "Use proptools.BoolDefault" am: ed1268268d
am: 72510f2a27

Change-Id: I9c7901cdf5a24a48edac64ba3a4b8e047d4ba81a
2018-04-10 21:55:44 -07:00
Colin Cross ed1268268d Merge "Use proptools.BoolDefault" 2018-04-11 04:38:31 +00:00
Dan Willemsen 0de9c08e03 Expose ProductVariables from TestConfig am: 674dc7f7f0
am: e4436b5ab2

Change-Id: Iafcdea1220e6bd7c4ced667e585e439792acf572
2018-04-10 18:58:15 -07:00
Dan Willemsen ce4f5b0ae7 Use Config/DeviceConfig functions to access ProductVariables am: 3fb1faeeb9
am: 906a608451

Change-Id: I67b75f04bd377fe2eb4865d9ad6397167c65bbef
2018-04-10 18:58:10 -07:00
Dan Willemsen 674dc7f7f0 Expose ProductVariables from TestConfig
In preparation for unexporting ProductVariables, explicitly return a
pointer to the structure from TestConfig / TestArchConfig.

Bug: 76168832
Test: m blueprint_tools
Change-Id: Iccfb4c912f8e0ee3f620cc1ee00f0cdc5cba7735
2018-04-11 01:45:22 +00:00
Dan Willemsen 3fb1faeeb9 Use Config/DeviceConfig functions to access ProductVariables
An upcoming change will stop exporting ProductVariables from Config, so
switch to using existing accessor functions, and add more when they're
missing.

Bug: 76168832
Test: out/soong/build.ninja is identical
Change-Id: Ie0135bdbd2df3258ef3ddb53e5f8fc00aa9b97f7
2018-04-11 01:45:14 +00:00
Colin Cross 38b40dffd6 Use proptools.BoolDefault
Replace x == nil || *x with proptools.BoolDefault(x, true)

Test: m checkbuild
Change-Id: Icc5378cab3ea72d86544b40761c2f00b278cc0a1
2018-04-10 16:26:10 -07:00
Kweku Adams 62158b433d Fixing protoOutParams concatenation.
ParseGeneratorParameter delimits based on commas, not colons:
external/protobuf/src/google/protobuf/compiler/code_generator.cc

Bug: 72570104
Test: flash device with new build
Change-Id: I00042782a718d288ca6b0cb78f856d0fb223a926
(cherry picked from commit fb5b31ce96)
2018-04-09 12:04:49 -07:00
Jayant Chowdhary e3ee2f5e67 Add informational message to help with updation of VNDK abi references.
Bug: 64267858

Test: create reference dump for libjpeg; add exported function to libjpeg;
      m -j libjpeg.vendor, build fails with helpful message.

Test: create reference dump for libjpeg; add exported function to libjpeg;
      m -j libjpeg.vendor dist DIST_DIR=dist, build fails with helpful message.

Merged-In: Iae25374fe937a0cbe8a8ddf9e23c3bc1f62bbb2a
Change-Id: Iae25374fe937a0cbe8a8ddf9e23c3bc1f62bbb2a
(cherry picked from commit d8b70a39d1)
(cherry picked from commit 301aa8a8dcb0a92e96ffbf1aa2da3ca49ce2bda9)
2018-04-09 09:46:49 -07:00
Kweku Adams 74f58c4849 Merge "Fixing protoOutParams concatenation." am: eacf1a6e85
am: e819d2b345

Change-Id: I8969a5bf4532c4f71fc353f326b83bf1c563194e
2018-04-06 10:05:45 -07:00
Kweku Adams fb5b31ce96 Fixing protoOutParams concatenation.
ParseGeneratorParameter delimits based on commas, not colons:
external/protobuf/src/google/protobuf/compiler/code_generator.cc

Bug: 72570104
Test: flash device with new build
Change-Id: I00042782a718d288ca6b0cb78f856d0fb223a926
2018-04-05 17:48:32 -07:00
Jayant Chowdhary c29ca8e329 Merge "Add informational message to help with updation of VNDK abi references." am: bc30a77591
am: dcd9c60461

Change-Id: I188545b2c980001e4f87ffe3e6d0fb070ae898e4
2018-04-04 17:14:44 -07:00
Jayant Chowdhary bc30a77591 Merge "Add informational message to help with updation of VNDK abi references." 2018-04-04 23:40:06 +00:00
Yifan Hong 5219952328 Add overrides to cc_binary am: 946e32e184
am: 2744f3291b

Change-Id: I764246381d5083929f0a1b9218d382ccebe5956b
2018-04-03 18:40:42 -07:00
Yifan Hong d452a42d9d Add overrides to cc_binary
Test: use it for healthd, it is not installed.
Bug: 77541952

Change-Id: I170a31d1b4d15f20de6a6b6279a2eeda49ca7447
Merged-In: I170a31d1b4d15f20de6a6b6279a2eeda49ca7447
2018-04-03 16:15:37 -07:00
Yifan Hong 946e32e184 Add overrides to cc_binary
Test: use it for healthd, it is not installed.
Bug: 77541952

Change-Id: I170a31d1b4d15f20de6a6b6279a2eeda49ca7447
2018-04-03 16:02:29 -07:00
Ivan Lozano 9dfc876ab6 Support integer_overflow static lib diagnostics. am: a9255a8378
am: e586a753f2

Change-Id: I97c77a9f9bc8944756be65aa02e688440e14da60
2018-04-02 22:56:50 +00:00
Yi Kong c410909550 [DO NOT MERGE] Switch to clang-4691093
Test: Build/boot marlin, sailfish, x86/arm/arm64 emulators
Bug: 68397894
Change-Id: Ic255b0b578838786f2bf54b53831f151187eaab0
2018-04-02 14:34:24 -07:00
Ivan Lozano a9255a8378 Support integer_overflow static lib diagnostics.
This extends the minimal runtime dependency mutator to allow signed
and unsigned integer overflow diagnostics in static libraries and
binaries. This also enables the integer_overflow flag for static
libraries and binaries.

Note compilation will fail if the static library is a dependency
of a Make module that does not also have diagnostics enabled.

Bug: 66952339
Bug: 73283972
Test: make SANITIZE_TARGET{,_DIAG}=integer_overflow
Test: Enabled diagnostics in a static lib, saw results in logcat.
Test: Checked showcommands output for ubsan runtime library inclusion.

Change-Id: Ic52881a0f74cdcac0e4a15335df493b59b002ae5
2018-04-02 12:54:52 -07:00
TreeHugger Robot 75c0008d7d Merge "Allow platform modules to link to vendor public libraries" into pi-dev 2018-03-31 00:24:16 +00:00
Jayant Chowdhary d8b70a39d1 Add informational message to help with updation of VNDK abi references.
Test: create reference dump for libjpeg; add exported function to libjpeg;
      m -j libjpeg.vendor, build fails with helpful message.

Test: create reference dump for libjpeg; add exported function to libjpeg;
      m -j libjpeg.vendor dist DIST_DIR=dist, build fails with helpful message.

Change-Id: Iae25374fe937a0cbe8a8ddf9e23c3bc1f62bbb2a
2018-03-30 11:08:00 -07:00
Logan Chien eee70303e9 Allow VNDK-SP extensions to use vendor lib am: d3c59a2b3a
am: f1e3014288

Change-Id: If054bb9b2e549905a1d163a28cc4923af6656d5e
2018-03-30 08:36:58 +00:00
Logan Chien 6010adbbbb Allow VNDK-SP extensions to use vendor lib
This commit changes the VNDK-SP dependencies check.  With the commit,
VNDK-SP-Ext can link to non-VNDK vendor shared libs.  This commit also
refines the "cc_test" so that more error handling cases are properly
tested.

Before this commit, VNDK-SP-Ext could not depend on vendor libs.  It
was disallowed because there were no correct way to load vendor libs.
The fallback link had to specify the shared lib names.  On the other
hand, adding "/vendor/${LIB}" to search paths will lead to
double-loading issue.

In aosp/595067, "allow_all_shared_libs" was added to bionic dynamic
linker.  Now, we can link the "vndk" namespace to "sphal" namespace.
Thus, like VNDK-Ext, VNDK-SP-Ext can link to vendor libs now.

Bug: 77249955
Test: lunch aosp_walleye-userdebug && make -j8  # runs unit tests
Test: lunch aosp_sailfish-userdebug && make -j8  # runs unit tests
Test: Create a VNDK-SP-Ext, link to vendor libs, and run it.
Change-Id: I5511204539a22c998528111076f46756807faf29
Merged-In: I5511204539a22c998528111076f46756807faf29
(cherry picked from commit d3c59a2b3a)
2018-03-30 13:29:34 +08:00
Jiyong Park ca700f704f Allow platform modules to link to vendor public libraries
Normally, when building with VNDK, platform modules are not allowed to
link against vendor libraries, because the ABI of the vendor libraries
are not guaranteed to be stable and may differ across multiple vendor
images.

However, the vendor public libraries are the exceptions. Vendor public
libraries are vendor libraries that are exposed to 3rd party apps and
listed in /vendor/etc/public.libraries.txt. Since they are intended to
be exposed to public, their ABI stability is guaranteed (by definition,
though it is up to the vendor to actually guarantee it).

This change provides a way to make a vendor lib as public by defining a
module of type 'vendor_public_library' with a map file that enumerates
public symbols that are publicized:

cc_library {
   name: "libvendor",
   proprietary: true,
   ...
}

vendor_public_library {
   name: "libvendor",
   symbol_file: "libvendor.map.txt",
}

This defines a stub library module named libvendor.vendorpublic from the
map file. `shared_libs: ["libvendor"]` is redirected to the stub library
when it is from the outside of the vendor partition.

Bug: 74275385
Test: m -j
Test: cc_test.go passes
Merged-In: I5bed94d7c4282b777632ab2f0fb63c203ee313ba
Change-Id: I5bed94d7c4282b777632ab2f0fb63c203ee313ba
(cherry picked from commit 374510bcb6)
2018-03-30 12:59:06 +09:00