From owner-dev-commits-src-all@freebsd.org Sun Jan 3 12:37:25 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 482514D0EB6; Sun, 3 Jan 2021 12:37:25 +0000 (UTC) (envelope-from uspoerlein@gmail.com) Received: from mail-yb1-xb33.google.com (mail-yb1-xb33.google.com [IPv6:2607:f8b0:4864:20::b33]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "GTS CA 1O1" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4D7yvS3FRbz4s61; Sun, 3 Jan 2021 12:37:24 +0000 (UTC) (envelope-from uspoerlein@gmail.com) Received: by mail-yb1-xb33.google.com with SMTP id v67so23488205ybi.1; Sun, 03 Jan 2021 04:37:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=+/ic4qYmjsWl8ZuT3xGWMLdm180aba7hGBLubHpsIcw=; b=iAYE2KMLjaKpcgDFJl4r2bBb9/TFj9feRlykCiNFVqf02Xo2Q+v0VT4c3E/HpAxcQc IW4fmxivpxFSl3mLtBRMxLJ71yxsz9xoJujWdhT4J6WkxqXx+sA5aWg9bfRJYbFCx0rX 6uTOzfYMGvtUYBMRKjor3HhzvAdL+N6FRKxvKai852yQ800o7vxhjn66+e7y6CTV4nk3 utJBJ9OUdClAbLhAhvgWM2PO17UBhoJ5pFMewug1pPiO0cl7S1a3kdW3v+9afHvPpngN bVe9+7FBeVIhYSvlpb/MogOAk6x3KhCF90tGIJLQRMukYDxpw/bbBpcKcwaRF7sTJlCl nrJg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=+/ic4qYmjsWl8ZuT3xGWMLdm180aba7hGBLubHpsIcw=; b=en4IgeYcMfLiR1CuZcC+fmyrn81sl3abny3GgKOMaH+vPHWATTKfdfbiy141PEAiv1 eCA76h0EXCc6Zi+YH/sjD1tBD1an6WyK654QZ61ikwv3wRsO7zrhByB9UpQd/3TXEgcZ zXOcb+3e7iNoIHLC8At5bBOAID5YevhLn9gtwxNculx7WCY4d0PqwaXb24CjHyFtK5Im kVxp6ZsCfN9l6TMxA4LzhqZRRNtHxg9QHClRy5vR8nOuxxObO5wc8DS5k03vahhFHt/V 2ib7MmEDNrmgN3uIgeJQqWdI75WsAl546QKbn/+3Ig3pguX9k9Q9t84WiZt3WZMuTHre p+fw== X-Gm-Message-State: AOAM532SP4Qmb838QhahE7kgmEN34hAulbgAPnNpMq+OxG+YqsPuNtOo jZ+3Ulqz/O0EzHMNMRBBNVpntpFPDgRRj9fVKaLr9PCmjnEV6Q== X-Google-Smtp-Source: ABdhPJwOBhp9ZsDYwdWZ/oXaLoKcET03MKl5EG5XrdMozgQkwb8279JRIltMOMhUHRBT/idOHR9zEOE7rxclv6KZxQE= X-Received: by 2002:a25:9b84:: with SMTP id v4mr49872365ybo.83.1609677442573; Sun, 03 Jan 2021 04:37:22 -0800 (PST) MIME-Version: 1.0 References: <202012251556.0BPFu9l7029902@gitrepo.freebsd.org> In-Reply-To: <202012251556.0BPFu9l7029902@gitrepo.freebsd.org> From: =?UTF-8?Q?Ulrich_Sp=C3=B6rlein?= Date: Sun, 3 Jan 2021 13:37:11 +0100 Message-ID: Subject: Re: git: f7cd7fe51c41 - sys/contrib/zstd: Import zstd 1.4.8 To: Conrad Meyer Cc: src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org Content-Type: text/plain; charset="UTF-8" X-Rspamd-Queue-Id: 4D7yvS3FRbz4s61 X-Spamd-Bar: ---- Authentication-Results: mx1.freebsd.org; dkim=pass header.d=gmail.com header.s=20161025 header.b=iAYE2KML; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (mx1.freebsd.org: domain of uspoerlein@gmail.com designates 2607:f8b0:4864:20::b33 as permitted sender) smtp.mailfrom=uspoerlein@gmail.com X-Spamd-Result: default: False [-4.00 / 15.00]; ARC_NA(0.00)[]; RBL_DBL_DONT_QUERY_IPS(0.00)[2607:f8b0:4864:20::b33:from]; R_DKIM_ALLOW(-0.20)[gmail.com:s=20161025]; RCVD_TLS_ALL(0.00)[]; FROM_HAS_DN(0.00)[]; RCPT_COUNT_THREE(0.00)[4]; R_SPF_ALLOW(-0.20)[+ip6:2607:f8b0:4000::/36:c]; FREEMAIL_FROM(0.00)[gmail.com]; MIME_GOOD(-0.10)[text/plain]; TO_MATCH_ENVRCPT_ALL(0.00)[]; NEURAL_HAM_LONG(-1.00)[-1.000]; TO_DN_SOME(0.00)[]; SPAMHAUS_ZRD(0.00)[2607:f8b0:4864:20::b33:from:127.0.2.255]; NEURAL_HAM_MEDIUM(-1.00)[-1.000]; DKIM_TRACE(0.00)[gmail.com:+]; DMARC_POLICY_ALLOW(-0.50)[gmail.com,none]; RCVD_IN_DNSWL_NONE(0.00)[2607:f8b0:4864:20::b33:from]; NEURAL_HAM_SHORT(-1.00)[-1.000]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+]; FREEMAIL_ENVFROM(0.00)[gmail.com]; ASN(0.00)[asn:15169, ipnet:2607:f8b0::/32, country:US]; RCVD_COUNT_TWO(0.00)[2]; MAILMAN_DEST(0.00)[dev-commits-src-all,dev-commits-src-main]; DWL_DNSWL_NONE(0.00)[gmail.com:dkim] X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 03 Jan 2021 12:37:25 -0000 This broke the kernel-toolchain CI on linux and macos systems, most importantly the Github CI actions. They were nerfed due to the master -> main switch, but I've bisected this to the merge commit that introduces the build failure. see e.g. https://github.com/uqs/freebsd-src/runs/1639470956?check_suite_focus=true which has this merge commit + the reenabling of actions. /Users/runner/work/freebsd-src/freebsd-src/sys/contrib/zstd/lib/compress/zstdmt_compress.c:1131:26: error: implicit declaration of function 'ZSTD_cycleLog' is invalid in C99 [-Werror,-Wimplicit-function-declaration] jobLog = MAX(21, ZSTD_cycleLog(params->cParams.chainLog, params->cParams.strategy) + 3); ^ sys/contrib/zstd/lib/compress/zstd_compress_internal.h ends like so with this import: +/** ZSTD_cycleLog() : + * condition for correct operation : hashLog > 1 */ +#ifdef __FreeBSD__ /* This symbol is needed by dll-linked CLI zstd(1). */ +ZSTDLIB_API U32 ZSTD_cycleLog(U32 hashLog, ZSTD_strategy strat); +#endif Why would this be specific to FreeBSD as the host OS? On Fri, Dec 25, 2020 at 4:56 PM Conrad Meyer wrote: > > The branch main has been updated by cem: > > URL: https://cgit.FreeBSD.org/src/commit/?id=f7cd7fe51c4140960ebea00410ed62894f5625d1 > > commit f7cd7fe51c4140960ebea00410ed62894f5625d1 > Merge: dc505d53dcc1 f6ae97673c28 > Author: Conrad Meyer > AuthorDate: 2020-12-25 15:42:41 +0000 > Commit: Conrad Meyer > CommitDate: 2020-12-25 15:42:41 +0000 > > sys/contrib/zstd: Import zstd 1.4.8 > > Merge commit 'f6ae97673c28bdb9ae795bd235ab6f26f2536a2d' into main > > Changes from 1.4.5: > * https://github.com/facebook/zstd/releases/tag/v1.4.8 > * https://github.com/facebook/zstd/releases/tag/v1.4.7 > (and there was no public v1.4.6) > > Conflicts: > sys/contrib/zstd/lib/common/zstd_internal.h (new ZSTD_NO_INTRINSICS) > > sys/conf/kern.pre.mk | 6 +- > sys/contrib/zstd/CHANGELOG | 173 +- > sys/contrib/zstd/CONTRIBUTING.md | 18 +- > sys/contrib/zstd/Makefile | 68 +- > sys/contrib/zstd/README.md | 12 +- > sys/contrib/zstd/TESTING.md | 2 +- > sys/contrib/zstd/appveyor.yml | 19 +- > sys/contrib/zstd/doc/zstd_compression_format.md | 114 +- > sys/contrib/zstd/doc/zstd_manual.html | 314 +++- > sys/contrib/zstd/examples/Makefile | 53 +- > sys/contrib/zstd/examples/streaming_compression.c | 1 + > .../examples/streaming_compression_thread_pool.c | 178 ++ > sys/contrib/zstd/lib/Makefile | 365 ++-- > sys/contrib/zstd/lib/README.md | 28 + > sys/contrib/zstd/lib/common/bitstream.h | 39 +- > sys/contrib/zstd/lib/common/compiler.h | 119 +- > sys/contrib/zstd/lib/common/cpu.h | 2 - > sys/contrib/zstd/lib/common/debug.h | 29 +- > sys/contrib/zstd/lib/common/entropy_common.c | 230 ++- > sys/contrib/zstd/lib/common/error_private.c | 1 + > sys/contrib/zstd/lib/common/error_private.h | 2 +- > sys/contrib/zstd/lib/common/fse.h | 50 +- > sys/contrib/zstd/lib/common/fse_decompress.c | 139 +- > sys/contrib/zstd/lib/common/huf.h | 31 +- > sys/contrib/zstd/lib/common/mem.h | 159 +- > sys/contrib/zstd/lib/common/pool.c | 38 +- > sys/contrib/zstd/lib/common/pool.h | 2 +- > sys/contrib/zstd/lib/common/threading.c | 11 +- > sys/contrib/zstd/lib/common/xxhash.c | 74 +- > sys/contrib/zstd/lib/common/xxhash.h | 2 +- > sys/contrib/zstd/lib/common/zstd_common.c | 18 +- > sys/contrib/zstd/lib/common/zstd_deps.h | 111 ++ > sys/contrib/zstd/lib/common/zstd_errors.h | 1 + > sys/contrib/zstd/lib/common/zstd_internal.h | 147 +- > sys/contrib/zstd/lib/compress/fse_compress.c | 53 +- > sys/contrib/zstd/lib/compress/hist.c | 54 +- > sys/contrib/zstd/lib/compress/hist.h | 2 +- > sys/contrib/zstd/lib/compress/huf_compress.c | 316 ++-- > sys/contrib/zstd/lib/compress/zstd_compress.c | 1750 +++++++++++++++----- > .../zstd/lib/compress/zstd_compress_internal.h | 160 +- > .../zstd/lib/compress/zstd_compress_literals.c | 8 +- > .../zstd/lib/compress/zstd_compress_sequences.c | 20 +- > .../zstd/lib/compress/zstd_compress_superblock.c | 42 +- > sys/contrib/zstd/lib/compress/zstd_cwksp.h | 84 +- > sys/contrib/zstd/lib/compress/zstd_double_fast.c | 44 +- > sys/contrib/zstd/lib/compress/zstd_fast.c | 38 +- > sys/contrib/zstd/lib/compress/zstd_lazy.c | 428 ++++- > sys/contrib/zstd/lib/compress/zstd_lazy.h | 20 + > sys/contrib/zstd/lib/compress/zstd_ldm.c | 77 +- > sys/contrib/zstd/lib/compress/zstd_ldm.h | 6 + > sys/contrib/zstd/lib/compress/zstd_opt.c | 235 ++- > sys/contrib/zstd/lib/compress/zstdmt_compress.c | 480 +----- > sys/contrib/zstd/lib/compress/zstdmt_compress.h | 134 +- > sys/contrib/zstd/lib/decompress/huf_decompress.c | 502 +++--- > sys/contrib/zstd/lib/decompress/zstd_ddict.c | 16 +- > sys/contrib/zstd/lib/decompress/zstd_ddict.h | 2 +- > sys/contrib/zstd/lib/decompress/zstd_decompress.c | 205 ++- > .../zstd/lib/decompress/zstd_decompress_block.c | 184 +- > .../zstd/lib/decompress/zstd_decompress_block.h | 7 +- > .../zstd/lib/decompress/zstd_decompress_internal.h | 21 +- > sys/contrib/zstd/lib/dictBuilder/cover.c | 49 +- > sys/contrib/zstd/lib/dictBuilder/cover.h | 2 +- > sys/contrib/zstd/lib/dictBuilder/fastcover.c | 39 +- > sys/contrib/zstd/lib/dictBuilder/zdict.c | 31 +- > sys/contrib/zstd/lib/dictBuilder/zdict.h | 2 +- > sys/contrib/zstd/lib/legacy/zstd_v01.c | 6 +- > sys/contrib/zstd/lib/legacy/zstd_v02.c | 6 +- > sys/contrib/zstd/lib/legacy/zstd_v03.c | 6 +- > sys/contrib/zstd/lib/legacy/zstd_v04.c | 8 +- > sys/contrib/zstd/lib/legacy/zstd_v05.c | 6 +- > sys/contrib/zstd/lib/legacy/zstd_v06.c | 6 +- > sys/contrib/zstd/lib/legacy/zstd_v07.c | 6 +- > sys/contrib/zstd/lib/libzstd.pc.in | 6 +- > sys/contrib/zstd/lib/zstd.h | 395 ++++- > sys/contrib/zstd/programs/Makefile | 284 ++-- > sys/contrib/zstd/programs/README.md | 70 +- > sys/contrib/zstd/programs/dibio.c | 2 +- > sys/contrib/zstd/programs/fileio.c | 462 ++++-- > sys/contrib/zstd/programs/fileio.h | 29 +- > sys/contrib/zstd/programs/platform.h | 6 + > sys/contrib/zstd/programs/timefn.h | 6 +- > sys/contrib/zstd/programs/util.c | 407 ++++- > sys/contrib/zstd/programs/util.h | 62 +- > sys/contrib/zstd/programs/zstd.1 | 77 +- > sys/contrib/zstd/programs/zstd.1.md | 150 +- > sys/contrib/zstd/programs/zstdcli.c | 195 ++- > sys/contrib/zstd/programs/zstdgrep.1 | 2 +- > sys/contrib/zstd/programs/zstdless.1 | 2 +- > sys/contrib/zstd/zlibWrapper/Makefile | 4 +- > sys/contrib/zstd/zlibWrapper/zstd_zlibwrapper.c | 137 +- > 90 files changed, 6825 insertions(+), 3082 deletions(-) > > diff --cc sys/conf/kern.pre.mk > index 4a0663f49753,000000000000..4754092694c1 > mode 100644,000000..100644 > --- a/sys/conf/kern.pre.mk > +++ b/sys/conf/kern.pre.mk > @@@ -1,363 -1,0 +1,367 @@@ > +# $FreeBSD$ > + > +# Part of a unified Makefile for building kernels. This part contains all > +# of the definitions that need to be before %BEFORE_DEPEND. > + > +# Allow user to configure things that only effect src tree builds. > +# Note: This is duplicated from src.sys.mk to ensure that we include > +# /etc/src.conf when building the kernel. Kernels can be built without > +# the rest of /usr/src, but they still always process SRCCONF even though > +# the normal mechanisms to prevent that (compiling out of tree) won't > +# work. To ensure they do work, we have to duplicate thee few lines here. > +SRCCONF?= /etc/src.conf > +.if (exists(${SRCCONF}) || ${SRCCONF} != "/etc/src.conf") && !target(_srcconf_included_) > +.include "${SRCCONF}" > +_srcconf_included_: > +.endif > + > +.include > +.include > +.include "kern.opts.mk" > + > +# The kernel build always occurs in the object directory which is .CURDIR. > +.if ${.MAKE.MODE:Unormal:Mmeta} > +.MAKE.MODE+= curdirOk=yes > +.endif > + > +# The kernel build always expects .OBJDIR=.CURDIR. > +.OBJDIR: ${.CURDIR} > + > +.if defined(NO_OBJWALK) || ${MK_AUTO_OBJ} == "yes" > +NO_OBJWALK= t > +NO_MODULES_OBJ= t > +.endif > +.if !defined(NO_OBJWALK) > +_obj= obj > +.endif > + > +# Can be overridden by makeoptions or /etc/make.conf > +KERNEL_KO?= kernel > +KERNEL?= kernel > +KODIR?= /boot/${KERNEL} > +LDSCRIPT_NAME?= ldscript.$M > +LDSCRIPT?= $S/conf/${LDSCRIPT_NAME} > + > +M= ${MACHINE} > + > +AWK?= awk > +CP?= cp > +NM?= nm > +OBJCOPY?= objcopy > +SIZE?= size > + > +.if defined(DEBUG) > +CTFFLAGS+= -g > +.endif > +.if ${MACHINE_CPUARCH} == "amd64" && ${COMPILER_TYPE} != "clang" > +_COPTFLAGS_EXTRA=-frename-registers > +.else > +_COPTFLAGS_EXTRA= > +.endif > +COPTFLAGS?=-O2 -pipe ${_COPTFLAGS_EXTRA} > +.if !empty(COPTFLAGS:M-O[23s]) && empty(COPTFLAGS:M-fno-strict-aliasing) > +COPTFLAGS+= -fno-strict-aliasing > +.endif > +.if !defined(NO_CPU_COPTFLAGS) > +COPTFLAGS+= ${_CPUCFLAGS} > +.endif > +NOSTDINC= -nostdinc > + > +INCLUDES= ${NOSTDINC} ${INCLMAGIC} -I. -I$S -I$S/contrib/ck/include > + > +CFLAGS= ${COPTFLAGS} ${DEBUG} > +CFLAGS+= ${INCLUDES} -D_KERNEL -DHAVE_KERNEL_OPTION_HEADERS -include opt_global.h > +CFLAGS_PARAM_INLINE_UNIT_GROWTH?=100 > +CFLAGS_PARAM_LARGE_FUNCTION_GROWTH?=1000 > +.if ${MACHINE_CPUARCH} == "mips" > +CFLAGS_ARCH_PARAMS?=--param max-inline-insns-single=1000 -DMACHINE_ARCH='"${MACHINE_ARCH}"' > +.endif > +CFLAGS.gcc+= -fms-extensions -finline-limit=${INLINE_LIMIT} > +CFLAGS.gcc+= --param inline-unit-growth=${CFLAGS_PARAM_INLINE_UNIT_GROWTH} > +CFLAGS.gcc+= --param large-function-growth=${CFLAGS_PARAM_LARGE_FUNCTION_GROWTH} > +CFLAGS.gcc+= -fms-extensions > +.if defined(CFLAGS_ARCH_PARAMS) > +CFLAGS.gcc+=${CFLAGS_ARCH_PARAMS} > +.endif > +WERROR?= -Werror > +# The following should be removed no earlier than LLVM11 being imported into the > +# tree, to ensure we don't regress the build. LLVM11 and GCC10 will switch the > +# default over to -fno-common, making this redundant. > +CFLAGS+= -fno-common > + > +# XXX LOCORE means "don't declare C stuff" not "for locore.s". > +ASM_CFLAGS= -x assembler-with-cpp -DLOCORE ${CFLAGS} ${ASM_CFLAGS.${.IMPSRC:T}} > + > +.if defined(PROFLEVEL) && ${PROFLEVEL} >= 1 > +CFLAGS+= -DGPROF > +CFLAGS.gcc+= -falign-functions=16 > +.if ${PROFLEVEL} >= 2 > +CFLAGS+= -DGPROF4 -DGUPROF > +PROF= -pg > +.if ${COMPILER_TYPE} == "gcc" > +PROF+= -mprofiler-epilogue > +.endif > +.else > +PROF= -pg > +.endif > +.endif > +DEFINED_PROF= ${PROF} > + > +KCSAN_ENABLED!= grep KCSAN opt_global.h || true ; echo > +.if !empty(KCSAN_ENABLED) > +SAN_CFLAGS+= -fsanitize=thread > +.endif > + > +KUBSAN_ENABLED!= grep KUBSAN opt_global.h || true ; echo > +.if !empty(KUBSAN_ENABLED) > +SAN_CFLAGS+= -fsanitize=undefined > +.endif > + > +COVERAGE_ENABLED!= grep COVERAGE opt_global.h || true ; echo > +.if !empty(COVERAGE_ENABLED) > +.if ${COMPILER_TYPE} == "clang" || \ > + (${COMPILER_TYPE} == "gcc" && ${COMPILER_VERSION} >= 80100) > +SAN_CFLAGS+= -fsanitize-coverage=trace-pc,trace-cmp > +.else > +SAN_CFLAGS+= -fsanitize-coverage=trace-pc > +.endif > +.endif > + > +CFLAGS+= ${SAN_CFLAGS} > + > +GCOV_ENABLED!= grep GCOV opt_global.h || true ; echo > +.if !empty(GCOV_ENABLED) > +.if ${COMPILER_TYPE} == "gcc" > +GCOV_CFLAGS+= -fprofile-arcs -ftest-coverage > +.endif > +.endif > + > +CFLAGS+= ${GCOV_CFLAGS} > + > +# Put configuration-specific C flags last (except for ${PROF}) so that they > +# can override the others. > +CFLAGS+= ${CONF_CFLAGS} > + > +.if defined(LINKER_FEATURES) && ${LINKER_FEATURES:Mbuild-id} > +LDFLAGS+= --build-id=sha1 > +.endif > + > +.if (${MACHINE_CPUARCH} == "aarch64" || ${MACHINE_CPUARCH} == "amd64" || \ > + ${MACHINE_CPUARCH} == "i386" || ${MACHINE} == "powerpc") && \ > + defined(LINKER_FEATURES) && ${LINKER_FEATURES:Mifunc} == "" > +.error amd64/arm64/i386/ppc* kernel requires linker ifunc support > +.endif > +.if ${MACHINE_CPUARCH} == "amd64" > +LDFLAGS+= -z max-page-size=2097152 > +.if ${LINKER_TYPE} != "lld" > +LDFLAGS+= -z common-page-size=4096 > +.else > +.if defined(LINKER_FEATURES) && !${LINKER_FEATURES:Mifunc-noplt} > +.warning "Linker ${LD} does not support -z ifunc-noplt -> ifunc calls are unoptimized." > +.else > +LDFLAGS+= -z notext -z ifunc-noplt > +.endif > +.endif > +.endif # ${MACHINE_CPUARCH} == "amd64" > + > +.if ${MACHINE_CPUARCH} == "riscv" > +# Hack: Work around undefined weak symbols being out of range when linking with > +# LLD (address is a PC-relative calculation, and BFD works around this by > +# rewriting the instructions to generate an absolute address of 0); -fPIE > +# avoids this since it uses the GOT for all extern symbols, which is overly > +# inefficient for us. Drop once undefined weak symbols work with medany. > +.if ${LINKER_TYPE} == "lld" > +CFLAGS+= -fPIE > +.endif > +.endif > + > +NORMAL_C= ${CC} -c ${CFLAGS} ${WERROR} ${PROF} ${.IMPSRC} > +NORMAL_S= ${CC:N${CCACHE_BIN}} -c ${ASM_CFLAGS} ${WERROR} ${.IMPSRC} > +PROFILE_C= ${CC} -c ${CFLAGS} ${WERROR} ${.IMPSRC} > +NORMAL_C_NOWERROR= ${CC} -c ${CFLAGS} ${PROF} ${.IMPSRC} > + > +NORMAL_M= ${AWK} -f $S/tools/makeobjops.awk ${.IMPSRC} -c ; \ > + ${CC} -c ${CFLAGS} ${WERROR} ${PROF} ${.PREFIX}.c > + > +NORMAL_FW= uudecode -o ${.TARGET} ${.ALLSRC} > +NORMAL_FWO= ${CC:N${CCACHE_BIN}} -c ${ASM_CFLAGS} ${WERROR} -o ${.TARGET} \ > + $S/kern/firmw.S -DFIRMW_FILE="${.ALLSRC:M*.fw}" \ > + -DFIRMW_SYMBOL="${.ALLSRC:M*.fw:C/[-.\/]/_/g}" > + > +# for ZSTD in the kernel (include zstd/lib/freebsd before other CFLAGS) > - ZSTD_C= ${CC} -c -DZSTD_HEAPMODE=1 -I$S/contrib/zstd/lib/freebsd ${CFLAGS} -I$S/contrib/zstd/lib -I$S/contrib/zstd/lib/common ${WERROR} -Wno-inline -Wno-missing-prototypes ${PROF} -U__BMI__ ${.IMPSRC} > ++ZSTD_C= ${CC} -c -DZSTD_HEAPMODE=1 -I$S/contrib/zstd/lib/freebsd ${CFLAGS} \ > ++ -I$S/contrib/zstd/lib -I$S/contrib/zstd/lib/common ${WERROR} \ > ++ -Wno-inline -Wno-missing-prototypes ${PROF} -U__BMI__ \ > ++ -DZSTD_NO_INTRINSICS \ > ++ ${.IMPSRC} > +# https://github.com/facebook/zstd/commit/812e8f2a [zstd 1.4.1] > +# "Note that [GCC] autovectorization still does not do a good job on the > +# optimized version, so it's turned off via attribute and flag. I found > +# that neither attribute nor command-line flag were entirely successful in > +# turning off vectorization, which is why there were both." > +.if ${COMPILER_TYPE} == "gcc" > +ZSTD_DECOMPRESS_BLOCK_FLAGS= -fno-tree-vectorize > +.endif > + > +ZINCDIR=$S/contrib/openzfs/include > +# Common for dtrace / zfs > +CDDL_CFLAGS= \ > + -DFREEBSD_NAMECACHE \ > + -D_SYS_VMEM_H_ \ > + -D__KERNEL \ > + -D__KERNEL__ \ > + -nostdinc \ > + -include $S/modules/zfs/static_ccompile.h \ > + -I${ZINCDIR} \ > + -I${ZINCDIR}/os/freebsd \ > + -I${ZINCDIR}/os/freebsd/spl \ > + -I${ZINCDIR}/os/freebsd/zfs \ > + -I$S/modules/zfs \ > + -I$S/contrib/openzfs/module/zstd/include \ > + ${CFLAGS} \ > + -Wno-cast-qual \ > + -Wno-duplicate-decl-specifier \ > + -Wno-inline \ > + -Wno-missing-braces \ > + -Wno-missing-prototypes \ > + -Wno-nested-externs \ > + -Wno-parentheses \ > + -Wno-pointer-arith \ > + -Wno-redundant-decls \ > + -Wno-strict-prototypes \ > + -Wno-switch \ > + -Wno-undef \ > + -Wno-uninitialized \ > + -Wno-unknown-pragmas \ > + -Wno-unused \ > + -include ${ZINCDIR}/os/freebsd/spl/sys/ccompile.h \ > + -I$S/cddl/contrib/opensolaris/uts/common \ > + -I$S -I$S/cddl/compat/opensolaris > +CDDL_C= ${CC} -c ${CDDL_CFLAGS} ${WERROR} ${PROF} ${.IMPSRC} > + > +# Special flags for managing the compat compiles for ZFS > +ZFS_CFLAGS+= ${CDDL_CFLAGS} -DBUILDING_ZFS -DHAVE_UIO_ZEROCOPY \ > + -DWITH_NETDUMP -D__KERNEL__ -D_SYS_CONDVAR_H_ -DSMP \ > + -DIN_FREEBSD_BASE -DHAVE_KSID > + > +.if ${MACHINE_ARCH} == "amd64" > +ZFS_CFLAGS+= -DHAVE_AVX2 -DHAVE_AVX -D__x86_64 -DHAVE_SSE2 -DHAVE_AVX512F \ > + -DHAVE_SSSE3 -DHAVE_AVX512BW > +.endif > + > +.if ${MACHINE_ARCH} == "i386" || ${MACHINE_ARCH} == "powerpc" || \ > + ${MACHINE_ARCH} == "powerpcspe" || ${MACHINE_ARCH} == "arm" > +ZFS_CFLAGS+= -DBITS_PER_LONG=32 > +.else > +ZFS_CFLAGS+= -DBITS_PER_LONG=64 > +.endif > + > + > +ZFS_ASM_CFLAGS= -x assembler-with-cpp -DLOCORE ${ZFS_CFLAGS} > +ZFS_C= ${CC} -c ${ZFS_CFLAGS} ${WERROR} ${PROF} ${.IMPSRC} > +ZFS_RPC_C= ${CC} -c ${ZFS_CFLAGS} -DHAVE_RPC_TYPES ${WERROR} ${PROF} ${.IMPSRC} > +ZFS_S= ${CC} -c ${ZFS_ASM_CFLAGS} ${WERROR} ${.IMPSRC} > + > + > + > +# Special flags for managing the compat compiles for DTrace > +DTRACE_CFLAGS= -DBUILDING_DTRACE ${CDDL_CFLAGS} -I$S/cddl/dev/dtrace -I$S/cddl/dev/dtrace/${MACHINE_CPUARCH} > +.if ${MACHINE_CPUARCH} == "amd64" || ${MACHINE_CPUARCH} == "i386" > +DTRACE_CFLAGS+= -I$S/cddl/contrib/opensolaris/uts/intel -I$S/cddl/dev/dtrace/x86 > +.endif > +DTRACE_CFLAGS+= -I$S/cddl/contrib/opensolaris/common/util -I$S -DDIS_MEM -DSMP -I$S/cddl/compat/opensolaris > +DTRACE_CFLAGS+= -I$S/cddl/contrib/opensolaris/uts/common > +DTRACE_ASM_CFLAGS= -x assembler-with-cpp -DLOCORE ${DTRACE_CFLAGS} > +DTRACE_C= ${CC} -c ${DTRACE_CFLAGS} ${WERROR} ${PROF} ${.IMPSRC} > +DTRACE_S= ${CC} -c ${DTRACE_ASM_CFLAGS} ${WERROR} ${.IMPSRC} > + > +# Special flags for managing the compat compiles for DTrace/FBT > +FBT_CFLAGS= -DBUILDING_DTRACE -nostdinc -I$S/cddl/dev/fbt/${MACHINE_CPUARCH} -I$S/cddl/dev/fbt ${CDDL_CFLAGS} -I$S/cddl/compat/opensolaris -I$S/cddl/contrib/opensolaris/uts/common > +.if ${MACHINE_CPUARCH} == "amd64" || ${MACHINE_CPUARCH} == "i386" > +FBT_CFLAGS+= -I$S/cddl/dev/fbt/x86 > +.endif > +FBT_C= ${CC} -c ${FBT_CFLAGS} ${WERROR} ${PROF} ${.IMPSRC} > + > +.if ${MK_CTF} != "no" > +NORMAL_CTFCONVERT= ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} > +.elif ${MAKE_VERSION} >= 5201111300 > +NORMAL_CTFCONVERT= > +.else > +NORMAL_CTFCONVERT= @: > +.endif > + > +# Linux Kernel Programming Interface C-flags > +LINUXKPI_INCLUDES= -I$S/compat/linuxkpi/common/include > +LINUXKPI_C= ${NORMAL_C} ${LINUXKPI_INCLUDES} > + > +# Infiniband C flags. Correct include paths and omit errors that linux > +# does not honor. > +OFEDINCLUDES= -I$S/ofed/include -I$S/ofed/include/uapi ${LINUXKPI_INCLUDES} > +OFEDNOERR= -Wno-cast-qual -Wno-pointer-arith > +OFEDCFLAGS= ${CFLAGS:N-I*} -DCONFIG_INFINIBAND_USER_MEM \ > + ${OFEDINCLUDES} ${CFLAGS:M-I*} ${OFEDNOERR} > +OFED_C_NOIMP= ${CC} -c -o ${.TARGET} ${OFEDCFLAGS} ${WERROR} ${PROF} > +OFED_C= ${OFED_C_NOIMP} ${.IMPSRC} > + > +# mlxfw C flags. > +MLXFW_C= ${OFED_C_NOIMP} \ > + -I${SRCTOP}/sys/contrib/xz-embedded/freebsd \ > + -I${SRCTOP}/sys/contrib/xz-embedded/linux/lib/xz \ > + ${.IMPSRC} > + > +GEN_CFILES= $S/$M/$M/genassym.c ${MFILES:T:S/.m$/.c/} > +SYSTEM_CFILES= config.c env.c hints.c vnode_if.c > +SYSTEM_DEP= Makefile ${SYSTEM_OBJS} > +SYSTEM_OBJS= locore.o ${MDOBJS} ${OBJS} > +SYSTEM_OBJS+= ${SYSTEM_CFILES:.c=.o} > +SYSTEM_OBJS+= hack.pico > + > +KEYMAP=kbdcontrol -P ${SRCTOP}/share/vt/keymaps -P ${SRCTOP}/share/syscons/keymaps > +KEYMAP_FIX=sed -e 's/^static keymap_t.* = /static keymap_t key_map = /' -e 's/^static accentmap_t.* = /static accentmap_t accent_map = /' > + > +MD_ROOT_SIZE_CONFIGURED!= grep MD_ROOT_SIZE opt_md.h || true ; echo > +.if ${MFS_IMAGE:Uno} != "no" > +.if empty(MD_ROOT_SIZE_CONFIGURED) > +SYSTEM_OBJS+= embedfs_${MFS_IMAGE:T:R}.o > +.endif > +.endif > +SYSTEM_LD_BASECMD= \ > + ${LD} -m ${LD_EMULATION} -Bdynamic -T ${LDSCRIPT} ${_LDFLAGS} \ > + --no-warn-mismatch --warn-common --export-dynamic \ > + --dynamic-linker /red/herring -X > +SYSTEM_LD= @${SYSTEM_LD_BASECMD} -o ${.TARGET} ${SYSTEM_OBJS} vers.o > +SYSTEM_LD_TAIL= @${OBJCOPY} --strip-symbol gcc2_compiled. ${.TARGET} ; \ > + ${SIZE} ${.TARGET} ; chmod 755 ${.TARGET} > +SYSTEM_DEP+= ${LDSCRIPT} > + > +# Calculate path for .m files early, if needed. > +.if !defined(NO_MODULES) && !defined(__MPATH) && !make(install) && \ > + (empty(.MAKEFLAGS:M-V) || defined(NO_SKIP_MPATH)) > +__MPATH!=find ${S:tA}/ -name \*_if.m > +.endif > + > +# MKMODULESENV is set here so that port makefiles can augment > +# them. > + > +MKMODULESENV+= MAKEOBJDIRPREFIX=${.OBJDIR}/modules KMODDIR=${KODIR} > +MKMODULESENV+= MACHINE_CPUARCH=${MACHINE_CPUARCH} > +MKMODULESENV+= MACHINE=${MACHINE} MACHINE_ARCH=${MACHINE_ARCH} > +MKMODULESENV+= MODULES_EXTRA="${MODULES_EXTRA}" WITHOUT_MODULES="${WITHOUT_MODULES}" > +MKMODULESENV+= ARCH_FLAGS="${ARCH_FLAGS}" > +.if (${KERN_IDENT} == LINT) > +MKMODULESENV+= ALL_MODULES=LINT > +.endif > +.if defined(MODULES_OVERRIDE) > +MKMODULESENV+= MODULES_OVERRIDE="${MODULES_OVERRIDE}" > +.endif > +.if defined(DEBUG) > +MKMODULESENV+= DEBUG_FLAGS="${DEBUG}" > +.endif > +.if !defined(NO_MODULES) > +MKMODULESENV+= __MPATH="${__MPATH}" > +.endif > + > +# Detect kernel config options that force stack frames to be turned on. > +DDB_ENABLED!= grep DDB opt_ddb.h || true ; echo > +DTR_ENABLED!= grep KDTRACE_FRAME opt_kdtrace.h || true ; echo > +HWPMC_ENABLED!= grep HWPMC opt_hwpmc_hooks.h || true ; echo > diff --cc sys/contrib/zstd/Makefile > index 2c1d34604fe9,000000000000..2832fb4752b8 > mode 100644,000000..100644 > --- a/sys/contrib/zstd/Makefile > +++ b/sys/contrib/zstd/Makefile > @@@ -1,414 -1,0 +1,420 @@@ > +# ################################################################ > +# Copyright (c) 2015-2020, Yann Collet, Facebook, Inc. > +# All rights reserved. > +# > +# This source code is licensed under both the BSD-style license (found in the > +# LICENSE file in the root directory of this source tree) and the GPLv2 (found > +# in the COPYING file in the root directory of this source tree). > +# You may select, at your option, one of the above-listed licenses. > +# ################################################################ > + > ++# verbose mode (print commands) on V=1 or VERBOSE=1 > ++Q = $(if $(filter 1,$(V) $(VERBOSE)),,@) > ++ > +PRGDIR = programs > +ZSTDDIR = lib > +BUILDIR = build > +ZWRAPDIR = zlibWrapper > +TESTDIR = tests > +FUZZDIR = $(TESTDIR)/fuzz > + > +# Define nul output > +VOID = /dev/null > + > +# When cross-compiling from linux to windows, you might > +# need to specify this as "Windows." Fedora build fails > +# without it. > +# > +# Note: mingw-w64 build from linux to windows does not > +# fail on other tested distros (ubuntu, debian) even > +# without manually specifying the TARGET_SYSTEM. > +TARGET_SYSTEM ?= $(OS) > + > +ifneq (,$(filter Windows%,$(TARGET_SYSTEM))) > - EXT =.exe > ++ EXT =.exe > +else > - EXT = > ++ EXT = > +endif > + > +## default: Build lib-release and zstd-release > +.PHONY: default > +default: lib-release zstd-release > + > +.PHONY: all > +all: allmost examples manual contrib > + > +.PHONY: allmost > +allmost: allzstd zlibwrapper > + > +# skip zwrapper, can't build that on alternate architectures without the proper zlib installed > +.PHONY: allzstd > +allzstd: lib-all > - $(MAKE) -C $(PRGDIR) all > - $(MAKE) -C $(TESTDIR) all > ++ $(Q)$(MAKE) -C $(PRGDIR) all > ++ $(Q)$(MAKE) -C $(TESTDIR) all > + > +.PHONY: all32 > +all32: > + $(MAKE) -C $(PRGDIR) zstd32 > + $(MAKE) -C $(TESTDIR) all32 > + > +.PHONY: lib lib-release libzstd.a > ++lib-all : lib > +lib lib-release lib-all : > - @$(MAKE) -C $(ZSTDDIR) $@ > ++ $(Q)$(MAKE) -C $(ZSTDDIR) $@ > + > +.PHONY: zstd zstd-release > +zstd zstd-release: > - @$(MAKE) -C $(PRGDIR) $@ > - cp $(PRGDIR)/zstd$(EXT) . > ++ $(Q)$(MAKE) -C $(PRGDIR) $@ > ++ $(Q)ln -sf $(PRGDIR)/zstd$(EXT) zstd$(EXT) > + > +.PHONY: zstdmt > +zstdmt: > - @$(MAKE) -C $(PRGDIR) $@ > - cp $(PRGDIR)/zstd$(EXT) ./zstdmt$(EXT) > ++ $(Q)$(MAKE) -C $(PRGDIR) $@ > ++ $(Q)cp $(PRGDIR)/zstd$(EXT) ./zstdmt$(EXT) > + > +.PHONY: zlibwrapper > +zlibwrapper: lib > + $(MAKE) -C $(ZWRAPDIR) all > + > +## test: run long-duration tests > +.PHONY: test > +DEBUGLEVEL ?= 1 > - test: MOREFLAGS += -g -DDEBUGLEVEL=$(DEBUGLEVEL) -Werror > ++test: MOREFLAGS += -g -Werror > +test: > - MOREFLAGS="$(MOREFLAGS)" $(MAKE) -j -C $(PRGDIR) allVariants > ++ DEBUGLEVEL=$(DEBUGLEVEL) MOREFLAGS="$(MOREFLAGS)" $(MAKE) -j -C $(PRGDIR) allVariants > + $(MAKE) -C $(TESTDIR) $@ > - ZSTD=../../programs/zstd $(MAKE) -C doc/educational_decoder test > ++ ZSTD=../../programs/zstd $(MAKE) -C doc/educational_decoder $@ > + > +## shortest: same as `make check` > +.PHONY: shortest > +shortest: > - $(MAKE) -C $(TESTDIR) $@ > ++ $(Q)$(MAKE) -C $(TESTDIR) $@ > + > +## check: run basic tests for `zstd` cli > +.PHONY: check > +check: shortest > + > +.PHONY: automated_benchmarking > +automated_benchmarking: > + $(MAKE) -C $(TESTDIR) $@ > + > +.PHONY: benchmarking > +benchmarking: automated_benchmarking > + > - ## examples: build all examples in `/examples` directory > ++## examples: build all examples in `examples/` directory > +.PHONY: examples > +examples: lib > - CPPFLAGS=-I../lib LDFLAGS=-L../lib $(MAKE) -C examples/ all > ++ $(MAKE) -C examples all > + > +## manual: generate API documentation in html format > +.PHONY: manual > +manual: > + $(MAKE) -C contrib/gen_html $@ > + > +## man: generate man page > +.PHONY: man > +man: > + $(MAKE) -C programs $@ > + > +## contrib: build all supported projects in `/contrib` directory > +.PHONY: contrib > +contrib: lib > + $(MAKE) -C contrib/pzstd all > + $(MAKE) -C contrib/seekable_format/examples all > ++ $(MAKE) -C contrib/seekable_format/tests test > + $(MAKE) -C contrib/largeNbDicts all > + cd contrib/single_file_libs/ ; ./build_decoder_test.sh > + cd contrib/single_file_libs/ ; ./build_library_test.sh > + > +.PHONY: cleanTabs > +cleanTabs: > + cd contrib; ./cleanTabs > + > +.PHONY: clean > +clean: > - @$(MAKE) -C $(ZSTDDIR) $@ > $(VOID) > - @$(MAKE) -C $(PRGDIR) $@ > $(VOID) > - @$(MAKE) -C $(TESTDIR) $@ > $(VOID) > - @$(MAKE) -C $(ZWRAPDIR) $@ > $(VOID) > - @$(MAKE) -C examples/ $@ > $(VOID) > - @$(MAKE) -C contrib/gen_html $@ > $(VOID) > - @$(MAKE) -C contrib/pzstd $@ > $(VOID) > - @$(MAKE) -C contrib/seekable_format/examples $@ > $(VOID) > - @$(MAKE) -C contrib/largeNbDicts $@ > $(VOID) > - @$(RM) zstd$(EXT) zstdmt$(EXT) tmp* > - @$(RM) -r lz4 > ++ $(Q)$(MAKE) -C $(ZSTDDIR) $@ > $(VOID) > ++ $(Q)$(MAKE) -C $(PRGDIR) $@ > $(VOID) > ++ $(Q)$(MAKE) -C $(TESTDIR) $@ > $(VOID) > ++ $(Q)$(MAKE) -C $(ZWRAPDIR) $@ > $(VOID) > ++ $(Q)$(MAKE) -C examples/ $@ > $(VOID) > ++ $(Q)$(MAKE) -C contrib/gen_html $@ > $(VOID) > ++ $(Q)$(MAKE) -C contrib/pzstd $@ > $(VOID) > ++ $(Q)$(MAKE) -C contrib/seekable_format/examples $@ > $(VOID) > ++ $(Q)$(MAKE) -C contrib/seekable_format/tests $@ > $(VOID) > ++ $(Q)$(MAKE) -C contrib/largeNbDicts $@ > $(VOID) > ++ $(Q)$(RM) zstd$(EXT) zstdmt$(EXT) tmp* > ++ $(Q)$(RM) -r lz4 > + @echo Cleaning completed > + > +#------------------------------------------------------------------------------ > +# make install is validated only for Linux, macOS, Hurd and some BSD targets > +#------------------------------------------------------------------------------ > +ifneq (,$(filter $(shell uname),Linux Darwin GNU/kFreeBSD GNU OpenBSD FreeBSD DragonFly NetBSD MSYS_NT Haiku)) > + > +HOST_OS = POSIX > +CMAKE_PARAMS = -DZSTD_BUILD_CONTRIB:BOOL=ON -DZSTD_BUILD_STATIC:BOOL=ON -DZSTD_BUILD_TESTS:BOOL=ON -DZSTD_ZLIB_SUPPORT:BOOL=ON -DZSTD_LZMA_SUPPORT:BOOL=ON -DCMAKE_BUILD_TYPE=Release > + > +HAVE_COLORNEVER = $(shell echo a | egrep --color=never a > /dev/null 2> /dev/null && echo 1 || echo 0) > +EGREP_OPTIONS ?= > +ifeq ($HAVE_COLORNEVER, 1) > +EGREP_OPTIONS += --color=never > +endif > +EGREP = egrep $(EGREP_OPTIONS) > + > +# Print a two column output of targets and their description. To add a target description, put a > +# comment in the Makefile with the format "## : ". For example: > +# > +## list: Print all targets and their descriptions (if provided) > +.PHONY: list > +list: > - @TARGETS=$$($(MAKE) -pRrq -f $(lastword $(MAKEFILE_LIST)) : 2>/dev/null \ > ++ $(Q)TARGETS=$$($(MAKE) -pRrq -f $(lastword $(MAKEFILE_LIST)) : 2>/dev/null \ > + | awk -v RS= -F: '/^# File/,/^# Finished Make data base/ {if ($$1 !~ "^[#.]") {print $$1}}' \ > + | $(EGREP) -v -e '^[^[:alnum:]]' | sort); \ > + { \ > + printf "Target Name\tDescription\n"; \ > + printf "%0.s-" {1..16}; printf "\t"; printf "%0.s-" {1..40}; printf "\n"; \ > + for target in $$TARGETS; do \ > + line=$$($(EGREP) "^##[[:space:]]+$$target:" $(lastword $(MAKEFILE_LIST))); \ > + description=$$(echo $$line | awk '{i=index($$0,":"); print substr($$0,i+1)}' | xargs); \ > + printf "$$target\t$$description\n"; \ > + done \ > + } | column -t -s $$'\t' > + > +.PHONY: install armtest usan asan uasan > +install: > - @$(MAKE) -C $(ZSTDDIR) $@ > - @$(MAKE) -C $(PRGDIR) $@ > ++ $(Q)$(MAKE) -C $(ZSTDDIR) $@ > ++ $(Q)$(MAKE) -C $(PRGDIR) $@ > + > +.PHONY: uninstall > +uninstall: > - @$(MAKE) -C $(ZSTDDIR) $@ > - @$(MAKE) -C $(PRGDIR) $@ > ++ $(Q)$(MAKE) -C $(ZSTDDIR) $@ > ++ $(Q)$(MAKE) -C $(PRGDIR) $@ > + > +.PHONY: travis-install > +travis-install: > + $(MAKE) install PREFIX=~/install_test_dir > + > +.PHONY: gcc5build > +gcc5build: clean > + gcc-5 -v > + CC=gcc-5 $(MAKE) all MOREFLAGS="-Werror" > + > +.PHONY: gcc6build > +gcc6build: clean > + gcc-6 -v > + CC=gcc-6 $(MAKE) all MOREFLAGS="-Werror" > + > +.PHONY: gcc7build > +gcc7build: clean > + gcc-7 -v > + CC=gcc-7 $(MAKE) all MOREFLAGS="-Werror" > + > +.PHONY: clangbuild > +clangbuild: clean > + clang -v > + CXX=clang++ CC=clang CFLAGS="-Werror -Wconversion -Wno-sign-conversion -Wdocumentation" $(MAKE) all > + > +m32build: clean > + gcc -v > + $(MAKE) all32 > + > +armbuild: clean > + CC=arm-linux-gnueabi-gcc CFLAGS="-Werror" $(MAKE) allzstd > + > +aarch64build: clean > + CC=aarch64-linux-gnu-gcc CFLAGS="-Werror" $(MAKE) allzstd > + > +ppcbuild: clean > + CC=powerpc-linux-gnu-gcc CFLAGS="-m32 -Wno-attributes -Werror" $(MAKE) allzstd > + > +ppc64build: clean > + CC=powerpc-linux-gnu-gcc CFLAGS="-m64 -Werror" $(MAKE) allzstd > + > +armfuzz: clean > + CC=arm-linux-gnueabi-gcc QEMU_SYS=qemu-arm-static MOREFLAGS="-static" FUZZER_FLAGS=--no-big-tests $(MAKE) -C $(TESTDIR) fuzztest > + > +aarch64fuzz: clean > + ld -v > + CC=aarch64-linux-gnu-gcc QEMU_SYS=qemu-aarch64-static MOREFLAGS="-static" FUZZER_FLAGS=--no-big-tests $(MAKE) -C $(TESTDIR) fuzztest > + > +ppcfuzz: clean > + CC=powerpc-linux-gnu-gcc QEMU_SYS=qemu-ppc-static MOREFLAGS="-static" FUZZER_FLAGS=--no-big-tests $(MAKE) -C $(TESTDIR) fuzztest > + > +ppc64fuzz: clean > + CC=powerpc-linux-gnu-gcc QEMU_SYS=qemu-ppc64-static MOREFLAGS="-m64 -static" FUZZER_FLAGS=--no-big-tests $(MAKE) -C $(TESTDIR) fuzztest > + > +.PHONY: cxxtest > +cxxtest: CXXFLAGS += -Wall -Wextra -Wundef -Wshadow -Wcast-align -Werror > +cxxtest: clean > + $(MAKE) -C $(PRGDIR) all CC="$(CXX) -Wno-deprecated" CFLAGS="$(CXXFLAGS)" # adding -Wno-deprecated to avoid clang++ warning on dealing with C files directly > + > +gcc5test: clean > + gcc-5 -v > + $(MAKE) all CC=gcc-5 MOREFLAGS="-Werror" > + > +gcc6test: clean > + gcc-6 -v > + $(MAKE) all CC=gcc-6 MOREFLAGS="-Werror" > + > +armtest: clean > + $(MAKE) -C $(TESTDIR) datagen # use native, faster > + $(MAKE) -C $(TESTDIR) test CC=arm-linux-gnueabi-gcc QEMU_SYS=qemu-arm-static ZSTDRTTEST= MOREFLAGS="-Werror -static" FUZZER_FLAGS=--no-big-tests > + > +aarch64test: > + $(MAKE) -C $(TESTDIR) datagen # use native, faster > + $(MAKE) -C $(TESTDIR) test CC=aarch64-linux-gnu-gcc QEMU_SYS=qemu-aarch64-static ZSTDRTTEST= MOREFLAGS="-Werror -static" FUZZER_FLAGS=--no-big-tests > + > +ppctest: clean > + $(MAKE) -C $(TESTDIR) datagen # use native, faster > + $(MAKE) -C $(TESTDIR) test CC=powerpc-linux-gnu-gcc QEMU_SYS=qemu-ppc-static ZSTDRTTEST= MOREFLAGS="-Werror -Wno-attributes -static" FUZZER_FLAGS=--no-big-tests > + > +ppc64test: clean > + $(MAKE) -C $(TESTDIR) datagen # use native, faster > + $(MAKE) -C $(TESTDIR) test CC=powerpc-linux-gnu-gcc QEMU_SYS=qemu-ppc64-static ZSTDRTTEST= MOREFLAGS="-m64 -static" FUZZER_FLAGS=--no-big-tests > + > +arm-ppc-compilation: > + $(MAKE) -C $(PRGDIR) clean zstd CC=arm-linux-gnueabi-gcc QEMU_SYS=qemu-arm-static ZSTDRTTEST= MOREFLAGS="-Werror -static" > + $(MAKE) -C $(PRGDIR) clean zstd CC=aarch64-linux-gnu-gcc QEMU_SYS=qemu-aarch64-static ZSTDRTTEST= MOREFLAGS="-Werror -static" > + $(MAKE) -C $(PRGDIR) clean zstd CC=powerpc-linux-gnu-gcc QEMU_SYS=qemu-ppc-static ZSTDRTTEST= MOREFLAGS="-Werror -Wno-attributes -static" > + $(MAKE) -C $(PRGDIR) clean zstd CC=powerpc-linux-gnu-gcc QEMU_SYS=qemu-ppc64-static ZSTDRTTEST= MOREFLAGS="-m64 -static" > + > +regressiontest: > + $(MAKE) -C $(FUZZDIR) regressiontest > + > +uasanregressiontest: > + $(MAKE) -C $(FUZZDIR) regressiontest CC=clang CXX=clang++ CFLAGS="-O3 -fsanitize=address,undefined" CXXFLAGS="-O3 -fsanitize=address,undefined" > + > +msanregressiontest: > + $(MAKE) -C $(FUZZDIR) regressiontest CC=clang CXX=clang++ CFLAGS="-O3 -fsanitize=memory" CXXFLAGS="-O3 -fsanitize=memory" > + > +# run UBsan with -fsanitize-recover=signed-integer-overflow > +# due to a bug in UBsan when doing pointer subtraction > +# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63303 > + > +usan: clean > + $(MAKE) test CC=clang MOREFLAGS="-g -fno-sanitize-recover=all -fsanitize-recover=signed-integer-overflow -fsanitize=undefined -Werror" > + > +asan: clean > + $(MAKE) test CC=clang MOREFLAGS="-g -fsanitize=address -Werror" > + > +asan-%: clean > + LDFLAGS=-fuse-ld=gold MOREFLAGS="-g -fno-sanitize-recover=all -fsanitize=address -Werror" $(MAKE) -C $(TESTDIR) $* > + > +msan: clean > + $(MAKE) test CC=clang MOREFLAGS="-g -fsanitize=memory -fno-omit-frame-pointer -Werror" HAVE_LZMA=0 # datagen.c fails this test for no obvious reason > + > +msan-%: clean > + LDFLAGS=-fuse-ld=gold MOREFLAGS="-g -fno-sanitize-recover=all -fsanitize=memory -fno-omit-frame-pointer -Werror" FUZZER_FLAGS=--no-big-tests $(MAKE) -C $(TESTDIR) HAVE_LZMA=0 $* > + > +asan32: clean > + $(MAKE) -C $(TESTDIR) test32 CC=clang MOREFLAGS="-g -fsanitize=address" > + > +uasan: clean > + $(MAKE) test CC=clang MOREFLAGS="-g -fno-sanitize-recover=all -fsanitize-recover=signed-integer-overflow -fsanitize=address,undefined -Werror" > + > +uasan-%: clean > + LDFLAGS=-fuse-ld=gold MOREFLAGS="-g -fno-sanitize-recover=all -fsanitize-recover=signed-integer-overflow -fsanitize=address,undefined -Werror" $(MAKE) -C $(TESTDIR) $* > + > +tsan-%: clean > + LDFLAGS=-fuse-ld=gold MOREFLAGS="-g -fno-sanitize-recover=all -fsanitize=thread -Werror" $(MAKE) -C $(TESTDIR) $* FUZZER_FLAGS=--no-big-tests > + > +apt-install: > + sudo apt-get -yq --no-install-suggests --no-install-recommends --force-yes install $(APT_PACKAGES) > + > +apt-add-repo: > + sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test > + sudo apt-get update -y -qq > + > +ppcinstall: > + APT_PACKAGES="qemu-system-ppc qemu-user-static gcc-powerpc-linux-gnu" $(MAKE) apt-install > + > +arminstall: > + APT_PACKAGES="qemu-system-arm qemu-user-static gcc-arm-linux-gnueabi libc6-dev-armel-cross gcc-aarch64-linux-gnu libc6-dev-arm64-cross" $(MAKE) apt-install > + > +valgrindinstall: > + APT_PACKAGES="valgrind" $(MAKE) apt-install > + > +libc6install: > + APT_PACKAGES="libc6-dev-i386 gcc-multilib" $(MAKE) apt-install > + > +gcc6install: apt-add-repo > + APT_PACKAGES="libc6-dev-i386 gcc-multilib gcc-6 gcc-6-multilib" $(MAKE) apt-install > + > +gcc7install: apt-add-repo > + APT_PACKAGES="libc6-dev-i386 gcc-multilib gcc-7 gcc-7-multilib" $(MAKE) apt-install > + > +gcc8install: apt-add-repo > + APT_PACKAGES="libc6-dev-i386 gcc-multilib gcc-8 gcc-8-multilib" $(MAKE) apt-install > + > +gpp6install: apt-add-repo > + APT_PACKAGES="libc6-dev-i386 g++-multilib gcc-6 g++-6 g++-6-multilib" $(MAKE) apt-install > + > +clang38install: > + APT_PACKAGES="clang-3.8" $(MAKE) apt-install > + > +# Ubuntu 14.04 ships a too-old lz4 > +lz4install: > + [ -e lz4 ] || git clone https://github.com/lz4/lz4 && sudo $(MAKE) -C lz4 install > + > +endif > + > + > +ifneq (,$(filter MSYS%,$(shell uname))) > +HOST_OS = MSYS > +CMAKE_PARAMS = -G"MSYS Makefiles" -DCMAKE_BUILD_TYPE=Debug -DZSTD_MULTITHREAD_SUPPORT:BOOL=OFF -DZSTD_BUILD_STATIC:BOOL=ON -DZSTD_BUILD_TESTS:BOOL=ON > +endif > + > + > +#------------------------------------------------------------------------ > +# target specific tests > +#------------------------------------------------------------------------ > +ifneq (,$(filter $(HOST_OS),MSYS POSIX)) > +cmakebuild: > + cmake --version > + $(RM) -r $(BUILDIR)/cmake/build > + mkdir $(BUILDIR)/cmake/build > + cd $(BUILDIR)/cmake/build; cmake -DCMAKE_INSTALL_PREFIX:PATH=~/install_test_dir $(CMAKE_PARAMS) .. > + $(MAKE) -C $(BUILDIR)/cmake/build -j4; > + $(MAKE) -C $(BUILDIR)/cmake/build install; > + $(MAKE) -C $(BUILDIR)/cmake/build uninstall; > + cd $(BUILDIR)/cmake/build; ctest -V -L Medium > + > +c89build: clean > + $(CC) -v > + CFLAGS="-std=c89 -Werror" $(MAKE) allmost # will fail, due to missing support for `long long` > + > +gnu90build: clean > + $(CC) -v > + CFLAGS="-std=gnu90 -Werror" $(MAKE) allmost > + > +c99build: clean > + $(CC) -v > + CFLAGS="-std=c99 -Werror" $(MAKE) allmost > + > +gnu99build: clean > + $(CC) -v > + CFLAGS="-std=gnu99 -Werror" $(MAKE) allmost > + > +c11build: clean > + $(CC) -v > + CFLAGS="-std=c11 -Werror" $(MAKE) allmost > + > +bmix64build: clean > + $(CC) -v > + CFLAGS="-O3 -mbmi -Werror" $(MAKE) -C $(TESTDIR) test > + > +bmix32build: clean > + $(CC) -v > + CFLAGS="-O3 -mbmi -mx32 -Werror" $(MAKE) -C $(TESTDIR) test > + > +bmi32build: clean > + $(CC) -v > + CFLAGS="-O3 -mbmi -m32 -Werror" $(MAKE) -C $(TESTDIR) test > + > +# static analyzer test uses clang's scan-build > +# does not analyze zlibWrapper, due to detected issues in zlib source code > +staticAnalyze: SCANBUILD ?= scan-build > +staticAnalyze: > + $(CC) -v > + CC=$(CC) CPPFLAGS=-g $(SCANBUILD) --status-bugs -v $(MAKE) allzstd examples contrib > +endif > diff --cc sys/contrib/zstd/README.md > index 5c300fdc49aa,000000000000..dcca7662d2ff > mode 100644,000000..100644 > --- a/sys/contrib/zstd/README.md > +++ b/sys/contrib/zstd/README.md > @@@ -1,193 -1,0 +1,199 @@@ > +

Zstandard

> + > +__Zstandard__, or `zstd` as short version, is a fast lossless compression algorithm, > +targeting real-time compression scenarios at zlib-level and better compression ratios. > +It's backed by a very fast entropy stage, provided by [Huff0 and FSE library](https://github.com/Cyan4973/FiniteStateEntropy). > + > +The project is provided as an open-source dual [BSD](LICENSE) and [GPLv2](COPYING) licensed **C** library, > +and a command line utility producing and decoding `.zst`, `.gz`, `.xz` and `.lz4` files. > +Should your project require another programming language, > +a list of known ports and bindings is provided on [Zstandard homepage](http://www.zstd.net/#other-languages). > + > +**Development branch status:** > + > +[![Build Status][travisDevBadge]][travisLink] > +[![Build status][AppveyorDevBadge]][AppveyorLink] > +[![Build status][CircleDevBadge]][CircleLink] > +[![Build status][CirrusDevBadge]][CirrusLink] > +[![Fuzzing Status][OSSFuzzBadge]][OSSFuzzLink] > + > +[travisDevBadge]: https://travis-ci.org/facebook/zstd.svg?branch=dev "Continuous Integration test suite" > +[travisLink]: https://travis-ci.org/facebook/zstd > +[AppveyorDevBadge]: https://ci.appveyor.com/api/projects/status/xt38wbdxjk5mrbem/branch/dev?svg=true "Windows test suite" > +[AppveyorLink]: https://ci.appveyor.com/project/YannCollet/zstd-p0yf0 > +[CircleDevBadge]: https://circleci.com/gh/facebook/zstd/tree/dev.svg?style=shield "Short test suite" > +[CircleLink]: https://circleci.com/gh/facebook/zstd > +[CirrusDevBadge]: https://api.cirrus-ci.com/github/facebook/zstd.svg?branch=dev > +[CirrusLink]: https://cirrus-ci.com/github/facebook/zstd > +[OSSFuzzBadge]: https://oss-fuzz-build-logs.storage.googleapis.com/badges/zstd.svg > +[OSSFuzzLink]: https://bugs.chromium.org/p/oss-fuzz/issues/list?sort=-opened&can=1&q=proj:zstd > + > +## Benchmarks > + > +For reference, several fast compression algorithms were tested and compared > +on a server running Arch Linux (`Linux version 5.5.11-arch1-1`), > +with a Core i9-9900K CPU @ 5.0GHz, > *** 2020 LINES SKIPPED ***