xref: /OK3568_Linux_fs/buildroot/build/parse_defconfig.sh (revision 4882a59341e53eb6f0b4789bf948001014eff981)
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