android13/build/bazel/mk2rbc/replace_is_board_platform.sh

32 lines
1.8 KiB
Bash
Executable File

#! /bin/bash
##CL Replace is-board-platform[-in-list] with is-board-platform[-in-list]2
##CL
##CL The regular is-board-platform[-in-list] functions are defined in
##CL some product/board configuration makefiles, and sometimes also
##CL used in Android.mk files. When the product/board configuration
##CL is converted to starlark, the functions will no longer be defined
##CL for the Android.mk files to use. Switch to using a version of
##CL these functions that is defined inside the core build system
##CL makefiles, so it will still be defined when the configuration
##CL is in Starlark.
##CL
##CL The new function returns either an empty string or the matching
##CL platform, while the old one returned either an empty string or true.
##CL So now if statements are compared against an empty string instead of
##CL true.
##CL
##CL Bug: 201477826
##CL Test: treehugger
declare -r files="$(grep -rlP '^[^#]*call +is-board-platform' --include '*.mk' --exclude 'utils_test.mk' --exclude 'utils_sample_usage.mk')"
[[ -z "$files" ]] || sed -i -r -f <(cat <<"EOF"
s/ifeq +\(\$\(call is-board-platform,(.*)\), *true\)/ifneq (,$(call is-board-platform2,\1))/
s/ifeq +\(\$\(call is-board-platform,(.*)\), *\)/ifeq (,$(call is-board-platform2,\1))/
s/ifneq +\(\$\(call is-board-platform,(.*)\), *true\)/ifeq (,$(call is-board-platform2,\1))/
s/ifeq +\(\$\(call is-board-platform-in-list,(.*)\), *true\)/ifneq (,$(call is-board-platform-in-list2,\1))/
s/ifeq +\(\$\(call is-board-platform-in-list,(.*)\), *\)/ifeq (,$(call is-board-platform-in-list2,\1))/
s/ifeq +\(\$\(call is-board-platform-in-list,(.*)\), *false\)/ifeq (,T) # TODO: remove useless check/
s/ifneq +\(\$\(call is-board-platform-in-list,(.*)\), *true\)/ifeq (,$(call is-board-platform-in-list2,\1))/
s/\$\(call is-board-platform,(.*)\)/$(call is-board-platform2,\1)/
EOF
) $files