aboutsummaryrefslogtreecommitdiffstats
path: root/main/u-boot/APKBUILD
blob: 82c4db9a7745fac18971c86b1968e82a18a8c8fb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
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
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
# Contributor: He Yangxuan <yangxuan8282@gmail.com>
# Contributor: Timo Teras <timo.teras@iki.fi>
# Maintainer: Milan P. Stanić <mps@arvanta.net>
pkgname=u-boot
pkgver=2024.01
pkgrel=4
pkgdesc="u-boot bootloader common files"
url="https://www.denx.de/wiki/U-Boot/"
arch="all !s390x !ppc64le"
license="GPL-2.0-or-later OFL-1.1 BSD-2-Clause BSD-3-Clause WITH eCos-exception-2.0 IBM-pibs
	ISC LGPL-2.0-only LGPL-2.1-only X11"
options="!check" # no tests
makedepends="
	bc
	bison
	dtc
	flex
	gnutls-dev
	linux-headers
	openssl-dev
	py3-elftools
	py3-setuptools
	python3-dev
	swig
	util-linux-dev
	"
if [ "$CARCH" = "aarch64" ]; then
	makedepends="$makedepends arm-trusted-firmware"
fi
source="https://ftp.denx.de/pub/u-boot/u-boot-${pkgver//_/-}.tar.bz2
	README.txt
	update-u-boot
	fix-tools-build.patch
	"
builddir="$srcdir"/u-boot-${pkgver//_/-}

if [ "$CARCH" = "riscv64" ]; then
	makedepends="$makedepends opensbi"
	export OPENSBI=/usr/share/opensbi/generic/firmware/fw_dynamic.bin
fi

# secfixes:
#   2021.04-r0:
#     - CVE-2021-27097
#     - CVE-2021-27138

case "$CARCH" in
arm*) board_configs="
	beagleboard:am335x_boneblack_vboot
	linksprite:Linksprite_pcDuino3_Nano
	cuboxi:mx6cuboxi
	raspberrypi:rpi_0_w,rpi,rpi_2,rpi_3_32b
	wandboard:wandboard
	qemu:qemu_arm
	odroid:odroid,odroid-xu3
	sunxi:LicheePi_Zero,Bananapi,Lamobo_R1,Cubieboard,Cubieboard2,orangepi_pc
	";;
aarch64) board_configs="
	thunderx:thunderx_88xx
	raspberrypi:rpi_3,rpi_arm64
	odroid:odroid-c2,odroid-n2
	snapdragon:starqltechn
	exynos:a3y17lte,a5y17lte,a7y17lte
	libretech:libretech-cc
	rockchip:rockpro64-rk3399,roc-pc-rk3399,roc-cc-rk3328,pinebook-pro-rk3399
	qemu:qemu_arm64
	sunxi:pine64-lts,pinebook,orangepi_3,teres_i,a64-olinuxino,a64-olinuxino-emmc,nanopi_neo2,pine64_plus
	";;
riscv64) board_configs="
	qemu:qemu-riscv64,qemu-riscv64_smode
	unleashed:sifive_unleashed
	unmatched:sifive_unmatched
	starfive:starfive_visionfive2
	";;
esac

for board_config in $board_configs; do
	_allboards="$_allboards $pkgname-${board_config%%:*}"
done

subpackages="$_allboards $pkgname-tools"
case "$CARCH" in
	arm*|aarch64|riscv64) subpackages="$pkgname-all:_all $_allboards $pkgname-tools";;
esac

build() {
	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; do
		local configs="${board_config#*:}"
		for board in ${configs//,/ }; do
			msg "Building u-boot for $board"

			case "$board" in
				"pine64-lts"|"pinebook"|"teres_i"|"a64-olinuxino"|"a64-olinuxino-emmc"|"pine64_plus")
					export BL31="/usr/share/arm-trusted-firmware/sun50i_a64/bl31.bin"
					export SCP=/dev/null;;
				"orangepi_3")
					export BL31="/usr/share/arm-trusted-firmware/sun50i_h6/bl31.bin";;
				"pinebook-pro-rk3399"|"rockpro64-rk3399"|"roc-pc-rk3399")
					export BL31="/usr/share/arm-trusted-firmware/rk3399/bl31.elf";;
				"roc-cc-rk3328")
					export BL31="/usr/share/arm-trusted-firmware/rk3328/bl31.elf";;
			esac

			export BUILD_DIR="$builddir"/build/$board
			mkdir -p "$BUILD_DIR"
			make O="$BUILD_DIR" ${board}_config
			make O="$BUILD_DIR" all
		done
	done
	msg "Building u-boot-tools"
	make tools-only_defconfig
	make tools-all
}

package() {
	case "$CARCH" in
		mips64|x86*) return;;
	esac
	cd "$builddir"/build
	mkdir -p "$pkgdir"/usr/share/$pkgname "$pkgdir"/usr/sbin
	install "$srcdir"/README.txt "$pkgdir"/usr/share/$pkgname/README.txt
	install "$srcdir"/update-u-boot "$pkgdir"/usr/sbin
}

tools() {
	pkgdesc="u-boot bootloader utility tools"
	provides="uboot-tools"
	replaces="uboot-tools"
	mkdir -p $pkgdir
	mkdir $subpkgdir
	cd "$builddir"
	for tool in dumpimage env/fw_printenv \
		fit_check_sign fit_info gdb/gdbcont gdb/gdbsend gen_eth_addr img2srec \
		mkenvimage mkimage ncb proftool; do
		install -D tools/$tool \
		$subpkgdir/usr/bin/"$(basename $tool)"
		done
	install -Dm644 tools/env/fw_env.config \
		"$subpkgdir/usr/share/doc/$pkgname/examples/fw_env.config"
	cd "$subpkgdir"/usr/bin
	ln -sf fw_printenv fw_setenv
}

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

	mkdir -p "$subpkgdir"/
}

_split_boards() {
	cd "$builddir"/build
	pkgdesc="u-boot for $1"
	depends="u-boot"
	shift
	local board
	for board; do
		msg "Including board $board"
		mkdir -p "$subpkgdir"/usr/share/$pkgname/$board
		export BUILD_DIR="$builddir"/build/$board

		local board_images=""
		case "$board" in
			"sifive_unleashed") board_images="u-boot.itb spl/u-boot-spl.bin --" ;;
			"sifive_unmatched") board_images="u-boot.itb spl/u-boot-spl.bin --" ;;
			"starfive_visionfive2") board_images="u-boot.itb spl/u-boot-spl.bin.normal.out --" ;;
			"pinebook-pro-rk3399"|"rockpro64-rk3399"|"roc-pc-rk3399"|"roc-cc-rk3328") board_images="u-boot-rockchip.bin --" ;;
		esac

		local ok=no
		for image in $board_images u-boot-sunxi-with-spl.bin -- MLO SPL u-boot.img -- u-boot.bin; do
			if [ "$image" = "--" ]; then
				[ "$ok" = yes ] && break
				continue
			fi
			if [ -e "$BUILD_DIR"/$image ]; then
				cp "$BUILD_DIR"/$image "$subpkgdir"/usr/share/$pkgname/$board
				ok=yes
			fi
		done
		[ "$ok" = yes ] || return
	done
}

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

sha512sums="
45bd093ba3bda23e43cdde83d8656c1ee1348ac2886ecff1fee475f101ac4965a5be6565408fa5b990c723f3fdc833edfca60a719f735a43040cd14a1b59a88b  u-boot-2024.01.tar.bz2
f8c9bb6e84d6f0620c976ac7ad5dd7ec7ff9dfdd4b1d03d2bf6653e7beccf80bdf2debfc92fb1f696dba92fb40287d3c45897e0078951451d0835cb61a5f16d1  README.txt
6cf882785fa12abcfdfa82119f6a3446229bc75f4c19d5751676625dda81df5ca428c2b631187ecbc39261b081b1a8b53bceeac9f43a3229f7610abc4d9862a2  update-u-boot
83fc42c698f8236ba1f7d71383863e0bda255ada85bb885856a24b2036944d230d918a9d965d5ff90720726c9ee85ffda5e88eefc27b94ef9e7b4f456dcfb195  fix-tools-build.patch
"