# Maintainer: Stefan Biereigel <$(base64 --decode <<<'c3RlZmFuQGJpZXJlaWdlbC5kZQo=')>
# Contributor: xiretza <xiretza+aur@gmail.com>
# Contributor: Patrick Lloyd <$(base64 --decode <<<'cGF0cmlja0BsbG95ZC5zaAo=')>
# Contributor: Sebastian Bøe <$(base64 --decode <<<'c2ViYXN0aWFuYm9vZUBnbWFpbC5jb20K')>
# Contributor: Darren Wu <$(base64 --decode <<<'ZGFycmVuMTk5NzA4MTBAZ21haWwuY29tCg==')>

pkgname=yosys-git
pkgrel=1
pkgver=0.67.r17605.468ba27d91
pkgdesc='A framework for RTL synthesis'
arch=('armv7h' 'aarch64' 'x86_64' 'i686')
url='https://yosyshq.net/yosys/'
license=('custom:ISC')
provides=("yosys=$pkgver")
conflicts=("yosys")
depends=('bash' 'tcl' 'libffi' 'protobuf') # boost-libs python (added in package())
makedepends=('git' 'boost' 'cmake' 'ninja' 'clang' 'python'
             'pybind11' 'python-cxxheaderparser')
optdepends=('graphviz: Schematics display support'
            'xdot: Display netlists'
            'yices: default solver for yosys-smtbmc'
            'cvc4: alternative solver for yosys-smtbmc'
            'z3: alternative solver for yosys-smtbmc')
options=('!lto') # getting SIGSEGV when running the tests with LTO
source=('git+https://github.com/YosysHQ/yosys.git')
sha512sums=('SKIP')

pkgver() {
  cd yosys
  _yosys_ver=$(
    cmake -DCMAKE_MODULE_PATH=${PWD}/cmake -P /dev/stdin 2>&1 <<EOF
include(YosysVersionData)
message("\${YOSYS_VERSION_MAJOR}.\${YOSYS_VERSION_MINOR}")
EOF
  )

  printf "%s.r%s.%s" "${_yosys_ver}" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)"
}

prepare() {
  cd yosys

  git submodule init
  git submodule update
}

build() {
  cd yosys

  cmake . -B build -DCMAKE_BUILD_TYPE=None \
        -G Ninja \
        -DCMAKE_INSTALL_PREFIX='/usr' \
        -DBUILD_TESTING=Off \
        -Wno-author \
        -DYOSYS_INSTALL_DRIVER=ON \
        -DYOSYS_INSTALL_LIBRARY=ON \
        -DYOSYS_INSTALL_PYTHON=ON \
        -DYOSYS_WITH_PYTHON=ON \
        -DYOSYS_ENABLE_TCL=On \
        -DYOSYS_ENABLE_ABC=On \
        -DYOSYS_ENABLE_GLOB=On \
        -DYOSYS_ENABLE_PLUGINS=On \
        -DYOSYS_ENABLE_ZLIB=On \
        -DYOSYS_ENABLE_PYTHON=On

  cmake --build build
}

package() {
  cd yosys

  DESTDIR="${pkgdir}" cmake --install build

  install -Dm644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"

  boostver=$(objdump -p /usr/lib/libboost_thread.so | \
               grep SONAME | sed -e 's/.*boost_thread\.so\.//')
  [[ $boostver =~ ^([0-9]*)\.([0-9]*)\.([0-9]*) ]]
  maj_ver=${BASH_REMATCH[1]}
  min_ver=${BASH_REMATCH[2]}
  patch_ver=${BASH_REMATCH[3]}
  ((next_min=min_ver + 1))
  depends+=("boost-libs>=${maj_ver}.${min_ver}.${patch_ver}"
            "boost-libs<${maj_ver}.${next_min}.0")

  pymin_ver=$(python -c 'import sys; print(sys.version_info.minor)')
  ((pynext_min=pymin_ver + 1))
  depends+=("python>=3.${pymin_ver}.0" "python<3.${pynext_min}.0")
}
