From: "Sam James" <sam@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] repo/gentoo:master commit in: dev-lang/zig/
Date: Wed, 22 Nov 2023 11:38:07 +0000 (UTC)	[thread overview]
Message-ID: <1700653010.907ccc13308ae0393eb165b43d4fc5a9e5af0ae5.sam@gentoo> (raw)
commit:     907ccc13308ae0393eb165b43d4fc5a9e5af0ae5
Author:     Eric Joldasov <bratishkaerik <AT> getgoogleoff <DOT> me>
AuthorDate: Thu Nov 16 18:05:24 2023 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Wed Nov 22 11:36:50 2023 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=907ccc13
dev-lang/zig: add `llvm` USE-flag for 9999
See upstream PR https://www.github.com/ziglang/zig/pull/17994
and https://www.github.com/ziglang/zig/commit/f8b38a174f0c4a843688fe8adac09dc4f66cd585 .
LLVM-less build cannot build `sys-fs/ncdu` yet (no @cImport support), but we are close.
Signed-off-by: Eric Joldasov <bratishkaerik <AT> getgoogleoff.me>
Closes: https://github.com/gentoo/gentoo/pull/33868
Signed-off-by: Sam James <sam <AT> gentoo.org>
 dev-lang/zig/metadata.xml    |  3 +++
 dev-lang/zig/zig-9999.ebuild | 64 +++++++++++++++++++++++++++++++++++++-------
 2 files changed, 57 insertions(+), 10 deletions(-)
diff --git a/dev-lang/zig/metadata.xml b/dev-lang/zig/metadata.xml
index a5a5818faae7..ad21fd6654d5 100644
--- a/dev-lang/zig/metadata.xml
+++ b/dev-lang/zig/metadata.xml
@@ -9,6 +9,9 @@
 		<email>proxy-maint@gentoo.org</email>
 		<name>Proxy Maintainers</name>
 	</maintainer>
+	<use>
+		<flag name="llvm">Build with LLVM backend and extensions enabled.</flag>
+	</use>
 	<upstream>
 		<remote-id type="github">ziglang/zig</remote-id>
 		<bugs-to>https://github.com/ziglang/zig/issues</bugs-to>
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() {
next             reply	other threads:[~2023-11-22 11:38 UTC|newest]
Thread overview: 84+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-11-22 11:38 Sam James [this message]
  -- strict thread matches above, loose matches on Subject: below --
2025-10-23 15:39 [gentoo-commits] repo/gentoo:master commit in: dev-lang/zig/ Sam James
2025-10-16 19:04 Sam James
2025-09-01 10:31 Sam James
2025-07-01 22:07 Sam James
2025-06-13 10:39 Sam James
2025-05-31 21:29 Sam James
2025-05-21 21:54 Sam James
2025-05-21 21:54 Sam James
2025-05-10 18:03 Sam James
2025-04-11 10:03 Sam James
2025-03-05 11:40 Sam James
2025-03-04 22:09 Sam James
2025-02-17  1:52 Sam James
2025-02-16 16:29 Sam James
2025-02-16 16:25 Sam James
2025-02-16 16:25 Sam James
2025-02-16 16:25 Sam James
2025-02-16 16:25 Sam James
2025-02-16 16:25 Sam James
2024-12-15  9:47 Sam James
2024-11-06 13:35 Sam James
2024-09-21  7:41 Michał Górny
2024-08-05  7:38 Joonas Niilola
2024-05-20  7:49 Sam James
2024-05-20  7:49 Sam James
2024-05-19 15:21 Sam James
2024-02-28  9:12 Florian Schmaus
2024-02-11 16:02 Michał Górny
2023-12-13  7:47 Florian Schmaus
2023-09-26 15:54 Sam James
2023-08-25  3:58 Jakov Smolić
2023-07-27 11:45 Sam James
2023-07-26  3:33 Sam James
2023-05-13  3:28 Sam James
2023-05-13  3:28 Sam James
2023-04-07  4:19 Michał Górny
2023-03-10  7:00 Florian Schmaus
2023-03-09 17:56 Florian Schmaus
2023-03-09 10:54 Florian Schmaus
2023-03-09 10:54 Florian Schmaus
2023-03-09 10:54 Florian Schmaus
2023-01-20  3:54 Sam James
2023-01-20  1:17 Sam James
2023-01-14 19:17 Sam James
2022-12-14  9:20 Sam James
2022-11-08  4:09 Sam James
2022-11-07  6:52 Sam James
2022-11-07  6:52 Sam James
2022-10-30  9:40 Sam James
2022-10-20 23:34 Sam James
2022-10-15 15:18 Sam James
2022-09-19  3:40 Sam James
2022-08-22  8:18 Jakov Smolić
2022-08-22  8:18 Jakov Smolić
2022-05-27  7:45 Joonas Niilola
2022-05-27  7:45 Joonas Niilola
2022-04-30  8:13 Joonas Niilola
2022-04-17 20:05 Sam James
2022-03-29 10:50 Ionen Wolkens
2022-03-29  7:20 Joonas Niilola
2022-03-28  7:51 Florian Schmaus
2022-03-28  7:50 Florian Schmaus
2022-03-08 13:17 Florian Schmaus
2021-12-25 17:27 Arthur Zamarin
2021-12-25 10:21 Sam James
2021-12-25 10:20 Sam James
2021-11-21  9:52 Michał Górny
2021-11-05 13:39 罗百科
2021-10-30 23:32 Sam James
2021-10-30 23:32 Sam James
2021-07-03 15:46 Joonas Niilola
2021-07-03 15:46 Joonas Niilola
2021-07-03 15:46 Joonas Niilola
2021-03-06 12:25 Michał Górny
2021-03-04 17:42 Joonas Niilola
2021-01-04  2:10 Matt Turner
2020-01-06 12:23 Andreas Sturmlechner
2019-10-01  6:14 Joonas Niilola
2019-09-20 16:18 Joonas Niilola
2019-09-08 15:59 Joonas Niilola
2019-08-07 18:28 Joonas Niilola
2019-08-02  9:07 Joonas Niilola
2019-08-02  8:37 Joonas Niilola
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox
  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):
  git send-email \
    --in-reply-to=1700653010.907ccc13308ae0393eb165b43d4fc5a9e5af0ae5.sam@gentoo \
    --to=sam@gentoo.org \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY
  https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
  Be sure your reply has a Subject: header at the top and a blank line
  before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox