From nobody Sun Aug 27 05:58:46 2023 X-Original-To: dev-commits-src-all@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 4RYNLV3b1Kz4rWsk; Sun, 27 Aug 2023 05:59:30 +0000 (UTC) (envelope-from freebsd@walstatt-de.de) Received: from smtp052.goneo.de (smtp052.goneo.de [85.220.129.60]) (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 mx1.freebsd.org (Postfix) with ESMTPS id 4RYNLT36YHz4Rrf; Sun, 27 Aug 2023 05:59:29 +0000 (UTC) (envelope-from freebsd@walstatt-de.de) Authentication-Results: mx1.freebsd.org; none Received: from hub1.goneo.de (hub1.goneo.de [IPv6:2001:1640:5::8:52]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by smtp5.goneo.de (Postfix) with ESMTPS id 0AB5210A32CA; Sun, 27 Aug 2023 07:59:21 +0200 (CEST) Received: from hub1.goneo.de (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by hub1.goneo.de (Postfix) with ESMTPS id D4581105C5E0; Sun, 27 Aug 2023 07:59:14 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=walstatt-de.de; s=DKIM001; t=1693115954; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=RVQxwOqW9IJrWhR7XztaUeOtPSzQCl9Cc7CUxSZ+DKM=; b=BJMlMszTCZcFLcNBu9QRuvvbwxUyCqC3R2l3Yd38tVWhvoWoK5RIGtRt+XKRdsqyEguiGL cbrT7i3jhPxC1A21ME61SjPhnlpVm15gUMTq0XLWrUDswV2ogDH/LGYIUdhvcoRcwzMc5I MoP47JGlpoo5uZ15BQa2LbtZlLb+NE0eAbaxgHQUVGUmOlgwWBGRkF9Od6tgBEsEgKWDSQ EwuX7kmxdcquwcl4CheXP86md7oJW98XWk9SoFj0MrRl5RuG8GqR3yorYu6DBHPoNs2UOI 9wq6Prbu9wZl059XpbS/bx7jIY2eLDJ2N3p470PLs/CxNcC7raK/nTlahFcdoA== Received: from thor.intern.walstatt.dynvpn.de (dynamic-077-191-035-139.77.191.pool.telefonica.de [77.191.35.139]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by hub1.goneo.de (Postfix) with ESMTPSA id 879B8105C5C1; Sun, 27 Aug 2023 07:59:14 +0200 (CEST) Date: Sun, 27 Aug 2023 07:58:46 +0200 From: FreeBSD User To: Martin Matuska Cc: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Subject: Re: git: 315ee00fa961 - main - zfs: merge openzfs/zfs@804414aad Message-ID: <20230827075913.36151ef6@thor.intern.walstatt.dynvpn.de> In-Reply-To: <202308270509.37R596B5048298@gitrepo.freebsd.org> References: <202308270509.37R596B5048298@gitrepo.freebsd.org> Organization: walstatt-de.de List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-Rspamd-UID: 4fa149 X-Rspamd-UID: e18779 X-Rspamd-Queue-Id: 4RYNLT36YHz4Rrf X-Spamd-Bar: ---- X-Rspamd-Pre-Result: action=no action; module=replies; Message is reply to one we originated X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[]; ASN(0.00)[asn:25394, ipnet:85.220.128.0/17, country:DE] Am Sun, 27 Aug 2023 05:09:06 GMT Martin Matuska schrieb: After updating my CURRENT with this new ZFS code, on reboot all pools do not import automatically anymore as it has been before. Did I miss something? Kind regrads, oh > The branch main has been updated by mm: > > URL: https://cgit.FreeBSD.org/src/commit/?id=315ee00fa9616b0a192b6834911f98bcf5316a6b > > commit 315ee00fa9616b0a192b6834911f98bcf5316a6b > Merge: b3a714652ff0 804414aad224 > Author: Martin Matuska > AuthorDate: 2023-08-26 21:20:04 +0000 > Commit: Martin Matuska > CommitDate: 2023-08-26 21:51:42 +0000 > > zfs: merge openzfs/zfs@804414aad > > Notable upstream pull request merges: > #15024 Add missed DMU_PROJECTUSED_OBJECT prefetch > #15029 Do not request data L1 buffers on scan prefetch > #15036 FreeBSD: catch up to __FreeBSD_version 1400093 > #15039 Fix raw receive with different indirect block size > #15047 FreeBSD: Fix build on stable/13 after 1302506 > #15049 Fix the ZFS checksum error histograms with larger record sizes > #15052 Reduce bloat in ereport.fs.zfs.checksum events > #15056 Avoid extra snprintf() in dsl_deadlist_merge() > #15061 Ignore pool ashift property during vdev attachment > #15063 Don't panic if setting vdev properties is unsupported for this vdev type > #15067 spa_min_alloc should be GCD, not min > #15071 Add explicit prefetches to bpobj_iterate() > #15072 Adjust prefetch parameters > #15076 Refactor dmu_prefetch() > #15079 set autotrim default to 'off' everywhere > #15080 ZIL: Fix config lock deadlock > #15088 metaslab: tuneable to better control force ganging > #15096 Avoid waiting in dmu_sync_late_arrival() > #15097 BRT should return EOPNOTSUPP > #15103 Remove zl_issuer_lock from zil_suspend() > #15107 Remove fastwrite mechanism > #15113 libzfs: sendrecv: send_progress_thread: handle SIGINFO/SIGUSR1 > #15122 ZIL: Second attempt to reduce scope of zl_issuer_lock > #15129 zpool_vdev_remove() should handle EALREADY error return > #15132 ZIL: Replay blocks without next block pointer > #15148 zfs_clone_range should return descriptive error codes > #15153 ZIL: Avoid dbuf_read() before dmu_sync() > #15172 copy_file_range: fix fallback when source create on same txg > #15180 Update outdated assertion from zio_write_compress > > Obtained from: OpenZFS > OpenZFS commit: 804414aad224b432590afe3f9ec114ffb49e0f13 > > Makefile.inc1 | 5 +- > cddl/lib/libzfs/Makefile | 1 + > cddl/lib/libzfs/Makefile.depend | 1 + > rescue/rescue/Makefile | 2 +- > rescue/rescue/Makefile.depend | 1 + > share/mk/src.libnames.mk | 2 +- > sys/contrib/openzfs/META | 6 +- > sys/contrib/openzfs/cmd/zdb/zdb.c | 77 ++- > sys/contrib/openzfs/cmd/zed/agents/zfs_mod.c | 2 - > sys/contrib/openzfs/cmd/zed/agents/zfs_retire.c | 5 + > .../openzfs/cmd/zed/zed.d/statechange-slot_off.sh | 61 ++ > sys/contrib/openzfs/cmd/zed/zed.d/zed.rc | 5 + > sys/contrib/openzfs/cmd/ztest.c | 2 +- > sys/contrib/openzfs/config/Shellcheck.am | 3 +- > sys/contrib/openzfs/config/kernel-blkdev.m4 | 138 +++- > .../config/kernel-block-device-operations.m4 | 35 +- > .../openzfs/config/kernel-filemap-splice-read.m4 | 25 + > .../openzfs/config/kernel-register_sysctl_table.m4 | 27 + > .../config/kernel-vfs-extended-file_range.m4 | 50 ++ > .../openzfs/config/kernel-vfs-file_range.m4 | 164 +++++ > sys/contrib/openzfs/config/kernel-vfs-iov_iter.m4 | 26 +- > sys/contrib/openzfs/config/kernel.m4 | 16 + > sys/contrib/openzfs/contrib/debian/changelog | 6 + > .../contrib/debian/openzfs-zfs-test.install | 2 - > .../contrib/debian/openzfs-zfsutils.install | 2 + > .../contrib/dracut/90zfs/zfs-env-bootfs.service.in | 11 +- > .../dracut/90zfs/zfs-rollback-bootfs.service.in | 2 +- > .../openzfs/include/os/freebsd/spl/sys/vnode.h | 6 +- > .../include/os/linux/kernel/linux/blkdev_compat.h | 17 + > .../openzfs/include/os/linux/spl/sys/kmem_cache.h | 8 + > .../openzfs/include/os/linux/spl/sys/types.h | 2 +- > sys/contrib/openzfs/include/os/linux/spl/sys/uio.h | 12 + > sys/contrib/openzfs/include/os/linux/zfs/sys/zpl.h | 53 ++ > sys/contrib/openzfs/include/sys/bpobj.h | 2 +- > sys/contrib/openzfs/include/sys/brt.h | 1 + > sys/contrib/openzfs/include/sys/dmu.h | 5 + > sys/contrib/openzfs/include/sys/dmu_impl.h | 2 - > sys/contrib/openzfs/include/sys/dmu_zfetch.h | 2 - > sys/contrib/openzfs/include/sys/fm/fs/zfs.h | 4 - > sys/contrib/openzfs/include/sys/metaslab.h | 3 - > sys/contrib/openzfs/include/sys/metaslab_impl.h | 6 +- > sys/contrib/openzfs/include/sys/spa_impl.h | 1 + > sys/contrib/openzfs/include/sys/vdev_impl.h | 2 +- > sys/contrib/openzfs/include/sys/zil_impl.h | 44 +- > sys/contrib/openzfs/include/sys/zio.h | 1 - > sys/contrib/openzfs/include/sys/zio_checksum.h | 2 - > sys/contrib/openzfs/lib/libzfs/Makefile.am | 2 +- > sys/contrib/openzfs/lib/libzfs/libzfs_pool.c | 6 + > sys/contrib/openzfs/lib/libzfs/libzfs_sendrecv.c | 95 ++- > sys/contrib/openzfs/man/man4/zfs.4 | 10 +- > sys/contrib/openzfs/man/man8/zfs-send.8 | 18 +- > sys/contrib/openzfs/man/man8/zpool-events.8 | 23 +- > sys/contrib/openzfs/module/Kbuild.in | 1 + > .../openzfs/module/os/freebsd/zfs/zfs_vnops_os.c | 10 +- > sys/contrib/openzfs/module/os/linux/spl/spl-proc.c | 26 +- > .../openzfs/module/os/linux/zfs/vdev_disk.c | 65 +- > .../openzfs/module/os/linux/zfs/zfs_ctldir.c | 26 +- > .../openzfs/module/os/linux/zfs/zfs_vfsops.c | 7 + > .../openzfs/module/os/linux/zfs/zfs_vnops_os.c | 9 +- > .../openzfs/module/os/linux/zfs/zfs_znode.c | 8 + > .../openzfs/module/os/linux/zfs/zpl_ctldir.c | 2 +- > sys/contrib/openzfs/module/os/linux/zfs/zpl_file.c | 44 +- > .../openzfs/module/os/linux/zfs/zpl_file_range.c | 272 ++++++++ > .../openzfs/module/os/linux/zfs/zpl_super.c | 39 +- > sys/contrib/openzfs/module/os/linux/zfs/zvol_os.c | 28 +- > sys/contrib/openzfs/module/zfs/bpobj.c | 49 +- > sys/contrib/openzfs/module/zfs/brt.c | 43 +- > sys/contrib/openzfs/module/zfs/dbuf.c | 11 +- > sys/contrib/openzfs/module/zfs/dmu.c | 127 ++-- > sys/contrib/openzfs/module/zfs/dmu_recv.c | 22 +- > sys/contrib/openzfs/module/zfs/dmu_zfetch.c | 12 +- > sys/contrib/openzfs/module/zfs/dnode.c | 31 +- > sys/contrib/openzfs/module/zfs/dsl_deadlist.c | 14 +- > sys/contrib/openzfs/module/zfs/dsl_scan.c | 17 +- > sys/contrib/openzfs/module/zfs/metaslab.c | 83 +-- > sys/contrib/openzfs/module/zfs/spa_log_spacemap.c | 4 +- > sys/contrib/openzfs/module/zfs/spa_misc.c | 1 + > sys/contrib/openzfs/module/zfs/vdev.c | 90 ++- > sys/contrib/openzfs/module/zfs/vdev_indirect.c | 2 +- > sys/contrib/openzfs/module/zfs/vdev_raidz.c | 2 +- > sys/contrib/openzfs/module/zfs/zfs_fm.c | 33 +- > sys/contrib/openzfs/module/zfs/zfs_vnops.c | 46 +- > sys/contrib/openzfs/module/zfs/zil.c | 719 +++++++++------------ > sys/contrib/openzfs/module/zfs/zio.c | 45 +- > sys/contrib/openzfs/module/zfs/zio_checksum.c | 2 - > sys/contrib/openzfs/module/zfs/zvol.c | 8 +- > sys/contrib/openzfs/tests/runfiles/linux.run | 11 + > .../openzfs/tests/test-runner/bin/zts-report.py.in | 18 + > sys/contrib/openzfs/tests/zfs-tests/cmd/.gitignore | 1 + > .../openzfs/tests/zfs-tests/cmd/Makefile.am | 1 + > .../openzfs/tests/zfs-tests/cmd/clonefile.c | 333 ++++++++++ > sys/contrib/openzfs/tests/zfs-tests/cmd/readmmap.c | 1 + > .../openzfs/tests/zfs-tests/include/commands.cfg | 1 + > .../openzfs/tests/zfs-tests/tests/Makefile.am | 14 + > .../functional/block_cloning/block_cloning.kshlib | 54 ++ > .../block_cloning/block_cloning_copyfilerange.ksh | 60 ++ > .../block_cloning_copyfilerange_cross_dataset.ksh | 65 ++ > .../block_cloning_copyfilerange_fallback.ksh | 86 +++ > ...ock_cloning_copyfilerange_fallback_same_txg.ksh | 66 ++ > .../block_cloning_copyfilerange_partial.ksh | 68 ++ > .../block_cloning_disabled_copyfilerange.ksh | 60 ++ > .../block_cloning_disabled_ficlone.ksh | 50 ++ > .../block_cloning_disabled_ficlonerange.ksh | 50 ++ > .../block_cloning/block_cloning_ficlone.ksh | 56 ++ > .../block_cloning/block_cloning_ficlonerange.ksh | 56 ++ > .../block_cloning_ficlonerange_partial.ksh | 64 ++ > .../tests/functional/block_cloning/cleanup.ksh | 34 + > .../tests/functional/block_cloning/setup.ksh | 36 ++ > .../cli_root/zpool_attach/attach-o_ashift.ksh | 30 +- > .../cli_root/zpool_replace/replace-o_ashift.ksh | 32 +- > .../cli_root/zpool_replace/replace_prop_ashift.ksh | 24 +- > sys/modules/zfs/zfs_config.h | 53 +- > sys/modules/zfs/zfs_gitrev.h | 2 +- > 113 files changed, 3322 insertions(+), 906 deletions(-) > > diff --cc Makefile.inc1 > index 8838d31c795a,000000000000..f740cc5abcca > mode 100644,000000..100644 > --- a/Makefile.inc1 > +++ b/Makefile.inc1 > @@@ -1,3692 -1,0 +1,3695 @@@ > +# > +# > +# Make command line options: > +# -DNO_CLEANDIR run ${MAKE} clean, instead of ${MAKE} cleandir > +# -DNO_CLEAN do not clean at all > +# -DDB_FROM_SRC use the user/group databases in src/etc instead of > +# the system database when installing. > +# -DNO_SHARE do not go into share subdir > +# -DKERNFAST define NO_KERNEL{CONFIG,CLEAN,OBJ} > +# -DNO_KERNELCONFIG do not run config in ${MAKE} buildkernel > +# -DNO_KERNELCLEAN do not run ${MAKE} clean in ${MAKE} buildkernel > +# -DNO_KERNELOBJ do not run ${MAKE} obj in ${MAKE} buildkernel > +# -DNO_ROOT install without using root privilege > +# -DWITHOUT_CTF do not run the DTrace CTF conversion tools on built objects > +# LOCAL_DIRS="list of dirs" to add additional dirs to the SUBDIR list > +# LOCAL_ITOOLS="list of tools" to add additional tools to the ITOOLS list > +# LOCAL_LIB_DIRS="list of dirs" to add additional dirs to libraries target > +# LOCAL_MTREE="list of mtree files" to process to allow local directories > +# to be created before files are installed > +# LOCAL_LEGACY_DIRS="list of dirs" to add additional dirs to the legacy > +# target > +# LOCAL_BSTOOL_DIRS="list of dirs" to add additional dirs to the > +# bootstrap-tools target > +# LOCAL_TOOL_DIRS="list of dirs" to add additional dirs to the build-tools > +# target > +# LOCAL_XTOOL_DIRS="list of dirs" to add additional dirs to the > +# cross-tools target > +# METALOG="path to metadata log" to write permission and ownership > +# when NO_ROOT is set. (default: ${DESTDIR}/${DISTDIR}/METALOG, > +# check /etc/make.conf for DISTDIR) > +# TARGET="machine" to crossbuild world for a different machine type > +# TARGET_ARCH= may be required when a TARGET supports multiple endians > +# BUILDENV_SHELL= shell to launch for the buildenv target (def:${SHELL}) > +# WORLD_FLAGS= additional flags to pass to make(1) during buildworld > +# KERNEL_FLAGS= additional flags to pass to make(1) during buildkernel > +# SUBDIR_OVERRIDE="list of dirs" to build rather than everything. > +# All libraries and includes, and some build tools will still build. > + > +# > +# The intended user-driven targets are: > +# buildworld - rebuild *everything*, including glue to help do upgrades > +# installworld- install everything built by "buildworld" > +# checkworld - run test suite on installed world > +# doxygen - build API documentation of the kernel > +# > +# Standard targets (not defined here) are documented in the makefiles in > +# /usr/share/mk. These include: > +# obj depend all install clean cleandepend cleanobj > + > +.if !defined(TARGET) || !defined(TARGET_ARCH) > +.error Both TARGET and TARGET_ARCH must be defined. > +.endif > + > +.if make(showconfig) || make(test-system-*) > +_MKSHOWCONFIG= t > +.endif > + > +SRCDIR?= ${.CURDIR} > +LOCALBASE?= /usr/local > +TIME_ENV ?= time env > + > +.include "share/mk/src.tools.mk" > + > +# Cross toolchain changes must be in effect before bsd.compiler.mk > +# so that gets the right CC, and pass CROSS_TOOLCHAIN to submakes. > +.if defined(CROSS_TOOLCHAIN) > +.if exists(${LOCALBASE}/share/toolchains/${CROSS_TOOLCHAIN}.mk) > +.include "${LOCALBASE}/share/toolchains/${CROSS_TOOLCHAIN}.mk" > +.elif exists(${CROSS_TOOLCHAIN}) > +.include "${CROSS_TOOLCHAIN}" > +.else > +.error CROSS_TOOLCHAIN ${CROSS_TOOLCHAIN} not found > +.endif > +CROSSENV+=CROSS_TOOLCHAIN="${CROSS_TOOLCHAIN}" > +.elif defined(UNIVERSE_TOOLCHAIN) > +UNIVERSE_TOOLCHAIN_PATH?=${HOST_OBJTOP}/tmp/usr/bin > +XCC?="${UNIVERSE_TOOLCHAIN_PATH}/cc" > +XCXX?="${UNIVERSE_TOOLCHAIN_PATH}/c++" > +XCPP?="${UNIVERSE_TOOLCHAIN_PATH}/cpp" > +XLD?="${UNIVERSE_TOOLCHAIN_PATH}/ld" > +.endif > +.if defined(CROSS_TOOLCHAIN_PREFIX) > +CROSS_COMPILER_PREFIX?=${CROSS_TOOLCHAIN_PREFIX} > +.endif > + > +XCOMPILERS= CC CXX CPP > +.for COMPILER in ${XCOMPILERS} > +.if defined(CROSS_COMPILER_PREFIX) > +X${COMPILER}?= ${CROSS_COMPILER_PREFIX}${${COMPILER}} > +.else > +X${COMPILER}?= ${${COMPILER}} > +.endif > +.endfor > +# If a full path to an external cross compiler is given, don't build > +# a cross compiler. > +.if ${XCC:N${CCACHE_BIN}:M/*} > +MK_CLANG_BOOTSTRAP= no > +# Make sure sub-makes see the option as disabled so the hack in bsd.sys.mk to > +# work around incompatible headers in Clang's resource directory is enabled. > +.MAKEOVERRIDES+= MK_CLANG_BOOTSTRAP > +.endif > + > +# Pull in compiler metadata from buildworld/toolchain if possible to avoid > +# running CC from bsd.compiler.mk. > +.if make(installworld) || make(install) || make(distributeworld) || \ > + make(stageworld) > +.-include "${OBJTOP}/toolchain-metadata.mk" > +.if !defined(_LOADED_TOOLCHAIN_METADATA) > +.error A build is required first. You may have the wrong MAKEOBJDIRPREFIX set. > +.endif > +.endif > + > +# Pull in COMPILER_TYPE and COMPILER_FREEBSD_VERSION early. Pull it from the > +# tree to be friendlier to foreign OS builds. It's safe to do so unconditionally > +# here since we will always have the right make, unlike in src/Makefile > +# Don't include bsd.linker.mk yet until XBINUTILS is handled (after src.opts.mk) > +_NO_INCLUDE_LINKERMK= t > +# We also want the X_COMPILER* variables if we are using an external toolchain. > +_WANT_TOOLCHAIN_CROSS_VARS= t > +.include "share/mk/bsd.compiler.mk" > +.undef _NO_INCLUDE_LINKERMK > +.undef _WANT_TOOLCHAIN_CROSS_VARS > +# src.opts.mk depends on COMPILER_FEATURES > +.include "share/mk/src.opts.mk" > + > +.if ${TARGET} == ${MACHINE} > +TARGET_CPUTYPE?=${CPUTYPE} > +.else > +TARGET_CPUTYPE?= > +.endif > +.if !empty(TARGET_CPUTYPE) > +_TARGET_CPUTYPE=${TARGET_CPUTYPE} > +.else > +_TARGET_CPUTYPE=dummy > +.endif > +.if ${TARGET} == "arm" > +.if ${TARGET_CPUTYPE:M*soft*} == "" > +TARGET_TRIPLE_ABI= gnueabihf > +.else > +TARGET_TRIPLE_ABI= gnueabi > +.endif > +.endif > +MACHINE_TRIPLE_ABI?= unknown > +MACHINE_TRIPLE?=${MACHINE_ARCH:S/amd64/x86_64/}-${MACHINE_TRIPLE_ABI}-freebsd${OS_REVISION} > +TARGET_TRIPLE_ABI?= unknown > +TARGET_TRIPLE?= > ${TARGET_ARCH:S/amd64/x86_64/}-${TARGET_TRIPLE_ABI}-freebsd${OS_REVISION} > +KNOWN_ARCHES?= aarch64/arm64 \ > + amd64 \ > + armv6/arm \ > + armv7/arm \ > + i386 \ > + powerpc \ > + powerpc64/powerpc \ > + powerpc64le/powerpc \ > + powerpcspe/powerpc \ > + riscv64/riscv > + > +.if ${TARGET} == ${TARGET_ARCH} > +_t= ${TARGET} > +.else > +_t= ${TARGET_ARCH}/${TARGET} > +.endif > +.for _t in ${_t} > +.if empty(KNOWN_ARCHES:M${_t}) > +.error Unknown target ${TARGET_ARCH}:${TARGET}. > +.endif > +.endfor > + > +.if ${TARGET_ARCH} == "amd64" > +LIBCOMPAT_INCLUDE_DIRS+= i386 > +.elif ${TARGET_ARCH} == "aarch64" > +LIBCOMPAT_INCLUDE_DIRS+= arm > +.endif > + > +.if ${.MAKE.OS} != "FreeBSD" > +CROSSBUILD_HOST=${.MAKE.OS} > +.if ${.MAKE.OS} != "Linux" && ${.MAKE.OS} != "Darwin" > +.warning Unsupported crossbuild system: ${.MAKE.OS}. Build will probably fail! > +.endif > +# We need to force NO_ROOT/DB_FROM_SRC builds when building on other operating > +# systems since the BSD.foo.dist specs contain users and groups that do not > +# exist by default on a Linux/MacOS system. > +NO_ROOT:= 1 > +DB_FROM_SRC:= 1 > +.export NO_ROOT > +.endif > + > +# If all targets are disabled for system llvm then don't expect it to work > +# for cross-builds. > +.if !defined(TOOLS_PREFIX) && ${MK_LLVM_TARGET_ALL} == "no" && \ > + ${MACHINE} != ${TARGET} && ${MACHINE_ARCH} != ${TARGET_ARCH} && \ > + !make(showconfig) > +MK_SYSTEM_COMPILER= no > +MK_SYSTEM_LINKER= no > +.endif > + > +# Handle external binutils. > +.if defined(CROSS_TOOLCHAIN_PREFIX) > +CROSS_BINUTILS_PREFIX?=${CROSS_TOOLCHAIN_PREFIX} > +.endif > +XBINUTILS= AS AR ELFCTL LD NM OBJCOPY RANLIB SIZE STRINGS STRIPBIN > +.for BINUTIL in ${XBINUTILS} > +.if defined(CROSS_BINUTILS_PREFIX) && \ > + exists(${CROSS_BINUTILS_PREFIX}/${${BINUTIL}}) > +X${BINUTIL}?= ${CROSS_BINUTILS_PREFIX:C,/*$,,}/${${BINUTIL}} > +.else > +X${BINUTIL}?= ${${BINUTIL}} > +.endif > +.endfor > + > +# If a full path to an external linker is given, don't build lld. > +.if ${XLD:M/*} > +MK_LLD_BOOTSTRAP= no > +.endif > + > +# We also want the X_LINKER* variables if we are using an external toolchain. > +_WANT_TOOLCHAIN_CROSS_VARS= t > +.include "share/mk/bsd.linker.mk" > +.undef _WANT_TOOLCHAIN_CROSS_VARS > + > +# Begin WITH_SYSTEM_COMPILER / WITH_SYSTEM_LD > + > +# WITH_SYSTEM_COMPILER - Pull in needed values and make a decision. > + > +# Check if there is a local compiler that can satisfy as an external compiler. > +# Which compiler is expected to be used? > +.if ${MK_CLANG_BOOTSTRAP} == "yes" > +WANT_COMPILER_TYPE= clang > +.else > +WANT_COMPILER_TYPE= > +.endif > + > +.if !defined(WANT_COMPILER_FREEBSD_VERSION) && !make(showconfig) && \ > + !make(test-system-linker) > +.if ${WANT_COMPILER_TYPE} == "clang" > +WANT_COMPILER_FREEBSD_VERSION_FILE= lib/clang/freebsd_cc_version.h > +WANT_COMPILER_FREEBSD_VERSION!= \ > + awk '$$2 == "FREEBSD_CC_VERSION" {printf("%d\n", $$3)}' \ > + ${SRCDIR}/${WANT_COMPILER_FREEBSD_VERSION_FILE} || echo unknown > +WANT_COMPILER_VERSION_FILE= lib/clang/include/clang/Basic/Version.inc > +WANT_COMPILER_VERSION!= \ > + awk '$$2 == "CLANG_VERSION" {split($$3, a, "."); print a[1] * 10000 + a[2] * 100 + > a[3]}' \ > + ${SRCDIR}/${WANT_COMPILER_VERSION_FILE} || echo unknown > +.endif > +.export WANT_COMPILER_FREEBSD_VERSION WANT_COMPILER_VERSION > +.endif # !defined(WANT_COMPILER_FREEBSD_VERSION) > + > +# It needs to be the same revision as we would build for the bootstrap. > +# If the expected vs CC is different then we can't skip. > +# GCC cannot be used for cross-arch yet. For clang we pass -target later if > +# TARGET_ARCH!=MACHINE_ARCH. > +.if ${MK_SYSTEM_COMPILER} == "yes" && \ > + defined(WANT_COMPILER_FREEBSD_VERSION) && \ > + ${MK_CLANG_BOOTSTRAP} == "yes" && \ > + !make(xdev*) && \ > + ${X_COMPILER_TYPE} == ${WANT_COMPILER_TYPE} && \ > + (${X_COMPILER_TYPE} == "clang" || ${TARGET_ARCH} == ${MACHINE_ARCH}) && \ > + ${X_COMPILER_VERSION} == ${WANT_COMPILER_VERSION} && \ > + ${X_COMPILER_FREEBSD_VERSION} == ${WANT_COMPILER_FREEBSD_VERSION} > +# Everything matches, disable the bootstrap compiler. > +MK_CLANG_BOOTSTRAP= no > +USING_SYSTEM_COMPILER= yes > +.endif # ${WANT_COMPILER_TYPE} == ${COMPILER_TYPE} > + > +# WITH_SYSTEM_LD - Pull in needed values and make a decision. > + > +# Check if there is a local linker that can satisfy as an external linker. > +# Which linker is expected to be used? > +.if ${MK_LLD_BOOTSTRAP} == "yes" > +WANT_LINKER_TYPE= lld > +.else > +WANT_LINKER_TYPE= > +.endif > + > +.if !defined(WANT_LINKER_FREEBSD_VERSION) && !make(showconfig) && \ > + !make(test-system-compiler) > +.if ${WANT_LINKER_TYPE} == "lld" > +WANT_LINKER_FREEBSD_VERSION_FILE= lib/clang/include/lld/Common/Version.inc > +WANT_LINKER_FREEBSD_VERSION!= \ > + awk '$$2 == "LLD_FREEBSD_VERSION" {print $$3}' \ > + ${SRCDIR}/${WANT_LINKER_FREEBSD_VERSION_FILE} || echo unknown > +WANT_LINKER_VERSION_FILE= lib/clang/include/lld/Common/Version.inc > +WANT_LINKER_VERSION!= \ > + awk '$$2 == "LLD_VERSION_STRING" {gsub("\"", "", $$3); split($$3, a, "."); print > a[1] * 10000 + a[2] * 100 + a[3]}' \ > + ${SRCDIR}/${WANT_LINKER_VERSION_FILE} || echo unknown > +.else > +WANT_LINKER_FREEBSD_VERSION_FILE= > +WANT_LINKER_FREEBSD_VERSION= > +.endif > +.export WANT_LINKER_FREEBSD_VERSION WANT_LINKER_VERSION > +.endif # !defined(WANT_LINKER_FREEBSD_VERSION) > + > +.if ${MK_SYSTEM_LINKER} == "yes" && \ > + defined(WANT_LINKER_FREEBSD_VERSION) && \ > + (${MK_LLD_BOOTSTRAP} == "yes") && \ > + !make(xdev*) && \ > + ${X_LINKER_TYPE} == ${WANT_LINKER_TYPE} && \ > + ${X_LINKER_VERSION} == ${WANT_LINKER_VERSION} && \ > + ${X_LINKER_FREEBSD_VERSION} == ${WANT_LINKER_FREEBSD_VERSION} > +# Everything matches, disable the bootstrap linker. > +MK_LLD_BOOTSTRAP= no > +USING_SYSTEM_LINKER= yes > +.endif # ${WANT_LINKER_TYPE} == ${LINKER_TYPE} > + > +# WITH_SYSTEM_COMPILER / WITH_SYSTEM_LINKER - Handle defaults and debug. > +USING_SYSTEM_COMPILER?= no > +USING_SYSTEM_LINKER?= no > + > +TEST_SYSTEM_COMPILER_VARS= \ > + USING_SYSTEM_COMPILER MK_SYSTEM_COMPILER \ > + MK_CROSS_COMPILER MK_CLANG_BOOTSTRAP \ > + WANT_COMPILER_TYPE WANT_COMPILER_VERSION WANT_COMPILER_VERSION_FILE \ > + WANT_COMPILER_FREEBSD_VERSION WANT_COMPILER_FREEBSD_VERSION_FILE \ > + CC COMPILER_TYPE COMPILER_FEATURES COMPILER_VERSION \ > + COMPILER_FREEBSD_VERSION \ > + XCC X_COMPILER_TYPE X_COMPILER_FEATURES X_COMPILER_VERSION \ > + X_COMPILER_FREEBSD_VERSION > +TEST_SYSTEM_LINKER_VARS= \ > + USING_SYSTEM_LINKER MK_SYSTEM_LINKER \ > + MK_LLD_BOOTSTRAP \ > + WANT_LINKER_TYPE WANT_LINKER_VERSION WANT_LINKER_VERSION_FILE \ > + WANT_LINKER_FREEBSD_VERSION WANT_LINKER_FREEBSD_VERSION_FILE \ > + LD LINKER_TYPE LINKER_FEATURES LINKER_VERSION \ > + LINKER_FREEBSD_VERSION \ > + XLD X_LINKER_TYPE X_LINKER_FEATURES X_LINKER_VERSION \ > + X_LINKER_FREEBSD_VERSION > + > +.for _t in compiler linker > +test-system-${_t}: .PHONY > +.for v in ${TEST_SYSTEM_${_t:tu}_VARS} > + ${_+_}@printf "%-35s= %s\n" "${v}" "${${v}}" > +.endfor > +.endfor > +.if (make(buildworld) || make(buildkernel) || make(kernel-toolchain) || \ > + make(toolchain) || make(_cross-tools)) > +.if ${USING_SYSTEM_COMPILER} == "yes" > +.info SYSTEM_COMPILER: Determined that CC=${CC} matches the source tree. Not > bootstrapping a cross-compiler. +.elif ${MK_CLANG_BOOTSTRAP} == "yes" > +.info SYSTEM_COMPILER: libclang will be built for bootstrapping a cross-compiler. > +.endif > +.if ${USING_SYSTEM_LINKER} == "yes" > +.info SYSTEM_LINKER: Determined that LD=${LD} matches the source tree. Not bootstrapping > a cross-linker. +.elif ${MK_LLD_BOOTSTRAP} == "yes" > +.info SYSTEM_LINKER: libclang will be built for bootstrapping a cross-linker. > +.endif > +.endif > + > +# End WITH_SYSTEM_COMPILER / WITH_SYSTEM_LD > + > +# Store some compiler metadata for use in installworld where we don't > +# want to invoke CC at all. > +_TOOLCHAIN_METADATA_VARS= COMPILER_VERSION \ > + COMPILER_TYPE \ > + COMPILER_FEATURES \ > + COMPILER_FREEBSD_VERSION \ > + COMPILER_RESOURCE_DIR \ > + LINKER_VERSION \ > + LINKER_FEATURES \ > + LINKER_TYPE \ > + LINKER_FREEBSD_VERSION > +toolchain-metadata.mk: .PHONY .META > + @: > ${.TARGET} > + @echo ".info Using cached toolchain metadata from build at $$(hostname) on > $$(date)" \ > + > ${.TARGET} > + @echo "_LOADED_TOOLCHAIN_METADATA=t" >> ${.TARGET} > +.for v in ${_TOOLCHAIN_METADATA_VARS} > + @echo "${v}=${${v}}" >> ${.TARGET} > + @echo "X_${v}=${X_${v}}" >> ${.TARGET} > +.endfor > + @echo ".export ${_TOOLCHAIN_METADATA_VARS}" >> ${.TARGET} > + @echo ".export ${_TOOLCHAIN_METADATA_VARS:C,^,X_,}" >> ${.TARGET} > + > + > +# We must do lib/ and libexec/ before bin/ in case of a mid-install error to > +# keep the users system reasonably usable. For static->dynamic root upgrades, > +# we don't want to install a dynamic binary without rtld and the needed > +# libraries. More commonly, for dynamic root, we don't want to install a > +# binary that requires a newer library version that hasn't been installed yet. > +# This ordering is not a guarantee though. The only guarantee of a working > +# system here would require fine-grained ordering of all components based > +# on their dependencies. > +.if !empty(SUBDIR_OVERRIDE) > +SUBDIR= ${SUBDIR_OVERRIDE} > +.else > +SUBDIR= lib libexec > +# Add LOCAL_LIB_DIRS, but only if they will not be picked up as a SUBDIR > +# of a LOCAL_DIRS directory. This allows LOCAL_DIRS=foo and > +# LOCAL_LIB_DIRS=foo/lib to behave as expected. > +.for _DIR in ${LOCAL_DIRS:M*/} ${LOCAL_DIRS:N*/:S|$|/|} > +_REDUNDANT_LIB_DIRS+= ${LOCAL_LIB_DIRS:M${_DIR}*} > +.endfor > +.for _DIR in ${LOCAL_LIB_DIRS} > +.if ${_DIR} == ".WAIT" || (empty(_REDUNDANT_LIB_DIRS:M${_DIR}) && > exists(${.CURDIR}/${_DIR}/Makefile)) +SUBDIR+= ${_DIR} > +.endif > +.endfor > +.if !defined(NO_ROOT) && (make(installworld) || make(install)) > +# Ensure libraries are installed before progressing. > +SUBDIR+=.WAIT > +.endif > +SUBDIR+=bin > +.if ${MK_CDDL} != "no" > +SUBDIR+=cddl > +.endif > +SUBDIR+=gnu include > +.if ${MK_KERBEROS} != "no" > +SUBDIR+=kerberos5 > +.endif > +.if ${MK_RESCUE} != "no" > +SUBDIR+=rescue > +.endif > +SUBDIR+=sbin > +.if ${MK_CRYPT} != "no" > +SUBDIR+=secure > +.endif > +.if !defined(NO_SHARE) > +SUBDIR+=share > +.endif > +.if ${MK_BOOT} != "no" > +SUBDIR+=stand > +.endif > +SUBDIR+=sys usr.bin usr.sbin > +.if ${MK_TESTS} != "no" > +SUBDIR+= tests > +.endif > + > +# Local directories are built in parallel with the base system directories. > +# Users may insert a .WAIT directive at the beginning or elsewhere within > +# the LOCAL_DIRS and LOCAL_LIB_DIRS lists as needed. > +.for _DIR in ${LOCAL_DIRS} > +.if ${_DIR} == ".WAIT" || exists(${.CURDIR}/${_DIR}/Makefile) > +SUBDIR+= ${_DIR} > +.endif > +.endfor > + > +# We must do etc/ last as it hooks into building the man whatis file > +# by calling 'makedb' in share/man. This is only relevant for > +# install/distribute so they build the whatis file after every manpage is > +# installed. > +.if make(installworld) || make(install) > +SUBDIR+=.WAIT > +.endif > +SUBDIR+=etc > + > +.endif # !empty(SUBDIR_OVERRIDE) > + > +.if defined(NOCLEAN) > +.warning The src.conf WITHOUT_CLEAN option can now be used instead of NOCLEAN. > +MK_CLEAN:= no > +.endif > +.if defined(NO_CLEAN) > +.info The src.conf WITHOUT_CLEAN option can now be used instead of NO_CLEAN. > +MK_CLEAN:= no > +.endif > +.if defined(NO_CLEANDIR) > +CLEANDIR= clean cleandepend > +.else > +CLEANDIR= cleandir > +.endif > + > +.if defined(WORLDFAST) > +MK_CLEAN:= no > +NO_OBJWALK= t > +.endif > + > +.if ${MK_META_MODE} == "yes" > +# If filemon is used then we can rely on the build being incremental-safe. > +# The .meta files will also track the build command and rebuild should > +# it change. > +.if empty(.MAKE.MODE:Mnofilemon) > +MK_CLEAN:= no > +.endif > +.endif > +.if defined(NO_OBJWALK) || ${MK_AUTO_OBJ} == "yes" > +NO_OBJWALK= t > +NO_KERNELOBJ= t > +.endif > +.if !defined(NO_OBJWALK) > +_obj= obj > +.endif > + > +LOCAL_TOOL_DIRS?= > +PACKAGEDIR?= ${DESTDIR}/${DISTDIR} > + > +.if empty(SHELL:M*csh*) > +BUILDENV_SHELL?=${SHELL} > +.else > +BUILDENV_SHELL?=/bin/sh > +.endif > + > +.if !defined(_MKSHOWCONFIG) > +.if !defined(VCS_REVISION) || empty(VCS_REVISION) > +.if !defined(SVNVERSION_CMD) || empty(SVNVERSION_CMD) > +. for _D in ${PATH:S,:, ,g} > +. if exists(${_D}/svnversion) > +SVNVERSION_CMD?=${_D}/svnversion > +. endif > +. if exists(${_D}/svnliteversion) > +SVNVERSION_CMD?=${_D}/svnliteversion > +. endif > +. endfor > +.endif > +.if defined(SVNVERSION_CMD) && !empty(SVNVERSION_CMD) > +_VCS_REVISION?= $$(eval ${SVNVERSION_CMD} ${SRCDIR}) > +. if !empty(_VCS_REVISION) > +VCS_REVISION= $$(echo r${_VCS_REVISION}) > +.export VCS_REVISION > +. endif > +.endif > +.endif > + > +.if !defined(GIT_CMD) || empty(GIT_CMD) > +. for _P in /usr/bin /usr/local/bin > +. if exists(${_P}/git) > +GIT_CMD= ${_P}/git > +. endif > +. endfor > +.export GIT_CMD > +.endif > + > +.if !defined(OSRELDATE) > +.if exists(/usr/include/osreldate.h) > +OSRELDATE!= awk '/^\#define[[:space:]]*__FreeBSD_version/ { print $$3 }' \ > + /usr/include/osreldate.h > +.else > +OSRELDATE= 0 > +.endif > +.export OSRELDATE > +.endif > + > +# Set VERSION for CTFMERGE to use via the default CTFFLAGS=-L VERSION. > +.for _V in BRANCH REVISION TYPE > +.if !defined(_${_V}) > +_${_V}!= eval $$(awk '/^${_V}=/{print}' ${SRCTOP}/sys/conf/newvers.sh); echo $$${_V} > +.export _${_V} > +.endif > +.endfor > +.if !defined(SRCRELDATE) > +SRCRELDATE!= awk '/^\#define[[:space:]]*__FreeBSD_version/ { print $$3 }' \ > + ${SRCDIR}/sys/sys/param.h > +.export SRCRELDATE > +.endif > +.if !defined(VERSION) > +VERSION= FreeBSD ${_REVISION}-${_BRANCH:C/-p[0-9]+$//} ${TARGET_ARCH} ${SRCRELDATE} > +.export VERSION > +.endif > +MAJOR_REVISION= ${_REVISION:R} > + > +.if !defined(PKG_VERSION) > +_STRTIMENOW= %Y%m%d%H%M%S > +_TIMENOW= ${_STRTIMENOW:gmtime} > +.if ${_BRANCH:MCURRENT*} || ${_BRANCH:MSTABLE*} || ${_BRANCH:MPRERELEASE*} > +EXTRA_REVISION= .snap${_TIMENOW} > +.elif ${_BRANCH:MALPHA*} > +EXTRA_REVISION= .a${_BRANCH:C/ALPHA([0-9]+).*/\1/}.${_TIMENOW} > +.elif ${_BRANCH:MBETA*} > +EXTRA_REVISION= .b${_BRANCH:C/BETA([0-9]+).*/\1/}.${_TIMENOW} > +.elif ${_BRANCH:MRC*} > +EXTRA_REVISION= .rc${_BRANCH:C/RC([0-9]+).*/\1/}.${_TIMENOW} > +.elif ${_BRANCH:M*-p*} > +EXTRA_REVISION= p${_BRANCH:C/.*-p([0-9]+$)/\1/} > +.endif > +PKG_VERSION:= ${MAJOR_REVISION}${EXTRA_REVISION:C/[[:space:]]//g} > +.endif > +.endif # !defined(PKG_VERSION) > + > +.if !defined(PKG_TIMESTAMP) > +TIMEEPOCHNOW= %s > +SOURCE_DATE_EPOCH= ${TIMEEPOCHNOW:gmtime} > +.else > +SOURCE_DATE_EPOCH= ${PKG_TIMESTAMP} > +.endif > + > +PKG_NAME_PREFIX?= FreeBSD > +PKG_MAINTAINER?= re@FreeBSD.org > +PKG_WWW?= https://www.FreeBSD.org > +.export PKG_NAME_PREFIX > +.export PKG_MAINTAINER > +.export PKG_WWW > + > +.if !defined(_MKSHOWCONFIG) > +_CPUTYPE!= MAKEFLAGS= CPUTYPE=${_TARGET_CPUTYPE} ${MAKE} -f /dev/null \ > + -m ${.CURDIR}/share/mk MK_AUTO_OBJ=no -V CPUTYPE > +.if ${_CPUTYPE} != ${_TARGET_CPUTYPE} > +.error CPUTYPE global should be set with ?=. > +.endif > +.endif > +.if make(buildworld) > +BUILD_ARCH!= uname -p > +# On some Linux systems uname -p returns "unknown" so skip this check there. > +# This check only exists to tell people to use TARGET_ARCH instead of > +# MACHINE_ARCH so skipping it when crossbuilding on non-FreeBSD should be fine. > +.if ${MACHINE_ARCH} != ${BUILD_ARCH} && ${.MAKE.OS} == "FreeBSD" > +.error To cross-build, set TARGET_ARCH. > +.endif > +.endif > +WORLDTMP?= ${OBJTOP}/tmp > +BPATH= > ${CCACHE_WRAPPER_PATH_PFX}${WORLDTMP}/legacy/usr/sbin:${WORLDTMP}/legacy/usr/bin:${WORLDTMP}/legacy/bin:${WORLDTMP}/legacy/usr/libexec > +XPATH= ${WORLDTMP}/bin:${WORLDTMP}/usr/sbin:${WORLDTMP}/usr/bin + > +# When building we want to find the cross tools before the host tools in ${BPATH}. > +# We also need to add UNIVERSE_TOOLCHAIN_PATH so that we can find the shared > +# toolchain files (clang, lld, etc.) during make universe/tinderbox > +STRICTTMPPATH= ${XPATH}:${BPATH}:${UNIVERSE_TOOLCHAIN_PATH} > +# We should not be using tools from /usr/bin accidentally since this could cause > +# the build to break on other systems that don't have that tool. For now we > +# still allow using the old behaviour (inheriting $PATH) if > +# BUILD_WITH_STRICT_TMPPATH is set to 0 but this will eventually be removed. > + > +# Currently strict $PATH can cause build failures. Once the remaining issues > +# have been resolved it will be turned on by default. > +BUILD_WITH_STRICT_TMPPATH?=0 > +.if defined(CROSSBUILD_HOST) > +# When building on non-FreeBSD we can't rely on the tools in /usr/bin being compatible > +# with what FreeBSD expects. Therefore we only use tools from STRICTTMPPATH > +# during the world build stage. We build most tools during the bootstrap-tools > +# phase but symlink host tools that are known to work instead of building them > +BUILD_WITH_STRICT_TMPPATH:=1 > +.endif > +.if ${BUILD_WITH_STRICT_TMPPATH} != 0 > +TMPPATH= ${STRICTTMPPATH} > +.else > +TMPPATH= ${STRICTTMPPATH}:${PATH} > +.endif > + > +# > +# Avoid running mktemp(1) unless actually needed. > +# It may not be functional, e.g., due to new ABI > +# when in the middle of installing over this system. > +# > +.if make(distributeworld) || make(installworld) || make(stageworld) > +.if ${BUILD_WITH_STRICT_TMPPATH} != 0 > +MKTEMP=${WORLDTMP}/legacy/usr/bin/mktemp > +.if !exists(${MKTEMP}) > +.error mktemp binary doesn't exist in expected location: ${MKTEMP} > +.endif > +.else > +MKTEMP=mktemp > +.endif > +INSTALLTMP!= ${MKTEMP} -d -u -t install > + > +.if ${.MAKE.OS} == "FreeBSD" > +# When building on FreeBSD we always copy the host tools instead of linking > +# into INSTALLTMP to avoid issues with incompatible libraries (see r364030). > +# Note: we could create links if we don't intend to update the current machine. > +INSTALLTMP_COPY_HOST_TOOL=cp > +.else > +# However, this is not necessary on Linux/macOS. Additionally, copying the host > +# tools to another directory with cp results in AMFI Launch Constraint > +# Violations on macOS Ventura as part of its System Integrity Protection. > +INSTALLTMP_COPY_HOST_TOOL=ln -s > +.endif > +.endif > + > +.if make(stagekernel) || make(distributekernel) > +TAGS+= kernel > +PACKAGE= kernel > +.endif > + > +# > +# Building a world goes through the following stages > +# > +# 1. legacy stage [BMAKE] > +# This stage is responsible for creating compatibility > +# shims that are needed by the bootstrap-tools, > +# build-tools and cross-tools stages. These are generally > +# APIs that tools from one of those three stages need to > +# build that aren't present on the host. > +# 1. bootstrap-tools stage [BMAKE] > +# This stage is responsible for creating programs that > +# are needed for backward compatibility reasons. They > +# are not built as cross-tools. > +# 2. build-tools stage [TMAKE] > +# This stage is responsible for creating the object > +# tree and building any tools that are needed during > +# the build process. Some programs are listed during > +# this phase because they build binaries to generate > +# files needed to build these programs. This stage also > +# builds the 'build-tools' target rather than 'all'. > +# 3. cross-tools stage [XMAKE] > +# This stage is responsible for creating any tools that > +# are needed for building the system. A cross-compiler is one > +# of them. This differs from build tools in two ways: > +# 1. the 'all' target is built rather than 'build-tools' > +# 2. these tools are installed into TMPPATH for stage 4. > +# 4. world stage [WMAKE] > +# This stage actually builds the world. > +# 5. install stage (optional) [IMAKE] > +# This stage installs a previously built world. > +# > + > +BOOTSTRAPPING?= 0 > +# Keep these in sync > +MINIMUM_SUPPORTED_OSREL?= 1104001 > +MINIMUM_SUPPORTED_REL?= 11.4 > + > +# Common environment for world related stages > +CROSSENV+= \ > + MACHINE_ARCH=${TARGET_ARCH} \ > + MACHINE=${TARGET} \ > + CPUTYPE=${TARGET_CPUTYPE} > +.if ${MK_META_MODE} != "no" > +# Don't rebuild build-tools targets during normal build. > +CROSSENV+= BUILD_TOOLS_META=.NOMETA > +.endif > +.if defined(TARGET_CFLAGS) > +CROSSENV+= ${TARGET_CFLAGS} > +.endif > +.if (${TARGET} != ${MACHINE} && !defined(WITH_LOCAL_MODULES)) || \ > + defined(WITHOUT_LOCAL_MODULES) > +CROSSENV+= LOCAL_MODULES= > +.endif > + > +BOOTSTRAPPING_OSRELDATE?=${OSRELDATE} > + > +# bootstrap-tools stage > +BMAKEENV= INSTALL="sh ${.CURDIR}/tools/install.sh" \ > + TOOLS_PREFIX=${TOOLS_PREFIX_UNDEF:U${WORLDTMP}} \ > + PATH=${BPATH:Q}:${PATH:Q} \ > + WORLDTMP=${WORLDTMP} \ > + MAKEFLAGS="-m ${.CURDIR}/tools/build/mk ${.MAKEFLAGS}" > +# need to keep this in sync with targets/pseudo/bootstrap-tools/Makefile > +BSARGS= DESTDIR= \ > + OBJTOP='${WORLDTMP}/obj-tools' \ > + OBJROOT='$${OBJTOP}/' \ > + UNIVERSE_TOOLCHAIN_PATH=${UNIVERSE_TOOLCHAIN_PATH} \ > + MAKEOBJDIRPREFIX= \ > + BOOTSTRAPPING=${BOOTSTRAPPING_OSRELDATE} \ > + BWPHASE=${.TARGET:C,^_,,} \ > + -DNO_CPU_CFLAGS \ > + -DNO_LINT \ > + -DNO_PIC \ > + -DNO_SHARED \ > + MK_ASAN=no \ > + MK_CTF=no \ > + MK_CLANG_EXTRAS=no \ > + MK_CLANG_FORMAT=no \ > + MK_CLANG_FULL=no \ > + MK_HTML=no \ > + MK_MAN=no \ > + MK_PROFILE=no \ > + MK_RETPOLINE=no \ > + MK_SSP=no \ > + MK_TESTS=no \ > + MK_UBSAN=no \ > + MK_WERROR=no \ > + MK_INCLUDES=yes \ > + MK_MAN_UTILS=yes > + > +BMAKE= \ > + ${TIME_ENV} ${BMAKEENV} ${MAKE} ${WORLD_FLAGS} -f Makefile.inc1 \ > + ${BSARGS} > +.if empty(.MAKEOVERRIDES:MMK_LLVM_TARGET_ALL) > +BMAKE+= MK_LLVM_TARGET_ALL=no > +.endif > + > +# build-tools stage > +TMAKE= \ > + ${TIME_ENV} ${BMAKEENV} ${MAKE} ${WORLD_FLAGS} -f Makefile.inc1 \ > + TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \ > + DESTDIR= \ > + BOOTSTRAPPING=${BOOTSTRAPPING_OSRELDATE} \ > + BWPHASE=${.TARGET:C,^_,,} \ > + -DNO_CPU_CFLAGS \ > + -DNO_LINT \ > + MK_ASAN=no \ > + MK_CTF=no \ > + MK_CLANG_EXTRAS=no \ > + MK_CLANG_FORMAT=no \ > + MK_CLANG_FULL=no \ > + MK_LLDB=no \ > + MK_RETPOLINE=no \ > + MK_SSP=no \ > + MK_TESTS=no \ > + MK_UBSAN=no \ > + MK_WERROR=no > + > +# cross-tools stage > +# TOOLS_PREFIX set in BMAKE > +XMAKE= ${BMAKE} \ > + TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \ > + MK_LLDB=no \ > + MK_LLVM_BINUTILS=no \ > + MK_TESTS=no > + > +# kernel-tools stage > +KTMAKEENV= INSTALL="sh ${.CURDIR}/tools/install.sh" \ > + PATH=${BPATH:Q}:${PATH:Q} \ > + WORLDTMP=${WORLDTMP} \ > + MAKEFLAGS="-m ${.CURDIR}/tools/build/mk ${.MAKEFLAGS}" > + > +KTMAKE= ${TIME_ENV} \ > + TOOLS_PREFIX=${TOOLS_PREFIX_UNDEF:U${WORLDTMP}} \ > + ${KTMAKEENV} ${MAKE} ${WORLD_FLAGS} -f Makefile.inc1 \ > + DESTDIR= \ > + OBJTOP='${WORLDTMP}/obj-kernel-tools' \ > + OBJROOT='$${OBJTOP}/' \ > + UNIVERSE_TOOLCHAIN_PATH=${UNIVERSE_TOOLCHAIN_PATH} \ > + MAKEOBJDIRPREFIX= \ > + BOOTSTRAPPING=${BOOTSTRAPPING_OSRELDATE} \ > + -DNO_CPU_CFLAGS \ > + -DNO_LINT \ > + -DNO_PIC \ > + -DNO_SHARED \ > + MK_CTF=no \ > + MK_HTML=no \ > + MK_MAN=no \ > + MK_PROFILE=no \ > + MK_SSP=no \ > + MK_RETPOLINE=no \ > + MK_WERROR=no > + > +# world stage > +WMAKEENV= ${CROSSENV} \ > + INSTALL="${INSTALL_CMD} -U" \ > + PATH=${TMPPATH:Q} \ > + SYSROOT=${WORLDTMP} > + > +# make hierarchy > *** 5431 LINES SKIPPED *** > -- O. Hartmann