# Maintainer: Jan Alexander Steffens (heftig) <heftig@archlinux.org>

pkgname=cbindgen
pkgver=0.29.0
pkgrel=1
pkgdesc="A tool for generating C bindings to Rust code"
url="https://github.com/mozilla/cbindgen"
arch=(x86_64 aarch64)
license=(MPL-2.0)
depends=(
  gcc-libs
  glibc
)
makedepends=(
  cargo
  git
)
checkdepends=(
  cmake
  cython
  python
)
options=(!lto)
source=("git+$url#tag=v$pkgver")
b2sums=('6985ba725835c0ce031d6a3501aa50d13521a88d32186d6bcf8aac5c018588bd153253fa6f6d4a2c18d273e9bc6306ab7722793d4fc42bfe6d020b3c653c79c2')

prepare() {
  cd cbindgen
  cargo fetch --locked --target "$(rustc -vV | sed -n 's/host: //p')"
}

build() {
  cd cbindgen

  # Use debug
  export CARGO_PROFILE_RELEASE_DEBUG=2 CARGO_PROFILE_RELEASE_STRIP=false

  # Use LTO
  export CARGO_PROFILE_RELEASE_LTO=true CARGO_PROFILE_RELEASE_CODEGEN_UNITS=1

  cargo build --release --frozen
}

check() {
  cd cbindgen
  # Tests need nightly features
  RUSTC_BOOTSTRAP=1 cargo test --frozen
}

package() {
  cd cbindgen
  install -Dt "$pkgdir/usr/bin" target/release/cbindgen
  install -Dt "$pkgdir/usr/share/doc/$pkgname" -m644 CHANGES \
    {README,docs,internals}.md
}

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