diff options
author | V3n3RiX <venerix@koprulu.sector> | 2023-11-22 17:18:34 +0000 |
---|---|---|
committer | V3n3RiX <venerix@koprulu.sector> | 2023-11-22 17:18:34 +0000 |
commit | fd87b7c771378b2116981e3924bee5805148e118 (patch) | |
tree | 91ed28393c7b534787d3c073e269fe598d0fd535 /dev-lang/zig/zig-9999.ebuild | |
parent | 77b74be093bdf4a0ed4121acc3f8e229103cf004 (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.ebuild | 64 |
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() { |