git: f7cd7fe51c41 - sys/contrib/zstd: Import zstd 1.4.8
Ulrich Spörlein
uspoerlein at gmail.com
Sun Jan 3 12:37:25 UTC 2021
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 <cem at freebsd.org> 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 <cem at FreeBSD.org>
> AuthorDate: 2020-12-25 15:42:41 +0000
> Commit: Conrad Meyer <cem at FreeBSD.org>
> 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 <bsd.own.mk>
> +.include <bsd.compiler.mk>
> +.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 "## <TARGET>: <DESCRIPTION>". 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 @@@
> +<p align="center"><img src="https://raw.githubusercontent.com/facebook/zstd/dev/doc/images/zstd_logo86.png" alt="Zstandard"></p>
> +
> +__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 ***
More information about the dev-commits-src-all
mailing list