123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- #!/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
|