summaryrefslogtreecommitdiff
path: root/aic8800-dragon/APKBUILD
blob: c353a141078587bcac2d1253ffdda893c9c09bc8 (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
# Maintainer: John Vogel <jvogel@stygian.me>

# This APKBUILD borrows heavily from the jool-lts and jool-rpi aports.

# AIC8800 version
# Keep _ver in sync with radxa/aic8800
# When changing _ver we *must* bump _rel!
_name=aic8800
_ver=5.0_git20260429
_srcver=5.0+git20260123.5f7be68d-5
_rel=0
_flavor=dragon

# For custom kernels set $FLAVOR.
_flavor="$FLAVOR"
_extra_flavors=""
if [ -z "$FLAVOR" ]; then
	_flavor="dragon"
fi

# Kernel version
# Keep in sync with radxa/linux-dragon!
_kpkg=linux-$_flavor
_kver=7.0.11
_krel=0
_kpkgver="$_kver-r$_krel"

maintainer="John Vogel <jvogel@stygian.me>"
pkgname=$_name-$_flavor
pkgver=$_kver
pkgrel=$(( _krel + _rel ))
pkgdesc="Aicsemi AIC8800 drivers for Linux (kernel modules for linux-$_flavor)"
url="https://github.com/radxa-pkg/aic8800"
arch="aarch64"
license="GPL-3.0-or-later"
makedepends="$_kpkg-dev=$_kpkgver linux-headers xz"
subpackages="$pkgname-doc $pkgname-firmware"
source="aic8800-$_srcver.tar.gz::https://github.com/radxa-pkg/aic8800/archive/refs/tags/$_srcver.tar.gz"
builddir="$srcdir/$_name-${_srcver/+/-}"
options="!strip !check !usrmerge"

for _f in $_extra_flavors; do
	makedepends="$makedepends linux-$_f-dev=$_kpkgver"
	subpackages="$subpackages $_name-$_f:_extra"
done

prepare() {
	default_prepare

	dos2unix src/USB/driver_fw/drivers/aic8800/aic_load_fw/aicbluetooth.c
	dos2unix src/USB/driver_fw/drivers/aic_btusb/aic_btusb.h
	dos2unix src/USB/driver_fw/drivers/aic8800/aic_load_fw/aic_bluetooth_main.c

	while read -r p; do
		printf 'applying %s\n' "$p"
		patch -Np1 -i debian/patches/$p
	done < debian/patches/series

	# verify the kernel version
	local _kapkbuild="$startdir"/../../testing/linux-$_flavor/APKBUILD
	if [ -f $_kapkbuild ]; then
		(	. $_kapkbuild
			pkgname=$_name-$_flavor
			[ "$_kver" != "$pkgver" ] && die "please update _kver to $pkgver"
			[ "$_krel" != "$pkgrel" ] && die "please update _krel to $pkgrel"
			return 0
		)
	fi
}

_kernelarch() {
	local arch="$1"
	case "$arch" in
		aarch64*) arch="arm64" ;;
		arm*) arch="arm" ;;
		ppc*) arch="powerpc" ;;
		s390*) arch="s390" ;;
		riscv*) arch="riscv" ;;
		loongarch64) arch="loongarch" ;;
	esac
	echo "$arch"
}

build() {
	local flavor= kabi=
	for flavor in $_flavor $_extra_flavors; do
		kabi="${_kver/_rc/-rc}-$_krel-$flavor"
		cp -a -l "$builddir" "$srcdir"/"$kabi"
		cd "$srcdir"/"$kabi"
		make -C "/lib/modules/$_kver-$_krel-$flavor/build" \
			M="$srcdir/$kabi/src/USB/driver_fw/drivers/aic_btusb" \
			ARCH="$(_kernelarch $CBUILD)" \
			CROSS_COMPILE= \
			modules
		make -C "/lib/modules/$_kver-$_krel-$flavor/build" \
			M="$srcdir/$kabi/src/USB/driver_fw/drivers/aic8800" \
			ARCH="$(_kernelarch $CBUILD)" \
			CROSS_COMPILE= \
			modules
	done
}

package() {
	install -Dm644 -t "$pkgdir"/usr/share/licenses/"$pkgname" LICENSE

	local flavor= kabi=
	for flavor in $_flavor $_extra_flavors; do
		kabi="${_kver/_rc/-rc}-$_krel-$flavor"
		cd "$srcdir"/"$kabi"
		make -C "/lib/modules/$_kver-$_krel-$flavor/build" \
			M="$srcdir/$kabi/src/USB/driver_fw/drivers/aic_btusb" \
			ARCH="$(_kernelarch $CBUILD)" \
			CROSS_COMPILE= \
			INSTALL_MOD_PATH="$pkgdir" \
			CONFIG_MODULE_SIG_KEY="/lib/modules/$_kver-$_krel-$flavor/build/certs/signing_key.x509" \
			modules_install
		make -C "/lib/modules/$_kver-$_krel-$flavor/build" \
			M="$srcdir/$kabi/src/USB/driver_fw/drivers/aic8800" \
			ARCH="$(_kernelarch $CBUILD)" \
			CROSS_COMPILE= \
			INSTALL_MOD_PATH="$pkgdir" \
			CONFIG_MODULE_SIG_KEY="/lib/modules/$_kver-$_krel-$flavor/build/certs/signing_key.x509" \
			modules_install
	done

}

_extra() {
	local flavor=${subpkgname##*-}
	local kabi="${_kver/_rc/-rc}-$_krel-$flavor"
	depends="linux-$flavor=$_kpkgver"
	install_if="linux-$flavor=$_kpkgver"
	pkgdesc="Aicsemi AIC8800 drivers for Linux (kernel modules for linux-$flavor)"

	install -dm755 "$subpkgdir"/lib/modules
	mv "$pkgdir"/lib/modules/"$kabi" "$subpkgdir"/lib/modules
}

firmware() {
	pkgdesc="Aicsemi AIC8800 drivers for Linux (usb firmware)"

	install -Dm644 -t "$subpkgdir"/lib/firmware/aic8800_fw/USB/aic8800D80 \
		"$builddir"/src/USB/driver_fw/fw/aic8800D80/*.bin
	install -Dm644 -t "$subpkgdir"/lib/firmware/aic8800_fw/USB/aic8800D80 \
		"$builddir"/src/USB/driver_fw/fw/aic8800D80/*.txt
}

sha512sums="
d99215a577ebc65d275c00298e7ddd8819e3ecd16f0db352dd7b2a3665d12da80ee62c97e7f7de96c62b7237c0f6b7d1dffc13e6d16bac86fd2d052432772be8  aic8800-5.0+git20260123.5f7be68d-5.tar.gz
"