Masahiro Yamada | 3ff291f | 2014-08-21 11:44:34 +0900 | [diff] [blame] | 1 | #!/bin/sh |
| 2 | # |
| 3 | # A wrapper script to adjust Kconfig for U-Boot |
| 4 | # |
Masahiro Yamada | e02ee25 | 2015-02-24 22:26:20 +0900 | [diff] [blame] | 5 | # This file will be removed after cleaning up defconfig files |
Masahiro Yamada | 3ff291f | 2014-08-21 11:44:34 +0900 | [diff] [blame] | 6 | # |
| 7 | # Copyright (C) 2014, Masahiro Yamada <yamada.m@jp.panasonic.com> |
| 8 | # |
| 9 | # SPDX-License-Identifier: GPL-2.0+ |
| 10 | # |
| 11 | |
| 12 | set -e |
| 13 | |
Masahiro Yamada | 3ff291f | 2014-08-21 11:44:34 +0900 | [diff] [blame] | 14 | # Make a configuration target |
| 15 | # Usage: |
| 16 | # run_make_config <target> <objdir> |
| 17 | # <target>: Make target such as "config", "menuconfig", "defconfig", etc. |
Masahiro Yamada | 3ff291f | 2014-08-21 11:44:34 +0900 | [diff] [blame] | 18 | run_make_config () { |
Masahiro Yamada | 3ff291f | 2014-08-21 11:44:34 +0900 | [diff] [blame] | 19 | # Linux expects defconfig files in arch/$(SRCARCH)/configs/ directory, |
| 20 | # but U-Boot has them in configs/ directory. |
| 21 | # Give SRCARCH=.. to fake scripts/kconfig/Makefile. |
Masahiro Yamada | e02ee25 | 2015-02-24 22:26:20 +0900 | [diff] [blame] | 22 | $MAKE -f $srctree/scripts/Makefile.build obj=scripts/kconfig SRCARCH=.. $1 |
Masahiro Yamada | 3ff291f | 2014-08-21 11:44:34 +0900 | [diff] [blame] | 23 | } |
| 24 | |
| 25 | do_silentoldconfig () { |
| 26 | run_make_config silentoldconfig |
Masahiro Yamada | 3ff291f | 2014-08-21 11:44:34 +0900 | [diff] [blame] | 27 | |
| 28 | # If the following part fails, include/config/auto.conf should be |
| 29 | # deleted so "make silentoldconfig" will be re-run on the next build. |
Masahiro Yamada | e02ee25 | 2015-02-24 22:26:20 +0900 | [diff] [blame] | 30 | $MAKE -f $srctree/scripts/Makefile.autoconf || { |
Masahiro Yamada | 3ff291f | 2014-08-21 11:44:34 +0900 | [diff] [blame] | 31 | rm -f include/config/auto.conf |
| 32 | exit 1 |
| 33 | } |
| 34 | |
| 35 | # include/config.h has been updated after "make silentoldconfig". |
| 36 | # We need to touch include/config/auto.conf so it gets newer |
| 37 | # than include/config.h. |
| 38 | # Otherwise, 'make silentoldconfig' would be invoked twice. |
| 39 | touch include/config/auto.conf |
Masahiro Yamada | 3ff291f | 2014-08-21 11:44:34 +0900 | [diff] [blame] | 40 | } |
| 41 | |
| 42 | cleanup_after_defconfig () { |
| 43 | rm -f configs/.tmp_defconfig |
| 44 | # ignore 'Directory not empty' error |
| 45 | # without using non-POSIX option '--ignore-fail-on-non-empty' |
| 46 | rmdir arch configs 2>/dev/null || true |
| 47 | } |
| 48 | |
| 49 | # Usage: |
| 50 | # do_board_defconfig <board>_defconfig |
| 51 | do_board_defconfig () { |
| 52 | defconfig_path=$srctree/configs/$1 |
Masahiro Yamada | 3ff291f | 2014-08-21 11:44:34 +0900 | [diff] [blame] | 53 | |
Masahiro Yamada | 8caaec6 | 2014-09-04 22:16:15 +0900 | [diff] [blame] | 54 | if [ ! -r $defconfig_path ]; then |
| 55 | echo >&2 "***" |
York Sun | 703a08f | 2014-10-01 08:44:55 -0700 | [diff] [blame] | 56 | echo >&2 "*** Can't find default configuration \"configs/$1\"!" |
Masahiro Yamada | 8caaec6 | 2014-09-04 22:16:15 +0900 | [diff] [blame] | 57 | echo >&2 "***" |
| 58 | exit 1 |
| 59 | fi |
| 60 | |
Masahiro Yamada | 3ff291f | 2014-08-21 11:44:34 +0900 | [diff] [blame] | 61 | mkdir -p arch configs |
Masahiro Yamada | e02ee25 | 2015-02-24 22:26:20 +0900 | [diff] [blame] | 62 | # prefix "*:" is deprecated. Drop it simply. |
| 63 | sed -e 's/^[+A-Z]*://' $defconfig_path > configs/.tmp_defconfig |
Masahiro Yamada | 3ff291f | 2014-08-21 11:44:34 +0900 | [diff] [blame] | 64 | |
| 65 | run_make_config .tmp_defconfig || { |
| 66 | cleanup_after_defconfig |
| 67 | exit 1 |
| 68 | } |
| 69 | |
Masahiro Yamada | 3ff291f | 2014-08-21 11:44:34 +0900 | [diff] [blame] | 70 | cleanup_after_defconfig |
| 71 | } |
| 72 | |
Ian Campbell | cbdd9a9 | 2014-10-24 21:20:50 +0100 | [diff] [blame] | 73 | do_board_felconfig () { |
| 74 | do_board_defconfig ${1%%_felconfig}_defconfig |
| 75 | if ! grep -q CONFIG_ARCH_SUNXI=y .config || ! grep -q CONFIG_SPL=y .config ; then |
| 76 | echo "$progname: Cannot felconfig a non-sunxi or non-SPL platform" >&2 |
| 77 | exit 1 |
| 78 | fi |
Siarhei Siamashka | f0ce28e | 2014-12-25 02:34:47 +0200 | [diff] [blame] | 79 | sed -i -e 's/\# CONFIG_SPL_FEL is not set/CONFIG_SPL_FEL=y\nCONFIG_UART0_PORT_F=n/g' \ |
Masahiro Yamada | e02ee25 | 2015-02-24 22:26:20 +0900 | [diff] [blame] | 80 | .config |
Ian Campbell | cbdd9a9 | 2014-10-24 21:20:50 +0100 | [diff] [blame] | 81 | } |
| 82 | |
Masahiro Yamada | 3ff291f | 2014-08-21 11:44:34 +0900 | [diff] [blame] | 83 | do_others () { |
Masahiro Yamada | e02ee25 | 2015-02-24 22:26:20 +0900 | [diff] [blame] | 84 | run_make_config $1 |
Masahiro Yamada | 3ff291f | 2014-08-21 11:44:34 +0900 | [diff] [blame] | 85 | } |
| 86 | |
| 87 | progname=$(basename $0) |
| 88 | target=$1 |
| 89 | |
| 90 | case $target in |
| 91 | *_defconfig) |
| 92 | do_board_defconfig $target;; |
Ian Campbell | cbdd9a9 | 2014-10-24 21:20:50 +0100 | [diff] [blame] | 93 | *_felconfig) |
| 94 | do_board_felconfig $target;; |
Masahiro Yamada | 3ff291f | 2014-08-21 11:44:34 +0900 | [diff] [blame] | 95 | *_config) |
Masahiro Yamada | d1b60d3 | 2014-08-28 10:56:55 +0900 | [diff] [blame] | 96 | # backward compatibility |
Masahiro Yamada | 3ff291f | 2014-08-21 11:44:34 +0900 | [diff] [blame] | 97 | do_board_defconfig ${target%_config}_defconfig;; |
| 98 | silentoldconfig) |
| 99 | do_silentoldconfig;; |
Masahiro Yamada | 3ff291f | 2014-08-21 11:44:34 +0900 | [diff] [blame] | 100 | *) |
| 101 | do_others $target;; |
| 102 | esac |