# Maintainer: Jan Alexander Steffens (heftig) <heftig@archlinux.org>
# Contributor: Jan de Groot <jgc@archlinux.org>

pkgbase=freetype2
pkgname=(
  freetype2
  freetype2-demos
  freetype2-docs
)
pkgver=2.14.2
pkgrel=1
epoch=
pkgdesc="Font rasterization library"
url="https://www.freetype.org/"
arch=(x86_64 aarch64)
license=('FTL OR GPL-2.0-or-later')
depends=(
  brotli
  bzip2
  glibc
  libpng
  zlib
)
makedepends=(
  cairo
  glib2
  harfbuzz
  libgcc
  librsvg
  libstdc++
  libx11
  meson
  qt6-base
)
source=(
  https://download-mirror.savannah.gnu.org/releases/freetype/freetype-$pkgver.tar.xz{,.sig}
  https://download-mirror.savannah.gnu.org/releases/freetype/freetype-doc-$pkgver.tar.xz{,.sig}
  https://download-mirror.savannah.gnu.org/releases/freetype/ft2demos-$pkgver.tar.xz{,.sig}
  freetype2.sh
  0001-Enable-table-validation-modules.patch
  0002-Enable-subpixel-rendering.patch
  0003-Enable-long-PCF-family-names.patch
)
b2sums=('2fbd3c70efccff3c3ea6ba204699e338627df52a9c043221678a3cb29d43c37fd734e619fc1c0f645636e2d7da65c1b459fe38566782eb876aa4b4c89dbf1ea0'
        'SKIP'
        'ba7a7f3eccef198b72765d5196cebe5724f0123a781f085dc2244af853ec55038becb79a3d3faa03a5b77dbf618931024f4bcfe25109bc77a72c9c0b19b792aa'
        'SKIP'
        'e0c26e9298f91873344c3d96d1e304cfdfe8edab71c320f9b549b32b0d90395362845079a97186dad0e818259f93102c5c0a69ae78a014b9f1804f14f579cf1a'
        'SKIP'
        'a964f46886b5017a5c180f29408f72ae8aba29f37404c48b4681ff12ca0a2cfa2a8e219480e98d63d45fb5c266a6e5826df170c9a0d701cd866e395c5ac6e87d'
        'f45ec7d03193b446d8b46c8d981f330843a1ab2c83a91a5011cb328b26b4fc4c4b5729f32f3270018cf5ba8a162712bd0ebc2cd67f97b906e46ce293aeda466f'
        '95f1117e0c411341c4874520f28c6da6ae40d13fdb39b6bc78912c0a2703d2c4487d0dff2b280a3bd93b7236aacb9c8325c359f0935461aeb54898c4906726c3'
        '3e9991bd945f74cc9d21c375decd90a2c1a56542e6e44f0f37723cd14bc96fbb5fe1e8ca3dfe59d485be69eb69d7dc98fb73d532413632f8be8c5f2cc419f938')
validpgpkeys=(
  E30674707856409FF1948010BE6C3AAC63AD8E3F # Werner Lemberg <wl@gnu.org>
)

prepare() {
  # Build FreeType as part of the demos
  ln -sr freetype-$pkgver freetype2

  cd freetype-$pkgver

  patch -Np1 -i ../0001-Enable-table-validation-modules.patch
  patch -Np1 -i ../0002-Enable-subpixel-rendering.patch
  patch -Np1 -i ../0003-Enable-long-PCF-family-names.patch
}

build() {
  local meson_options=(
    -D freetype2:default_library=shared
    -D freetype2:error_strings=true
    -D freetype2:harfbuzz=dynamic
  )

  # Build FreeType as part of the demos
  export MESON_PACKAGE_CACHE_DIR="$srcdir"

  arch-meson ft2demos-$pkgver build "${meson_options[@]}"
  meson compile -C build
}

check() {
  meson test -C build --print-errorlogs
}

_pick() {
  local p="$1" f d; shift
  for f; do
    d="$srcdir/$p/${f#$pkgdir/}"
    mkdir -p "$(dirname "$d")"
    mv "$f" "$d"
    rmdir -p --ignore-fail-on-non-empty "$(dirname "$f")"
  done
}

package_freetype2() {
  optdepends=(
    'harfbuzz: Improved autohinting'
  )
  provides=(
    libfreetype.so
  )
  backup=(etc/profile.d/freetype2.sh)

  meson install -C build --destdir="$pkgdir"

  _pick demos "$pkgdir"/usr/bin
  _pick demos "$pkgdir"/usr/share/man/man1

  install -Dm644 freetype2.sh -t "$pkgdir/etc/profile.d"

  install -Dm644 freetype-$pkgver/docs/FTL.TXT \
    -t "$pkgdir/usr/share/licenses/$pkgname"
}

package_freetype2-demos() {
  pkgdesc="Freetype tools and demos"
  depends=(
    cairo
    freetype2
    glib2
    glibc
    libgcc
    librsvg
    libstdc++
    libx11
  )
  optdepends=('qt6-base: ftinspect')

  mv demos/* "$pkgdir"

  install -Dm644 freetype-$pkgver/docs/FTL.TXT \
    -t "$pkgdir/usr/share/licenses/$pkgname"
}

package_freetype2-docs() {
  pkgdesc="Freetype documentation"
  depends=()

  mkdir -p "${pkgdir}/usr/share/doc"
  cp -r freetype-$pkgver/docs "$pkgdir/usr/share/doc/$pkgbase"

  install -Dm644 freetype-$pkgver/docs/FTL.TXT \
    -t "$pkgdir/usr/share/licenses/$pkgname"
}

# vim:set sw=2 sts=-1 et:
