Commit Graph

160 Commits

Author SHA1 Message Date
Colin Cross dab550d68b Add pdk product variable
The pdk product variable will be set by make when TARGET_BUILD_PDK
is set, and can be used to disable modules that won't build in the
PDK.

Test: builds
Bug: 62086238
Change-Id: I2191a57b9b06680fd741308e7464275a89773530
2017-05-25 10:18:24 -07:00
Steven Moreland e24bc204c9 Add Treble as soong variable.
This exposes PRODUCT_FULL_TREBLE.

This is required so that we can add sane defaults to Treble code.

Test: manual
Bug: 38415912
Change-Id: Ia3ea4aeee799b998380a1600026075dab66286a3
2017-05-19 15:19:57 -07:00
Treehugger Robot 2c13abc95e Merge "Fix the issue "\n" didn't get interpreted properly." 2017-05-17 00:31:08 +00:00
Nan Zhang 270051119a Fix the issue "\n" didn't get interpreted properly.
Added params to WriteFile rule that allow users to turn on the
specific 'echo' options, such as "enable the interpretation of backslash
escapes".

Bug: b/38261000
Test: tested with real data files.
Change-Id: I5145056b5c2522a3a72b9436055ec95d2fbd94c0
2017-05-16 15:10:29 -07:00
Christopher Ferris 2dc77f7275 Merge "soong: add cortex-a73 to microarchitecture list" 2017-05-16 17:14:45 +00:00
Treehugger Robot 04b830f133 Merge "Revert "Revert "Ensure environment dependencies are correct""" 2017-05-16 00:25:09 +00:00
Jake Weinstein 6600a44072 soong: add cortex-a73 to microarchitecture list
* Was missed in I3325f60add7f424f8cca53c22919fc481ef5e787

Change-Id: I24d1ef38922cb8f46c9136018cce6a22293ca95e
2017-05-15 18:27:12 -04:00
Dan Willemsen 6606872bf6 Revert "Revert "Ensure environment dependencies are correct""
This reverts commit 4068a5db6c.

Now the Mac xcode-select and xcrun goes through Config.HostSystemTool,
which will grab $PATH through Config.Getenv

Test: m -j (on mac)
Change-Id: I2632c4fdb2ec961e59944cf02ff165e0fd3c869d
2017-05-15 15:22:45 -07:00
Jeff Gaston 734e3809ad Clarify paths.go somewhat
Bug: 35562758
Test: make

Change-Id: I4cf05ffdd0962186f490467829e3576b4e269c47
2017-05-15 11:31:48 -07:00
Colin Cross 67a5c132c5 Prettify soong ninja build descriptions
Descriptions currently look like:
[  0% 4/29328] cc out-soong/.intermediates/external/clang/lib/Sema/libclangSema/android_arm_armv7-a-neon_denver_static_core/obj/external/clang/lib/Sema/SemaCodeComplete.o

This is not very helpful - most of the characters are used to show the
output path, which contains useful information like target architecture,
but also contains most of the path to the source files twice, and less
useful information like the exact variant name used by soong.
Make the descriptions look like:
[  0% 3/29329] //external/clang/lib/Sema:libclangSema clang++ SemaTemplateInstantiate.cpp

This is //path/to/module:modulename tool relative/path/to/source/file

Test: builds, looks pretty
Change-Id: I3087aa7d4eb1860ef6239d77407b8b35445616d7
2017-05-10 11:04:16 -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 ceeff0fd39 Add product_sdk_version.cflags property
libwilhelm needs PRODUCT_SDK_VERSION=%d.

Test: builds
Change-Id: Ie3caf9e4fdcb8e241c8743b1675520e93cf20cae
2017-05-08 15:57:05 -07:00
Dan Willemsen 4068a5db6c Revert "Ensure environment dependencies are correct"
This reverts commit e78473c33c.

Reason for revert: Broke mac builds, which rely on $PATH to find xcrun

Change-Id: I58711b94d472ab828823afaf53394a1aa869f3f5
2017-05-08 21:11:55 +00:00
Dan Willemsen e78473c33c Ensure environment dependencies are correct
Store the os Environment on init, then clear it so that it's only
available via a call to Config.Getenv(). That way we're guaranteed to
know about all dependencies.

Test: Add some os.Getenv/Config.Getenv calls and ensure correct behavior
Test: cs/ shows no os.Getenv / os.LookupEnv / os.ExpandEnv calls that
would be affected
Change-Id: Ic519e0c871f340e752df03b8af0599d47c1d91d8
2017-05-05 23:08:16 -07:00
Colin Cross b2123aa1df Add a variable to disable modules in the PDK
Not plumbed through yet, but will at least prevent us from losing
track of which modules will not build in the PDK.

Test: builds
Change-Id: I4c1a0e39104b104dc1ff23c4391d5e83b3002d3a
2017-05-05 18:22:30 -07:00
Colin Cross c602b7d881 Allow "required" property to vary by arch
Renderscript needs to require different bitcode files based
on architecture.

Test: builds
Change-Id: Ifffa16c892a7f8e309f1c5652472fba44cd2e786
2017-05-05 18:22:30 -07:00
Colin Cross 7e0eaf15b9 Support %s in product variable properties
Support using strings as product variable substitutions, and
add tests for printfIntoProperty.

Test: varaible_test.go
Change-Id: I06cfadfb1d3fc81da72fb71323706df20426c8b7
2017-05-05 18:22:30 -07:00
Colin Cross 2030a8cbcb Merge "Support override_rs_driver product variable" 2017-05-06 00:15:02 +00:00
Nan Zhang db0b9a3cf3 Supported python build in host side.
The base module handles all the common functionalites, such as version
compatibilty check, version variations split, source file format check,
source/data file duplicate check.

The library/binary module focuses on how to generate binary build actions,
such as setting up stub script, zipping, filling in __init__.py in
runfiles dir tree.

Bug: b/31676493
Test: go test under python package

Change-Id: I06608369f350f7195873d459e1c8d1bdb811e77e
2017-05-05 13:27:56 -07:00
Colin Cross 954364256f Support override_rs_driver product variable
Test: builds
Change-Id: Ifd9bf09bb54418d62f6886b0d8ed84dd493a3162
2017-05-04 15:44:11 -07:00
Colin Cross 0e409a2810 Add device_uses_hwc2 product variable
TARGET_USES_HWC2 is going away, but propagate it to soong for now
to unblock converting dependency chains that end in libhwui.

Test: soong tests
Change-Id: I20f1269caea1b5f5fc39239daa6b2e610bd36eb9
2017-05-02 11:17:45 -07:00
Colin Cross 1837b802e1 Enable mips32r2dsp[r2]-fp in mega device build
These seem to build now.

Test: mega device build
Change-Id: If2514258b0c57d6db484aed4c17a3e1f62109429
2017-04-27 12:21:24 -07:00
Colin Cross 893d816a6d Turn installation on in mega device build
Turn on installation in the mega device build, it is necessary for the ndk
sysroot installation.  Partially fixes mega device builds, they also need
to run without -w dupbuild=err on the ninja command line because multiple
variants of the same architecture try to install to the same ndk sysroot.

Test: mega device build
Change-Id: I982d77f9ff19f5bc29fc9fe54a0df8db3579c3e3
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
Colin Cross 87d8b56eda Make soong mm/ targets recursive
Put mm/* targets into their parent directory's mm/ target.

Test: examine out/soong/build.ninja
Change-Id: Iacad3db8c904bb4d90b36e125bb359a7fb90368b
2017-04-25 13:26:40 -07:00
Vishwath Mohan 9ce4529614 Merge "Change the global CFI flag to default to enabled." 2017-04-20 01:39:56 +00:00
Treehugger Robot 8596bab0b0 Merge "Added duplicates checking when extracting source deps." 2017-04-19 19:50:11 +00: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
Vishwath Mohan c32c3ebfb9 Change the global CFI flag to default to enabled.
This CL changes the ENABLE_CFI flag to default to enabled. Setting it
to false will override local settings to enable CFI.

Bug: 30227045
Bug: 22033465
Test: m -j40 works and device boots
Test: cfi is honored unless the global flag is set.
Change-Id: Ie3285c5eac60c8f6012c6b6c23be149a8787af0c
2017-04-13 17:17:28 -07:00
Colin Cross 4247f0d0ed Enable arm_on_x86 mode when arm is a secondary arch
Enable arm_on_x86 mode whenever compiling for x86 on the device,
and either arm is listed as an ABI on the x86 arch, or arm exists
as a target arch.

Bug: 35286489
Test: examine bcc cflags
Change-Id: Iebd0e7b95f584d25773a60474c27425cac7a578e
2017-04-13 16:56:14 -07:00
Nan Zhang 2439eb7761 Added duplicates checking when extracting source deps.
Added this functionality since Blueprint layer won't check deps
duplicates.

Test: Manual m -j.
Change-Id: I28d5f558a211609ecd0b4c2223be897fc1baae17
2017-04-10 12:16:30 -07: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
Colin Cross 3edeee113a Add ctx.Windows()
Replace ctx.Os() == android.Windows with ctx.Windows()

Test: builds
Change-Id: I7c24c39bcf54a51ad152b21c0021e40a0c07f189
2017-04-04 15:39:04 -07:00
Alex Naidis ac01ff5447 Add support for an armv8 variant for Kryo
* Use mcpu=cortex-a57, since it is the closest to Kryo.
* Clang doesn't support Kryo as a target yet.

Bug: 36728278

Test: Built and booted a sailfish using Kryo.

Change-Id: Ic0c9588d86fba41896e50e3f0cf0d2b310ffee93
Signed-off-by: Alex Naidis <alex.naidis@linux.com>
2017-04-04 19:09:43 +00:00
Alex Naidis ae4fc18406 Add support for an armv7 variant for Kryo
* Kryo is closer to Krait than to cortex-a53, so choose Krait defaults.

* Made together with Jake Weinstein (xboxfanj)

Bug: 36728278

Test: Built and boot sailfish set up as kryo.

Change-Id: I04fa0a1dca6f97ae19202d28ee3ce8a59bf169b5
Signed-off-by: Alex Naidis <alex.naidis@linux.com>
2017-04-04 19:09:36 +00:00
Dan Albert 30c9d6e771 Generate file to map codenames to API levels.
The NDK stub library generator needs to know what unreleased API
levels exist and what the ordering is between them. This singleton
will later be expanded to generate api-level.h to cut down on
duplication.

Test: make out/soong/api_levels.json && cat out/soong/api_levels.json
Bug: None
Change-Id: I53126dd2cacb67c331c44f7d7c77c98b176b93cd
2017-03-31 12:27:42 -07:00
Vishwath Mohan 1dd8839286 Refactor sanitized library on-disk layout - Soong.
This CL moves the location of ASAN-ified libraries on disk in the
following manner:
/data/lib* --> /data/asan/system/lib*
/data/vendor/* --> /data/asan/vendor/*

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

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

Change-Id: I06bf459260ec451d4495a02562f640ad622f34c2
2017-03-31 01:03:56 +00:00
Nan Zhang 280802c102 Fixed the issue that phony module was broken.
Phony module was broken since it reached the code line to try to
invoke some specific arch functions which caused the runtime panic
error.

Bug: 36739664
Test: mm -j32 -k
phony {
     name: "shell_and_utilities",
     required: [
         "grep",
         "gzip",
         "mkshrc",
         "reboot",
         "sh",
         "toolbox",
         "toybox",
     ],
}
in system/core/shell_and_utilities/Android.bp

Change-Id: Idf7da17d431aae5f0c56b08f5e5eef14ae4eef50
2017-03-29 17:43:47 -07:00
Dan Willemsen 11b261472a Rework vndk detection
Instead of having a module define `use_vndk: true`, assume that we're
building with the VNDK if we're installed on the vendor partition, and
BOARD_VNDK_VERSION==current. This now matches our behavior in Make.

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

Test: build.ninja for aosp_arm is the same before/after
Test: Ensure there are no boards that set BOARD_VNDK_VERSION
Change-Id: If937fa7bdb119648137af52daebadf486163484b
2017-03-29 04:33:25 +00:00
Treehugger Robot 2b4908b578 Merge "MIPS: Adjust LibartImgDeviceBaseAddress() for CC GC." 2017-03-21 12:02:28 +00:00
Alexey Frunze 6e5dfaaeb1 MIPS: Adjust LibartImgDeviceBaseAddress() for CC GC.
The concurrent copying GC allocates large contiguous
space at low addresses. This moves the image(s) out
of the way to higher addresses.

Test: booted MIPS32R2 in QEMU
Test: booted MIPS64 (with 2nd arch MIPS32R2) in QEMU

Change-Id: I1c54e6142844ab1ad7820765ae313650e9ab8875
2017-03-20 16:58:43 -07:00
Colin Cross 43dd94cf66 Merge "Support owner property" 2017-03-20 22:34:55 +00:00
Colin Cross e3918170ae Merge changes from topic 'prebuilts'
* changes:
  Add support for binary and static library and prebuilts
  Rename to cc_prebuilts_library_shared
  Fix installing prebuilts with no source module
2017-03-20 20:51:45 +00:00
Colin Cross 55708f3fb3 Support owner property
Support owner properties in Android.bp files and propagate the value
to make using LOCAL_MODULE_OWNER.

Bug: 36413696
Test: builds
Change-Id: Iac1cf7f2a14c9e3e6d85d6e09d5adb08a7078d00
2017-03-20 13:33:45 -07:00
Treehugger Robot 3250879667 Merge "Revert "install *.so in different paths for their types"" 2017-03-17 22:45:31 +00:00
Colin Cross c3e7fa65b4 Fix installing prebuilts with no source module
Prebuilts that were not overriding a source module would never
get UsePrebuilt set, which would cause SkipInstall() to be called,
and prevent the module from being exported to make.

Test: prebuilt_test.go
Change-Id: Ib09300efff26f09245331e9919ae2db82b0c3625
2017-03-17 14:06:25 -07:00
Treehugger Robot 6bdcc8ddd6 Merge "Fixed the issue of dependencyTag in prebuilt.go" 2017-03-17 18:46:51 +00:00
Colin Cross 054350e8f1 Merge "Use a minimal set of mutators, module types, and singletons for tests" 2017-03-17 05:05:03 +00:00
Dan Willemsen 615609854f Revert "install *.so in different paths for their types"
This reverts commit 4c48f724e1. It's
causing test failures, warnings and complaints, so backing it out and
we'll resolve those before putting it back in.

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

Bug: 36366816
Test: soong tests
Change-Id: Ic61262c37e3436b3ad4ccaca18b737021c304be6
2017-03-16 16:50:10 -07:00