blob: 8cddd5a73d180c99e29c802a34025f9c3bca0130 [file] [log] [blame]
# Copyright 2021 The Chromium OS Authors. All rights reserved.
# Distributed under the terms of the GNU General Public License v2
EAPI=7
inherit toolchain-funcs
DESCRIPTION="A framework for Verilog RTL synthesis."
HOMEPAGE="https://yosyshq.net/yosys/"
GIT_REV="08c319fc352fb2670b7416b5fb16ddcb9a400049"
# These have to match Yosys Makefile's ABCREV and ABCURL variables.
ABC_GIT_REV="5f40c47"
ABC_GIT_URL="https://github.com/YosysHQ/abc"
SRC_URI="
https://github.com/YosysHQ/yosys/archive/${GIT_REV}.tar.gz -> yosys-${GIT_REV}.tar.gz
${ABC_GIT_URL}/archive/${ABC_GIT_REV}.tar.gz -> yosys-abc-${ABC_GIT_REV}.tar.gz
"
S="${WORKDIR}/${PN}-${GIT_REV}"
LICENSE="ISC"
SLOT="0/${PVR}"
KEYWORDS="*"
DEPEND=""
RDEPEND="${DEPEND} sci-electronics/iverilog"
PATCHES=(
"${FILESDIR}/yosys-fix-Makefile-tools.patch"
# workaround for https://github.com/YosysHQ/yosys/issues/3416
"${FILESDIR}/0001-Revert-nexus-Use-memory_libmap-pass.patch"
)
src_unpack() {
default
# Yosys' Makefile expects ABC in the 'abc' directory.
cd "${S}" || die
mv ../abc-* abc || die
# Make sure Makefile's ABCURL and ABCREV match ebuild ones.
if ! grep -q "^ABCURL.*= ${ABC_GIT_URL}" Makefile; then
die "ABC git URL mismatch between ebuild and Yosys' Makefile!"
fi
if ! grep -q "^ABCREV.*= ${ABC_GIT_REV}" Makefile; then
die "ABC git revision mismatch between ebuild and Yosys' Makefile!"
fi
}
src_configure() {
cat >> Makefile.conf <<-EOF
# ABC from 'abc' dir will be used
ABCREV := default
LD := $(tc-getCXX)
PKG_CONFIG := $(tc-getPKG_CONFIG)
PREFIX := /usr
# Prevent stripping
STRIP := :
EOF
}
# The default function doesn't call it because 'emake test -n' fails.
src_test() {
emake test
}