From nobody Fri Aug 29 17:31:13 2025 X-Original-To: dev-commits-ports-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4cD50K23K6z65t8h; Fri, 29 Aug 2025 17:31:13 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4cD50K1YTrz3HbL; Fri, 29 Aug 2025 17:31:13 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1756488673; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=JyQdZpkatqB19oeUqq/ZjSTkJZoa6uXXnyeOXHD+9hk=; b=scD6MfnXo8OmUEGIaenDnEVde+yTBcYDa1skSYzOfXUfpnjY/3QO/YJAF8gZh1lWc7zEs5 Tk7rlVHRG7ZeKrg3EygDVjUP0VLrsKL8ME7deNeNBBjXyr6gSXJ6+eVc7k8q7kaBdTourP 0UVTxBLOL+4/VKz0YGeEXjx7TDxcizkcpSByVelj8rTj1NEa3CXzjpqYJstMCJ4hlBP1x2 nQO4UGOg6BBtAYjoFNJOnNDDeLzbE0ldaIbTK3U1cP5b0/hjvPURaith6rCeEN7mO3GZIM EXyv0ihugMNAfCIGeTYqeHfg/jkyIV9XmZFff9+cA2Iegv9MU2A7B5YF3F8klA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1756488673; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=JyQdZpkatqB19oeUqq/ZjSTkJZoa6uXXnyeOXHD+9hk=; b=UNbE0D3LQKWMO2vaGfzB66EvTvZ8UA537suCtI/nRyQIHTy5+bukbvsvv8fnyPYUHZCEbe y94k1aOScI/KEQKtX//6SZHWbaF3xBgbt2ZPJqSQfStpigZfZmmeA5QYNheFLzR537s2NN 0UtjklZovkpK9fxpjW2uMQdllNXo7sIo6rPmZ4goKnBulsQZwCrk65z7RSJ8ylDI03VWRY TYK44mdKvOMBO1rwCW4AzVb4ElgirisGeSbjsWjNHDQPaxw6WAkhQMZ6fJdljJ9E0mogge gBsxQ+kYgukxsbOQsg/1ejcZVqjNVfeRnCCdAMMjnWdg28oU2TX59/+IlOmDkA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1756488673; a=rsa-sha256; cv=none; b=NhAV9WrgvS1qcE9t9gLO//FVEjpP8U0LL1aDTXh0LagiGWJJ+lxSQ+fl2fOUIQMJps9UqO iKhuBmJgpJc1onMhTdV43W1yUYE+TsaU0PQQZEbqOls//lVOXIREjXDliXak5Lrh6Snbi6 yNQCEYuDkh2FnxMiv5ZjEYbAoqKnwhauZcdlpjoWDpvj49nlu8RXsQVxkcC3CE3tZ7z5nW HD0Uvip05ckmgz9Z8+m/gYsMfspIjaEaT0tw/PYr6Xl4ThOLVD5B04Bwu4rfJhljqEMd8Z RwIcmRtXUguWX6GA+/I0lbss8Zu0XW01hQQTC73pP9GJgJacbXMOQJwciuZO1g== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4cD50K15WCzq6M; Fri, 29 Aug 2025 17:31:13 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 57THVDEB057628; Fri, 29 Aug 2025 17:31:13 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 57THVDkK057625; Fri, 29 Aug 2025 17:31:13 GMT (envelope-from git) Date: Fri, 29 Aug 2025 17:31:13 GMT Message-Id: <202508291731.57THVDkK057625@gitrepo.freebsd.org> To: ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org From: Gleb Popov Subject: git: 2d27a0b0097c - main - Uses/zig.mk: Introduce Zig language support to the framework List-Id: Commits to the main branch of the FreeBSD ports repository List-Archive: https://lists.freebsd.org/archives/dev-commits-ports-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-ports-main@freebsd.org Sender: owner-dev-commits-ports-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: arrowd X-Git-Repository: ports X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 2d27a0b0097ca2ddd1e24cb5c656126d64b092a4 Auto-Submitted: auto-generated The branch main has been updated by arrowd: URL: https://cgit.FreeBSD.org/ports/commit/?id=2d27a0b0097ca2ddd1e24cb5c656126d64b092a4 commit 2d27a0b0097ca2ddd1e24cb5c656126d64b092a4 Author: Gleb Popov AuthorDate: 2025-07-04 18:19:19 +0000 Commit: Gleb Popov CommitDate: 2025-08-29 17:31:07 +0000 Uses/zig.mk: Introduce Zig language support to the framework Approved by: mat (portmgr) Differential Revision: https://reviews.freebsd.org/D51165 --- Mk/Uses/zig.mk | 102 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ Mk/bsd.options.mk | 7 ++++ 2 files changed, 109 insertions(+) diff --git a/Mk/Uses/zig.mk b/Mk/Uses/zig.mk new file mode 100644 index 000000000000..5727a812fede --- /dev/null +++ b/Mk/Uses/zig.mk @@ -0,0 +1,102 @@ +# Provide support for building Zig software. +# +# Feature: zig +# Usage: USES=zig + +# Variables, which can be set by the port: +# +# ZIG_TUPLE List of Zig dependencies required to build the port. +# Each item is triplet of an arbitrary name, an URL without +# scheme part (https://) and a directory name where the +# expects this dependency to be placed. +# This knob can be generated by running make make-zig-tuple +# You might need to run this multiple time until all +# transitive dependencies get pulled in. +# +# MAINTAINER: ports@FreeBSD.org + +.if !defined(_INCLUDE_USES_ZIG_MK) +_INCLUDE_USES_ZIG_MK= yes + +. if !empty(zig_ARGS) +IGNORE= USES=zig does not accept arguments +. endif + +.sinclude "${MASTERDIR}/Makefile.zig" + +ZIG_CMD?= zig +ZIG_PORT?= lang/zig +ZIG_DEPSDIR= ${WRKDIR}/zig-packages +ZIG_TMPDEPSDIR= ${WRKDIR}/zig-packages-tmp + +ZIG_CPUTYPE_DEFAULT= ${ARCH:S/amd64/x86_64/} +ZIG_CPUTYPE?= ${CPUTYPE:U${ZIG_CPUTYPE_DEFAULT}} + +_ZIG2TUPLE_CMD= zig2tuple + +BUILD_DEPENDS+= ${ZIG_CMD}:${ZIG_PORT} + +DIST_SUBDIR?= zig + +. for z in ${ZIG_TUPLE} +. for group url dir in ${z:S/:/ /g:tw} +MASTER_SITES+= https://${url:H}/:${group} +DISTFILES+= ${url:T}:${group} +. endfor +. endfor + +_USES_extract= 299:zig-pre-extract + +# Generates ZIG_TUPLE= ... line ready to be pasted into the port based on +# build.zig.zon files found in ${WRKSRC} +make-zig-tuple: check-zig2tuple + @${ECHO_MSG} "===> Processing build.zig.zon files" + ${_ZIG2TUPLE_CMD} ${WRKDIR} + +check-zig2tuple: + @if ! type ${_ZIG2TUPLE_CMD} > /dev/null 2>&1; then \ + ${ECHO_MSG} "===> zig2tuple executable not found, install \"ports-mgmt/zig2tuple\""; exit 1; \ + fi + +# Main targets implementation. + +zig-pre-extract: + @${ECHO_CMD} "===> Extracting zig dependencies" +# We don't know the name of the directory that is contained in the archive, +# but we need to rename it into the last component of the tuple +# To solve this we extract into an empty directory and then do +# mv * /path/where/we/want/it + @${MKDIR} ${ZIG_DEPSDIR} ${ZIG_TMPDEPSDIR} +. for z in ${ZIG_TUPLE} +. for group url dir in ${z:S/:/ /g:tw} + ${MAKE} -C ${.CURDIR} do-extract EXTRACT_ONLY=${url:T} WRKDIR=${ZIG_TMPDEPSDIR} + ${MV} ${ZIG_TMPDEPSDIR}/* ${ZIG_DEPSDIR}/${dir} +. endfor +. endfor + @${RMDIR} ${ZIG_TMPDEPSDIR} + +ZIG_ENV+= DESTDIR=${STAGEDIR} +ZIG_ARGS+= --prefix ${PREFIX} --system ${ZIG_DEPSDIR} --verbose \ + -Dcpu=${ZIG_CPUTYPE} \ + ${"${WITH_DEBUG}" != "":?:--release=fast} \ + ${"${WITH_DEBUG}" != "":?-Doptimize=Debug:-Doptimize=ReleaseSmall} \ + ${ZIG_ARGS_${FLAVOR}} +DO_MAKE_BUILD?= ${SETENVI} ${WRK_ENV} ${ZIG_ENV} ${ZIG_CMD} build \ + ${_MAKE_JOBS} ${ZIG_ARGS} +. if !target(do-build) +do-build: + @${DO_NADA} +. endif + +. if !target(do-install) +do-install: + @(cd ${BUILD_WRKSRC}; if ! ${DO_MAKE_BUILD}; then \ + if [ -n "${BUILD_FAIL_MESSAGE}" ] ; then \ + ${ECHO_MSG} "===> Compilation failed unexpectedly."; \ + (${ECHO_CMD} "${BUILD_FAIL_MESSAGE}") | ${FMT_80} ; \ + fi; \ + ${FALSE}; \ + fi) +. endif + +.endif diff --git a/Mk/bsd.options.mk b/Mk/bsd.options.mk index 3b4b2dd4d300..38f1492f0dbd 100644 --- a/Mk/bsd.options.mk +++ b/Mk/bsd.options.mk @@ -198,6 +198,7 @@ _ALL_OPTIONS_HELPERS= ${_OPTIONS_DEPENDS:S/$/_DEPENDS/} \ CONFIGURE_WITH IMPLIES MESON_ARGS MESON_DISABLED \ MESON_ENABLED MESON_FALSE MESON_OFF MESON_ON MESON_TRUE \ PREVENTS PREVENTS_MSG QMAKE_OFF QMAKE_ON \ + ZIG_BOOL ZIG_BOOL_OFF \ SUBPACKAGES SUBPACKAGES_OFF USE USE_OFF VARS VARS_OFF # The format here is target_family:priority:target-type @@ -544,6 +545,9 @@ MESON_ARGS+= ${${opt}_MESON_DISABLED:C/.*/-D&=disabled/} . if defined(${opt}_CABAL_FLAGS) CABAL_FLAGS+= ${${opt}_CABAL_FLAGS} . endif +. if defined(${opt}_ZIG_BOOL) +ZIG_ARGS+= ${${opt}_ZIG_BOOL:C/.*/-D&=true/} +. endif . for configure in CONFIGURE CMAKE MESON QMAKE . if defined(${opt}_${configure}_ON) ${configure}_ARGS+= ${${opt}_${configure}_ON} @@ -620,6 +624,9 @@ MESON_ARGS+= ${${opt}_MESON_DISABLED:C/.*/-D&=enabled/} . if defined(${opt}_CABAL_FLAGS) CABAL_FLAGS+= -${${opt}_CABAL_FLAGS} . endif +. if defined(${opt}_ZIG_BOOL) +ZIG_ARGS+= ${${opt}_ZIG_BOOL:C/.*/-D&=false/} +. endif . for configure in CONFIGURE CMAKE MESON QMAKE . if defined(${opt}_${configure}_OFF) ${configure}_ARGS+= ${${opt}_${configure}_OFF}