summaryrefslogtreecommitdiff
path: root/dev-lang/zig/zig-9999.ebuild
diff options
context:
space:
mode:
authorV3n3RiX <venerix@koprulu.sector>2023-11-22 17:18:34 +0000
committerV3n3RiX <venerix@koprulu.sector>2023-11-22 17:18:34 +0000
commitfd87b7c771378b2116981e3924bee5805148e118 (patch)
tree91ed28393c7b534787d3c073e269fe598d0fd535 /dev-lang/zig/zig-9999.ebuild
parent77b74be093bdf4a0ed4121acc3f8e229103cf004 (diff)
gentoo auto-resync : 22:11:2023 - 17:18:34
Diffstat (limited to 'dev-lang/zig/zig-9999.ebuild')
-rw-r--r--dev-lang/zig/zig-9999.ebuild64
1 files changed, 54 insertions, 10 deletions
diff --git a/dev-lang/zig/zig-9999.ebuild b/dev-lang/zig/zig-9999.ebuild
index 9605234cfc43..6e98f73a3af4 100644
--- a/dev-lang/zig/zig-9999.ebuild
+++ b/dev-lang/zig/zig-9999.ebuild
@@ -29,7 +29,8 @@ fi
# lib/libc/glibc: BSD HPND ISC inner-net LGPL-2.1+
LICENSE="MIT Apache-2.0-with-LLVM-exceptions || ( UoI-NCSA MIT ) || ( Apache-2.0-with-LLVM-exceptions Apache-2.0 MIT BSD-2 ) public-domain BSD-2 ZPL ISC HPND BSD inner-net LGPL-2.1+"
SLOT="$(ver_cut 1-2)"
-IUSE="doc"
+IUSE="doc +llvm"
+REQUIRED_USE="!llvm? ( !doc )"
BUILD_DIR="${S}/build"
@@ -39,9 +40,11 @@ BUILD_DIR="${S}/build"
# 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]
+ llvm? (
+ sys-devel/clang:${LLVM_MAX_SLOT}=
+ sys-devel/lld:${LLVM_MAX_SLOT}=
+ sys-devel/llvm:${LLVM_MAX_SLOT}=[zstd]
+ )
"
RDEPEND="
@@ -54,6 +57,8 @@ IDEPEND="app-eselect/eselect-zig"
# For now, Zig Build System doesn't support enviromental CFLAGS/LDFLAGS/etc.
QA_FLAGS_IGNORED="usr/.*/zig/${PV}/bin/zig"
+RESTRICT="!llvm? ( test )"
+
# Since commit https://github.com/ziglang/zig/commit/e7d28344fa3ee81d6ad7ca5ce1f83d50d8502118
# Zig uses self-hosted compiler only
CHECKREQS_MEMORY="4G"
@@ -103,14 +108,31 @@ get_zig_target() {
}
pkg_setup() {
- llvm_pkg_setup
+ # Useful for debugging and a little bit more deterministic.
+ export ZIG_LOCAL_CACHE_DIR="${T}/zig-local-cache"
+ export ZIG_GLOBAL_CACHE_DIR="${T}/zig-global-cache"
+
+ export ZIG_SYS_INSTALL_DEST="${EPREFIX}/usr/$(get_libdir)/zig/${PV}"
+
+ use llvm && llvm_pkg_setup
check-reqs_pkg_setup
}
src_configure() {
- # Useful for debugging and a little bit more deterministic.
- export ZIG_LOCAL_CACHE_DIR="${T}/zig-local-cache"
- export ZIG_GLOBAL_CACHE_DIR="${T}/zig-global-cache"
+ if ! use llvm; then
+ mkdir -p "${BUILD_DIR}/stage3" || die
+ # Currently, Zig without LLVM extensions lacks most optimizations.
+ export ZIG_BOOTSTRAP_STAGE3_FLAGS=(
+ -Dtarget="$(get_zig_target)"
+ -Dcpu="$(get_zig_mcpu)"
+ -Doptimize=Debug
+ -Dno-autodocs
+ -Dno-langref
+ -Denable-llvm=false
+ -Dforce-link-libc
+ )
+ return
+ fi
local mycmakeargs=(
-DZIG_USE_CCACHE=OFF
@@ -119,13 +141,20 @@ src_configure() {
-DZIG_TARGET_MCPU="$(get_zig_mcpu)"
-DZIG_USE_LLVM_CONFIG=ON
-DCMAKE_PREFIX_PATH="$(get_llvm_prefix ${LLVM_MAX_SLOT})"
- -DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/$(get_libdir)/zig/${PV}"
+ -DCMAKE_INSTALL_PREFIX="${ZIG_SYS_INSTALL_DEST}"
)
cmake_src_configure
}
src_compile() {
+ if ! use llvm; then
+ $(tc-getCC) -o bootstrap bootstrap.c || die "Zig's bootstrap.c compilation failed"
+ edob ./bootstrap
+ edo ./zig2 build install --prefix "${BUILD_DIR}/stage3/" "${ZIG_BOOTSTRAP_STAGE3_FLAGS[@]}"
+ return
+ fi
+
cmake_src_compile
"${BUILD_DIR}/stage3/bin/zig" env || die "Zig compilation failed"
@@ -154,8 +183,15 @@ src_test() {
}
src_install() {
+ local DOCS=( "README.md" "doc/build.zig.zon.md" )
use doc && local HTML_DOCS=( "docgen/doc/langref.html" "docgen/doc/std" )
- cmake_src_install
+
+ if ! use llvm; then
+ DESTDIR="${D}" edo ./zig2 build install --prefix "${ZIG_SYS_INSTALL_DEST}" "${ZIG_BOOTSTRAP_STAGE3_FLAGS[@]}"
+ einstalldocs
+ else
+ cmake_src_install
+ fi
cd "${ED}/usr/$(get_libdir)/zig/${PV}/" || die
mv lib/zig/ lib2/ || die
@@ -166,6 +202,14 @@ src_install() {
pkg_postinst() {
eselect zig update ifunset
+
+ if ! use llvm; then
+ elog "Currently, Zig built without LLVM support lacks some"
+ elog "important features such as most optimizations, @cImport, etc."
+ elog "They are listed under \"Building from Source without LLVM\""
+ elog "section of the README file from \"/usr/share/doc/${PF}\" ."
+ elog "It's recommended to use C backend directly with this stage2 build."
+ fi
}
pkg_postrm() {