diff options
author | 2025-03-08 22:04:20 +0800 | |
---|---|---|
committer | 2025-03-08 22:04:20 +0800 | |
commit | a07bb8fd1299070229f0e8f3dcb57ffd5ef9870a (patch) | |
tree | 84f21bd0bf7071bc5fc7dd989e77d7ceb5476682 /arch/mips/tools/generic-board-config.sh | |
download | ohosKernel-a07bb8fd1299070229f0e8f3dcb57ffd5ef9870a.tar.gz ohosKernel-a07bb8fd1299070229f0e8f3dcb57ffd5ef9870a.zip |
Initial commit: OpenHarmony-v4.0-ReleaseOpenHarmony-v4.0-Release
Diffstat (limited to 'arch/mips/tools/generic-board-config.sh')
-rwxr-xr-x | arch/mips/tools/generic-board-config.sh | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/arch/mips/tools/generic-board-config.sh b/arch/mips/tools/generic-board-config.sh new file mode 100755 index 000000000..dfa5f31f5 --- /dev/null +++ b/arch/mips/tools/generic-board-config.sh | |||
@@ -0,0 +1,84 @@ | |||
1 | #!/bin/sh | ||
2 | # SPDX-License-Identifier: GPL-2.0-or-later | ||
3 | # | ||
4 | # Copyright (C) 2017 Imagination Technologies | ||
5 | # Author: Paul Burton <paul.burton@mips.com> | ||
6 | # | ||
7 | # This script merges configuration fragments for boards supported by the | ||
8 | # generic MIPS kernel. It checks each for requirements specified using | ||
9 | # formatted comments, and then calls merge_config.sh to merge those | ||
10 | # fragments which have no unmet requirements. | ||
11 | # | ||
12 | # An example of requirements in your board config fragment might be: | ||
13 | # | ||
14 | # # require CONFIG_CPU_MIPS32_R2=y | ||
15 | # # require CONFIG_CPU_LITTLE_ENDIAN=y | ||
16 | # | ||
17 | # This would mean that your board is only included in kernels which are | ||
18 | # configured for little endian MIPS32r2 CPUs, and not for example in kernels | ||
19 | # configured for 64 bit or big endian systems. | ||
20 | # | ||
21 | |||
22 | srctree="$1" | ||
23 | objtree="$2" | ||
24 | ref_cfg="$3" | ||
25 | cfg="$4" | ||
26 | boards_origin="$5" | ||
27 | shift 5 | ||
28 | |||
29 | # Only print Skipping... lines if the user explicitly specified BOARDS=. In the | ||
30 | # general case it only serves to obscure the useful output about what actually | ||
31 | # was included. | ||
32 | case ${boards_origin} in | ||
33 | "command line") | ||
34 | print_skipped=1 | ||
35 | ;; | ||
36 | environment*) | ||
37 | print_skipped=1 | ||
38 | ;; | ||
39 | *) | ||
40 | print_skipped=0 | ||
41 | ;; | ||
42 | esac | ||
43 | |||
44 | for board in $@; do | ||
45 | board_cfg="${srctree}/arch/mips/configs/generic/board-${board}.config" | ||
46 | if [ ! -f "${board_cfg}" ]; then | ||
47 | echo "WARNING: Board config '${board_cfg}' not found" | ||
48 | continue | ||
49 | fi | ||
50 | |||
51 | # For each line beginning with # require, cut out the field following | ||
52 | # it & search for that in the reference config file. If the requirement | ||
53 | # is not found then the subshell will exit with code 1, and we'll | ||
54 | # continue on to the next board. | ||
55 | grep -E '^# require ' "${board_cfg}" | \ | ||
56 | cut -d' ' -f 3- | \ | ||
57 | while read req; do | ||
58 | case ${req} in | ||
59 | *=y) | ||
60 | # If we require something =y then we check that a line | ||
61 | # containing it is present in the reference config. | ||
62 | grep -Eq "^${req}\$" "${ref_cfg}" && continue | ||
63 | ;; | ||
64 | *=n) | ||
65 | # If we require something =n then we just invert that | ||
66 | # check, considering the requirement met if there isn't | ||
67 | # a line containing the value =y in the reference | ||
68 | # config. | ||
69 | grep -Eq "^${req/%=n/=y}\$" "${ref_cfg}" || continue | ||
70 | ;; | ||
71 | *) | ||
72 | echo "WARNING: Unhandled requirement '${req}'" | ||
73 | ;; | ||
74 | esac | ||
75 | |||
76 | [ ${print_skipped} -eq 1 ] && echo "Skipping ${board_cfg}" | ||
77 | exit 1 | ||
78 | done || continue | ||
79 | |||
80 | # Merge this board config fragment into our final config file | ||
81 | ${srctree}/scripts/kconfig/merge_config.sh \ | ||
82 | -m -O ${objtree} ${cfg} ${board_cfg} \ | ||
83 | | grep -Ev '^(#|Using)' | ||
84 | done | ||