OSDN Git Service

2013.10.24
[uclinux-h8/uClinux-dist.git] / config / mkconfig
1 #! /bin/sh
2 #############################################################################
3
4 #
5 # Generate the vendor/product menu entries for the top level config
6 #
7 # davidm@snapgear.com
8 # gerg@snapgear.com
9 #
10
11 #############################################################################
12
13 fix_name()
14 {
15         echo $1 | tr '[\-\.\/\+a-z]' '[____A-Z]'
16 }
17
18 echo_separator()
19 {
20         echo "##############################################################"
21         echo
22 }
23
24 default_vendor()
25 {
26         if [ -f config/vendor-default ] ; then
27                 fix_name "`cat config/vendor-default`"
28         else
29                 fix_name AcceleratedConcepts
30         fi
31 }
32
33 #############################################################################
34
35 echo "mainmenu \"Embedded Linux Configuration\""
36 echo
37 echo "config DISTVERSION"
38 echo "  string"
39 echo "  default 4.0"
40 echo
41
42 #
43 # Figure out the vendor/products dynamically, allows people to add there
44 # own without messin with the config.in file
45 #
46 echo "menu \"Vendor/Product Selection\""
47 echo
48 echo "comment \"Select the Vendor you wish to target\""
49 echo
50 echo "choice"
51 echo "  prompt \"Vendor\""
52 echo "  default DEFAULTS_`default_vendor`"
53 echo
54
55 pfile=/tmp/products.$$
56
57 trap "rm -f $pfile; exit 1" 1 2 3 15
58
59 find vendors -mindepth 1 -maxdepth 1 -type d -print | \
60                 sed -e 's?^vendors/??' | \
61                 (sort; echo "END") | while read v
62 do
63         [ "$v" = "config" ] && continue
64         [ "$v" = END ] && break
65         fv=
66         find vendors/$v -name config.arch -print | \
67                 sed -e 's?^vendors/??' -e 's?/[^/]*$??' -e 's?/? ?g' | \
68                 (sort; echo "END END END END") | while read v p junk
69         do
70                 [ "$fv" -a "$v" = END ] && (echo "endchoice"; echo) >> $pfile
71                 [ "$v" = END ] && break
72                 pv="`fix_name ${p}`"
73                 if [ -z "$fv" ]; then
74                         fv="`fix_name ${v}`"
75
76                         echo "config DEFAULTS_${fv}"
77                         echo "  bool \"${v}\""
78                         echo
79
80                         echo_separator >> $pfile
81                         echo "choice" >> $pfile
82                         echo "  prompt \"${v} Products\"" >> $pfile
83                         echo "  depends on DEFAULTS_${fv}" >> $pfile
84                         echo "  default DEFAULTS_${fv}_${pv}" >> $pfile
85                         echo >> $pfile
86                 fi
87
88                 echo "config DEFAULTS_${fv}_${pv}" >> $pfile
89                 echo "  bool \"${p}\"" >> $pfile
90                 echo >> $pfile
91         done
92 done
93
94 echo "endchoice"
95 echo
96 echo "config VENDOR"
97 echo "  string"
98 echo
99 echo_separator
100 echo "comment \"Select the Product you wish to target\""
101 echo
102
103 cat $pfile
104 rm -f $pfile
105
106 echo "endmenu"
107 echo
108 echo "config PRODUCT"
109 echo "  string"
110 echo
111
112 echo_separator
113
114 #############################################################################
115
116 echo "menu \"Kernel/Library/Defaults Selection\""
117 echo
118
119 #
120 # Which kernel do they want,  if only one then just set it,  I don't
121 # expect an explosion of kernels just yet ;-)
122 #
123
124 KERNELS="`ls -dr linux-* 2>/dev/null`"
125 NKERNELS="`echo ${KERNELS} | wc -w`"
126 if [ ${NKERNELS} -gt 1 ]; then
127         echo "choice"
128         echo "  prompt \"Kernel Version\""
129         GOTDEFAULT="no"
130
131         for i in ${KERNELS}; do
132                 VER=${i##linux-}
133                 CFG="DEFAULTS_KERNEL_`echo ${VER%%.x}|sed -e 's/[-\.]/_/g'`"
134                 DEF="linux-${VER}"
135                 if  [ $GOTDEFAULT = "no" ]
136                 then
137                         echo "  default ${CFG}"
138                         echo
139                         GOTDEFAULT="yes"
140                 fi
141                 echo "config ${CFG}"
142                 echo "  bool \"${DEF}\""
143                 echo
144         done
145
146         echo "endchoice"
147         echo
148
149 elif [ ${NKERNELS} -eq 1 ]; then
150         VER=${KERNELS##linux-}
151         CFG="DEFAULTS_KERNEL_`echo ${VER%%.x}|sed -e 's/[-\.]/_/g'`"
152         echo "comment \"Kernel is linux-${VER}\""
153         echo
154         echo "config ${CFG}"
155         echo "  bool"
156         echo "  default y"
157         echo
158
159 else
160         echo "ERROR: you have no kernels available in this directory." >&2
161         exit 1
162 fi
163
164 echo "config LINUXDIR"
165 echo "  string"
166 echo
167
168 #############################################################################
169
170 #
171 # Which libc do they want,  if only one then just set it,  I don't
172 # expect an explosion of libc's just yet either ;-)
173 #
174
175 LIBCS="`ls -d uClibc uClibc-* 2>/dev/null` `ls -d lib/libc 2>/dev/null` `ls -d glibc 2>/dev/null` None"
176 NLIBCS="`echo ${LIBCS} | wc -w`"
177 if [ ${NLIBCS} -gt 1 ]; then
178         echo "choice"
179         echo "  prompt \"Libc Version\""
180         GOTDEFAULT="no"
181
182         for i in ${LIBCS}; do
183                 [ "$i" = "lib/libc" ] && i=uC-libc
184                 CFG="DEFAULTS_LIBC_`fix_name ${i}`"
185                 DEF="${i}"
186                 if  [ $GOTDEFAULT = "no" ]
187                 then
188                         echo "  default ${CFG}"
189                         echo
190                         GOTDEFAULT="yes"
191                 fi
192                 echo "config ${CFG}"
193                 echo "  bool \"${DEF}\""
194                 echo
195         done
196
197         echo "endchoice"
198
199         if [ -f glibc/Kconfig ]; then
200                 echo
201                 echo "source glibc/Kconfig"
202         fi
203
204         echo
205
206 elif [ ${NLIBCS} -eq 1 ]; then
207         [ "$LIBCS" = "lib/libc" ] && LIBCS=uC-libc
208         CFG="DEFAULTS_LIBC_`fix_name ${LIBCS}`"
209         echo "comment \"Libc is ${LIBCS}\""
210         echo
211         echo "config ${CFG}"
212         echo "  bool"
213         echo "  default y"
214
215         if [ -f glibc/Kconfig ]; then
216                 echo
217                 echo "source glibc/Kconfig"
218         fi
219
220         echo
221
222 else
223         echo "ERROR: you have no libc available in this directory." >&2
224         exit 1
225 fi
226
227 echo "config LIBCDIR"
228 echo "  string"
229 echo
230
231 #############################################################################
232
233 #
234 # the rest of the config
235 #
236
237 cat <<!EOF
238 config DEFAULTS_OVERRIDE
239         bool "Default all settings (lose changes)"
240
241 config DEFAULTS_KERNEL
242         bool "Customize Kernel Settings"
243
244 !EOF
245
246 if [ -d modules ]
247 then
248         echo "config DEFAULTS_MODULES"
249         echo "  bool \"Customize Module Settings\""
250         echo
251 fi
252
253 cat <<!EOF
254 config DEFAULTS_VENDOR
255         bool "Customize Application/Library Settings"
256
257 config DEFAULTS_VENDOR_UPDATE
258         bool "Update Default Vendor Settings"
259
260 endmenu
261
262 !EOF
263
264 ############################################################################