When using the A/B updater, include the product version string to
target_files.zip.
This is needed by the Omaha backend.
BUG: 24743570
Change-Id: Idaba06624c1de452b1e1f9d3ebec851229af987a
6ff74ce8ee
should have made this workaround unnecessary. Now, even with
old build/core, "m -j32 PRODUCT-aosp_mips64-eng dist" does not
output a ninja file with "$(cat )".
Bug: 24384320
Change-Id: I262edf00dce39f39ec4e55d5ed7b1b6f8d931f33
Even if word list is empty.
Not creating the file was causing print of error messages that were
not preventing compilation to continue when compiling Java module with
no source.
Change-Id: I095b85f85ed6fcef5882afa39d4af51b78124c7c
The OTA/bin tools are not needed in the target files zip when using
the A/B OTA updater.
Bug: 24577767
Change-Id: I7938a906e4d73709aaa944e8065f922536072e27
gcc color diagnostics stopped working when the flag was moved to
TARGET_GLOBAL_CFLAGS, as that gets overwritten by combo/select.mk. Put
it back in COMMON_GLOBAL_CFLAGS, and then let the windows build filter
it out, similar to the way clang deals with unknown flags.
Change-Id: I2db221edb893d81f199494e7515d1b9282c12fae
The list of A/B partitions updated is product-specific. Normally you
would update boot and system, but the product could require to update
other partitions during a system update. This patch packages the list
of A/B partitions configured to be updated when using the A/B updater.
The list can be set in the product makefile by setting the make
variable UPDATE_AB_PARTITIONS.
Bug: 24387863
Test: `make dist` creates the META/ab_partitions.txt in the target_files.zip
Change-Id: I4226ab05c7c7cd74721b06f1da64c6cf4d0e52ac
Bug: 23396112
Switch from "-fsanitize-undefined-trap-on-error" to
"-fsanitize-trap=all". The former ends up accidentally leaving
unresolved calls to __ubsan* helper functions in the object file with
clang 3.8. The latter is used when we don't include address sanitizer,
and replaces any misbehavior with a direct call to abort().
Change-Id: I8a67461b45f5f1dd9f2d179b6b64a4ca905e999f
We should pass --gen_all_targets to have targets which are not declared
as .PHONY. However, this triggers some nasty behavior inherited from
make, where targets can get variables from things that depend on them.
--gen_all_targets will traverse the targets starting at random points in
the dependency tree, and any variables set higher in the tree will not
be visible. To work around this, keep --gen_all_phony_targets, which
will start traversing at the phony targets first. This will enter the
tree traversal at points we know don't use inherited variables, like
checkbuild or the PARSE_TIME_MAKE_GOALS, and will reach all the
dependencies that use inherited variables in the right order.
--gen_all_targets will then fill in any remaining targets that were not
in the main dependency tree, and hopefully none of them use any
inherited variables.
Bug: 24384320
Change-Id: I1ff07b7ef26e9481baae678e7fe0933b6d05f2a7
Many of these may not make a difference in the output images, but it's a
good idea to keep the make system as repeatable as possible.
Change-Id: I31804b8ad5805148ed08be7426a242a16f4d0df3
Many of the packages on ALL_PREBUILTS grandfathered list are no longer
in the tree. Remove them to whittle the list down, so we can tackle the
remaining items.
Change-Id: Id6c026727ed7bef36d1803719df05d2e50afc5cc
Move the ninja files from $(PRODUCT_OUT)/build.ninja to
$(OUT_DIR)/build-$(TARGET_PRODUCT).ninja. This will improve incremental
builds of host modules after swithing target products, because the
.ninja_deps file will be accurate across builds.
Change-Id: Ia12746ccde0de31f6fccd111b2bdbd48fc6900d7
This config file pulled directly from the source specifies the update
payload version supported by the code. When generating an incremental
update payload for the A/B updater, the generated payload format will
match the version supported by the old version.
Bug: 24406755
Test: `make dist` on Brillo.
Change-Id: Ib7ac6828d0d34eb31e786dbaae5d59ecf26c3576
After 3ad3549519 (Don't add CFLAGS to
CPPFLAGS), makeparallel now needs to explicitly include CFLAGS like
kati.
Change-Id: Ib50328da147f03647bb5b99f6d69948d644eece9
dist is a strange dual-use target, as both a flag and a goal. make dist
<target> means build <target>, but copy any dist-for-goals files to
$DIST_DIR. make dist without a target means build droid with
dist-for-goals files. This requires special handling of MAKECMDGOALS to
detect the case where dist is the only goal, which breaks when ninja.mk
doesn't pass all the goals to kati. Instead, let ninja handle the
default goal. Pass dist to kati if it is specified in order to turn on
the dist-for-goal rules, but filter it out of the goals passed to
ninja. If there are any other goals, ninja will build them. If there
are no goals, ninja will fall back to the default goal, which is droid.
Change-Id: Iafb184d28cb312cb7c5682cd3ff4f310b2d9f7e9
There are multiple versions of this in the tree. Let's standardize on
one that will work for everyone, and will sort the results.
Bug: 24204119
Change-Id: I09fcd80e1e8e35e64d8a8a62bbc096f87b02603f
--gen_all_targets seems to be dropping some intermediate targets,
causing problems when kati is passed a goal and then ninja is run with
checkbuild as a goal, for example with:
m -j PRODUCT-aosp_flounder-userdebug checkbuild
This reverts commit 92bbf5667d.
Change-Id: If34a790028f8da98fcc713e3f7000d06c63dcf80
This isn't actually necessary, dist doesn't use MAKEDISTGOALS other than
to check if it contains any other real targets. The real issue is
caused by --gen_all_targets, and is broader than just "dist".
This reverts commit d3701e9e96.
Change-Id: Iaea1f158dbd1d4b9035954efef40b33485e6c6b3
We should pass --gen_all_targets instead of --gen_all_phony_targets
to have targets which are not declared as .PHONY.
Bug: 24384320
Change-Id: I616d8c74e6efd9d69b1a935cfc5116b716f100ff
The 8 in this definition refers to NDK release 8, not the API level 8.
Setting it to "current" is better, since it still contains the relevant
target API level (9 in our case) for using/building our RS support APIs.
Change-Id: Ib216ea859e137643fba81c39c4b9d0077ec04455
This is to support the change to bsdiff which depends on
libdivsufsort.so and libdivsufsort64.so now.
Bug: 24332905
Change-Id: I232fc1b2abda67456f012a83fa4f69a99bc6ea14
Ninja has an implicit dependency on the command being run, and kati will
regenerate the ninja manifest if any read makefile changes, so there is no
need to have dependencies on makefiles.
This won't catch all the cases where LOCAL_ADDITIONAL_DEPENDENCIES contains
a .mk file, because a few users of LOCAL_ADDITIONAL_DEPENDENCIES don't
include base_rules.mk, but it will fix the most common ones.
Bug: 23566977
Change-Id: I66de882421376303ab7233c8ce7274548f6b2199
Only goals that modify the parsing need to be passed to kati, filter out
everything else and only pass it to ninja.
Also, always specify --gen_all_phony_targets. With this flag, kati emits
all phony targets in the ninja file so a ninja file generated only with
PARSE_TIME_MAKE_GOALS can handle targets which don't change the parsing.
This is a reland attempt of
https://android-review.googlesource.com/#/c/172800/
The two issues should have been fixed by Ying in internal trees.
Bug: 24339367
Change-Id: I8ba2254f9bff271da2a7aa7684fd3d987e07c9d3
Distinguish between parsing makefiles in make for a pre-ninja build,
parsing makefiles in kati for a ninja build, and parsing makefiles in
make for a non-ninja build by leaving USE_NINJA=true enabled for the
kati pass but also setting BUILDING_WITH_NINJA.
Change-Id: I63f1ce1efe08cd86fdf41f8051901f720b38cfaf
The preparing StaticLib messages don't provide any useful information,
remove them to clean up build output.
Bug: 24409581
Change-Id: I81fa7c47fd0d10846a21667b6421b4777260d0e9
When BREAKPAD_GENERATE_SYMBOLS is set to true, package the breakpad
symbols into the target files zip thats generated with `make dist`.
Bug: 24165970
Change-Id: I11c0d9a9d9e159475bfdb7bc338f9e9ac60aeada
The windows toolchain doesn't support color, only apply
-fdiagnostics-color to HOST and TARGET, not HOST_CROSS.
Change-Id: I17b999a2852b8d70b2d39a58befa10e2e32c4608
The tests goal is not a parse time goal.
The checkbuild goal is only a parse time goal so that it doesn't result
in a circular dependency between droid and checkbuild when
ANDROID_BUILD_EVERYTHING_BY_DEFAULT is set. Get rid of the circular
dependency by making droid depend on droid_targets, and droid_targets
depend on the targets that are normally built for droid. checkbuild can
then always depend on droid_targets, and droid can condtionally depend
on checkbuild without introducing a circular dependency.
Bug: 24413153
Change-Id: I231d80e05ffe321384a5efbcdf5578f86ad84da0
We only build rs_compatibility_jni_libs for unbundled build or when
FORCE_BUILD_RS_COMPAT is set. We don't need to install the
rs_compatibility_jni_libs to system.img in either case.
It's bad idea to install them to system.img, because when two modules
have .rs files with the same name, their installed files conflict.
Change-Id: I7524a301c59396db464f28b17b8f8bf1f15523ca
libgtest_main uses symbols from libgtest. If libgtest_main is linked
after libgtest, and the test .o files don't reference libgtest (which is
unlikely), then the libgtest .o files will be ignored and libgtest_main
won't be able to find its symbols from libgtest.
Change-Id: Ica3bc679bd9d14e9a3065be927f085cf52faab64
Force gcc and clang to always output color diagnostics. Ninja will
strip the ANSI color codes if it is not running in a terminal.
Bug: 24273983
Change-Id: Ic9252549bfacf3bbb3f4b9d20f63010fc24ac21d
Only goals that modify the parsing need to be passed to kati, filter out
everything else and only pass it to ninja.
Also, always specify --gen_all_phony_targets. With this flag, kati emits
all phony targets in the ninja file so a ninja file generated only with
PARSE_TIME_MAKE_GOALS can handle targets which don't change the parsing.
Bug: 24339367
Change-Id: I63237160c3c86817b53635665d56906790ec4e6a
This doesn't seem to be a problem any more, and mac builds
that differ from linux builds is causing other problems.
This reverts commit 7c40fb95dc.
Bug: 24339250
Change-Id: I8a0da11df42d58ba9c3ded4571f1db870f400a21
When BREAKPAD_GENERATE_SYMBOLS is set to true, generate breakpad
symbols for binaries.
Bug: 23900817
Change-Id: I7b992d819350f4f80df5868d16f13016502dfca0
This avoids Ninja's path canonicalization on those goal names.
Without this, Ninja complains about duplicate rules for
MODULES-IN/a/b/.. and MODULES-IN/a.
Bug: 24309760
Change-Id: Id3aa9da5d3887a2cd1426cbb5fdf35659c65805e