Install this version:
emerge -a =sys-devel/qbe-1.2-r1
If this version is masked, you can unmask it using the autounmask tool or standard emerge options:
autounmask =sys-devel/qbe-1.2-r1
Or alternatively:
emerge --autounmask-write -a =sys-devel/qbe-1.2-r1
# Copyright 2021-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit toolchain-funcs
if [[ ${PV} == 9999 ]]; then
EGIT_REPO_URI="git://c9x.me/qbe.git"
inherit git-r3
else
SRC_URI="https://c9x.me/compile/release/${P}.tar.xz"
# 64-bit RISC-V only
KEYWORDS="~amd64 ~arm64 ~riscv"
fi
DESCRIPTION="Pure-C embeddable compiler backend"
HOMEPAGE="https://c9x.me/compile/"
LICENSE="MIT"
SLOT="0"
DOCS=( README doc )
src_prepare() {
default
sed -i 's;^CC *=.*;CC ?= cc;' Makefile || die
# Needs to exec test binaries and /tmp can be mounted noexec
sed -i "s;^tmp=/tmp/;tmp=${T}/;" tools/test.sh || die
}
src_configure() {
# qbe's Makefile uses uname(1), leading to wrong default
# target when cross-compiling
if use elibc_Darwin; then
case ${CTARGET:-$CHOST} in
*aarch64*) echo '#define Deftgt T_arm64_apple' ;;
*x86_64*) echo '#define Deftgt T_amd64_apple' ;;
*) die "Unsupported target ${CTARGET:-$CHOST}" ;;
esac
else
case ${CTARGET:-$CHOST} in
*aarch64*) echo '#define Deftgt T_arm64' ;;
*riscv64*) echo '#define Deftgt T_rv64' ;;
*x86_64*) echo '#define Deftgt T_amd64_sysv' ;;
*) die "Unsupported target ${CTARGET:-$CHOST}" ;;
esac
fi > config.h || die
}
src_compile() {
tc-export CC
emake CFLAGS="-std=c99 ${CPPFLAGS} ${CFLAGS}"
}
src_install() {
einstalldocs
emake install DESTDIR="${ED}" PREFIX=/usr
}