diff options
| author | Eric Joldasov <bratishkaerik@getgoogleoff.me> | 2023-01-23 10:09:15 +0600 |
|---|---|---|
| committer | Florian Schmaus <flow@gentoo.org> | 2023-03-09 11:53:57 +0100 |
| commit | 8fadfe488122a31156de1ea0118a4f9e7d7943f7 (patch) | |
| tree | 5dc77e0096f097de2b60a8a7be2c575fef69c5f1 /dev-lang/zig/zig-9999.ebuild | |
| parent | 0c82bebe7d8a44c57b0348a2bf2037e30cf409ec (diff) | |
| download | gentoo-8fadfe488122a31156de1ea0118a4f9e7d7943f7.tar.gz gentoo-8fadfe488122a31156de1ea0118a4f9e7d7943f7.tar.bz2 gentoo-8fadfe488122a31156de1ea0118a4f9e7d7943f7.zip | |
dev-lang/zig: slotting, initial support for setting ZIG_{MCPU,TARGET}
* Install Zig to "/usr/$(get_libdir)/zig/${PV}", handle
/usr/bin/zig via eselect-zig
* Add functions for getting ZIG_TARGET and ZIG_MCPU (user-provided or
defaults) and use them for building/testing
* Add "doc" USE flag for installing language reference and stdlib
documentation
Closes: https://bugs.gentoo.org/885861
Bug: https://bugs.gentoo.org/890234
Signed-off-by: Eric Joldasov <bratishkaerik@getgoogleoff.me>
Signed-off-by: Florian Schmaus <flow@gentoo.org>
Diffstat (limited to 'dev-lang/zig/zig-9999.ebuild')
| -rw-r--r-- | dev-lang/zig/zig-9999.ebuild | 82 |
1 files changed, 76 insertions, 6 deletions
diff --git a/dev-lang/zig/zig-9999.ebuild b/dev-lang/zig/zig-9999.ebuild index 04794281b8d8..17f5c3e65408 100644 --- a/dev-lang/zig/zig-9999.ebuild +++ b/dev-lang/zig/zig-9999.ebuild @@ -1,10 +1,10 @@ -# Copyright 2019-2022 Gentoo Authors +# Copyright 2019-2023 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 LLVM_MAX_SLOT=15 -inherit cmake llvm check-reqs +inherit edo cmake llvm check-reqs toolchain-funcs DESCRIPTION="A robust, optimal, and maintainable programming language" HOMEPAGE="https://ziglang.org/" @@ -17,7 +17,8 @@ else fi LICENSE="MIT" -SLOT="0" +SLOT="$(ver_cut 1-2)" +IUSE="doc" BUILD_DIR="${S}/build" @@ -34,10 +35,11 @@ DEPEND=" RDEPEND=" ${DEPEND} - !dev-lang/zig-bin + app-eselect/eselect-zig " # see https://github.com/ziglang/zig/issues/3382 +# For now, Zig Build System doesn't support enviromental CFLAGS/LDFLAGS/etc. QA_FLAGS_IGNORED="usr/bin/zig" # Since commit https://github.com/ziglang/zig/commit/e7d28344fa3ee81d6ad7ca5ce1f83d50d8502118 @@ -48,6 +50,46 @@ llvm_check_deps() { has_version "sys-devel/clang:${LLVM_SLOT}" } +ctarget_to_zigtarget() { + # Zig's Target Format: arch-os-abi + local CTARGET="${CTARGET:-${CHOST}}" + + local ZIG_ARCH + case "${CTARGET%%-*}" in + i?86) ZIG_ARCH=x86;; + sparcv9) ZIG_ARCH=sparc64;; + *) ZIG_ARCH="${CTARGET%%-*}";; # Same as in CHOST + esac + + local ZIG_OS + case "${CTARGET}" in + *linux*) ZIG_OS=linux;; + *apple*) ZIG_OS=macos;; + esac + + local ZIG_ABI + case "${CTARGET##*-}" in + gnu) ZIG_ABI=gnu;; + solaris*) ZIG_OS=solaris ZIG_ABI=none;; + darwin*) ZIG_ABI=none;; + *) ZIG_ABI="${CTARGET##*-}";; # Same as in CHOST + esac + + echo "${ZIG_ARCH}-${ZIG_OS}-${ZIG_ABI}" +} + +get_zig_mcpu() { + local ZIG_DEFAULT_MCPU=native + tc-is-cross-compiler && ZIG_DEFAULT_MCPU=baseline + echo "${ZIG_MCPU:-${ZIG_DEFAULT_MCPU}}" +} + +get_zig_target() { + local ZIG_DEFAULT_TARGET=native + tc-is-cross-compiler && ZIG_DEFAULT_TARGET="$(ctarget_to_zigtarget)" + echo "${ZIG_TARGET:-${ZIG_DEFAULT_TARGET}}" +} + pkg_setup() { llvm_pkg_setup check-reqs_pkg_setup @@ -57,13 +99,41 @@ src_configure() { local mycmakeargs=( -DZIG_USE_CCACHE=OFF -DZIG_SHARED_LLVM=ON - -DCMAKE_PREFIX_PATH=$(get_llvm_prefix ${LLVM_MAX_SLOT}) + -DZIG_TARGET_TRIPLE="$(get_zig_target)" + -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}" ) cmake_src_configure } +src_compile() { + cmake_src_compile + + if use doc; then + cd "${BUILD_DIR}" || die + edo ./zig2 run ../doc/docgen.zig -- --zig ./zig2 ../doc/langref.html.in "${S}/langref.html" + edo ./zig2 test ../lib/std/std.zig --zig-lib-dir ../lib -fno-emit-bin -femit-docs="${S}/std" + fi +} + src_test() { cd "${BUILD_DIR}" || die - ./zig2 build test -Dstatic-llvm=false -Denable-llvm=true -Dskip-non-native=true || die + local ZIG_TEST_ARGS="-Dstatic-llvm=false -Denable-llvm -Dskip-non-native \ + -Drelease -Dtarget=$(get_zig_target) -Dcpu=$(get_zig_mcpu)" + # TBF zig2 -> stage3/bin/zig when (if) https://github.com/ziglang/zig/pull/14255 will be merged + edo ./zig2 build test ${ZIG_TEST_ARGS} +} + +src_install() { + use doc && local HTML_DOCS=( "langref.html" "std" ) + cmake_src_install + + cd "${ED}/usr/$(get_libdir)/zig/${PV}/" || die + mv lib/zig/ lib2/ || die + rm -rf lib/ || die + mv lib2/ lib/ || die + dosym -r "/usr/$(get_libdir)/zig/${PV}/bin/zig" "/usr/bin/zig-${PV}" } |
