Environment variables HWASAN_INCLUDE_PATHS and
PRODUCT_HWASAN_INCLUDE_PATHS can be used to enable HWASan for multiple
modules, by just adding the module directory to the env variable.
Bug: b/271948407
Test: Set specific module directory to above env variable and check the
assembly codes of output elf files after building, finding hwasan
related symbols inside.
Merged-In: I4493cb627fb564ee317eb95bd24ec020d42ae28c
Change-Id: I4493cb627fb564ee317eb95bd24ec020d42ae28c
(cherry picked from commit e235ded733)
The PRODUCT_MAX_PAGE_SIZE_SUPPORTED will be used to define the
ELF segment alignment of the binaries (executables and shared
libraries). The alignment is set based on these conditions:
- If PRODUCT_MAX_PAGE_SIZE_SUPPORTED is defined, that value will be
used to align the binaries. If not defined, see condition below:
- If it is a low memory device, 4096 will be the alignment. If it is
not low memory device, see conditon below:
- If VSR vendor API level < 34, 4096 will be the alignment, otherwise
it will be 65536.
Test: Built for in Pixel 4a, 6 and verified the alignment with readelf.
Bug: 276963698
Bug: 276801883
(cherry picked from https://android-review.googlesource.com/q/commit:e5c0c174d50e4fab5db797dc815a875d673eadac)
Merged-In: I53a8902ab62e6d378aec84c28bc627f0e8a98500
Change-Id: I53a8902ab62e6d378aec84c28bc627f0e8a98500
Currently, PRODUCT_AFDO_PROFILES is generally applied to all products and is not semantically treated as a product config varilable.
Splitting this allows us:
1. Explicitly tell that PRODUCT_AFDO_PROFILES takes precedence over product-agnostic profiles in AFDO_PROFILES
2. Add PRODUCT_AFDO_PROFILES to _product_vars_list
Ignore-AOSP-First: ag/22604900 in the same topic is in internal repo
Test: Define PRODUCT_AFDO_PROFILES in a product config and make sure it appears first in the soong var AfdoProfiles
Bug: 277215393
Change-Id: I284f6308d456994bb72129cb0d7be7cd091993ae
Previously, the product var is defined in pixel product config only. This breaks SDK finalization for udc (google3/configs/wireless/android/busytown/platform/git_udc/git_udc-release.gcl). In SDK finalization, we need to ensure performance/usage of libraries are consistent across all builds that don't set SKIP_ABI_CHECKS.
This CL optionally includes the afdo_profiles if available so that afdo is on all products by default.
Ignore-AOSP-First: The topic has internal-only CLs
Test: CI
Bug: 276672785
Change-Id: I2cc51412de141c4e6ad69f49cef378121e0b3b87
Ignore-AOSP-First: Ignore-AOSP-First: Other CLs in the same topic are internal-only
Test: m nothing
Bug: 267229065
Change-Id: I2d71daa6af97eeb0050e1084b27b03900d2d75ef
Using PLATFORM_VERSION_ALL_CODENAMES (which is a bad name for
historical reasons) for discovering preview API levels doesn't work in
the narrow window where the branch's development is not for the latest
release. Create a second variable for preview codenames and expose it
to soong.
Bug: None
Test: None
Change-Id: I8c271c1d646ea8285553614c6bca944227a0e643
Some products access the SOONG_CONFIG variables
directly, instead of using soong_config_set. When
they do that, they could end up with duplicate values
in those variables, causing duplicate keys to be
generated in a json map.
Use $(sort) to dedup the map keys before writing them
out.
Bug: 249685973
Test: Presubmits
Change-Id: If0c16377bdfbd3f836ebec9262bec7cf562f339c
Example usage:
PRODUCT_INCLUDE_TAGS += use_myspecial_sdk
This also populates the allowlist with go/nogo mainline tags. Usage of
`PRODUCT_INCLUDE_TAGS` outside this allowlist will raise an error
in product config
Test: TH
Change-Id: Ica82a8f65cbfda600d72fc54fb873c1eaa1666a7
This is determined by:
- a product config flag
- the vendor API level
It is then passed to the device as a system property
"ro.dalvik.vm.enable_uffd_gc".
This change is a no-op change. It doesn't enable userfaultfd GC by
default. OVERRIDE_ENABLE_UFFD_GC=default can be passed to the build
system to enable userfaultfd GC for testing purposes.
Bug: 242553398
Test: -
1. lunch aosp_redfin-userdebug
2. OVERRIDE_ENABLE_UFFD_GC=default build/soong/soong_ui.bash --dumpvars-mode --vars=ENABLE_UFFD_GC
3. See "false" in the output
Test: -
1. lunch aosp_oriole-userdebug
2. OVERRIDE_ENABLE_UFFD_GC=default build/soong/soong_ui.bash --dumpvars-mode --vars=ENABLE_UFFD_GC
3. See "true" in the output
Test: -
1. lunch aosp_redfin-userdebug
2. OVERRIDE_ENABLE_UFFD_GC=true build/soong/soong_ui.bash --dumpvars-mode --vars=ENABLE_UFFD_GC
3. See "true" in the output
Test: -
1. lunch aosp_oriole-userdebug
2. OVERRIDE_ENABLE_UFFD_GC=false build/soong/soong_ui.bash --dumpvars-mode --vars=ENABLE_UFFD_GC
3. See "false" in the output
Change-Id: Ifd6e6cddb502315912ff949619a5b526ae0d73ff
Set up BUILD_BROKEN flags so partners can bypass errors
from using them
Bug: 226636335
Test: m nothing & treehugger
Change-Id: I5c499a37e206bdf89c5c9f84c6ecfe1cdc9a1803
Clang property is deprecated. Set up a BUILD_BROKEN_CLANG_PROPERTY
flag so partners can bypass errors from using clang.
Change-Id: I7ec19c3d11086046031108ecccba5065c38fa338
Test: m nothing & Treehugger
To migrate libwifi-hal module from make to soong, WIFI_ make variables
are added to soong config variables in `wifi` namespace.
Bug: 239984067
Test: m libwifi-hal
Merged-In: If60f5909619af887be8e0086a8dfef65dc97cce0
Change-Id: If60f5909619af887be8e0086a8dfef65dc97cce0
(cherry picked from commit 4abb3d43b4baf74cf7b17fee380d5b4c77a2bc9d)
When trying to build a single 64 bit and 32 bit image, there are
a few executables that are prefer32. When set, this will force all
of those targets to be compiled as 64 bit.
Test: With this option, drmserver/mediaserver are built as 64 bit.
Test: Without this option, drmserver/mediaserver are built as 32 bit.
Change-Id: I84f6be7fe0fa3a9ea86ecc4dd785aaf1825f9925
These were marked as deprecated in late 2020 [1]. Shortly later, there
was an attempt to obsolete them [2] for products shipping with API level
31 or greater, but that was reverted [3] because of internal users.
1: I58c64839cc513ae082cd3ee3c1e108843ea7439e
2: Ic4d1164be611836f6aa697fbf1cb1f1c73a3cd39
3: I7d3556aa0f06684b43f80f09e4c8194c6c44336c
Since these are causing warnings on every build, and there are no more
internal users, just obsolete them entirely. We don't need to rely on
the product shipping api level, since that does not guarantee
source-level compatibility -- and this is an easy fix even if people
have been ignoring the real warnings.
Bug: 235414673
Test: treehugger
Change-Id: If803a33efc38a970247919bf224c12b8c717f955
This change contains a prototype implementation for multitree.
A new file core/tasks/multitree.mk adds a goal named "update-meta",
which searches for "imported" and "exported" Android.bp modules and
writes a json metadata to track dependencies between components.
Bug: 230448564
Test: m
Change-Id: Ie93e3bf130cacb6b6de41acee3bd302f64f1ab95
Override all mainline updateable apexes' min_sdk_version to same version to get a single shared native lib version on DCLA.
Test: Run "vendor/google/build/go/mainline_go_modules_arm.sh" and inspect built apexes
Bug: 212609891
Change-Id: I8edf09ca3c91ee52e9c2138c71d9b155b4448f66
Merged-In: I8edf09ca3c91ee52e9c2138c71d9b155b4448f66
For some modules, it is necessary to access the product name from
Soong. In particular, the use case we have identified is that the
product name needs to be appended to the artifact name in the dist
copy.
Bug: 224561567
Test: Unit Tests and build relevant target/modules
Change-Id: Iaa0bfee8ef0d1201d8af02f7fc9e6ef081175da7
Bug: http://b/194128476
Coverage instrumentation will support continuous mode when this flag is
set.
Test: CLANG_COVERAGE_CONTINUOUS_MODE m and verify continuous mode works.
Change-Id: I187574c600ba10145dfb2c6c23551d235c33103a
Allows allowlisting modules that can temporarily continue to use a
directory as an input while some module types restrict their allowed
inputs.
Test: CI
Change-Id: Ic968a6f6efad45b6c1095dd214813e326d7493c1
So that it can be added to the soong config.
Bug: 220086085
Test: m nothing && inspect soong.variables
Change-Id: I949059b9284b16220e2489010279aeae98b4b7fb
The config variable is used to force the generation of the AIDL
ndk_platform backend which will eventually be removed in favor of the
ndk backend. The switch is needed as an escape hatch for some devices
whose BSP (outsourced and thus hardly modifiable) depends on the
ndk_backend libraries.
Bug: 161456198
Test: m
Merged-In: Iba8633263ae649af783e94b01f5c1b5c6e042948
Change-Id: I8b73a6a1e5169c35daf333316857b3c3b110a0f7
TARGET_BUILD_APPS is supposed to be a list of apps to
build, so having it be a bool was incorrect. Change it
to properly reflect what it is, because the starlark
product configuration relies on soong's interpretation
of variables types.
Bug: 201700692
Test: Presubmits
Change-Id: I00109b57abbcda86077f0465f982f54b4a77a7f0
- PLATFORM_SDK_EXTENSION_VERSION is the sdk extension version of the
tree
- PLATFORM_BASE_SDK_EXTENSION_VERSION is the sdk extension version that
PLATFORM_SDK_VERSION ships with.
Also propagate PLATFORM_SDK_EXTENSION_VERSION to soong to that it can be
used in genrules.
Bug: 195281582
Test: via development/ CL in this topic
Merged-In: Ib078a922e9bd9bc6ae82ab74feaeb743703a64b8
Change-Id: Ib078a922e9bd9bc6ae82ab74feaeb743703a64b8
Support enabling musl in Make builds with USE_HOST_MUSL=true. Only
modules defined in Soong will use musl, but that's almost all host
modules.
Bug: 195988762
Test: m USE_HOST_MUSL=true adb
Change-Id: Ia88f6e20b302d86f2241877b017aebe218d968cf
Note that ART apex boot jars and core-icu4j are exceptions here as they
are not part of ApexBootJars. ART apex boot jars are defined in their
own variable, while core-icu4j is treated as a regular non-updatable
boot jar.
Bug: 191127295
Test: atest CtsClasspathsTestCases
Change-Id: I5f5feb7344941d0154f384e3c06279d49b490768
Regardless of an "updatable" property of individual, list all apex boot
jars in the same variable. This is less confusing for devs, especially
since they shouldn't care about things like boot images.
Bug: 191127295
Test: atest CtsClasspathsTestCases
Change-Id: I0a559db462d1e1f67003ac54d1e27a89110d802a
Merged-In: I0a559db462d1e1f67003ac54d1e27a89110d802a
Bug: 188179858
Test: compare dexpreopt_config.zip files from
1. TARGET_BUILD_UNBUNDLED_IMAGE=true m dexpreopt_config_zip
2. m dexpreopt_config_zip
(note that m clean should run between steps)
Change-Id: I92623b59e4fcac397c7fed3d7ab1070fe5281027
add_json_bool treats non-empty variable as "true" by default (which is
conventional in make). Fix treatment of PRODUCT_COMPRESSED_APEX to
support the value false.
Bug: 185537646
Test: OVERRIDE_PRODUCT_COMPRESSED_APEX=false m nothing && \
grep CompressedApex out/soong/soong.variables
Change-Id: I0562a375be377ab67a1d064e37aff5970c4ac8dd
Starting with Android R launched devices, debugfs cannot be mounted in
production builds. In order to avoid accidental debugfs dependencies
from creeping in during development with userdebug/eng builds, this
patch introduces a build flag that can be set by vendors to enforce
additional debugfs restrictions for userdebug/eng builds. The same flag
will be used to enable sepolicy neverallow statements to prevent new
permissions added for debugfs access.
Bug: 184381659
Test: make with/without PRODUCT_SET_DEBUGFS_RESTRICTIONS
Change-Id: I9aff974da7ddce9bf1a7ec54153b161527b12062