Blame view

MAKEALL 20.3 KB
f2352877c   Peter Tyser   MAKEALL: Fix retu...
1
  #!/bin/bash
0777eafb3   Wolfgang Denk   MAKEALL: allow ad...
2
3
4
  # Tool mainly for U-Boot Quality Assurance: build one or more board
  # configurations with minimal verbosity, showing only warnings and
  # errors.
0777eafb3   Wolfgang Denk   MAKEALL: allow ad...
5

d8e392d95   Mike Frysinger   MAKEALL: add -h/-...
6
7
8
9
10
11
12
13
14
15
16
17
18
  usage()
  {
  	# if exiting with 0, write to stdout, else write to stderr
  	local ret=${1:-0}
  	[ "${ret}" -eq 1 ] && exec 1>&2
  	cat <<-EOF
  	Usage: MAKEALL [options] [--] [boards-to-build]
  
  	Options:
  	  -a ARCH,   --arch ARCH       Build all boards with arch ARCH
  	  -c CPU,    --cpu CPU         Build all boards with cpu CPU
  	  -v VENDOR, --vendor VENDOR   Build all boards with vendor VENDOR
  	  -s SOC,    --soc SOC         Build all boards with soc SOC
7f79c6f2f   Marek Vasut   MAKEALL: Add -l o...
19
  	  -l,        --list            List all targets to be built
9b96c6b11   Marek Vasut   MAKEALL: Add -m/-...
20
21
  	  -m,        --maintainers     List all targets and maintainer email
  	  -M,        --mails           List all targets and all affilated emails
d8e392d95   Mike Frysinger   MAKEALL: add -h/-...
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
  	  -h,        --help            This help output
  
  	Selections by these options are logically ANDed; if the same option
  	is used repeatedly, such selections are ORed.  So "-v FOO -v BAR"
  	will select all configurations where the vendor is either FOO or
  	BAR.  Any additional arguments specified on the command line are
  	always build additionally.  See the boards.cfg file for more info.
  
  	If no boards are specified, then the default is "powerpc".
  
  	Environment variables:
  	  BUILD_NCPUS      number of parallel make jobs (default: auto)
  	  CROSS_COMPILE    cross-compiler toolchain prefix (default: "")
  	  MAKEALL_LOGDIR   output all logs to here (default: ./LOG/)
  	  BUILD_DIR        output build directory (default: ./)
f588bb034   Andy Fleming   Allow for paralle...
37
  	  BUILD_NBUILDS	   number of parallel targets (default: 1)
d8e392d95   Mike Frysinger   MAKEALL: add -h/-...
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
  
  	Examples:
  	  - build all Power Architecture boards:
  	      MAKEALL -a powerpc
  	      MAKEALL --arch powerpc
  	      MAKEALL powerpc
  	  - build all PowerPC boards manufactured by vendor "esd":
  	      MAKEALL -a powerpc -v esd
  	  - build all PowerPC boards manufactured either by "keymile" or "siemens":
  	      MAKEALL -a powerpc -v keymile -v siemens
  	  - build all Freescale boards with MPC83xx CPUs, plus all 4xx boards:
  	      MAKEALL -c mpc83xx -v freescale 4xx
  	EOF
  	exit ${ret}
  }
9b96c6b11   Marek Vasut   MAKEALL: Add -m/-...
53
54
  SHORT_OPTS="ha:c:v:s:lmM"
  LONG_OPTS="help,arch:,cpu:,vendor:,soc:,list,maintainers,mails"
0777eafb3   Wolfgang Denk   MAKEALL: allow ad...
55
56
  
  # Option processing based on util-linux-2.13/getopt-parse.bash
071bc9233   Wolfgang Denk   Coding Style cleanup
57
  # Note that we use `"$@"' to let each command-line parameter expand to a
0777eafb3   Wolfgang Denk   MAKEALL: allow ad...
58
59
60
61
62
  # separate word. The quotes around `$@' are essential!
  # We need TEMP as the `eval set --' would nuke the return value of
  # getopt.
  TEMP=`getopt -o ${SHORT_OPTS} --long ${LONG_OPTS} \
       -n 'MAKEALL' -- "$@"`
d8e392d95   Mike Frysinger   MAKEALL: add -h/-...
63
  [ $? != 0 ] && usage 1
0777eafb3   Wolfgang Denk   MAKEALL: allow ad...
64
65
66
67
68
  
  # Note the quotes around `$TEMP': they are essential!
  eval set -- "$TEMP"
  
  SELECTED=''
7f79c6f2f   Marek Vasut   MAKEALL: Add -l o...
69
  ONLY_LIST=''
9b96c6b11   Marek Vasut   MAKEALL: Add -m/-...
70
71
  PRINT_MAINTS=''
  MAINTAINERS_ONLY=''
0777eafb3   Wolfgang Denk   MAKEALL: allow ad...
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
  
  while true ; do
  	case "$1" in
  	-a|--arch)
  		# echo "Option ARCH: argument \`$2'"
  		if [ "$opt_a" ] ; then
  			opt_a="${opt_a%)} || \$2 == \"$2\")"
  		else
  			opt_a="(\$2 == \"$2\")"
  		fi
  		SELECTED='y'
  		shift 2 ;;
  	-c|--cpu)
  		# echo "Option CPU: argument \`$2'"
  		if [ "$opt_c" ] ; then
  			opt_c="${opt_c%)} || \$3 == \"$2\")"
  		else
  			opt_c="(\$3 == \"$2\")"
  		fi
  		SELECTED='y'
  		shift 2 ;;
  	-s|--soc)
  		# echo "Option SoC: argument \`$2'"
  		if [ "$opt_s" ] ; then
  			opt_s="${opt_s%)} || \$6 == \"$2\")"
  		else
  			opt_s="(\$6 == \"$2\")"
  		fi
  		SELECTED='y'
  		shift 2 ;;
  	-v|--vendor)
  		# echo "Option VENDOR: argument \`$2'"
  		if [ "$opt_v" ] ; then
  			opt_v="${opt_v%)} || \$5 == \"$2\")"
  		else
  			opt_v="(\$5 == \"$2\")"
  		fi
  		SELECTED='y'
  		shift 2 ;;
7f79c6f2f   Marek Vasut   MAKEALL: Add -l o...
111
112
113
  	-l|--list)
  		ONLY_LIST='y'
  		shift ;;
9b96c6b11   Marek Vasut   MAKEALL: Add -m/-...
114
115
116
117
118
119
120
121
122
  	-m|--maintainers)
  		ONLY_LIST='y'
  		PRINT_MAINTS='y'
  		MAINTAINERS_ONLY='y'
  		shift ;;
  	-M|--mails)
  		ONLY_LIST='y'
  		PRINT_MAINTS='y'
  		shift ;;
d8e392d95   Mike Frysinger   MAKEALL: add -h/-...
123
124
  	-h|--help)
  		usage ;;
0777eafb3   Wolfgang Denk   MAKEALL: allow ad...
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
  	--)
  		shift ; break ;;
  	*)
  		echo "Internal error!" >&2 ; exit 1 ;;
  	esac
  done
  # echo "Remaining arguments:"
  # for arg do echo '--> '"\`$arg'" ; done
  
  FILTER="\$1 !~ /^#/"
  [ "$opt_a" ] && FILTER="${FILTER} && $opt_a"
  [ "$opt_c" ] && FILTER="${FILTER} && $opt_c"
  [ "$opt_s" ] && FILTER="${FILTER} && $opt_s"
  [ "$opt_v" ] && FILTER="${FILTER} && $opt_v"
  
  if [ "$SELECTED" ] ; then
  	SELECTED=$(awk '('"$FILTER"') { print $1 }' boards.cfg)
cd57b0bb8   Peter Tyser   MAKEALL: Do a san...
142
143
144
145
146
147
  
  	# Make sure some boards from boards.cfg are actually found
  	if [ -z "$SELECTED" ] ; then
  		echo "Error: No boards selected, invalid arguments"
  		exit 1
  	fi
0777eafb3   Wolfgang Denk   MAKEALL: allow ad...
148
149
150
  fi
  
  #########################################################################
40a28f088   Peter Tyser   MAKEALL: Add summ...
151
152
153
  # Print statistics when we exit
  trap exit 1 2 3 15
  trap print_stats 0
7fa6a2f3b   Wolfgang Denk   MAKEALL: Automati...
154
155
156
157
158
  # Determine number of CPU cores if no default was set
  : ${BUILD_NCPUS:="`getconf _NPROCESSORS_ONLN`"}
  
  if [ "$BUILD_NCPUS" -gt 1 ]
  then
55f786d8b   Peter Tyser   MAKEALL: Use POSI...
159
  	JOBS="-j $((BUILD_NCPUS + 1))"
7fa6a2f3b   Wolfgang Denk   MAKEALL: Automati...
160
161
162
  else
  	JOBS=""
  fi
a8c7c708a   wdenk   * Patch by Gleb N...
163

7ebf7443a   wdenk   Initial revision
164
165
166
167
168
  if [ "${CROSS_COMPILE}" ] ; then
  	MAKE="make CROSS_COMPILE=${CROSS_COMPILE}"
  else
  	MAKE=make
  fi
f93286397   Marian Balakowicz   Add support for a...
169
170
171
172
173
  if [ "${MAKEALL_LOGDIR}" ] ; then
  	LOG_DIR=${MAKEALL_LOGDIR}
  else
  	LOG_DIR="LOG"
  fi
887e2ec9e   Stefan Roese   Add support for A...
174

f588bb034   Andy Fleming   Allow for paralle...
175
176
177
178
179
180
181
182
  : ${BUILD_NBUILDS:=1}
  BUILD_MANY=0
  
  if [ "${BUILD_NBUILDS}" -gt 1 ] ; then
  	BUILD_MANY=1
  	: ${BUILD_DIR:=./build}
  	mkdir -p "${BUILD_DIR}/ERR"
  	find "${BUILD_DIR}/ERR/" -type f -exec rm -f {} +
f93286397   Marian Balakowicz   Add support for a...
183
  fi
f588bb034   Andy Fleming   Allow for paralle...
184
185
186
187
188
189
  : ${BUILD_DIR:=.}
  
  OUTPUT_PREFIX="${BUILD_DIR}"
  
  [ -d ${LOG_DIR} ] || mkdir "${LOG_DIR}" || exit 1
  find "${LOG_DIR}/" -type f -exec rm -f {} +
7ebf7443a   wdenk   Initial revision
190
191
  
  LIST=""
40a28f088   Peter Tyser   MAKEALL: Add summ...
192
193
194
  # Keep track of the number of builds and errors
  ERR_CNT=0
  ERR_LIST=""
b86a475c1   Joe Hershberger   MAKEALL: Report b...
195
196
  WRN_CNT=0
  WRN_LIST=""
40a28f088   Peter Tyser   MAKEALL: Add summ...
197
  TOTAL_CNT=0
f588bb034   Andy Fleming   Allow for paralle...
198
199
  CURRENT_CNT=0
  OLDEST_IDX=1
f2352877c   Peter Tyser   MAKEALL: Fix retu...
200
  RC=0
40a28f088   Peter Tyser   MAKEALL: Add summ...
201

9ec49f8f8   Mike Frysinger   MAKEALL: cut down...
202
203
204
205
206
207
208
209
210
211
212
  # Helper funcs for parsing boards.cfg
  boards_by_field()
  {
  	awk \
  		-v field="$1" \
  		-v select="$2" \
  		'($1 !~ /^#/ && $field == select) { print $1 }' \
  		boards.cfg
  }
  boards_by_arch() { boards_by_field 2 "$@" ; }
  boards_by_cpu()  { boards_by_field 3 "$@" ; }
0a41edaab   Andreas Bießmann   MAKEALL: fix AT91
213
  boards_by_soc()  { boards_by_field 6 "$@" ; }
9ec49f8f8   Mike Frysinger   MAKEALL: cut down...
214

7ebf7443a   wdenk   Initial revision
215
  #########################################################################
0db5bca80   wdenk   * Patch by Martin...
216
217
  ## MPC5xx Systems
  #########################################################################
9ec49f8f8   Mike Frysinger   MAKEALL: cut down...
218
  LIST_5xx="$(boards_by_cpu mpc5xx)"
0db5bca80   wdenk   * Patch by Martin...
219
220
  
  #########################################################################
945af8d72   wdenk   * Add support for...
221
222
  ## MPC5xxx Systems
  #########################################################################
2ae182419   Wolfgang Denk   Makefile: move al...
223
  LIST_5xxx="$(boards_by_cpu mpc5xxx)"
945af8d72   wdenk   * Add support for...
224
225
  
  #########################################################################
8993e54b6   Rafal Jaworowski   [ADS5121] Support...
226
227
  ## MPC512x Systems
  #########################################################################
2ae182419   Wolfgang Denk   Makefile: move al...
228
  LIST_512x="$(boards_by_cpu mpc512x)"
945af8d72   wdenk   * Add support for...
229
230
  
  #########################################################################
7ebf7443a   wdenk   Initial revision
231
232
  ## MPC8xx Systems
  #########################################################################
9ec49f8f8   Mike Frysinger   MAKEALL: cut down...
233

2ae182419   Wolfgang Denk   Makefile: move al...
234
  LIST_8xx="$(boards_by_cpu mpc8xx)"
7ebf7443a   wdenk   Initial revision
235
236
237
238
  
  #########################################################################
  ## PPC4xx Systems
  #########################################################################
2ae182419   Wolfgang Denk   Makefile: move al...
239
  LIST_4xx="$(boards_by_cpu ppc4xx)"
7ebf7443a   wdenk   Initial revision
240
241
  
  #########################################################################
983fda839   wdenk   Patch by TsiChung...
242
243
  ## MPC8220 Systems
  #########################################################################
9ec49f8f8   Mike Frysinger   MAKEALL: cut down...
244
  LIST_8220="$(boards_by_cpu mpc8220)"
983fda839   wdenk   Patch by TsiChung...
245
246
  
  #########################################################################
7ebf7443a   wdenk   Initial revision
247
248
  ## MPC824x Systems
  #########################################################################
2ae182419   Wolfgang Denk   Makefile: move al...
249
  LIST_824x="$(boards_by_cpu mpc824x)"
592c5cabe   wdenk   Patch by Murray J...
250

7ebf7443a   wdenk   Initial revision
251
  #########################################################################
7aa786147   wdenk   * Add support for...
252
  ## MPC8260 Systems (includes 8250, 8255 etc.)
7ebf7443a   wdenk   Initial revision
253
  #########################################################################
2ae182419   Wolfgang Denk   Makefile: move al...
254
  LIST_8260="$(boards_by_cpu mpc8260)"
7ebf7443a   wdenk   Initial revision
255
256
  
  #########################################################################
f046ccd15   Eran Liberty   * Patch by Eran L...
257
258
  ## MPC83xx Systems (includes 8349, etc.)
  #########################################################################
2ae182419   Wolfgang Denk   Makefile: move al...
259
  LIST_83xx="$(boards_by_cpu mpc83xx)"
f046ccd15   Eran Liberty   * Patch by Eran L...
260
261
  
  #########################################################################
42d1f0394   wdenk   * Patches by Xian...
262
263
  ## MPC85xx Systems (includes 8540, 8560 etc.)
  #########################################################################
2ae182419   Wolfgang Denk   Makefile: move al...
264
  LIST_85xx="$(boards_by_cpu mpc85xx)"
42d1f0394   wdenk   * Patches by Xian...
265
266
  
  #########################################################################
822d55365   Jon Loeliger   Add LIST_86xx MAK...
267
268
  ## MPC86xx Systems
  #########################################################################
2ae182419   Wolfgang Denk   Makefile: move al...
269
  LIST_86xx="$(boards_by_cpu mpc86xx)"
822d55365   Jon Loeliger   Add LIST_86xx MAK...
270
271
  
  #########################################################################
7ebf7443a   wdenk   Initial revision
272
273
  ## 74xx/7xx Systems
  #########################################################################
2ae182419   Wolfgang Denk   Makefile: move al...
274
  LIST_74xx_7xx="$(boards_by_cpu 74xx_7xx)"
7ebf7443a   wdenk   Initial revision
275

d9a42c0ac   Wolfgang Denk   MAKEALL: sort ent...
276
277
278
279
280
281
282
283
284
  #########################################################################
  ## PowerPC groups
  #########################################################################
  
  LIST_TSEC="		\
  	${LIST_83xx}	\
  	${LIST_85xx}	\
  	${LIST_86xx}	\
  "
a47a12bec   Stefan Roese   Move arch/ppc to ...
285
  LIST_powerpc="		\
fb56579ff   Kim Phillips   make MAKEALL more...
286
  	${LIST_5xx}	\
3deca9d44   Jean-Christophe PLAGNIOL-VILLARD   MAKEALL: add miss...
287
  	${LIST_512x}	\
fb56579ff   Kim Phillips   make MAKEALL more...
288
289
290
291
292
293
294
295
296
  	${LIST_5xxx}	\
  	${LIST_8xx}	\
  	${LIST_8220}	\
  	${LIST_824x}	\
  	${LIST_8260}	\
  	${LIST_83xx}	\
  	${LIST_85xx}	\
  	${LIST_86xx}	\
  	${LIST_4xx}	\
2ae182419   Wolfgang Denk   Makefile: move al...
297
  	${LIST_74xx_7xx}\
fb56579ff   Kim Phillips   make MAKEALL more...
298
  "
7ebf7443a   wdenk   Initial revision
299

a47a12bec   Stefan Roese   Move arch/ppc to ...
300
301
302
303
304
  # Alias "ppc" -> "powerpc" to not break compatibility with older scripts
  # still using "ppc" instead of "powerpc"
  LIST_ppc="		\
  	${LIST_powerpc}	\
  "
7ebf7443a   wdenk   Initial revision
305
306
307
  #########################################################################
  ## StrongARM Systems
  #########################################################################
9ec49f8f8   Mike Frysinger   MAKEALL: cut down...
308
  LIST_SA="$(boards_by_cpu sa1100)"
7ebf7443a   wdenk   Initial revision
309
310
  
  #########################################################################
7ebf7443a   wdenk   Initial revision
311
312
  ## ARM9 Systems
  #########################################################################
6a8760d74   Wolfgang Denk   MAKEALL: drop boa...
313
314
315
  LIST_ARM9="$(boards_by_cpu arm920t)	\
  	$(boards_by_cpu arm926ejs)	\
  	$(boards_by_cpu arm925t)	\
6f21347d4   wdenk   * Patch by George...
316
  "
7ebf7443a   wdenk   Initial revision
317
318
  
  #########################################################################
8ed960461   wdenk   * Patches by Rich...
319
320
  ## ARM11 Systems
  #########################################################################
f50bf50d7   Andy Fleming   Improve MAKEALL p...
321
  LIST_ARM11="$(boards_by_cpu arm1136)"
8ed960461   wdenk   * Patches by Rich...
322
323
  
  #########################################################################
f56348af5   Steve Sakoman   ARM: Rename arch/...
324
  ## ARMV7 Systems
f904cdbb6   Dirk Behme   OMAP3: Add common...
325
  #########################################################################
f37586bb1   Dirk Behme   MAKEALL ARMv7: Us...
326
327
  
  LIST_ARMV7="$(boards_by_cpu armv7)"
f904cdbb6   Dirk Behme   OMAP3: Add common...
328
329
  
  #########################################################################
602cac138   Jean-Christophe PLAGNIOL-VILLARD   MAKEALL: add at91...
330
331
  ## AT91 Systems
  #########################################################################
5cfeec512   Thomas Petazzoni   atmel: Update sup...
332
  LIST_at91="$(boards_by_soc at91)"
602cac138   Jean-Christophe PLAGNIOL-VILLARD   MAKEALL: add at91...
333
334
  
  #########################################################################
7ebf7443a   wdenk   Initial revision
335
336
  ## Xscale Systems
  #########################################################################
7c957c0e7   Marek Vasut   Build: PXA: Fix T...
337
  LIST_pxa="$(boards_by_cpu pxa)"
7ebf7443a   wdenk   Initial revision
338

bb1c01eaf   Andy Fleming   Remove extra boar...
339
  LIST_ixp="$(boards_by_cpu ixp)"
7ebf7443a   wdenk   Initial revision
340

d9a42c0ac   Wolfgang Denk   MAKEALL: sort ent...
341
342
343
  #########################################################################
  ## ARM groups
  #########################################################################
2d5b561e2   wdenk   * Make sure HUSH ...
344

f904cdbb6   Dirk Behme   OMAP3: Add common...
345
346
  LIST_arm="			\
  	${LIST_SA}		\
f904cdbb6   Dirk Behme   OMAP3: Add common...
347
348
349
  	${LIST_ARM9}		\
  	${LIST_ARM10}		\
  	${LIST_ARM11}		\
f56348af5   Steve Sakoman   ARM: Rename arch/...
350
  	${LIST_ARMV7}	\
f904cdbb6   Dirk Behme   OMAP3: Add common...
351
352
353
  	${LIST_at91}		\
  	${LIST_pxa}		\
  	${LIST_ixp}		\
8ed960461   wdenk   * Patches by Rich...
354
  "
7ebf7443a   wdenk   Initial revision
355

c021880ac   wdenk   * Add support for...
356
  #########################################################################
b62bdffb7   Wolfgang Denk   Adjust MAKEALL sc...
357
  ## MIPS Systems		(default = big endian)
c021880ac   wdenk   * Add support for...
358
  #########################################################################
fb56579ff   Kim Phillips   make MAKEALL more...
359
360
  LIST_mips4kc="		\
  	incaip		\
0764c164f   Vlad Lungu   MIPS:Target suppo...
361
  	qemu_mips	\
2a61eff6a   Stefan Roese   MIPS: Add VCT boa...
362
363
364
365
366
367
368
369
370
371
372
373
  	vct_platinum	\
  	vct_platinum_small	\
  	vct_platinum_onenand	\
  	vct_platinum_onenand_small	\
  	vct_platinumavc	\
  	vct_platinumavc_small	\
  	vct_platinumavc_onenand	\
  	vct_platinumavc_onenand_small	\
  	vct_premium	\
  	vct_premium_small	\
  	vct_premium_onenand	\
  	vct_premium_onenand_small	\
fb56579ff   Kim Phillips   make MAKEALL more...
374
  "
c021880ac   wdenk   * Add support for...
375

fb56579ff   Kim Phillips   make MAKEALL more...
376
377
378
379
380
  LIST_au1xx0="		\
  	dbau1000	\
  	dbau1100	\
  	dbau1500	\
  	dbau1550	\
fb56579ff   Kim Phillips   make MAKEALL more...
381
382
  	gth2		\
  "
5da627a42   wdenk   * Patch by Steven...
383

fb56579ff   Kim Phillips   make MAKEALL more...
384
385
386
387
388
  LIST_mips="		\
  	${LIST_mips4kc}	\
  	${LIST_mips5kc}	\
  	${LIST_au1xx0}	\
  "
c021880ac   wdenk   * Add support for...
389

7a8e9bed1   wdenk   * Patch by Marc S...
390
  #########################################################################
b62bdffb7   Wolfgang Denk   Adjust MAKEALL sc...
391
392
  ## MIPS Systems		(little endian)
  #########################################################################
92b09095b   Daniel Schwierzeck   MIPS: MAKEALL: fi...
393
  LIST_xburst_el="	\
3c945542d   Xiangfu Liu   MIPS: Jz4740: Add...
394
395
  	qi_lb60		\
  "
b62bdffb7   Wolfgang Denk   Adjust MAKEALL sc...
396

fb56579ff   Kim Phillips   make MAKEALL more...
397
398
  LIST_au1xx0_el="	\
  	dbau1550_el	\
b09258c53   Shinya Kuribayashi   MAKEALL: Added mi...
399
  	pb1000		\
fb56579ff   Kim Phillips   make MAKEALL more...
400
  "
fb56579ff   Kim Phillips   make MAKEALL more...
401
  LIST_mips_el="			\
92b09095b   Daniel Schwierzeck   MIPS: MAKEALL: fi...
402
  	${LIST_xburst_el}	\
fb56579ff   Kim Phillips   make MAKEALL more...
403
404
  	${LIST_au1xx0_el}	\
  "
deddf5d2e   Stefan Kristiansson   openrisc: Add arc...
405
406
407
408
409
  #########################################################################
  ## OpenRISC Systems
  #########################################################################
  
  LIST_openrisc="$(boards_by_arch openrisc)"
b62bdffb7   Wolfgang Denk   Adjust MAKEALL sc...
410
411
  
  #########################################################################
fea257200   Graeme Russ   x86: Rename i386 ...
412
  ## x86 Systems
7a8e9bed1   wdenk   * Patch by Marc S...
413
  #########################################################################
fea257200   Graeme Russ   x86: Rename i386 ...
414
  LIST_x86="$(boards_by_arch x86)"
7a8e9bed1   wdenk   * Patch by Marc S...
415

c935d3bd8   wdenk   Patches by Stepha...
416
  #########################################################################
5c952cf02   wdenk   Patches by Scott ...
417
418
  ## Nios-II Systems
  #########################################################################
4827d067d   Mike Frysinger   nios2: move gener...
419
  LIST_nios2="$(boards_by_arch nios2)"
5c952cf02   wdenk   Patches by Scott ...
420
421
  
  #########################################################################
857cad37a   wdenk   Patches by Yasush...
422
423
  ## MicroBlaze Systems
  #########################################################################
9ec49f8f8   Mike Frysinger   MAKEALL: cut down...
424
  LIST_microblaze="$(boards_by_arch microblaze)"
857cad37a   wdenk   Patches by Yasush...
425

f8c3b4f31   Zachary P. Landau   Add ColdFire targ...
426
427
428
  #########################################################################
  ## ColdFire Systems
  #########################################################################
c13f47b0d   Mike Frysinger   MAKEALL: rename c...
429
  LIST_m68k="$(boards_by_arch m68k)
fb56579ff   Kim Phillips   make MAKEALL more...
430
431
  	EB+MCF-EV123		\
  	EB+MCF-EV123_internal	\
1552af70e   TsiChungLiew   ColdFire: Add MCF...
432
  	M52277EVB		\
4a442d318   TsiChungLiew   ColdFire: Add M52...
433
  	M5235EVB		\
05316f8ec   TsiChung Liew   ColdFire: Add M54...
434
  	M54451EVB		\
8ae158cd8   TsiChungLiew   ColdFire: Add M54...
435
  	M54455EVB		\
9acb626fc   Heiko Schocher   Add MCF5282 suppo...
436
  "
c13f47b0d   Mike Frysinger   MAKEALL: rename c...
437
  LIST_coldfire=${LIST_m68k}
f8c3b4f31   Zachary P. Landau   Add ColdFire targ...
438

6ccec4492   Wolfgang Denk   Add ATSTK1000 and...
439
440
441
  #########################################################################
  ## AVR32 Systems
  #########################################################################
9ec49f8f8   Mike Frysinger   MAKEALL: cut down...
442
  LIST_avr32="$(boards_by_arch avr32)"
6ccec4492   Wolfgang Denk   Add ATSTK1000 and...
443

ef26a08fe   Aubrey.Li   [Blackfin][PATCH-...
444
445
446
  #########################################################################
  ## Blackfin Systems
  #########################################################################
36cf8cb45   Mike Frysinger   Blackfin: bf527-e...
447
  LIST_blackfin="$(boards_by_arch blackfin)"
ef26a08fe   Aubrey.Li   [Blackfin][PATCH-...
448

c71443734   Jean-Christophe PLAGNIOL-VILLARD   sh: Add sh3 and s...
449
450
451
  #########################################################################
  ## SH Systems
  #########################################################################
e0f0e527f   Nobuhiro Iwamatsu   sh: rsk7203: Move...
452
  LIST_sh2="$(boards_by_cpu sh2)"
3771c69d7   Nobuhiro Iwamatsu   sh: sh3: Move to ...
453
  LIST_sh3="$(boards_by_cpu sh3)"
03626be3f   Nobuhiro Iwamatsu   sh: sh4: Move to ...
454
  LIST_sh4="$(boards_by_cpu sh4)"
d9a42c0ac   Wolfgang Denk   MAKEALL: sort ent...
455

03626be3f   Nobuhiro Iwamatsu   sh: sh4: Move to ...
456
  LIST_sh="$(boards_by_arch sh)"
c71443734   Jean-Christophe PLAGNIOL-VILLARD   sh: Add sh3 and s...
457

c2f02da21   Daniel Hellstrom   SPARC: Added gene...
458
459
460
  #########################################################################
  ## SPARC Systems
  #########################################################################
9ec49f8f8   Mike Frysinger   MAKEALL: cut down...
461
  LIST_sparc="$(boards_by_arch sparc)"
7ebf7443a   wdenk   Initial revision
462

5f1719c10   Macpaul Lin   adp-ag101: add bo...
463
464
465
466
467
  #########################################################################
  ## NDS32 Systems
  #########################################################################
  
  LIST_nds32="$(boards_by_arch nds32)"
7ebf7443a   wdenk   Initial revision
468
  #-----------------------------------------------------------------------
9b96c6b11   Marek Vasut   MAKEALL: Add -m/-...
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
  get_target_location() {
  	local target=$1
  	local BOARD_NAME=""
  	local CONFIG_NAME=""
  	local board=""
  	local vendor=""
  
  	# Automatic mode
  	local line=`egrep -i "^[[:space:]]*${target}[[:space:]]" boards.cfg`
  
  	if [ -z "${line}" ] ; then echo "" ; return ; fi
  
  	set ${line}
  
  	# add default board name if needed
  	[ $# = 3 ] && set ${line} ${1}
  
  	CONFIG_NAME="${1%_config}"
  
  	[ "${BOARD_NAME}" ] || BOARD_NAME="${1%_config}"
  
  	if [ "$4" = "-" ] ; then
  		board=${BOARD_NAME}
  	else
  		board="$4"
  	fi
  
  	[ $# -gt 4 ] && [ "$5" != "-" ] && vendor="$5"
  	[ $# -gt 6 ] && [ "$7" != "-" ] && {
  		tmp="${7%:*}"
  		if [ "$tmp" ] ; then
  			CONFIG_NAME="$tmp"
  		fi
  	}
  
  	# Assign board directory to BOARDIR variable
  	if [ -z "${vendor}" ] ; then
  	    BOARDDIR=${board}
  	else
  	    BOARDDIR=${vendor}/${board}
  	fi
  
  	echo "${CONFIG_NAME}:${BOARDDIR}"
  }
  
  get_target_maintainers() {
  	local name=`echo $1 | cut -d : -f 1`
  
  	if ! grep -qsi "[[:blank:]]${name}[[:blank:]]" MAINTAINERS ; then
  		echo ""
  		return ;
  	fi
  
  	local line=`tac MAINTAINERS | grep -ni "[[:blank:]]${name}[[:blank:]]" | cut -d : -f 1`
  	local mail=`tac MAINTAINERS | tail -n +${line} | \
  		sed -n ":start /.*@.*/ { b mail } ; n ; b start ; :mail /.*@.*/ { p ; n ; b mail } ; q" | \
  		sed "s/^.*<//;s/>.*$//"`
  	echo "$mail"
  }
  
  list_target() {
  	if [ "$PRINT_MAINTS" != 'y' ] ; then
  		echo "$1"
  		return
  	fi
  
  	echo -n "$1:"
  
  	local loc=`get_target_location $1`
  
  	if [ -z "${loc}" ] ; then echo "ERROR" ; return ; fi
  
  	local maintainers_result=`get_target_maintainers ${loc} | tr " " "
  "`
  
  	if [ "$MAINTAINERS_ONLY" != 'y' ] ; then
  
  		local dir=`echo ${loc} | cut -d ":" -f 2`
  		local cfg=`echo ${loc} | cut -d ":" -f 1`
  		local git_result=`git log --format=%aE board/${dir} \
  				include/configs/${cfg}.h | grep "@"`
  		local git_result_recent=`echo ${git_result} | tr " " "
  " | \
  						head -n 3`
  		local git_result_top=`echo ${git_result} | tr " " "
  " | \
  			sort | uniq -c | sort -nr | head -n 3 | \
  			sed "s/^ \+[0-9]\+ \+//"`
  
  		echo -e "$git_result_recent
  $git_result_top
  $maintainers_result" | \
  			sort -u | tr "
  " " " | sed "s/ $//" ;
  	else
  		echo -e "$maintainers_result" | sort -u | tr "
  " " " | \
  						sed "s/ $//" ;
  	fi
  
  	echo ""
  }
f588bb034   Andy Fleming   Allow for paralle...
571
572
573
574
575
576
577
  # Each finished build will have a file called ${donep}${n},
  # where n is the index of the build. Each build
  # we've already noted as finished will have ${skipp}${n}.
  # The code managing the build process will use this information
  # to ensure that only BUILD_NBUILDS builds are in flight at once
  donep="${LOG_DIR}/._done_"
  skipp="${LOG_DIR}/._skip_"
7ebf7443a   wdenk   Initial revision
578
579
  build_target() {
  	target=$1
f588bb034   Andy Fleming   Allow for paralle...
580
  	build_idx=$2
f50bf50d7   Andy Fleming   Improve MAKEALL p...
581
582
583
584
  	if [ "$ONLY_LIST" == 'y' ] ; then
  		list_target ${target}
  		return
  	fi
f588bb034   Andy Fleming   Allow for paralle...
585
586
587
588
589
590
591
592
  	if [ $BUILD_MANY == 1 ] ; then
  		output_dir="${OUTPUT_PREFIX}/${target}"
  		mkdir -p "${output_dir}"
  	else
  		output_dir="${OUTPUT_PREFIX}"
  	fi
  
  	export BUILD_DIR="${output_dir}"
7ebf7443a   wdenk   Initial revision
593
594
  
  	${MAKE} distclean >/dev/null
d70d8ccc2   Kim Phillips   silence config st...
595
  	${MAKE} -s ${target}_config
f93286397   Marian Balakowicz   Add support for a...
596

f588bb034   Andy Fleming   Allow for paralle...
597
598
  	${MAKE} ${JOBS} all \
  		>${LOG_DIR}/$target.MAKELOG 2> ${LOG_DIR}/$target.ERR
f2352877c   Peter Tyser   MAKEALL: Fix retu...
599
600
601
602
603
  
  	# Check for 'make' errors
  	if [ ${PIPESTATUS[0]} -ne 0 ] ; then
  		RC=1
  	fi
f588bb034   Andy Fleming   Allow for paralle...
604
605
606
607
  	if [ $BUILD_MANY == 1 ] ; then
  		${MAKE} tidy
  
  		if [ -s ${LOG_DIR}/${target}.ERR ] ; then
b86a475c1   Joe Hershberger   MAKEALL: Report b...
608
  			cp ${LOG_DIR}/${target}.ERR ${OUTPUT_PREFIX}/ERR/${target}
f588bb034   Andy Fleming   Allow for paralle...
609
610
611
  		else
  			rm ${LOG_DIR}/${target}.ERR
  		fi
40a28f088   Peter Tyser   MAKEALL: Add summ...
612
  	else
f588bb034   Andy Fleming   Allow for paralle...
613
  		if [ -s ${LOG_DIR}/${target}.ERR ] ; then
b86a475c1   Joe Hershberger   MAKEALL: Report b...
614
615
616
617
618
619
620
  			if grep -iw error ${LOG_DIR}/${target}.ERR ; then
  				: $(( ERR_CNT += 1 ))
  				ERR_LIST="${ERR_LIST} $target"
  			else
  				: $(( WRN_CNT += 1 ))
  				WRN_LIST="${WRN_LIST} $target"
  			fi
f588bb034   Andy Fleming   Allow for paralle...
621
622
623
  		else
  			rm ${LOG_DIR}/${target}.ERR
  		fi
40a28f088   Peter Tyser   MAKEALL: Add summ...
624
  	fi
f588bb034   Andy Fleming   Allow for paralle...
625
626
627
  	OBJS=${output_dir}/u-boot
  	if [ -e ${output_dir}/spl/u-boot-spl ]; then
  		OBJS="${OBJS} ${output_dir}/spl/u-boot-spl"
0c1856960   Scott Wood   MAKEALL: display ...
628
629
630
  	fi
  
  	${CROSS_COMPILE}size ${OBJS} | tee -a ${LOG_DIR}/$target.MAKELOG
f588bb034   Andy Fleming   Allow for paralle...
631
632
  
  	[ -e "${LOG_DIR}/${target}.ERR" ] && cat "${LOG_DIR}/${target}.ERR"
f588bb034   Andy Fleming   Allow for paralle...
633
  	touch "${donep}${build_idx}"
7ebf7443a   wdenk   Initial revision
634
  }
f588bb034   Andy Fleming   Allow for paralle...
635
636
637
  
  manage_builds() {
  	search_idx=${OLDEST_IDX}
f50bf50d7   Andy Fleming   Improve MAKEALL p...
638
  	if [ "$ONLY_LIST" == 'y' ] ; then return ; fi
f588bb034   Andy Fleming   Allow for paralle...
639
640
  	while true; do
  		if [ -e "${donep}${search_idx}" ] ; then
f588bb034   Andy Fleming   Allow for paralle...
641
642
643
644
645
646
647
648
649
650
651
  			: $(( CURRENT_CNT-- ))
  			[ ${OLDEST_IDX} -eq ${search_idx} ] &&
  				: $(( OLDEST_IDX++ ))
  
  			# Only want to count it once
  			rm -f "${donep}${search_idx}"
  			touch "${skipp}${search_idx}"
  		elif [ -e "${skipp}${search_idx}" ] ; then
  			[ ${OLDEST_IDX} -eq ${search_idx} ] &&
  				: $(( OLDEST_IDX++ ))
  		fi
f588bb034   Andy Fleming   Allow for paralle...
652
653
  		: $(( search_idx++ ))
  		if [ ${search_idx} -gt ${TOTAL_CNT} ] ; then
f588bb034   Andy Fleming   Allow for paralle...
654
655
656
657
658
659
660
661
662
  			if [ ${CURRENT_CNT} -ge ${BUILD_NBUILDS} ] ; then
  				search_idx=${OLDEST_IDX}
  				sleep 1
  			else
  				break
  			fi
  		fi
  	done
  }
9ec49f8f8   Mike Frysinger   MAKEALL: cut down...
663
664
665
666
667
668
669
670
671
672
673
674
  build_targets() {
  	for t in "$@" ; do
  		# If a LIST_xxx var exists, use it.  But avoid variable
  		# expansion in the eval when a board name contains certain
  		# characters that the shell interprets.
  		case ${t} in
  			*[-+=]*) list= ;;
  			*)       list=$(eval echo '${LIST_'$t'}') ;;
  		esac
  		if [ -n "${list}" ] ; then
  			build_targets ${list}
  		else
f588bb034   Andy Fleming   Allow for paralle...
675
676
677
678
  			: $((TOTAL_CNT += 1))
  			: $((CURRENT_CNT += 1))
  			rm -f "${donep}${TOTAL_CNT}"
  			rm -f "${skipp}${TOTAL_CNT}"
b594bd6ab   Joe Hershberger   MAKEALL: Fix erro...
679
680
681
682
683
  			if [ $BUILD_MANY == 1 ] ; then
  				build_target ${t} ${TOTAL_CNT} &
  			else
  				build_target ${t} ${TOTAL_CNT}
  			fi
f588bb034   Andy Fleming   Allow for paralle...
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
  		fi
  
  		# We maintain a running count of all the builds we have done.
  		# Each finished build will have a file called ${donep}${n},
  		# where n is the index of the build. Each build
  		# we've already noted as finished will have ${skipp}${n}.
  		# We track the current index via TOTAL_CNT, and the oldest
  		# index. When we exceed the maximum number of parallel builds,
  		# We look from oldest to current for builds that have completed,
  		# and update the current count and oldest index as appropriate.
  		# If we've gone through the entire list, wait a second, and
  		# reprocess the entire list until we find a build that has
  		# completed
  		if [ ${CURRENT_CNT} -ge ${BUILD_NBUILDS} ] ; then
  			manage_builds
9ec49f8f8   Mike Frysinger   MAKEALL: cut down...
699
700
701
  		fi
  	done
  }
7ebf7443a   wdenk   Initial revision
702
703
  
  #-----------------------------------------------------------------------
f50bf50d7   Andy Fleming   Improve MAKEALL p...
704
705
706
707
708
  kill_children() {
  	kill -- "-$1"
  
  	exit
  }
40a28f088   Peter Tyser   MAKEALL: Add summ...
709
  print_stats() {
7f79c6f2f   Marek Vasut   MAKEALL: Add -l o...
710
  	if [ "$ONLY_LIST" == 'y' ] ; then return ; fi
f588bb034   Andy Fleming   Allow for paralle...
711
712
713
714
  
  	rm -f ${donep}* ${skipp}*
  
  	if [ $BUILD_MANY == 1 ] && [ -e "${OUTPUT_PREFIX}/ERR" ] ; then
b86a475c1   Joe Hershberger   MAKEALL: Report b...
715
716
717
718
719
720
  		ERR_LIST=`grep -iwl error ${OUTPUT_PREFIX}/ERR/*`
  		ERR_LIST=`for f in $ERR_LIST ; do echo -n " $(basename $f)" ; done`
  		ERR_CNT=`echo $ERR_LIST | wc -w | awk '{print $1}'`
  		WRN_LIST=`grep -iwL error ${OUTPUT_PREFIX}/ERR/*`
  		WRN_LIST=`for f in $WRN_LIST ; do echo -n " $(basename $f)" ; done`
  		WRN_CNT=`echo $WRN_LIST | wc -w | awk '{print $1}'`
f588bb034   Andy Fleming   Allow for paralle...
721
  	fi
40a28f088   Peter Tyser   MAKEALL: Add summ...
722
723
724
725
  	echo ""
  	echo "--------------------- SUMMARY ----------------------------"
  	echo "Boards compiled: ${TOTAL_CNT}"
  	if [ ${ERR_CNT} -gt 0 ] ; then
b86a475c1   Joe Hershberger   MAKEALL: Report b...
726
727
728
729
  		echo "Boards with errors: ${ERR_CNT} (${ERR_LIST} )"
  	fi
  	if [ ${WRN_CNT} -gt 0 ] ; then
  		echo "Boards with warnings but no errors: ${WRN_CNT} (${WRN_LIST} )"
40a28f088   Peter Tyser   MAKEALL: Add summ...
730
731
  	fi
  	echo "----------------------------------------------------------"
f2352877c   Peter Tyser   MAKEALL: Fix retu...
732

f50bf50d7   Andy Fleming   Improve MAKEALL p...
733
734
735
  	if [ $BUILD_MANY == 1 ] ; then
  		kill_children $$ &
  	fi
f2352877c   Peter Tyser   MAKEALL: Fix retu...
736
  	exit $RC
40a28f088   Peter Tyser   MAKEALL: Add summ...
737
  }
7ebf7443a   wdenk   Initial revision
738

40a28f088   Peter Tyser   MAKEALL: Add summ...
739
  #-----------------------------------------------------------------------
9ec49f8f8   Mike Frysinger   MAKEALL: cut down...
740

0777eafb3   Wolfgang Denk   MAKEALL: allow ad...
741
742
743
  # Build target groups selected by options, plus any command line args
  set -- ${SELECTED} "$@"
  # run PowerPC by default
9ec49f8f8   Mike Frysinger   MAKEALL: cut down...
744
  [ $# = 0 ] && set -- powerpc
9ec49f8f8   Mike Frysinger   MAKEALL: cut down...
745
  build_targets "$@"
f588bb034   Andy Fleming   Allow for paralle...
746
  wait