summarylogtreecommitdiffstats
path: root/PKGBUILD
blob: a296ec58bf740e0d5adcd056bd35858b0bf0064a (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
# Maintainer: Eric Woudstra ericwouds AT gmail DOT com

#NOEXTRACT="1"

_gitname="arm-trusted-firmware"
_gitroot=https://github.com/ericwoud/${_gitname}
#_gitroot=https://github.com/mtk-openwrt/${_gitname}
#_gitbranch="wip"
_gitbranch="bpir"
#_gitbranch="master"
#_gitbranch="mtksoc"
pkgbase=bpir64-atf-git
pkgname=("$pkgbase")
epoch=2
pkgver=v2.8r12614.f84551673
pkgrel=6
_ubootpkgver=2023.01
url='https://github.com/mtk-openwrt/arm-trusted-firmware.git'
arch=(aarch64 x86_64)
makedepends=(git dtc)
license=(GPL)
source=("git+${_gitroot}.git#branch=${_gitbranch}"
        "uboot${_ubootpkgver}::https://github.com/u-boot/u-boot/archive/refs/tags/v${_ubootpkgver}.tar.gz"
        '95-atf.hook'
        'bpir-writefip'
        'mtkimage-gpt-expand.patch'
)
sha256sums=(SKIP SKIP SKIP SKIP SKIP)

export CARCH=aarch64
if [[ "$(uname -m)" == "aarch64" ]]; then
  pkgname+=("$pkgbase-fiptool")
else
  makedepends+=(aarch64-linux-gnu-gcc)
  export _crossc="CROSS_COMPILE=aarch64-linux-gnu-"
fi
 
pkgver() {
  cd "${srcdir}/${_gitname}"
  printf "v%s.%sr%s.%s" \
      $(grep '^VERSION_MAJOR' Makefile | cut -b 19-) \
      $(grep '^VERSION_MINOR' Makefile | cut -b 19-) \
      "$(git rev-list --count HEAD)" \
      "$(git rev-parse --short HEAD)"
}

prepare() {
  cd "${srcdir}/${_gitname}"
#  git config --global user.email "you@example.com"
#  git config --global user.name "Your Name"
#  rm -rf ${srcdir}/${_gitname}/.git/rebase-apply  
#  echo -n -e "\n\nCOMMIT DATE:"
#  git log -1 --format="%at" | xargs -I{} date -d @{} +%Y/%m/%d-%H:%M:%S
#  echo -e "\n\n"
#  git am --ignore-space-change --ignore-whitespace "${startdir}/"*.patch
}

_buildmkimage() {
  cd "${srcdir}/u-boot-${_ubootpkgver}"
  cp -vf configs/mt7622_rfb_defconfig configs/my_defconfig
  # No libcrypto (openssl)
  echo "CONFIG_TOOLS_LIBCRYPTO=n" | tee -a configs/my_defconfig
  # kwbimage needs libcrypto, so remove it from build
  sed -i '/kwbimage.o \\/d' ./tools/Makefile
  # reduce objects being build, as they are not linked anyway
  sed -i 's/FIT_OBJS-y :=.*/FIT_OBJS-y := fit_common.o boot\/image-fit.o/' ./tools/Makefile
  ARCH=arm64 make clean
  ARCH=arm64 make my_defconfig
  ARCH=arm64 make tools-only
  mv -vf tools/mkimage nostretch-mkimage
  patch -p1 -N -r - < "${srcdir}/mtkimage-gpt-expand.patch"
  ARCH=arm64 make tools-only
  mv -vf tools/mkimage stretch-mkimage
}

_buildfiptool() {
  cd "${srcdir}/${_gitname}/tools/fiptool"
  sed -i '/-Werror/d' ./Makefile
  make HOSTCCFLAGS+="-D'SHA256(x,y,z)=nop'" LDLIBS=""
}

_buildimage() {
  _plat=$1; _bpir=$2; _atfdev=$3; _stretch=$4; _rest="${@:5}"
  cd "${srcdir}/${_gitname}"
  _file="plat/mediatek/apsoc_common/bl2/bl2_boot_mmc.c"
  [ -f "$_file" ] || _file="plat/mediatek/${_plat}/bl2_boot_mmc.c"
  sed -i 's/.*entry = get_partition_entry.*fip.*/\tentry = get_partition_entry("'${_bpir}'-'${_atfdev}'-fip");/' $_file
  sed -i 's/.*entry = get_partition_entry.*boot.*/\tentry = get_partition_entry("'${_bpir}'-'${_atfdev}'-boot");/' $_file
  touch plat/mediatek/${_plat}/platform.mk
  unset CXXFLAGS CPPFLAGS LDFLAGS
  export CFLAGS=-Wno-error
  make $_crossc PLAT=${_plat} BOOT_DEVICE=$_atfdev LOG_LEVEL=40 USE_MKIMAGE=1 \
       MKIMAGE="${srcdir}/u-boot-${_ubootpkgver}/${_stretch}-mkimage" ${_rest} all # MTK_BL33_IS_64BIT=1 
  if [[ "${_stretch}" == "stretch" ]]; then
    dd of=build/${_plat}/release/${_bpir}-atf-${_atfdev}-header.bin bs=1 count=440 if=build/${_plat}/release/bl2.img
    dd of=build/${_plat}/release/${_bpir}-atf-${_atfdev}-atf.bin          skip=34  if=build/${_plat}/release/bl2.img
  else
    dd of=build/${_plat}/release/${_bpir}-atf-${_atfdev}-atf.bin                   if=build/${_plat}/release/bl2.img
  fi
  if [ -z "$(cat bl2/bl2.mk | grep bl31.bin.o)" ]; then # bl31.bin is not being build in, so add it
    dd of=build/${_plat}/release/${_bpir}-atf-${_atfdev}-bl31.bin                  if=build/${_plat}/release/bl31.bin
  fi
}

build() {
  rm -rf "${srcdir}/${_gitname}"/build/*
  echo "$(uname -m)"
  if [ ! -f "${srcdir}/u-boot-${_ubootpkgver}/nostretch-mkimage"  ] || \
     [ ! -f "${srcdir}/u-boot-${_ubootpkgver}/stretch-mkimage" ]; then _buildmkimage
  fi
  [ -z "$_crossc" ] && _buildfiptool
  _buildimage mt7622 bpir64 sdmmc stretch   DDR3_FLYBY=1 DEVICE_HEADER_OFFSET=0
  _buildimage mt7622 bpir64 emmc  stretch   DDR3_FLYBY=1 DEVICE_HEADER_OFFSET=0
  _buildimage mt7986 bpir3  sdmmc nostretch DRAM_USE_DDR4=1
  _buildimage mt7986 bpir3  emmc  nostretch DRAM_USE_DDR4=1 BROM_HEADER_TYPE=sdmmc
  _buildimage mt7986 bpir3m emmc  nostretch DRAM_USE_DDR4=1
}
 
package_bpir64-atf-git() {
  pkgdesc='ATF BPI-R64 & BPI-R3 images'
  depends=("linux" "dtc" "bpir64-atf-git-fiptool")
  replaces=(bpir64-mkimage)
  install=${pkgname}.install
  cd "${srcdir}"
  install -m755 -vDt "$pkgdir/usr/bin" bpir-writefip
  install -Dt "${pkgdir}/usr/share/libalpm/hooks/" -m644 95-atf.hook
  for _folder in "${srcdir}/${_gitname}/build/"*; do
    cd "$_folder/release"
    install -vDt "$pkgdir/boot" -m644 *-atf-*.bin
  done
}

package_bpir64-atf-git-fiptool() {
  pkgdesc='ATF BPI-R64 & BPI-R3 fiptool'
  depends=()
  cd "${srcdir}/${_gitname}/tools/fiptool"
  install -m755 -vDt "$pkgdir/usr/bin" fiptool
}