Blame view

scripts/config 2.63 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
13
14
15
  	--module|-m option   Turn option into a module
  	--set-str option value
  	                     Set option to "value"
  	--state|-s option    Print state of option (n,y,m,undef)
8e54701ea   Andi Kleen   kconfig: add scri...
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
  
  	--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...
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
  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...
47
48
49
50
51
52
53
54
55
56
57
58
  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...
59
60
61
62
63
64
65
  }
  
  if [ "$1" = "--file" ]; then
  	FN="$2"
  	if [ "$FN" = "" ] ; then
  		usage
  	fi
47312d2cf   Michal Marek   kbuild: simplify ...
66
  	shift 2
8e54701ea   Andi Kleen   kconfig: add scri...
67
68
69
  else
  	FN=.config
  fi
2302e8730   Andi Kleen   kbuild: print usa...
70
71
72
  if [ "$1" = "" ] ; then
  	usage
  fi
8e54701ea   Andi Kleen   kconfig: add scri...
73
74
75
76
  while [ "$1" != "" ] ; do
  	CMD="$1"
  	shift
  	case "$CMD" in
47312d2cf   Michal Marek   kbuild: simplify ...
77
78
79
80
81
82
83
84
85
86
  	--refresh)
  		;;
  	--*-after)
  		checkarg "$1"
  		A=$ARG
  		checkarg "$2"
  		B=$ARG
  		shift 2
  		;;
  	--*)
8e54701ea   Andi Kleen   kconfig: add scri...
87
  		checkarg "$1"
8e54701ea   Andi Kleen   kconfig: add scri...
88
89
  		shift
  		;;
47312d2cf   Michal Marek   kbuild: simplify ...
90
91
92
93
94
  	esac
  	case "$CMD" in
  	--enable|-e)
  		set_var "CONFIG_$ARG" "CONFIG_$ARG=y"
  		;;
8e54701ea   Andi Kleen   kconfig: add scri...
95
96
  
  	--disable|-d)
566432224   Michal Marek   kbuild: handle no...
97
  		set_var "CONFIG_$ARG" "# CONFIG_$ARG is not set"
8e54701ea   Andi Kleen   kconfig: add scri...
98
99
100
  		;;
  
  	--module|-m)
566432224   Michal Marek   kbuild: handle no...
101
  		set_var "CONFIG_$ARG" "CONFIG_$ARG=m"
8e54701ea   Andi Kleen   kconfig: add scri...
102
  		;;
1f990cf94   Michal Marek   kbuild: add gener...
103
104
105
106
  	--set-str)
  		set_var "CONFIG_$ARG" "CONFIG_$ARG=\"$1\""
  		shift
  		;;
8e54701ea   Andi Kleen   kconfig: add scri...
107
  	--state|-s)
8e54701ea   Andi Kleen   kconfig: add scri...
108
109
110
111
112
113
114
115
116
117
118
119
  		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...
120
121
122
  		;;
  
  	--enable-after|-E)
566432224   Michal Marek   kbuild: handle no...
123
  		set_var "CONFIG_$B" "CONFIG_$B=y" "CONFIG_$A"
8e54701ea   Andi Kleen   kconfig: add scri...
124
125
126
  		;;
  
  	--disable-after|-D)
566432224   Michal Marek   kbuild: handle no...
127
  		set_var "CONFIG_$B" "# CONFIG_$B is not set" "CONFIG_$A"
8e54701ea   Andi Kleen   kconfig: add scri...
128
129
130
  		;;
  
  	--module-after|-M)
566432224   Michal Marek   kbuild: handle no...
131
  		set_var "CONFIG_$B" "CONFIG_$B=m" "CONFIG_$A"
8e54701ea   Andi Kleen   kconfig: add scri...
132
133
134
135
136
137
138
139
140
141
142
143
  		;;
  
  	# undocumented because it ignores --file (fixme)
  	--refresh)
  		yes "" | make oldconfig
  		;;
  
  	*)
  		usage
  		;;
  	esac
  done