#!/bin/sh

: ${JOBS:=}

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

[ -d LOG ] || mkdir LOG || exit 1

LIST=""

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

LIST_5xx="	\
	cmi_mpc5xx							\
"

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

LIST_5xxx="	\
	cpci5200	icecube_5100	icecube_5200	EVAL5200	\
	pf5200		PM520		Total5100	Total5200	\
	Total5200_Rev2	TQM5200_auto	o2dnt				\
"

#########################################################################
## 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		\
	ESTEEM192E	IVML24_256	NETTA_ISDN	SPD823TS	\
	ETX094		IVMS8		NETVIA		svm_sc8xx	\
	FADS823		IVMS8_128	NETVIA_V2	SXNI855T	\
	FADS850SAR	IVMS8_256	NX823		TOP860		\
	FADS860T	KUP4K		pcu_e		TQM823L		\
	FLAGADM		KUP4X		QS823		TQM823L_LCD	\
	FPS850L		LANTEC		QS850		TQM850L		\
	GEN860T		lwmon		QS860T		TQM855L		\
	GEN860T_SC	MBX		quantum		TQM860L		\
							uc100		\
							v37		\
"

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

LIST_4xx="	\
	ADCIOP		AP1000		AR405		ASH405		\
	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		\
	luan		METROBOX	MIP405		MIP405T		\
	ML2		ml300		ocotea		OCRTC		\
	ORSG		p3p440		PCI405		PIP405		\
	PLU405		PMC405	        PPChameleonEVB	sbc405		\
	VOH405		VOM405          W7OLMC		W7OLMG		\
	walnut		WUH405		XPEDITE1K	yellowstone	\
	yosemite							\
"

#########################################################################
## 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		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="	\
	MPC8349ADS	TQM834x\
"


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

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

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

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

LIST_7xx="	\
	BAB7xx		CPCI750		ELPPC				\
"

LIST_ppc="${LIST_5xx}  ${LIST_5xxx}		\
	  ${LIST_8xx}				\
	  ${LIST_8220} ${LIST_824x} ${LIST_8260} \
	  ${LIST_83xx}				\
	  ${LIST_85xx}				\
	  ${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		\
	modnet50							\
"

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

LIST_ARM9="	\
	at91rm9200dk	cmc_pu2						\
	ap920t		ap922_XA10	ap926ejs	ap946es		\
	ap966		cp920t		cp922_XA10	cp926ejs	\
	cp946es		cp966		lpd7a400	mp2usb		\
	mx1ads		mx1fs2		omap1510inn	omap1610h2	\
	omap1610inn	omap730p2	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		\
	innokom		lubbock		pxa255_idp	wepep250	\
	xaeniax		xm250		xsengine			\
"

LIST_ixp="ixdp425"


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"

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="PCI5441 PK1C20"

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

LIST_microblaze="suzaku"

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

#----- 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/$target.MAKELOG | tee LOG/$target.ERR
	${CROSS_COMPILE:-ppc_8xx-}size u-boot | tee -a LOG/$target.MAKELOG
}

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


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