xref: /aosp_15_r20/build/bazel/mk2rbc/replace_is_board_platform.sh (revision 7594170e27e0732bc44b93d1440d87a54b6ffe7c)
1#! /bin/bash
2##CL Replace is-board-platform[-in-list] with is-board-platform[-in-list]2
3##CL
4##CL The regular is-board-platform[-in-list] functions are defined in
5##CL some product/board configuration makefiles, and sometimes also
6##CL used in Android.mk files. When the product/board configuration
7##CL is converted to starlark, the functions will no longer be defined
8##CL for the Android.mk files to use. Switch to using a version of
9##CL these functions that is defined inside the core build system
10##CL makefiles, so it will still be defined when the configuration
11##CL is in Starlark.
12##CL
13##CL The new function returns either an empty string or the matching
14##CL platform, while the old one returned either an empty string or true.
15##CL So now if statements are compared against an empty string instead of
16##CL true.
17##CL
18##CL Bug: 201477826
19##CL Test: treehugger
20declare -r files="$(grep -rlP '^[^#]*call +is-board-platform' --include '*.mk' --exclude 'utils_test.mk' --exclude 'utils_sample_usage.mk')"
21[[ -z "$files" ]] || sed -i -r -f <(cat <<"EOF"
22s/ifeq +\(\$\(call is-board-platform,(.*)\), *true\)/ifneq (,$(call is-board-platform2,\1))/
23s/ifeq +\(\$\(call is-board-platform,(.*)\), *\)/ifeq (,$(call is-board-platform2,\1))/
24s/ifneq +\(\$\(call is-board-platform,(.*)\), *true\)/ifeq (,$(call is-board-platform2,\1))/
25s/ifeq +\(\$\(call is-board-platform-in-list,(.*)\), *true\)/ifneq (,$(call is-board-platform-in-list2,\1))/
26s/ifeq +\(\$\(call is-board-platform-in-list,(.*)\), *\)/ifeq (,$(call is-board-platform-in-list2,\1))/
27s/ifeq +\(\$\(call is-board-platform-in-list,(.*)\), *false\)/ifeq (,T)  # TODO: remove useless check/
28s/ifneq +\(\$\(call is-board-platform-in-list,(.*)\), *true\)/ifeq (,$(call is-board-platform-in-list2,\1))/
29s/\$\(call is-board-platform,(.*)\)/$(call is-board-platform2,\1)/
30EOF
31) $files
32