You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gentoo-overlay/dev-lang/zig/zig-0.10.0.ebuild

82 lines
2.5 KiB

# Copyright 2019-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
LLVM_MAX_SLOT=15
inherit cmake llvm check-reqs
DESCRIPTION="A robust, optimal, and maintainable programming language"
HOMEPAGE="https://ziglang.org/"
if [[ ${PV} == 9999 ]]; then
EGIT_REPO_URI="https://github.com/ziglang/zig.git"
inherit git-r3
else
SRC_URI="https://ziglang.org/download/${PV}/${P}.tar.xz"
KEYWORDS="~amd64 ~arm ~arm64"
fi
LICENSE="MIT"
SLOT="0"
BUILD_DIR="${S}/build"
# Zig requires zstd and zlib compression support in LLVM, if using LLVM backend (non-LLVM backends don't require these).
# They are not required "on their own", so please don't add them here.
# You can check https://github.com/ziglang/zig-bootstrap in future, to see
# options that are passed to LLVM CMake building (excluding "static" ofc).
DEPEND="
sys-devel/clang:${LLVM_MAX_SLOT}=
sys-devel/lld:${LLVM_MAX_SLOT}=
sys-devel/llvm:${LLVM_MAX_SLOT}=[zstd]
"
RDEPEND="
${DEPEND}
!dev-lang/zig-bin
"
# see https://github.com/ziglang/zig/issues/3382
# For now, Zig doesn't support CFLAGS/LDFLAGS/etc.
QA_FLAGS_IGNORED="usr/bin/zig"
# see https://ziglang.org/download/0.10.0/release-notes.html#Self-Hosted-Compiler
# 0.10.0 release - ~9.6 GiB, since we use compiler written in C++ for bootstrapping
# 0.11.0 release - ~2.8 GiB, since we will (at least according to roadmap) use self-hosted compiler
# (transpiled to C via C backend) for bootstrapping
CHECKREQS_MEMORY="10G"
llvm_check_deps() {
has_version "sys-devel/clang:${LLVM_SLOT}"
}
pkg_setup() {
llvm_pkg_setup
check-reqs_pkg_setup
}
src_configure() {
local mycmakeargs=(
-DZIG_USE_CCACHE=OFF
-DZIG_SHARED_LLVM=ON
-DCMAKE_PREFIX_PATH=$(get_llvm_prefix ${LLVM_MAX_SLOT})
)
cmake_src_configure
}
src_test() {
cd "${BUILD_DIR}" || die
./zig2 build test -Dstatic-llvm=false -Denable-llvm=true -Dskip-non-native=true || die
}
pkg_postinst() {
elog "0.10.0 release introduces self-hosted compiler for general use by default"
elog "It means that your code can be un-compilable since this compiler has some new or removed features and new or fixed bugs"
elog "Upstream recommends using stage1 if experiencing such breakage,"
elog "until bugfix release 0.10.1 or release 0.11.0 where old compiler will be fully replaced"
elog "You can use old compiler by using '-fstage1' flag"
elog "Also see: https://ziglang.org/download/0.10.0/release-notes.html#Self-Hosted-Compiler"
elog "and https://ziglang.org/download/0.10.0/release-notes.html#How-to-Upgrade"
}