]>
Commit | Line | Data |
---|---|---|
3ff291f3 MY |
1 | #!/bin/sh |
2 | # | |
3 | # A wrapper script to adjust Kconfig for U-Boot | |
4 | # | |
e02ee254 | 5 | # This file will be removed after cleaning up defconfig files |
3ff291f3 MY |
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 | ||
3ff291f3 MY |
14 | # Make a configuration target |
15 | # Usage: | |
16 | # run_make_config <target> <objdir> | |
17 | # <target>: Make target such as "config", "menuconfig", "defconfig", etc. | |
3ff291f3 | 18 | run_make_config () { |
3ff291f3 MY |
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. | |
e02ee254 | 22 | $MAKE -f $srctree/scripts/Makefile.build obj=scripts/kconfig SRCARCH=.. $1 |
3ff291f3 MY |
23 | } |
24 | ||
25 | do_silentoldconfig () { | |
26 | run_make_config silentoldconfig | |
3ff291f3 MY |
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. | |
e02ee254 | 30 | $MAKE -f $srctree/scripts/Makefile.autoconf || { |
3ff291f3 MY |
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 | |
3ff291f3 MY |
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 | |
3ff291f3 | 53 | |
8caaec62 MY |
54 | if [ ! -r $defconfig_path ]; then |
55 | echo >&2 "***" | |
703a08f2 | 56 | echo >&2 "*** Can't find default configuration \"configs/$1\"!" |
8caaec62 MY |
57 | echo >&2 "***" |
58 | exit 1 | |
59 | fi | |
60 | ||
3ff291f3 | 61 | mkdir -p arch configs |
e02ee254 MY |
62 | # prefix "*:" is deprecated. Drop it simply. |
63 | sed -e 's/^[+A-Z]*://' $defconfig_path > configs/.tmp_defconfig | |
3ff291f3 MY |
64 | |
65 | run_make_config .tmp_defconfig || { | |
66 | cleanup_after_defconfig | |
67 | exit 1 | |
68 | } | |
69 | ||
3ff291f3 MY |
70 | cleanup_after_defconfig |
71 | } | |
72 | ||
cbdd9a97 IC |
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 | |
f0ce28e9 | 79 | sed -i -e 's/\# CONFIG_SPL_FEL is not set/CONFIG_SPL_FEL=y\nCONFIG_UART0_PORT_F=n/g' \ |
e02ee254 | 80 | .config |
cbdd9a97 IC |
81 | } |
82 | ||
3ff291f3 | 83 | do_others () { |
e02ee254 | 84 | run_make_config $1 |
3ff291f3 MY |
85 | } |
86 | ||
87 | progname=$(basename $0) | |
88 | target=$1 | |
89 | ||
90 | case $target in | |
91 | *_defconfig) | |
92 | do_board_defconfig $target;; | |
cbdd9a97 IC |
93 | *_felconfig) |
94 | do_board_felconfig $target;; | |
3ff291f3 | 95 | *_config) |
d1b60d34 | 96 | # backward compatibility |
3ff291f3 MY |
97 | do_board_defconfig ${target%_config}_defconfig;; |
98 | silentoldconfig) | |
99 | do_silentoldconfig;; | |
3ff291f3 MY |
100 | *) |
101 | do_others $target;; | |
102 | esac |