htc-memul needs a special build with a different scratch address set. So generalize the build function so we can make multiple builds with parameters without duplicating too much code.
108 lines
3.0 KiB
Bash
108 lines
3.0 KiB
Bash
# Maintainer: Alexey Minnekhanov <alexeymin@postmarketos.org>
|
|
pkgname=lk2nd
|
|
pkgver=0.15.0
|
|
pkgrel=1
|
|
pkgdesc="Secondary little kernel (lk) bootloader for several Qualcomm devices"
|
|
arch="armv7 aarch64"
|
|
url="https://github.com/msm8916-mainline/lk2nd"
|
|
license="MIT AND BSD-3-Clause AND GPL-2.0-only"
|
|
makedepends="dtc dtc-dev gcc-arm-none-eabi python3 py3-libfdt"
|
|
source="$pkgname-$pkgver.tar.gz::https://github.com/msm8916-mainline/lk2nd/archive/refs/tags/$pkgver.tar.gz"
|
|
options="!check !archcheck !tracedeps !strip pmb:cross-native"
|
|
# This APKBUILD builds bare metal executable; options are very specific!
|
|
# * there are no tests (how do you even test the bootloader?);
|
|
# * binaries are "arch-independent"; aarch64 build also produces armv7 binary,
|
|
# because ARM CPUs boot in 32-bit mode;
|
|
# * there are no depends for bootloader, it's a kernel and OS in one binary;
|
|
# * stripping of unused sections is done in lk2nd's own ld script.
|
|
|
|
subpackages="
|
|
$pkgname-msm8916
|
|
$pkgname-msm8916-appended:msm8916_appended
|
|
"
|
|
|
|
if [ "$CARCH" = "armv7" ]; then
|
|
subpackages="
|
|
$subpackages
|
|
$pkgname-msm8226
|
|
$pkgname-msm8226-appended:msm8226_appended
|
|
$pkgname-msm8226-htc-memul:msm8226_htc_memul
|
|
$pkgname-msm8974
|
|
$pkgname-msm8974-appended:msm8974_appended
|
|
"
|
|
fi
|
|
|
|
_build() {
|
|
# This builds baremetal executable; distro-specific compiler flags
|
|
# and optimizations can't be set by build system.
|
|
unset CFLAGS
|
|
unset CXXFLAGS
|
|
unset CPPFLAGS
|
|
unset LDFLAGS
|
|
unset CROSS_COMPILE
|
|
unset CC
|
|
unset CXX
|
|
|
|
# ccache and crossdirect "gcc"s are in PATH, get rid of them too,
|
|
# redefine PATH to be bare minimum
|
|
unset PATH
|
|
export PATH=/usr/sbin:/usr/bin:/sbin:/bin
|
|
|
|
local project="$1"; shift
|
|
|
|
make LK2ND_VERSION="$pkgver-r$pkgrel-postmarketos" TOOLCHAIN_PREFIX=arm-none-eabi- "$@" "$project"
|
|
}
|
|
|
|
build() {
|
|
_build lk2nd-msm8916
|
|
if [ "$CARCH" = "armv7" ]; then
|
|
_build lk2nd-msm8974
|
|
_build lk2nd-msm8226
|
|
_build lk2nd-msm8226 BOOTLOADER_OUT=htc-memul SCRATCH_ADDR=0x20000000 SCRATCH_ADDR_512MAP=0x20000000 SCRATCH_SIZE_512MAP=0x10000000
|
|
fi
|
|
}
|
|
|
|
package() {
|
|
# main package is empty
|
|
mkdir -p "$pkgdir"
|
|
}
|
|
|
|
msm8916() {
|
|
install -Dm644 "$builddir"/build-lk2nd-msm8916/lk2nd.img -t \
|
|
"$subpkgdir"/boot
|
|
}
|
|
|
|
msm8916_appended() {
|
|
install -Dm644 "$builddir"/build-lk2nd-msm8916/lk2nd-appended-dtb.img \
|
|
"$subpkgdir"/boot/lk2nd.img
|
|
}
|
|
|
|
msm8974() {
|
|
install -Dm644 "$builddir"/build-lk2nd-msm8974/lk2nd.img -t \
|
|
"$subpkgdir"/boot
|
|
}
|
|
|
|
msm8974_appended() {
|
|
install -Dm644 "$builddir"/build-lk2nd-msm8974/lk2nd-appended-dtb.img \
|
|
"$subpkgdir"/boot/lk2nd.img
|
|
}
|
|
|
|
msm8226() {
|
|
install -Dm644 "$builddir"/build-lk2nd-msm8226/lk2nd.img \
|
|
"$subpkgdir"/boot/lk2nd.img
|
|
}
|
|
|
|
msm8226_appended() {
|
|
install -Dm644 "$builddir"/build-lk2nd-msm8226/lk2nd-appended-dtb.img \
|
|
"$subpkgdir"/boot/lk2nd.img
|
|
}
|
|
|
|
msm8226_htc_memul() {
|
|
install -Dm644 "$builddir"/htc-memul/build-lk2nd-msm8226/lk2nd.img \
|
|
"$subpkgdir"/boot/lk2nd.img
|
|
}
|
|
|
|
sha512sums="
|
|
60551065ea072257b459629ea2c555933fae97eef08e6bee5904aa3751cb67fa38125f89f8d7e06c6d9438b3783d81da428b3b428e46cf6bd8dae0ee9163c1b5 lk2nd-0.15.0.tar.gz
|
|
"
|