Commit Graph

653 Commits

Author SHA1 Message Date
Jayant Chowdhary
6e8115acb1 Work-around for crt objects with sdk: current
Test: convert libcups from Android.mk->Android.bp, mm -j64.

Change-Id: I4fddcfa5806d0ce27a229c37a078b0d93e9082a8
2017-05-09 14:38:10 -07:00
Colin Cross
5b52959c99 Use ctx.ModuleBuild for darwin ar
Test: builds
Change-Id: If90975c8545158012bc6201acadd136363c21260
2017-05-09 14:32:45 -07:00
Colin Cross
51d4ab2d5e Run gofmt
Test: builds
Change-Id: I2a873fc65cf414a14d6b58ef4ed6b9f5e57d75f7
2017-05-09 13:44:49 -07:00
Andreas Gampe
9707116867 Soong: Change Sanitize.Recover order
Add Sanitize.Order cflags after the general sanitizer options, so
it can override the global -fno-sanitize-recover=all.

Bug: 38128476
Test: m SANITIZE_HOST=address
Test: manual test
Change-Id: Ied5600507b66bd25d9d2a8bba428162ed4eb01e4
2017-05-08 23:37:51 +00:00
Colin Cross
8ff9ef4c30 Declare dependency on sanitizer runtime libraries
Moving the last users of a sanitizer runtime library to soong was
causing the runtime library to stop getting installed.  Declare
the dependency so make keeps installing it.

Test: builds
Change-Id: Ieeb9ad5c04ac8df0d1a74239da393dac5cab2b03
2017-05-08 15:57:05 -07:00
Treehugger Robot
6d9d964eb7 Merge changes I7270fef0,Ie8fba06c
* changes:
  Automatically add frameworks/rs includes to modules with .rs files
  androidmk: support cfi, diag, and misc_undefined properties
2017-05-08 19:54:40 +00:00
Colin Cross
2101f4aa06 Automatically add frameworks/rs includes to modules with .rs files
C++ sources generated from .rs files need includes in
frameworks/rs and frameworks/rs/cpp.  Add them automatically
instead of requiring modules to add them manually.

Test: builds
Change-Id: I7270fef0b36c1956475d6d83ab8aa2e3c362e688
2017-05-08 19:37:12 +00:00
Goran Jakovljevic
31e9947020 Fix mips32r2-fp-xburst build
Remove -Wa,-mmxu option because clang doesn't support it.

Test: successful build of mips32r2-fp-xburst arch variant
Change-Id: I0c3da5dee0bb3acb44e75991b4763b061acc86e1
2017-05-08 10:08:40 +02:00
Dan Willemsen
95f4dbb330 Ignore disabled modules when generating ndk sysroot
When linux_bionic is turned on, there are two host modules for the
preprocessed ndk headers, but only one is enabled. So exit early for the
disabled one.

Bug: 31559095
Test: Diff out/soong/build.ninja before/after, no change.
Test: Turn on linux_bionic, no longer see a panic.
Change-Id: I204a884a83ccf21c96088e97c19a0cffe029ec99
2017-05-05 23:26:01 -07:00
Colin Cross
03cc1b6d97 Use -isystem to export ndk stl includes
Hides:
In file included from frameworks/rs/cpu_ref/rsCpuExecutable.cpp:4:
In file included from prebuilts/ndk/current/sources/cxx-stl/llvm-libc++/include/fstream:169:
In file included from prebuilts/ndk/current/sources/cxx-stl/llvm-libc++/include/ostream:138:
In file included from prebuilts/ndk/current/sources/cxx-stl/llvm-libc++/include/ios:216:
In file included from prebuilts/ndk/current/sources/cxx-stl/llvm-libc++/include/__locale:21:
prebuilts/ndk/current/sources/android/support/include/locale.h:97:9: error: 'LC_GLOBAL_LOCALE' macro redefined [-Werror,-Wmacro-redefined]
       ^
out-soong/ndk/sysroot/usr/include/locale.h:115:9: note: previous definition is here
       ^

Test: builds
Change-Id: I766e8645db33e6e71f44a131aa0b1649d83e8c51
2017-05-05 18:22:30 -07:00
Colin Cross
2a252bef50 Support .rs and .fs files in cc_* module srcs lists
Translate .rs and .fs files to .cpp files using llvm-rs-cc.

Test: builds
Change-Id: I242cea0d09c9985730a512cec7705c3f1479f4ed
2017-05-05 18:22:30 -07:00
Josh Gao
06ec87082f Merge "Globally enable libcxx's thread safety annotations." 2017-05-04 23:47:32 +00:00
Colin Cross
37a2aeb95a Merge "Remove -isystem frameworks/av/include" 2017-05-04 04:09:43 +00:00
George Burgess IV
561a3fe4af soong: add __clang_analyzer__ to clang-tidy
We have code that acts slightly differently when the static analyzer is
running, so that it can produce more accurate diagnostics (e.g. less
false positives). It uses __clang_analyzer__ to detect the static
analyzer.

When the static analyzer is run via clang-tidy, __clang_analyzer__
doesn't get defined.

Bug: None
Test: WITH_TIDY=1 m. clang-tidy now acts as expected in code made for
the static analyzer

Change-Id: I460ff410640524633c0a60b71d34927d17e1ed98
2017-05-04 01:19:02 +00:00
Colin Cross
307d145ed5 Remove -isystem frameworks/av/include
Remove the last -isystem for global include directory (besides
bionic).

Bug: 31751828
Test: builds
Change-Id: I8f38332de8f0cffd5c56b9b5ebeacbaaf3a4faea
Merged-In: I8f38332de8f0cffd5c56b9b5ebeacbaaf3a4faea
(cherry picked from commit d13a457a45)
2017-05-03 23:56:47 +00:00
Colin Cross
bbc9f4d586 Export proto deps from reused libraries too
The deps have to be exported alongside the headers to make sure
the headers are in place when a module that depends on the shared
library builds.

Bug: 37555583
Test: use protos in a cc_library
Change-Id: I8f5b8d7937868458c1cf02b990a348aa395634da
2017-05-03 16:39:31 -07:00
Colin Cross
10d2231d44 Check reused source files in hasSrcExt
hasSrcExt is used to determine extra flags and dependencies when
generated files are used.  If the generated files are being handled
in a static library whose objects are reused in a shared library,
the flags and dependencies still need to apply.  Instead of clearing
the source files in the shared library, move them to an OriginalSrcs
property, and check that in hasSrcExt along with the Srcs property.

Also pass extra exported include directories from the static
library to the shared library.

Bug: 37555583
Test: use protos in a cc_library
Change-Id: I709779ec03b66b220b7bd58a1f6f0b9b5067d955
2017-05-03 12:28:27 -07:00
Colin Cross
5ff51b5caa Update protoc support for libplatformprotos
Allow properties to be overriden by arch variants.
Add include_dirs and local_include_dirs properties.
Pass -I . to fix:
   frameworks/base/proto/src/metrics_constants.proto: File does not
   reside within any path specified using --proto_path (or -I).  You
   must specify a --proto_path which encompasses this file.  Note that
   the proto_path must be an exact prefix of the .proto file names --
   protoc is too dumb to figure out when two paths (e.g. absolute and
   relative) are equivalent (it's harder than you think).

Test: m -j libplatformprotos
Change-Id: I3e02621ca25bfa7ca0a0e3b83377d70dd352668f
2017-05-02 14:08:29 -07:00
Colin Cross
f34d9d11d4 Merge "Add msa mips features" 2017-05-02 17:49:21 +00:00
Colin Cross
432c2860a0 Add msa mips features
References to an MSA architecture feature were added in
I3cadc29434dbd5fdb3aa780198414e90f9572ec5, but never added
to the build system.

Test: builds
Change-Id: I178813824a21475e013f7e8209d9473466ab821c
2017-05-01 16:43:41 -07:00
Treehugger Robot
f5464ba31a Merge changes Ic32cfb3e,I282be134
* changes:
  Add support for named versions in NDK map files.
  Generate stub libraries for unreleased API levels.
2017-04-30 21:31:24 +00:00
Dan Albert
3f6fb2db5f Add support for named versions in NDK map files.
Test: nose2
Test: make checkbuild
Bug: None
Change-Id: Ic32cfb3e0db767f695b617c787733a6ef75030aa
2017-04-28 16:11:13 -07:00
Dan Albert
49927d29d5 Generate stub libraries for unreleased API levels.
Generating released API levels and android-current is not sufficient
in a trunk-stable world. One branch will have the stable APIs and
possibly multiple unreleased API levels. We need to generate stubs
for each unreleased API level up to our current target.

I still need to add support for things like `# introduced=O` before
this is really done.

Whether or not we still need something like "current" that would map
to the absolute latest even it hasn't been assigned a code name yet
is uncertain.

Test: make ndk
Bug: None
Change-Id: I282be1347ab39c56fa887d4d71c03bb12c300dc5
2017-04-28 16:11:13 -07:00
Josh Gao
e0b933b74d Globally enable libcxx's thread safety annotations.
Add -D_LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS to clang extra cppflags
to make libcxx always emit thread safety annotations. Note that this
won't generate additional warnings on projects that don't already use
-Wthread-safety.

Test: treehugger
Change-Id: I517a96571d77be119510c981bc2cbaddb41dee95
2017-04-27 18:13:21 -07:00
Colin Cross
ccf01e755e Prepend arch variant include directories
Arch variant include directories should override existing include
directories, add prepend_variant to the struct tags.

Test: m -j checkbuild
Change-Id: I4a758b42c19481f9496880d29dffea7836f613c5
2017-04-27 12:21:24 -07:00
Colin Cross
e90bfd157b Make generated_sources act like generated_headers
Make generated_sources dependencies honor the exported include
directories.

Test: m -j checkbuild
Change-Id: I6955cf5d985053071c2118f43fa1accdb4cc27ab
2017-04-27 12:21:24 -07:00
Colin Cross
dad8c954b2 Pass -I to yasm
external/libvpx needs -I flags to be propagated to yasm, but can't
handle all the other global flags (like -no-exceptions).  Add -I
arguments to YasmFlags as well as GlobalFlags.

Test: mega-device build of external/libvpx
Change-Id: I1607211c34b031fae8ffc1bd558b26019965a696
2017-04-27 12:21:24 -07:00
Colin Cross
0906f17f7e Add arm neon and mips dspr2 arch features
Current modules must use armv7_a_neon to specify source files that
compile only with neon.  If a future arch variant also supports neon,
all these modules will fall back to non-neon.  Support a neon arch
feature that modules can use instead.  Similarly, support dspr2 for
mips.

arm_device.go was also mixing armv7-a-neon with armv7_a_neon.  Use
armv7-a-neon consistently, and fix the - to _ when creating the
property structs.

Test: m -j checkbuild
Change-Id: I24d3764280ab3bcbb9a73c0934edc9b99fc7f6a0
2017-04-27 12:21:24 -07:00
Yi Kong
96247cef21 Merge "Fixups after llvm rebase" 2017-04-27 17:06:14 +00:00
Yi Kong
5cf3948310 Fixups after llvm rebase
Clang now generates a SHF_MERGE section that is rejected by GNU as on
Mips64. Change to use integrated assembler for Mips and Mips64.

Bug: 37423073
Test: external/clang/build.py
Change-Id: I8eae5cf370b930119eb6892db960f5f70777312f
2017-04-26 20:23:55 +00:00
Colin Cross
e28f4e2acf Support test_suites in cc_benchmark modules
Bug: 35394669
Test: m -j checkbuild
Change-Id: I0b521d866edb1706669b8058dc128d389b5582da
2017-04-24 18:10:29 -07:00
Vishwath Mohan
8f4fdd8f76 Disable CFI for ASAN targets. (Soong)
This CL disables CFI if both CFI and ASAN flags are enabled. This
allows ASAN to take precedence where needed, preventing build errors
that would otherwise arise.

Bug: 30227045
Test: SANITIZE_TARGET="address" m -j40
Change-Id: Id336bf2bf5498d4c3ea6492e36b366c76c06376e
2017-04-20 08:06:09 -07:00
Jayant Chowdhary
918b1d9105 Fix lots of warnings from abi dumping.
Also fix ndk libraries are always re-building. Fix this by having the
build system know the report's file path. This will need to be changed
once we go off "advisory mode" to keep the report if builds fail on abi
breakages.

Bug: 37451651

Bug: 37450828

Test: mm -j64 in bionic/libc produces abi-dumps without warning:
argument unused during compilation: '-Wa,--noexecstack'

Test: cd system/core/init; mma -j;  NINJA_ARGS="-d explain" mma -j; The
second mma does not show a dirty libc.so.

Change-Id: I824723fd9e76586831ee2278db0b61329b1475c0
2017-04-18 10:50:31 -07:00
Vishwath Mohan
e87b768200 Make PIC/PIE levels compatible for LTO (Soong).
The build system currently uses -fPIC for position independent
libraries, and -fpie for position independent executables. However,
these levels are incompatible and conflict when an executable includes
a static lib with the -fPIC flag - such as when building with
LTO. This CL changes the flag for executables to the compatible -fPIE
instead, which is equivalent for all architectures except PowerPC.

Bug: 30227045
Test: ENABLE_CFI=true m -j40 checkbuild # builds and boots
Change-Id: I95b585b553bc00bc1d4f52f4271c5e30e1007d9b
2017-04-17 16:21:41 -07:00
Jayant Chowdhary
3e231fd8bd Add header-abi-checker for Vndk abi checks.
header-abi-dumper: dumps abi exported by source files for Vndk.
header-abi-linker: links abi dumps produced by header-abi-dumper.
header-abi-diff: compares linked dumps.

Test: mm -j64 showcommands > make_log in bionic/libc.
      This produced linked dumps in out/soong/.intermediates.
      Copied these dumps to
      prebuilts/abi-dumps/ndk/current/arm64/source-based/.
      Changed the abi and re-ran mm -j64 showcommands > make_log
      confirmed that the build reported compatibility breakge without
      actually failing (advisory mode).

Change-Id: Iccad6908fe68a80f47230751671d156893b96ead
2017-04-14 19:48:10 -07:00
Colin Cross
c43ae770c5 Don't install header libraries
Use library.shared() instead of !ctx.static() to avoid installing
header libraries when handling installation in soong.

Test: check build.ninja for installed .a files
Change-Id: I8c59d5845dd32419644b7ccdab3c341bc4bf3617
2017-04-14 15:42:53 -07:00
Colin Cross
ce87b801ea Use ArchType instead of string as map key
There is no need to convert ArchType to a string, it can be used
as a map key directly.  It will also be implicity stringified when
passed as a %q parameter to fmt.Errorf.

Test: builds
Change-Id: I5c316fb543108cb88c0c9c1ebafc1bf0050d143e
2017-04-13 20:40:59 +00:00
Colin Cross
d4025826c3 Skip ndkApiMutator on disabled modules
Builds with no device architectures configured will disable all
device modules, don't run the mutator on them.  Avoids panics
in Config.PlatformSdkVersionInt() (because the sdk version is not
set in soong.variables) and in normalizeNdkApiLevel (no arch
mutator was run on the module so arch is "").

Bug: 37315968
Test: prebuilts/build-tools/build-prebuilts.sh
Change-Id: Iac124e00403eee9f2c1072788e2f51914b0112a5
2017-04-13 12:53:07 -07:00
Christopher Ferris
6e0b536cde Merge "soong: use optimal FPU for Cortex-A7" 2017-04-12 17:10:01 +00:00
Dan Willemsen
862e5cc72e Merge "Split /system and /vendor modules, allow multi-installation" 2017-04-12 00:06:52 +00:00
Jake Weinstein
5cfd709529 soong: use optimal FPU for Cortex-A7
* Cortex-A7 supports VFPv4 instructions

Test: make otapackage
Change-Id: I709811980cda398994ba8c6e791a8625a3422455
2017-04-11 14:37:04 -07:00
Christopher Ferris
a688be8f7d Merge "soong: always use -mfpu=neon-vfpv4 for Krait targets" 2017-04-11 19:54:38 +00:00
Dan Willemsen
4416e5db69 Split /system and /vendor modules, allow multi-installation
Nothing changes if BOARD_VNDK_VERSION isn't set.

When the VNDK is enabled (BOARD_VNDK_VERSION in Make), this will split
/system and /vendor modules into two different variant spaces that can't
link to each other. There are a few interfaces between the two variant
spaces:

The `llndk_library` stubs will be available in the /vendor variant, but
won't be installed, so at runtime the /system variant will be used.

Setting `vendor_available: true` will split a module into both variants.
The /system (or "core") variant will compile just like today. The
/vendor ("vendor") variant will compile against everything else in the
vendor space (so LL-NDK instead of libc/liblog/etc). There will be two
copies of these libraries installed onto the final device.

Since the available runtime interfaces for vendor modules may be
reduced, and your dependencies may not expose their private interfaces,
we allow the vendor variants to reduce their compilation set, and export
a different set of headers:

  cc_library {
      name: "libfoo",
      srcs: ["common.cpp", "private_impl.cpp"],
      export_include_dirs: ["include"],
      target: {
          vendor: {
	      export_include_dirs: ["include_vndk"],
	      exclude_srcs: ["private_impl.cpp"],
	      srcs: ["vendor_only.cpp"],
	  },
      },
  }

So the "core" variant would compile with both "common.cpp" and
"private_impl.cpp", and export "include".

The "vendor" variant would compile "common.cpp" and "vendor_only.cpp",
and export "include_vndk".

Bug: 36426473
Bug: 36079834
Test: out/soong/build.ninja, out/soong/Android- only changes due to _core addition and
      .llndk -> .vendor
Test: attempt to compile with BOARD_VNDK_VERSION:=current
Change-Id: Idef28764043bf6c33dc0d2e7e2026c38867ff769
2017-04-11 12:27:41 -07:00
Dan Willemsen
01a90597bc Remove explicit suffixes from (ll)ndk_library
Soong can rename these automatically for internal use, so don't require
users to set these.

Bug: 33241851
Test: Android-aosp_arm.mk is the same before/after
Test: build.ninja is the same before/after
Test: build-aosp_arm.ninja is the same before/after
Merged-In: Ia92356a0ec079f908fd49812231228046783e50d
Change-Id: Ia92356a0ec079f908fd49812231228046783e50d
2017-04-11 15:14:11 +00:00
Jake Weinstein
fff256f817 soong: always use -mfpu=neon-vfpv4 for Krait targets
* GCC and Clang both support this, so we may as well simplify
  the logic.

Test: make otapackage
Test: verified that the options are exactly the same, just slightly different order.

Change-Id: I8c2e9f3875cb662db708c799c9ce54f9fdd55981
2017-04-10 21:32:09 +00:00
Treehugger Robot
2ce95652a8 Merge "Implement vendor as a synonym of proprietary" 2017-04-08 00:08:52 +00:00
Christopher Ferris
56d299d614 Merge "soong: use optimal FPU on Kryo targets" 2017-04-07 23:18:24 +00:00
Dan Willemsen
aa118f95a6 Implement vendor as a synonym of proprietary
The vendor image will have more than just proprietary modules in it
under Treble, so let's stop marking open source code as proprietary just
to move it to vendor.

Bug: 36452052
Bug: 37134596
Test: compare build.ninja before/after, no changes.
Test: Set vendor: true, ensure it works.
Change-Id: I44b0ec7007d0e311bdcbd44b238b1ef2d05cc6ff
2017-04-07 14:59:18 -07:00
Jake Weinstein
1783a2f3e8 soong: use optimal FPU on Kryo targets
* -mfpu=neon-fp-armv8 enables the ARMv8 floating-point and
  Advanced SIMD extensions.

Test: Marlin builds successfully

Change-Id: Ibdf71dae61b966372e3bcb946aa18d1a6cd0f8e6
2017-04-07 14:25:28 -04:00
Dan Willemsen
b916b80bf3 Add LLNDK support for the VNDK
Instead of using the NDK headers and libraries, add LL-NDK specific
headers and library stubs for VNDK users. This allows us to provide an
expanded liblog interface.

Test: aosp_arm; m -j
Test: Enable BOARD_VNDK_VERSION on aosp_arm; m -j
Test: Inspect out/soong/build.ninja before/after (w/o vndk)
Change-Id: Ic85f07fa10c695b5baab10c41f5e0ad38700bf3d
2017-04-07 10:18:56 -07:00