1#!/bin/bash 2# 3# Usage: 4# parse_defconfig.sh <defconfig> [output config path] 5 6set -e 7 8parse_includes() 9{ 10 sed -n "/^#include /s/.*\"\(.*\)\"/configs\/rockchip\/\1/p" $@ 11} 12 13extract_config() 14{ 15 for config in $(parse_includes $@); do 16 extract_config $config 17 done 18 echo "$1" 19} 20 21SCRIPT_DIR="$(realpath "$(dirname "$0")")" 22BUILDROOT_DIR="$(dirname "$SCRIPT_DIR")" 23cd "$BUILDROOT_DIR" 24 25BOARD="$(basename "${1%_defconfig}")" 26if [ -r "$1" ]; then 27 DEFCONFIG="$1" 28 29 # Unknown board 30 echo "$DEFCONFIG" | grep -q "_defconfig$" || unset BOARD 31else 32 DEFCONFIG="configs/${BOARD}_defconfig" 33 if [ ! -r "$DEFCONFIG" ]; then 34 echo "Unable to locate defconfig: $@" 35 exit 1 36 fi 37fi 38 39export KCONFIG_CONFIG="${2:-$BUILDROOT_DIR/output/$BOARD/.config}" 40 41echo "Parsing defconfig: $DEFCONFIG" 42 43"$SCRIPT_DIR/merge_config.sh" -m -O "$(dirname $KCONFIG_CONFIG)" \ 44 $(extract_config "$DEFCONFIG") 45 46sed -i "s~\(^BR2_DEFCONFIG=\).*~\1\"$(realpath "$DEFCONFIG")\"~" \ 47 "$KCONFIG_CONFIG" 48