Blame view

scripts/config 2.76 KB
8e54701ea   Andi Kleen   kconfig: add scri...
1
2
3
4
5
6
7
8
9
10
11
  #!/bin/bash
  # Manipulate options in a .config file from the command line
  
  usage() {
  	cat >&2 <<EOL
  Manipulate options in a .config file from the command line.
  Usage:
  config options command ...
  commands:
  	--enable|-e option   Enable option
  	--disable|-d option  Disable option
1f990cf94   Michal Marek   kbuild: add gener...
12
  	--module|-m option   Turn option into a module
f0a6332ce   Jonas Aaberg   kbuild: add numer...
13
14
15
16
  	--set-str option string
  	                     Set option to "string"
  	--set-val option value
  	                     Set option to value
1f990cf94   Michal Marek   kbuild: add gener...
17
  	--state|-s option    Print state of option (n,y,m,undef)
8e54701ea   Andi Kleen   kconfig: add scri...
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
  
  	--enable-after|-E beforeopt option
                               Enable option directly after other option
  	--disable-after|-D beforeopt option
                               Disable option directly after other option
  	--module-after|-M beforeopt option
                               Turn option into module directly after other option
  
  	commands can be repeated multiple times
  
  options:
  	--file .config file to change (default .config)
  
  config doesn't check the validity of the .config file. This is done at next
   make time.
8e54701ea   Andi Kleen   kconfig: add scri...
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
  EOL
  	exit 1
  }
  
  checkarg() {
  	ARG="$1"
  	if [ "$ARG" = "" ] ; then
  		usage
  	fi
  	case "$ARG" in
  	CONFIG_*)
  		ARG="${ARG/CONFIG_/}"
  		;;
  	esac
  	ARG="`echo $ARG | tr a-z A-Z`"
  }
566432224   Michal Marek   kbuild: handle no...
49
50
51
52
53
54
55
56
57
58
59
60
  set_var() {
  	local name=$1 new=$2 before=$3
  
  	name_re="^($name=|# $name is not set)"
  	before_re="^($before=|# $before is not set)"
  	if test -n "$before" && grep -Eq "$before_re" "$FN"; then
  		sed -ri "/$before_re/a $new" "$FN"
  	elif grep -Eq "$name_re" "$FN"; then
  		sed -ri "s:$name_re.*:$new:" "$FN"
  	else
  		echo "$new" >>"$FN"
  	fi
8e54701ea   Andi Kleen   kconfig: add scri...
61
62
63
64
65
66
67
  }
  
  if [ "$1" = "--file" ]; then
  	FN="$2"
  	if [ "$FN" = "" ] ; then
  		usage
  	fi
47312d2cf   Michal Marek   kbuild: simplify ...
68
  	shift 2
8e54701ea   Andi Kleen   kconfig: add scri...
69
70
71
  else
  	FN=.config
  fi
2302e8730   Andi Kleen   kbuild: print usa...
72
73
74
  if [ "$1" = "" ] ; then
  	usage
  fi
8e54701ea   Andi Kleen   kconfig: add scri...
75
76
77
78
  while [ "$1" != "" ] ; do
  	CMD="$1"
  	shift
  	case "$CMD" in
47312d2cf   Michal Marek   kbuild: simplify ...
79
80
81
82
83
84
85
86
87
  	--refresh)
  		;;
  	--*-after)
  		checkarg "$1"
  		A=$ARG
  		checkarg "$2"
  		B=$ARG
  		shift 2
  		;;
45f53cc90   Andi Kleen   Kconfig: fix sing...
88
  	-*)
8e54701ea   Andi Kleen   kconfig: add scri...
89
  		checkarg "$1"
8e54701ea   Andi Kleen   kconfig: add scri...
90
91
  		shift
  		;;
47312d2cf   Michal Marek   kbuild: simplify ...
92
93
94
95
96
  	esac
  	case "$CMD" in
  	--enable|-e)
  		set_var "CONFIG_$ARG" "CONFIG_$ARG=y"
  		;;
8e54701ea   Andi Kleen   kconfig: add scri...
97
98
  
  	--disable|-d)
566432224   Michal Marek   kbuild: handle no...
99
  		set_var "CONFIG_$ARG" "# CONFIG_$ARG is not set"
8e54701ea   Andi Kleen   kconfig: add scri...
100
101
102
  		;;
  
  	--module|-m)
566432224   Michal Marek   kbuild: handle no...
103
  		set_var "CONFIG_$ARG" "CONFIG_$ARG=m"
8e54701ea   Andi Kleen   kconfig: add scri...
104
  		;;
1f990cf94   Michal Marek   kbuild: add gener...
105
106
107
108
  	--set-str)
  		set_var "CONFIG_$ARG" "CONFIG_$ARG=\"$1\""
  		shift
  		;;
f0a6332ce   Jonas Aaberg   kbuild: add numer...
109
110
111
112
  	--set-val)
  		set_var "CONFIG_$ARG" "CONFIG_$ARG=$1"
  		shift
  		;;
8e54701ea   Andi Kleen   kconfig: add scri...
113
  	--state|-s)
8e54701ea   Andi Kleen   kconfig: add scri...
114
115
116
117
118
119
120
121
122
123
124
125
  		if grep -q "# CONFIG_$ARG is not set" $FN ; then
  			echo n
  		else
  			V="$(grep "^CONFIG_$ARG=" $FN)"
  			if [ $? != 0 ] ; then
  				echo undef
  			else
  				V="${V/CONFIG_$ARG=/}"
  				V="${V/\"/}"
  				echo "$V"
  			fi
  		fi
8e54701ea   Andi Kleen   kconfig: add scri...
126
127
128
  		;;
  
  	--enable-after|-E)
566432224   Michal Marek   kbuild: handle no...
129
  		set_var "CONFIG_$B" "CONFIG_$B=y" "CONFIG_$A"
8e54701ea   Andi Kleen   kconfig: add scri...
130
131
132
  		;;
  
  	--disable-after|-D)
566432224   Michal Marek   kbuild: handle no...
133
  		set_var "CONFIG_$B" "# CONFIG_$B is not set" "CONFIG_$A"
8e54701ea   Andi Kleen   kconfig: add scri...
134
135
136
  		;;
  
  	--module-after|-M)
566432224   Michal Marek   kbuild: handle no...
137
  		set_var "CONFIG_$B" "CONFIG_$B=m" "CONFIG_$A"
8e54701ea   Andi Kleen   kconfig: add scri...
138
139
140
141
142
143
144
145
146
147
148
149
  		;;
  
  	# undocumented because it ignores --file (fixme)
  	--refresh)
  		yes "" | make oldconfig
  		;;
  
  	*)
  		usage
  		;;
  	esac
  done