Commit Graph

2155 Commits

Author SHA1 Message Date
Dan Willemsen 4e0aa23dd3 Convert yacc to a single RuleBuilder rule
So that <module>/gen/yacc/... is (re)created by a single rule, previous
files are removed, and location.hh is in the build graph when it is
produced.

Test: treehugger
Change-Id: I2f6e47ea07f315e10ae1cb8ad50697e7123d0285
2019-04-15 14:52:05 -07:00
Christopher Ferris c3a1e22060 Do not re-export _Unwind_XXX symbols.
Bug: 130267141

Test: All system shared libraries do not contain global _Unwind_XXX symbols.
Change-Id: I79673753bb8197041bfe8ffb016d9f5fdf4cada5
Merged-In: I79673753bb8197041bfe8ffb016d9f5fdf4cada5
(cherry picked from commit cf78867417)
2019-04-11 17:54:48 -07:00
Logan Chien 62f1f9488e Add --llndk for NDK libs as well
This commit add `--llndk` to the command line option for
`create_reference_dumps.py` as well.

Bug: 124620774
Bug: 130324828
Test: lunch aosp_arm64-userdebug && make
Change-Id: I117864209b8cf8c934fd3aa1086b7691c1c449e3
2019-04-11 05:40:57 +00:00
George Burgess IV c4624c0189 Remove our clang-tidy wrapper
Looks like the reason for it existing has been fixed. It should probably
just be removed.

Bug: None
Test: WITH_TIDY=1 m

Change-Id: I770b2fec4ac44f265ff31731c9c0bd4da14d5b0f
2019-04-04 17:58:00 -07:00
Treehugger Robot fc453c79f2 Merge "Soong: Add synopsis to vndk_prebuilt_shared module under cc package." 2019-04-04 18:51:11 +00:00
Treehugger Robot f3f1467051 Merge "Blacklist more libraries from no-vendor-variant VNDK" 2019-04-04 08:33:02 +00:00
Colin Cross cc0ce80ed5 Fix package path of android/soong/android pctx
android/soong/common was renamed to android/soong/android long
ago, but the pctx package path was still "android/soong/common".
This required all users of rules defined in android/soong/android
to import "android/soong/android" and then
pctx.Import("android/soong/common").

Test: m checkbuild
Change-Id: I20d096522760538f7cfc2bec3d4bfeba99b275d4
2019-04-04 03:59:34 +00:00
Christopher Ferris 134f8f6f00 Make libc_scudo always go first.
In addition, add Shared_libs to malloc_not_svelte.

Bug: 123689570

Test: Verified that libc_scudo is first wherever it is added.
Change-Id: Ibdc5dbd019a382630a727c270f846aa4446f8d99
Merged-In: Ibdc5dbd019a382630a727c270f846aa4446f8d99
2019-04-03 14:54:12 -07:00
Patrice Arruda ad0315089c Soong: Add synopsis to vndk_prebuilt_shared module under cc package.
Added vndk_prebuilt_shared synopsis.

Bug: b/128337482
Test: Generated the documentation and verified that the synopsis
      was added to the vndk_prebuilt_shared module.

Change-Id: Id40246de65985b8b3b357744083c1d32c872e2ff
2019-04-03 09:07:51 -07:00
Josh Gao 61166dc047 Revert "Enable lld for windows"
This reverts commit 3c21c0b1d9.

Reason for revert: appears to break AdbWinUsb.dll usage by fastboot (and adb?)

Bug: http://b/129420419
Bug: http://b/110800681
Change-Id: I36d6d87f2e830e08e257ab42d470e49cdbb95819
2019-04-03 00:59:14 +00:00
Vic Yang db1cb10a50 Blacklist more libraries from no-vendor-variant VNDK
These VNDK libraries did not have both core and vendor variants built
for the cuttlefish target when I initially build the list, and thus
they were missed.  Add them back.

Bug: 119423884
Test: Build walleye with no-vendor-variant VNDK enabled.
Change-Id: If446256251eb2e185b0cdba95ce5c1e4f1fb8820
2019-04-02 13:10:23 -07:00
Colin Cross 9a4f3f7ea8 Skip failing test on mac
Tests with cc_binary_host fail on mac, disable for now.

Bug: 129763458
Test: TestProto
Change-Id: Icea24ac6ffba4c5c047296cb3997a5efa95e16ee
2019-04-02 10:02:04 -07:00
Colin Cross fe17f6f0e8 Add support for protoc plugins
Add a proto.plugin property to allow specifying a custom protoc
plugin to generate the code.

Fixes: 70706119
Test: m am StreamingProtoTest
Change-Id: I1ecdd346284b42bbcc8297019d98d2cd564eb94c
2019-04-02 16:38:55 +00:00
Colin Cross 19878da6a0 Move proto compilation to RuleBuilder
Using blueprint.Rule for protoc commands was causing code duplication
because there was no good way to run the same protoc for cc, java and
python but then run custom source packaging steps for java and python.
Move most of the code into a common function that returns a
RuleBuilder, and then let java and python add their own commands at
the end of the rule.

Bug: 70706119
Test: All Soong tests
Test: m checkbuild
Change-Id: Ic692136775d273bcc4f4de99620ab4878667c83a
2019-04-02 16:38:47 +00:00
Patrice Arruda 3554a98e4f Soong: Add synopsis to cc_prebuilt_* modules.
Added synopsis to the following modules under cc package:
    * cc_prebuilt_binary
    * cc_prebuilt_library_shared
    * cc_prebuilt_library_static

Bug: b/128337482
Test: Generated the documentation and verified that the synopsis was
added to each of the module.

Change-Id: I2ec284eb600f28d5c7f00254f441a3cc5fb684cc
2019-04-01 17:25:41 +00:00
Colin Cross 36ae135434 Restat clang linker outputs
clang -Wl,--out-implib doesn't update its output file if it hasn't
changed, always restat the outputs.

Fixes: 129553377
Test: m checkbuild && m checkbuild
Change-Id: I2cb19e1b8280fd69c8a9b2143f55760ec05630f8
2019-03-30 00:03:24 +00:00
Pirama Arumuga Nainar 65c95ff1fb Include libprofile-extras to all coverage variants
Bug: http://b/128524141

Include libprofile-extras (defined in system/extras/toolchain-extras) to
all modules that need a coverage variant.  Also add
'-uinit_profile_extras' when linking with coverage.  This causes the
setup code in libprofile-extras to be linked into binaries/libraries
with coverage enabled.

We add the static library to the non-coverage variants as well but is a
no-op for them (since the '-u...' flag is not added for them).

Adding this dependency creates several circular dependencies since
coverage variants were being created for other module types that never
had any compilation or linking done during the build.  This change stops
creating coverage variants for toolchain_library, cc_prebuilt_library_*,
cc_library_headers module types (by adding a function to the linker
interface to specify whether native coverage is enabled).

Test: m NATIVE_COVERAGE=true COVERAGE_PATHS=*
Test: blueline_coverage target in internal branch (using forrest)
Change-Id: I5db876eb953639a55ba007248dd24e497f987730
2019-03-29 08:56:42 -07:00
Pirama Arumuga Nainar ee30d5e132 Refactor coverage support
Bug: http://b/128524141

The goal is to add a static library (libprofile-extras) to modules that
require coverage.  Since the coverageMutator is a post-deps mutator, the
results of the coverageMutator are not available when the dependencies
get constructed in deps().  This change moves the detection from the
coverageMutator to begin().

Test: m NATIVE_COVERAGE=true COVERAGE_PATHS=*
Test: blueline_coverage target in internal branch (using forrest)

Change-Id: I4e7c8b31ed5060642c6218ea33c532a0f6619967
2019-03-29 08:56:42 -07:00
Patrice Arruda bcf9408e44 Merge "Soong: Add synopsis to cc_library_* modules" 2019-03-29 15:21:21 +00:00
Yi Kong 2e03bb7296 Merge "Move -Wno-inconsistent-missing-override to ClangExtraCflags" 2019-03-28 22:37:47 +00:00
Patrice Arruda 83c89e0f4e Soong: Add synopsis to cc_library_* modules
Added synopsis to the following modules under cc package:
   * cc_library_static
   * cc_library_shared
   * cc_library
   * cc_library_host_static
   * cc_library_host_shared
   * cc_library_headers

Bug: b/128337482
Test: Generated the documentation and verified that the synopsis was
added to each of the module.

Change-Id: I4d9bb622dc75aad9ea1b9f331c80ed56ddbc9a15
2019-03-28 10:36:26 -07:00
Treehugger Robot 9e50e6955f Merge "Remove libbase dependency of sysprop_library" 2019-03-28 03:01:27 +00:00
Yi Kong 4d048d5972 Move -Wno-inconsistent-missing-override to ClangExtraCflags
So that projects can override the flag through cflag (CPPFlags are
appended after CFlags).

Test: m checkbuild
Change-Id: Ib72f4ed4731f41982a0eb8a90c782c09810aa8c9
2019-03-27 18:26:22 -07:00
Yi Kong edd7fdd891 Merge "Turn on new pass manager for PGO projects" 2019-03-27 22:44:31 +00:00
Patrice Arruda 5c45f684dd Merge "Soong: Add synopsis to cc_object module." 2019-03-27 22:38:28 +00:00
Yi Kong ac7f27eab0 Merge "Switch to clang-r353983b" 2019-03-27 15:52:05 +00:00
Nikita Ioffe ca57e57837 Merge "Add support for clang-tidy -warnings-as-errors in Android.bp files" 2019-03-27 10:18:15 +00:00
Inseob Kim 1f959769f3 Remove libbase dependency of sysprop_library
libbase dependency is not really needed, but it has been causing build
failure while linking with static variant of sysprop_library. This cuts
the dependency and only depend on libbase_headers and liblog.

Bug: 129301987
Test: 1) flash and boot walleye
Test: 2) try to build various properties with sysprop_library.
Test: 3) sysprop_test
Change-Id: I027e01c754b782818f52103184301267d4cdd576
2019-03-27 17:27:05 +09:00
Yi Kong 5d7aeeac24 Switch to clang-r353983b
Test: TreeHugger
Bug: 122993569
Bug: 128427449
Bug: 128937182
Bug: 128973188
Change-Id: I300efbbad47973d265f636645b83dad0c4d6630a
2019-03-27 02:09:40 +00:00
Nikita Ioffe 32c4986268 Add support for clang-tidy -warnings-as-errors in Android.bp files
Test: manually change Android.bp and checked clang-tidy invocation cmd
Change-Id: I51a64b3f7da82428b896f46f739c93d76a050aaf
2019-03-26 20:47:08 +00:00
Patrice Arruda baff0ce5e4 Soong: Add synopsis to cc_object module.
Added synopsis to the cc_object module.

Bug: b/128337482
Test: Generated the documentation and verified that the synopsis was
properly added.

Change-Id: Icba4522a3aafa1b8b8a0b780d111f8b48cbdd270
2019-03-26 13:41:28 -07:00
Treehugger Robot 0aad00631a Merge "Soong: Add synopsis to several modules under cc package." 2019-03-26 03:39:13 +00:00
Yi Kong ff58c0e248 Merge "Support LLD ThinLTO cache/threshold option" 2019-03-26 00:02:36 +00:00
Patrice Arruda c249c718ab Soong: Add synopsis to several modules under cc package.
Added synopsis to the following modules under cc package:
    * cc_binary
    * cc_binary_host
    * cc_defaults
    * cc_genrule
    * cc_test
    * cc_test_host

Bug: b/128337482
Test: Generated the documentation and verified that the
synopsis was added to each of the module.

Change-Id: I23b7eda449c340783d7cc592df5d2bd399255bf9
2019-03-25 14:21:29 +00:00
Sasha Smundak fc22e4eeba Treat stl: "system" the same way as default.
Test: verify that adding `stl: "system"` does not change the module
build.

Change-Id: I55fbde223e4a4695df7524213e1bf3671da84e8e
2019-03-24 14:17:56 -07:00
yelinhsieh 9fc6040efe ATest: GTest auto gen config support run_test_as in Android.bp .
Feature request from developer, support setting uid in Android.bp.

This relands I5604af5f20c45728d19f4c01396a20a74997f8a8 on top of
I2210c15b84f9b30e1cc23b426d463b34cf9ef94f.

Bug: 113359343

Test: source build/envsetup.sh ; lunch
    vim platform_testing/tests/example/native/Android.bp
    add
    test_options: {
        run_test_as: "1234",
    },
    in cc_test
    make hello_world_test
    cat out/target/product/xxxx/testcases/hello_world_test/hello_world_test.config
    Will see  <option name="run-test-as" value="1234" />
    below <test class="com.android.tradefed.testtype.GTest" >

Change-Id: I0b167c44c00ff0eab51443fc93dd8fa2abbe54cf
2019-03-23 04:42:48 +00:00
Yi Kong 630b960fb5 Support LLD ThinLTO cache/threshold option
LLD has different option syntax for specifying ThinLTO cache. Change it
to LLD syntax and drop the support for GOLD, since there aren't many
projects that are linked with it.

Test: USE_THINLTO_CACHE=true m
Change-Id: I5c6c5281a05793414a6387d52ae48d9b43822ee9
2019-03-22 21:32:45 -07:00
Yi Kong 69c1ed91d8 Turn on new pass manager for PGO projects
With new pass manager, dex2oat benchmark showed 1.61% performance
improvement though binary size saw an increase of 3.37%.

For Googlers, detailed benchmark results are in go/android-pgo-npm.

Test: m checkbuild
Bug: 118894695
Change-Id: I1687886acac7f61e67265a9c73997fb241ad31e6
2019-03-21 23:43:42 +00:00
Peter Collingbourne e726ba56ac Pass -fsanitize-hwaddress-abi=platform when building with hwasan.
Reduces size of walleye_hwasan-userdebug system.img by another 4.5MB.

Bug: 122363025
Change-Id: I6d15c237dc5f330ad574a73147b2b2c712fe125e
2019-03-21 16:22:00 -07:00
Vic Yang efd249e62a Add support for no-vendor-variant VNDK
When no-vendor-variant VNDK is enabled, the vendor variant of VNDK
libraries are not installed.  Since not all VNDK libraries will be
ready for this, we keep a list of library names in cc/vndk.go to
indicate which libraries must have their vendor variants always
installed regardless of whether no-vendor-variant VNDK is enabled.

Also add --remove-build-id option to the strip script to facilitate
the check of functional identity of the two variants.

Bug: 119423884
Test: Add a dummy VNDK library and build with
      TARGET_VNDK_USE_CORE_VARIANT := true, with the corresponding
      build/make change.

Change-Id: Ieb1589488690e1cef1e310669a8b47a8b8759dac
2019-03-21 04:29:24 +00:00
Yi Kong 5a3f31b284 Merge "Turn on string-plus-int warning" 2019-03-20 21:33:46 +00:00
Pirama Arumuga Nainar 3c21c0b1d9 Enable lld for windows
Bug: http://b/110800681

The following flags that the binutils linkers support are not available
in lld for Windows:
  -soname
  --no-undefined
  -rpath

Windows also uses "import libraries", which are stub libraries used only
for linking.  The binutils linkers accepted a DLL and treated them as an
import library.  But lld issues the following error:

  lld-link: error: ...DLL: bad file type. Did you specify a DLL instead
  of an import library?

To resolve this, pass '-out-implib=libFoo.a' to lld when linking
libFoo.dll.  Add libFoo.a as an implicit output to the 'ld' build rule.

Rewrite the shared libraries for a library/binary to use the import
library instead of the DLL.  As a side-effect, this also (correctly)
uses the AdbWinApi.a that's alongside
development/host/windows/prebuilt/usb/AdbWinApi.dll

Test: Run Windows tests (go/android-llvm-windows-testing) and check
absence of regressions.

Change-Id: I15a178589aa6882caa6e7e38650cc6ef48109764
2019-03-20 21:07:47 +00:00
Peter Collingbourne 967511a4e8 Pass -hwasan-allow-ifunc when building with hwasan.
Now that the toolchain and bionic both support ifuncs in
static executables, we can turn this on. Reduces size of
walleye_hwasan-userdebug system.img by 11MB.

Change-Id: I2f19b22518153328eee3fdca79d0c851cc513c3a
2019-03-20 19:42:42 +00:00
Colin Cross 8a49795df1 Replace ctx.ExpandSources with android.PathsForModuleSrc
Move the logic from ctx.ExpandSources into android.PathsForModuleSrc
and ctx.ExpandSource into android.PathForModuleSrc, and deprecate
them.  When combined with the pathDepsMutator this will let all
properties that take source paths also take filegroups or genrule
outputs, as long as they are tagged with `android:"path"`.

Test: All soong tests
Change-Id: I01625e76b5da19240e9649bf26a014eeeafcab8f
2019-03-20 19:36:13 +00:00
Colin Cross 07e51619a2 Remove ModuleSrcPath
ModuleSrcPath was designed as a type that ensured that modules only
referenced sources inside the directory that contained the Android.bp
file.  In practice they don't work very well, because allowing
filegroups and genrules as inputs to any module that takes a source
path means that the path might end up being to a file in another
source directory or to a generated file in the output directory.

Remove ModuleSrcPath, replacing it with SourcePath in the places
that need to explicitly refer to a path in the source tree, or
Path where it may be a source path or a generated path.

Make PathForModuleSrc return a Path instead of a SourcePath in
preparation for consolidation with ctx.ExpandSources, which will
make it possibly return paths to generated files.

Test: All soong tests
Change-Id: I973a78470ed14307eea5f6d0cc93942775a65715
2019-03-20 19:36:03 +00:00
Peter Collingbourne 1b781e52e2 Merge "Remove workarounds for old compiler versions." 2019-03-20 16:33:23 +00:00
Yi Kong 2a51b3fe00 Turn on string-plus-int warning
All instances for the warning are fixed/suppressed, turn the warning
back on.

Test: m checkbuild
Bug: 128878287
Change-Id: Ifd5f9a64cb7ff1ce47f498ed38436056b493ee92
2019-03-20 00:58:46 -07:00
Yi Kong a32b5e6a6b Add -faddrsig to ClangExtraCflags
Emit address-significance table which allows linker to perform safe ICF.
Clang does not emit the table by default on Android since NDK still uses
GNU binutils.

With the flag, binary size is decreased. For Marlin:
               -fno-addrsig  -faddrsig  diff
/system/bin    28012K        27108K     -3.33%
/system/lib    88220K        86964K     -1.44%
/system/lib64  151936K       148108K    -2.58%

Test: m checkbuild
Bug: 128940110
Change-Id: I99511f038a6d4b88b5c849a0f8943c24731ab6ea
2019-03-20 03:21:10 +00:00
Yi Kong bdb1ed828d Merge "Switch clang to r353983" 2019-03-19 04:21:20 +00:00
Yi Kong 6925d2b300 Switch clang to r353983
Bug: 126457671
Bug: 123638879
Bug: 128878287
Test: go/clang-r353983-testing
Change-Id: I7f16e68f0f521ff55587084932d175b704e452c9
2019-03-19 04:20:52 +00:00