mirror of https://github.com/Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
84 lines
2.4 KiB
84 lines
2.4 KiB
#!/bin/sh |
|
# SPDX-License-Identifier: GPL-2.0-or-later |
|
# |
|
# Copyright (C) 2017 Imagination Technologies |
|
# Author: Paul Burton <[email protected]> |
|
# |
|
# This script merges configuration fragments for boards supported by the |
|
# generic MIPS kernel. It checks each for requirements specified using |
|
# formatted comments, and then calls merge_config.sh to merge those |
|
# fragments which have no unmet requirements. |
|
# |
|
# An example of requirements in your board config fragment might be: |
|
# |
|
# # require CONFIG_CPU_MIPS32_R2=y |
|
# # require CONFIG_CPU_LITTLE_ENDIAN=y |
|
# |
|
# This would mean that your board is only included in kernels which are |
|
# configured for little endian MIPS32r2 CPUs, and not for example in kernels |
|
# configured for 64 bit or big endian systems. |
|
# |
|
|
|
srctree="$1" |
|
objtree="$2" |
|
ref_cfg="$3" |
|
cfg="$4" |
|
boards_origin="$5" |
|
shift 5 |
|
|
|
# Only print Skipping... lines if the user explicitly specified BOARDS=. In the |
|
# general case it only serves to obscure the useful output about what actually |
|
# was included. |
|
case ${boards_origin} in |
|
"command line") |
|
print_skipped=1 |
|
;; |
|
environment*) |
|
print_skipped=1 |
|
;; |
|
*) |
|
print_skipped=0 |
|
;; |
|
esac |
|
|
|
for board in $@; do |
|
board_cfg="${srctree}/arch/mips/configs/generic/board-${board}.config" |
|
if [ ! -f "${board_cfg}" ]; then |
|
echo "WARNING: Board config '${board_cfg}' not found" |
|
continue |
|
fi |
|
|
|
# For each line beginning with # require, cut out the field following |
|
# it & search for that in the reference config file. If the requirement |
|
# is not found then the subshell will exit with code 1, and we'll |
|
# continue on to the next board. |
|
grep -E '^# require ' "${board_cfg}" | \ |
|
cut -d' ' -f 3- | \ |
|
while read req; do |
|
case ${req} in |
|
*=y) |
|
# If we require something =y then we check that a line |
|
# containing it is present in the reference config. |
|
grep -Eq "^${req}\$" "${ref_cfg}" && continue |
|
;; |
|
*=n) |
|
# If we require something =n then we just invert that |
|
# check, considering the requirement met if there isn't |
|
# a line containing the value =y in the reference |
|
# config. |
|
grep -Eq "^${req/%=n/=y}\$" "${ref_cfg}" || continue |
|
;; |
|
*) |
|
echo "WARNING: Unhandled requirement '${req}'" |
|
;; |
|
esac |
|
|
|
[ ${print_skipped} -eq 1 ] && echo "Skipping ${board_cfg}" |
|
exit 1 |
|
done || continue |
|
|
|
# Merge this board config fragment into our final config file |
|
${srctree}/scripts/kconfig/merge_config.sh \ |
|
-m -O ${objtree} ${cfg} ${board_cfg} \ |
|
| grep -Ev '^(#|Using)' |
|
done
|
|
|