#!/bin/sh

: ${JOBS:=}

if [ "${CROSS_COMPILE}" ] ; then
	MAKE="make CROSS_COMPILE=${CROSS_COMPILE}"
else
	MAKE=make
fi

if [ "${MAKEALL_LOGDIR}" ] ; then
	LOG_DIR=${MAKEALL_LOGDIR}
else
	LOG_DIR="LOG"
fi

if [ ! "${BUILD_DIR}" ] ; then
	BUILD_DIR="."
fi

[ -d ${LOG_DIR} ] || mkdir ${LOG_DIR} || exit 1

LIST=""

#########################################################################
## MPC5xx Systems
#########################################################################

LIST_5xx="		\
	cmi_mpc5xx	\
"

#########################################################################
## MPC5xxx Systems
#########################################################################

LIST_5xxx="		\
	BC3450		\
	cm5200		\
	cpci5200	\
	EVAL5200	\
	fo300		\
	icecube_5100	\
	icecube_5200	\
	lite5200b	\
	mcc200		\
	mecp5200	\
	motionpro	\
	munices		\
	o2dnt		\
	pf5200		\
	PM520		\
	TB5200		\
	Total5100	\
	Total5200	\
	Total5200_Rev2	\
	TQM5200		\
	TQM5200_B	\
	TQM5200S	\
	v38b		\
"

#########################################################################
## MPC512x Systems
#########################################################################

LIST_512x="		\
	ads5121		\
"

#########################################################################
## MPC8xx Systems
#########################################################################
LIST_8xx="		\
	Adder87x	\
	AdderII		\
	ADS860		\
	AMX860		\
	c2mon		\
	CCM		\
	cogent_mpc8xx	\
	ELPT860		\
	EP88x		\
	ESTEEM192E	\
	ETX094		\
	FADS823		\
	FADS850SAR	\
	FADS860T	\
	FLAGADM		\
	FPS850L		\
	GEN860T		\
	GEN860T_SC	\
	GENIETV		\
	GTH		\
	hermes		\
	IAD210		\
	ICU862_100MHz	\
	IP860		\
	IVML24		\
	IVML24_128	\
	IVML24_256	\
	IVMS8		\
	IVMS8_128	\
	IVMS8_256	\
	KUP4K		\
	KUP4X		\
	LANTEC		\
	lwmon		\
	MBX		\
	MBX860T		\
	mgsuvd		\
	MHPC		\
	MPC86xADS	\
	MPC885ADS	\
	MVS1		\
	NETPHONE	\
	NETTA		\
	NETTA2		\
	NETTA_ISDN	\
	NETVIA		\
	NETVIA_V2	\
	NX823		\
	pcu_e		\
	QS823		\
	QS850		\
	QS860T		\
	quantum		\
	R360MPI		\
	RBC823		\
	rmu		\
	RPXClassic	\
	RPXlite		\
	RPXlite_DW	\
	RRvision	\
	SM850		\
	spc1920		\
	SPD823TS	\
	svm_sc8xx	\
	SXNI855T	\
	TK885D		\
	TOP860		\
	TQM823L		\
	TQM823L_LCD	\
	TQM850L		\
	TQM855L		\
	TQM860L		\
	TQM885D		\
	uc100		\
	v37		\
"

#########################################################################
## PPC4xx Systems
#########################################################################

LIST_4xx="		\
	acadia		\
	acadia_nand	\
	ADCIOP		\
	alpr		\
	AP1000		\
	AR405		\
	ASH405		\
	bamboo		\
	bamboo_nand	\
	bubinga		\
	CANBT		\
	canyonlands	\
	canyonlands_nand \
	CMS700		\
	CPCI2DP		\
	CPCI405		\
	CPCI4052	\
	CPCI405AB	\
	CPCI405DT	\
	CPCIISER4	\
	CRAYL1		\
	csb272		\
	csb472		\
	DASA_SIM	\
	DP405		\
	DU405		\
	DU440		\
	ebony		\
	ERIC		\
	EXBITGEN	\
	G2000		\
	glacier		\
	haleakala	\
	haleakala_nand	\
	hcu4		\
	hcu5		\
	HH405		\
	HUB405		\
	JSE		\
	KAREF		\
	katmai		\
	kilauea		\
	kilauea_nand	\
	korat		\
	luan		\
	lwmon5		\
	makalu		\
	mcu25		\
	METROBOX	\
	MIP405		\
	MIP405T		\
	ML2		\
	ml300		\
	ocotea		\
	OCRTC		\
	ORSG		\
	p3p440		\
	PCI405		\
	pcs440ep	\
	PIP405		\
	PLU405		\
	PMC405		\
	PMC440		\
	PPChameleonEVB	\
	rainier		\
	sbc405		\
	sc3		\
	sequoia		\
	sequoia_nand	\
	taihu		\
	taishan		\
	VOH405		\
	VOM405		\
	W7OLMC		\
	W7OLMG		\
	walnut		\
	WUH405		\
	XPEDITE1K	\
	yellowstone	\
	yosemite	\
	yucca		\
	zeus		\
"

#########################################################################
## MPC8220 Systems
#########################################################################

LIST_8220="		\
	Alaska8220	\
	Yukon8220	\
"

#########################################################################
## MPC824x Systems
#########################################################################

LIST_824x="		\
	A3000		\
	barco		\
	BMW		\
	CPC45		\
	CU824		\
	debris		\
	eXalion		\
	HIDDEN_DRAGON	\
	MOUSSE		\
	MUSENKI		\
	MVBLUE		\
	OXC		\
	PN62		\
	Sandpoint8240	\
	Sandpoint8245	\
	sbc8240		\
	SL8245		\
	utx8245		\
"

#########################################################################
## MPC8260 Systems (includes 8250, 8255 etc.)
#########################################################################

LIST_8260="		\
	atc		\
	cogent_mpc8260	\
	CPU86		\
	CPU87		\
	ep8248		\
	ep8260		\
	ep82xxm		\
	gw8260		\
	hymod		\
	IPHASE4539	\
	ISPAN		\
	mgcoge		\
	MPC8260ADS	\
	MPC8266ADS	\
	MPC8272ADS	\
	PM826		\
	PM828		\
	ppmc8260	\
	Rattler8248	\
	RPXsuper	\
	rsdproto	\
	sacsng		\
	sbc8260		\
	SCM		\
	TQM8260_AC	\
	TQM8260_AD	\
	TQM8260_AE	\
	ZPC1900		\
"

#########################################################################
## MPC83xx Systems (includes 8349, etc.)
#########################################################################

LIST_83xx="		\
	MPC8313ERDB_33	\
	MPC8313ERDB_66	\
	MPC8315ERDB	\
	MPC8323ERDB	\
	MPC832XEMDS	\
	MPC832XEMDS_ATM	\
	MPC8349EMDS	\
	MPC8349ITX	\
	MPC8349ITXGP	\
	MPC8360EMDS	\
	MPC8360EMDS_ATM	\
	MPC8360ERDK_33	\
	MPC8360ERDK_66	\
	MPC837XEMDS	\
	MPC837XERDB	\
	sbc8349		\
	TQM834x		\
"


#########################################################################
## MPC85xx Systems (includes 8540, 8560 etc.)
#########################################################################

LIST_85xx="		\
	ATUM8548	\
	MPC8540ADS	\
	MPC8540EVAL	\
	MPC8541CDS	\
	MPC8544DS	\
	MPC8548CDS	\
	MPC8555CDS	\
	MPC8560ADS	\
	MPC8568MDS	\
	PM854		\
	PM856		\
	sbc8540		\
	sbc8548		\
	sbc8560		\
	stxgp3		\
	stxssa		\
	TQM8540		\
	TQM8541		\
	TQM8555		\
	TQM8560		\
"

#########################################################################
## MPC86xx Systems
#########################################################################

LIST_86xx="		\
	MPC8610HPCD	\
	MPC8641HPCN	\
	sbc8641d	\
"

#########################################################################
## 74xx/7xx Systems
#########################################################################

LIST_74xx="		\
	DB64360		\
	DB64460		\
	EVB64260	\
	mpc7448hpc2	\
	P3G4		\
	p3m7448		\
	PCIPPC2		\
	PCIPPC6		\
	ZUMA		\
"

LIST_TSEC="		\
	${LIST_85xx}	\
	${LIST_86xx}	\
	${LIST_83xx}	\
"

LIST_7xx="		\
	BAB7xx		\
	CPCI750		\
	ELPPC		\
	p3m750		\
	ppmc7xx		\
"

LIST_ppc="		\
	${LIST_5xx}	\
	${LIST_512x}	\
	${LIST_5xxx}	\
	${LIST_8xx}	\
	${LIST_8220}	\
	${LIST_824x}	\
	${LIST_8260}	\
	${LIST_83xx}	\
	${LIST_85xx}	\
	${LIST_86xx}	\
	${LIST_4xx}	\
	${LIST_74xx}	\
	${LIST_7xx}	\
"

#########################################################################
## StrongARM Systems
#########################################################################

LIST_SA="		\
	assabet		\
	dnp1110		\
	gcplus		\
	lart		\
	shannon		\
"

#########################################################################
## ARM7 Systems
#########################################################################

LIST_ARM7="		\
	ap7		\
	ap720t		\
	armadillo	\
	B2		\
	ep7312		\
	evb4510		\
	impa7		\
	integratorap	\
	lpc2292sodimm	\
	modnet50	\
	SMN42		\
"

#########################################################################
## ARM9 Systems
#########################################################################

LIST_ARM9="			\
	at91cap9adk		\
	at91rm9200dk		\
	at91sam9260ek		\
	cmc_pu2			\
	ap920t			\
	ap922_XA10		\
	ap926ejs		\
	ap946es			\
	ap966			\
	cp920t			\
	cp922_XA10		\
	cp926ejs		\
	cp946es			\
	cp966			\
	csb637			\
	kb9202			\
	lpd7a400		\
	m501sk			\
	mp2usb			\
	mx1ads			\
	mx1fs2			\
	netstar			\
	omap1510inn		\
	omap1610h2		\
	omap1610inn		\
	omap5912osk		\
	omap730p2		\
	sbc2410x		\
	scb9328			\
	smdk2400		\
	smdk2410		\
	trab			\
	VCMA9			\
	versatile		\
	versatileab		\
	versatilepb		\
	voiceblue		\
	davinci_dvevm		\
	davinci_schmoogie	\
	davinci_sonata		\
"

#########################################################################
## ARM10 Systems
#########################################################################
LIST_ARM10="		\
	integratorcp	\
	cp1026		\
"

#########################################################################
## ARM11 Systems
#########################################################################
LIST_ARM11="		\
	cp1136		\
	omap2420h4	\
	apollon		\
	imx31_litekit	\
	imx31_phycore	\
"

#########################################################################
## Xscale Systems
#########################################################################

LIST_pxa="		\
	adsvix		\
	cerf250		\
	cradle		\
	csb226		\
	delta		\
	innokom		\
	lubbock		\
	pleb2		\
	pxa255_idp	\
	wepep250	\
	xaeniax		\
	xm250		\
	xsengine	\
	zylonite	\
"

LIST_ixp="		\
	actux1		\
	actux2		\
	actux3		\
	actux4		\
	ixdp425		\
	ixdpg425	\
	pdnb3		\
	scpu		\
"


LIST_arm="		\
	${LIST_SA}	\
	${LIST_ARM7}	\
	${LIST_ARM9}	\
	${LIST_ARM10}	\
	${LIST_ARM11}	\
	${LIST_pxa}	\
	${LIST_ixp}	\
"

#########################################################################
## MIPS Systems		(default = big endian)
#########################################################################

LIST_mips4kc="		\
	incaip		\
	qemu_mips	\
"

LIST_mips5kc="		\
	purple		\
"

LIST_au1xx0="		\
	dbau1000	\
	dbau1100	\
	dbau1500	\
	dbau1550	\
	dbau1550_el	\
	gth2		\
"

LIST_mips="		\
	${LIST_mips4kc}	\
	${LIST_mips5kc}	\
	${LIST_au1xx0}	\
"

#########################################################################
## MIPS Systems		(little endian)
#########################################################################

LIST_mips4kc_el=""

LIST_mips5kc_el=""

LIST_au1xx0_el="	\
	dbau1550_el	\
	pb1000		\
"

LIST_mips_el="			\
	${LIST_mips4kc_el}	\
	${LIST_mips5kc_el}	\
	${LIST_au1xx0_el}	\
"

#########################################################################
## i386 Systems
#########################################################################

LIST_I486="		\
	sc520_cdp	\
	sc520_spunk	\
	sc520_spunk_rel	\
"

LIST_x86="		\
	${LIST_I486}	\
"

#########################################################################
## NIOS Systems
#########################################################################

LIST_nios="			\
	ADNPESC1		\
	ADNPESC1_base_32	\
	ADNPESC1_DNPEVA2_base_32\
	DK1C20			\
	DK1C20_standard_32	\
	DK1S10			\
	DK1S10_standard_32	\
	DK1S10_mtx_ldk_20	\
"

#########################################################################
## Nios-II Systems
#########################################################################

LIST_nios2="		\
	EP1C20		\
	EP1S10		\
	EP1S40		\
	PCI5441		\
	PK1C20		\
"

#########################################################################
## MicroBlaze Systems
#########################################################################

LIST_microblaze="	\
	ml401		\
	suzaku		\
	xupv2p		\
"

#########################################################################
## ColdFire Systems
#########################################################################

LIST_coldfire="			\
	cobra5272		\
	EB+MCF-EV123		\
	EB+MCF-EV123_internal	\
	idmr			\
	M52277EVB		\
	M5235EVB		\
	M5249EVB		\
	M5253EVB		\
	M5271EVB		\
	M5272C3			\
	M5275EVB		\
	M5282EVB		\
	M5329AFEE		\
	M5373EVB		\
	M54455EVB		\
	M5475AFE		\
	M5485AFE		\
	TASREG			\
"

#########################################################################
## AVR32 Systems
#########################################################################

LIST_avr32="		\
	atstk1002	\
	atstk1003	\
	atstk1004	\
	atngw100	\
"

#########################################################################
## Blackfin Systems
#########################################################################

LIST_blackfin="		\
	bf533-ezkit	\
	bf533-stamp	\
	bf537-stamp	\
	bf561-ezkit	\
"

#########################################################################
## SH Systems
#########################################################################

LIST_sh4="		\
	ms7750se	\
	ms7722se	\
	Migo-R		\
	r7780mp		\
	r2dplus		\
"

LIST_sh3="		\
	mpr2		\
	ms7720se	\
"

LIST_sh="		\
	${LIST_sh3}	\
	${LIST_sh4}	\
"

#########################################################################
## SPARC Systems
#########################################################################

LIST_sparc="gr_xc3s_1500	gr_cpci_ax2000	gr_ep2s60	grsim	grsim_leon2"

#-----------------------------------------------------------------------

#----- for now, just run PPC by default -----
[ $# = 0 ] && set $LIST_ppc

#-----------------------------------------------------------------------

build_target() {
	target=$1

	${MAKE} distclean >/dev/null
	${MAKE} ${target}_config

	${MAKE} ${JOBS} all 2>&1 >${LOG_DIR}/$target.MAKELOG \
				| tee ${LOG_DIR}/$target.ERR

	${CROSS_COMPILE}size ${BUILD_DIR}/u-boot \
				| tee -a ${LOG_DIR}/$target.MAKELOG
}

#-----------------------------------------------------------------------


for arg in $@
do
	case "$arg" in
	arm|SA|ARM7|ARM9|ARM10|ARM11|ixp|pxa| \
	avr32| \
	sparc| \
	blackfin| \
	coldfire| \
	microblaze| \
	mips|mips_el| \
	nios|nios2| \
	ppc|5xx|5xxx|512x|8xx|8220|824x|8260|83xx|85xx|86xx|4xx|7xx|74xx| \
	x86|I486|TSEC| \
	sh|sh4|sh3 \
	)
			for target in `eval echo '$LIST_'${arg}`
			do
				build_target ${target}
			done
			;;
	*)		build_target ${arg}
			;;
	esac
done