# Contributor: William Pitcock <nenolod@dereferenced.org>
# Contributor: Timo Teras <timo.teras@iki.fi>
# Maintainer: Leonardo Arena <rnalrd@alpinelinux.org>
setvar pkgname = 'u-boot'
setvar pkgver = '2017.01'
setvar pkgrel = '2'
setvar pkgdesc = ""u-boot bootloader common files""
setvar url = ""http://www.denx.de/wiki/U-Boot/""
setvar arch = ""armhf aarch64""
setvar license = ""GPL2""
setvar depends = """"
setvar depends_dev = """"
setvar makedepends = ""$depends_dev bc dtc python""
setvar install = """"
setvar source = ""ftp://ftp.denx.de/pub/u-boot/u-boot-${pkgver//_/-}.tar.bz2
	README.txt
	update-u-boot
	""

setvar _srcdir = ""$srcdir"/u-boot-${pkgver//_/-}"
setvar builddir = ""$srcdir"/build"

case (CARCH) {
armhf { setvar board_configs = ""
	beagleboard:am335x_boneblack
	cubieboard:Cubieboard,Cubieboard2
	cuboxi:mx6cuboxi
	raspberrypi:rpi,rpi_2,rpi_3_32b
	wandboard:wandboard
	""}
aarch64 { setvar board_configs = ""
	thunderx:thunderx_88xx
	""}
}

setvar _allboards = """"
for board_config in $board_configs {
	setvar _allboards = ""$_allboards $pkgname-${board_config%%:*}""
}
setvar subpackages = ""$pkgname-all:_all $_allboards""

proc build {
	cd $_srcdir
	touch include/config.h'
	LC_ALL=C' date +'#define U_BOOT_DATE "%b %d %C%y"' '> include/timestamp_autogenerated.h
	LC_ALL=C' date +'#define U_BOOT_TIME "%T"' >> include/timestamp_autogenerated.h

	local board_config board
	for board_config in $board_configs {
		local configs="${board_config#*:}"
		for board in ${configs//,/ } {
			msg "Building u-boot for $board"
			export BUILD_DIR="$builddir"/$board
			mkdir -p $BUILD_DIR
			make O="$BUILD_DIR" ${board}_config || return 1
			make O="$BUILD_DIR" all || return 1
		}
	}
}

proc package {
	cd $builddir
	mkdir -p "$pkgdir"/usr/share/$pkgname "$pkgdir"/usr/sbin
	install "$srcdir"/README.txt "$pkgdir"/usr/share/$pkgname/README.txt || return 1
	install "$srcdir"/update-u-boot "$pkgdir"/usr/sbin || return 1
}

proc _all {
	setvar pkgdesc = ""u-boot for all boards (meta package)""
	setvar depends = "$_allboards"

	mkdir -p "$subpkgdir"/
}

proc _split_boards {
	cd $builddir
	setvar pkgdesc = ""u-boot for $1""
	setvar depends = ""u-boot""
	shift
	local boardfor board in @ARGV {
		msg "Including board $board"
		mkdir -p "$subpkgdir"/usr/share/$pkgname/$board
		export BUILD_DIR="$builddir"/$board
		local ok=no
		for image in u-boot-sunxi-with-spl.bin -- MLO SPL u-boot.img -- u-boot.bin {
			if test $image = "--" {
				test $ok = yes && break
				continue
			}
			if test -e "$BUILD_DIR"/$image {
				cp "$BUILD_DIR"/$image "$subpkgdir"/usr/share/$pkgname/$board \
					|| return 1
				setvar ok = 'yes'
			}
		}
		test $ok = yes || return 1
	}
}

for board_config in $board_configs {
	setvar _board = "${board_config%%:*}"
	setvar _configs = "${board_config#*:}"
	eval "${_board}() { _split_boards $_board ${_configs//,/ }; }"
}

setvar sha512sums = ""d24c7d1305d81326a0f18071c073cd80c5ac43fcc8d8495509c56a8207620acc3d3e86afa873f738953841b3f6273e345493aad449f2464673275cc221270527  u-boot-2017.01.tar.bz2
f8c9bb6e84d6f0620c976ac7ad5dd7ec7ff9dfdd4b1d03d2bf6653e7beccf80bdf2debfc92fb1f696dba92fb40287d3c45897e0078951451d0835cb61a5f16d1  README.txt
c860f2cd6fe0ad9a462ac12a7df24b621ac53a07ada21a53791fd14f73c08619adb1f70a61507cc0b531c7beb1953ea8224b8dca5585a5d11b8df43d9ee0ac76  update-u-boot""