archpkgs/foot/PKGBUILD

107 lines
2.9 KiB
Bash
Raw Normal View History

# Maintainer: Daniel Eklöf <daniel at ekloef dot se>
pkgdesc="Wayland terminal emulator - fast, lightweight and minimalistic"
pkgname=foot
pkgver=1.8.2 # Dont forget to update CHANGELOG.md
pkgrel=1
arch=('x86_64' 'aarch64')
url=https://codeberg.org/dnkl/foot
license=(mit)
changelog=CHANGELOG.md
depends=('libxkbcommon' 'wayland' 'pixman' 'fontconfig' 'libutf8proc' 'fcft' 'foot-terminfo')
makedepends=('meson' 'ninja' 'scdoc' 'python' 'ncurses' 'wayland-protocols' 'tllist') # llvm, for PGO with clang
checkdepends=('check')
optdepends=('libnotify: desktop notifications'
'xdg-utils: URI launching'
'bash-completion: bash completions for foot itself')
source=(${pkgname}-${pkgver}.tar.gz::${url}/archive/${pkgver}.tar.gz)
sha256sums=('50cf5b9f3cc1ebaafa62255eea22395e8267cce21e119bc6f7ecacf11f15dada')
build() {
cd foot
local compiler=other
local do_pgo=no
# makepkg uses -O2 by default, but we *really* want -O3
CFLAGS+=" -O3"
# Figure out which compiler we're using, and whether or not to do PGO
case $(${CC-cc} --version) in
*GCC*)
compiler=gcc
do_pgo=yes
;;
*clang*)
compiler=clang
# We need llvm to be able to manage the profiling data
if command -v llvm-profdata > /dev/null; then
do_pgo=yes
# Meson adds -fprofile-correction, which Clang doesn't
# understand
CFLAGS+=" -Wno-ignored-optimization-argument"
fi
;;
esac
meson \
--prefix=/usr \
--buildtype=release \
--wrap-mode=nodownload \
-Db_lto=true \
-Dterminfo-install-location=disabled \
. build
if [[ ${do_pgo} == yes ]]; then
find -name "*.gcda" -delete
meson configure -Db_pgo=generate build
ninja -C build
local script_options="--scroll --scroll-region --colors-regular --colors-bright --colors-256 --colors-rgb --attr-bold --attr-italic --attr-underline --sixel"
local tmp_file=$(mktemp)
if [[ -v WAYLAND_DISPLAY ]]; then
# TODO: remove the sleep in the next release (with SIGWINCH
# fixes in generate-alt-random-writes.py)
build/footclient --version
build/foot \
--config /dev/null \
--term=xterm \
sh -c "sleep 2 && ./scripts/generate-alt-random-writes.py ${script_options} ${tmp_file} && cat ${tmp_file}"
else
build/footclient --version
build/foot --version
./scripts/generate-alt-random-writes.py \
--rows=67 \
--cols=135 \
${script_options} \
${tmp_file}
build/pgo ${tmp_file} ${tmp_file} ${tmp_file}
fi
rm "${tmp_file}"
if [[ ${compiler} == clang ]]; then
llvm-profdata merge default_*profraw --output=build/default.profdata
fi
meson configure -Db_pgo=use build
fi
ninja -C build
}
check() {
cd foot
ninja -C build test
}
package() {
cd foot
DESTDIR="${pkgdir}/" ninja -C build install
install -Dm 644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
}