#!/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		cm1_qp1		cpci5200	EVAL5200	\
	fo300		icecube_5100	icecube_5200	lite5200b	\
	mcc200		mecp5200	motionpro	o2dnt		\
	pf5200		PM520		TB5200		Total5100	\
	Total5200	Total5200_Rev2	TQM5200		TQM5200_B	\
	TQM5200S	v38b						\
"

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

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

LIST_4xx="	\
	acadia		acadia_nand	ADCIOP		alpr		\
	AP1000		AR405		ASH405		bamboo		\
	bamboo_nand	bubinga		CANBT		CMS700		\
	CPCI2DP		CPCI405		CPCI4052	CPCI405AB	\
	CPCI405DT	CPCI440		CPCIISER4	CRAYL1		\
	csb272		csb472		DASA_SIM	DP405		\
	DU405		ebony		ERIC		EXBITGEN	\
	G2000		HH405		HUB405		JSE		\
	KAREF		katmai		luan		lwmon5		\
	METROBOX	MIP405		MIP405T		ML2		\
	ml300		ocotea		OCRTC		ORSG		\
	p3p440		PCI405		pcs440ep	PIP405		\
	PLU405		PMC405		PPChameleonEVB	sbc405		\
	sc3		sequoia		sequoia_nand	taishan		\
	VOH405		VOM405		W7OLMC		W7OLMG		\
	walnut		WUH405		XPEDITE1K	yellowstone	\
	yosemite	yucca						\
"

#########################################################################
## 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		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	MPC832XEMDS	MPC8349EMDS	MPC8349ITX	\
	MPC8349ITXGP	MPC8360EMDS	sbc8349		TQM834x		\
"


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

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

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

LIST_86xx="	\
    MPC8641HPCN	\
"

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

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

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

LIST_ppc="${LIST_5xx}  ${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="	\
	armadillo	B2		ep7312		evb4510		\
	impa7		integratorap	ap7		ap720t		\
	lpc2292sodimm	modnet50	SMN42				\
"

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

LIST_ARM9="	\
	at91rm9200dk	cmc_pu2						\
	ap920t		ap922_XA10	ap926ejs	ap946es		\
	ap966		cp920t		cp922_XA10	cp926ejs	\
	cp946es		cp966		lpd7a400	mp2usb		\
	mx1ads		mx1fs2		netstar		omap1510inn	\
	omap1610h2	omap1610inn	omap730p2	sbc2410x	\
	scb9328		smdk2400	smdk2410	trab		\
	VCMA9		versatile	versatileab	versatilepb	\
	voiceblue							\
"

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

#########################################################################
## ARM11 Systems
#########################################################################
LIST_ARM11="	\
	cp1136		omap2420h4					\
"

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

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

LIST_ixp="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"

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"

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="	\
	suzaku		ml401		xupv2p
"

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

LIST_coldfire="	\
	cobra5272	EB+MCF-EV123	EB+MCF-EV123_internal		\
	idmr		M5271EVB	M5272C3		M5282EVB	\
	TASREG		r5200		M5271EVB			\
"

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

LIST_avr32="atstk1002"

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

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

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

#----- 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:-ppc_8xx-}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| \
	blackfin| \
	coldfire| \
	microblaze| \
	mips|mips_el| \
	nios|nios2| \
	ppc|5xx|5xxx|8xx|8220|824x|8260|83xx|85xx|86xx|4xx|7xx|74xx| \
	x86|I486)
			for target in `eval echo '$LIST_'${arg}`
			do
				build_target ${target}
			done
			;;
	*)		build_target ${arg}
			;;
	esac
done