language: c
+ compiler: gcc
+ matrix:
+ fast_finish: true
+ include:
+ # Container-based Ubuntu 12.04 LTS Server Edition 64 bit (doesn't support 32-bit includes)
+ - os: linux
+ sudo: false
+ env: PLATFORM="Ubuntu 12.04 container" MAKE_PARAM=travis-install
+ - os: linux
+ sudo: false
+ env: PLATFORM="Ubuntu 12.04 container" MAKE_PARAM=cmaketest
+ - os: linux
+ sudo: false
+ env: PLATFORM="Ubuntu 12.04 container" MAKE_PARAM=test
+ - os: linux
+ sudo: false
+ env: PLATFORM="Ubuntu 12.04 container" MAKE_PARAM="-C programs test-zstd_nolegacy"
+ - os: linux
+ sudo: false
+ env: PLATFORM="Ubuntu 12.04 container" MAKE_PARAM=usan
+ - os: linux
+ sudo: false
+ env: PLATFORM="Ubuntu 12.04 container" MAKE_PARAM=asan
+ # Standard Ubuntu 12.04 LTS Server Edition 64 bit
+ - os: linux
+ sudo: required
+ env: PLATFORM="Ubuntu 12.04" MAKE_PARAM=clangtest
+ - os: linux
+ sudo: required
+ env: PLATFORM="Ubuntu 12.04" MAKE_PARAM=gpptest
+ - os: linux
+ sudo: required
+ env: PLATFORM="Ubuntu 12.04" MAKE_PARAM=gnu90test
+ - os: linux
+ sudo: required
+ env: PLATFORM="Ubuntu 12.04" MAKE_PARAM=c99test
+ - os: linux
+ sudo: required
+ env: PLATFORM="Ubuntu 12.04" MAKE_PARAM=gnu99test
+ - os: linux
+ sudo: required
+ env: PLATFORM="Ubuntu 12.04" MAKE_PARAM=armtest-w-install
+ - os: linux
+ sudo: required
+ env: PLATFORM="Ubuntu 12.04" MAKE_PARAM="-C programs test32"
+ - os: linux
+ sudo: required
+ env: PLATFORM="Ubuntu 12.04" MAKE_PARAM="-C versionsTest"
+ - os: linux
+ sudo: required
+ env: PLATFORM="Ubuntu 12.04" MAKE_PARAM=asan32
+ - os: linux
+ sudo: required
+ env: PLATFORM="Ubuntu 12.04" MAKE_PARAM="-C programs valgrindTest"
+ - os: linux
+ sudo: required
+ env: PLATFORM="Ubuntu 12.04" MAKE_PARAM=gnu90test
+ - os: linux
+ sudo: required
+ env: PLATFORM="Ubuntu 12.04" MAKE_PARAM=c99test
+ #- os: linux
+ # sudo: required
+ # env: PLATFORM="Ubuntu 12.04" MAKE_PARAM=zlibwrapper
+ # Ubuntu 14.04 LTS Server Edition 64 bit
+ - os: linux
+ dist: trusty
+ sudo: required
+ env: PLATFORM="Ubuntu 14.04" MAKE_PARAM=ppctest-w-install
+ - os: linux
+ dist: trusty
+ sudo: required
+ env: PLATFORM="Ubuntu 14.04" MAKE_PARAM=zlibwrapper
+ # OS X Mavericks
+ - os: osx
+ env: PLATFORM="OS X Mavericks" MAKE_PARAM=travis-install
+ - os: osx
+ env: PLATFORM="OS X Mavericks" MAKE_PARAM=gnu90test
+ - os: osx
+ env: PLATFORM="OS X Mavericks" MAKE_PARAM=test
+ exclude:
+ - compiler: gcc
before_install:
- - sudo apt-get update -qq
- - sudo apt-get install -qq clang
- - sudo apt-get install -qq g++-multilib
- - sudo apt-get install -qq gcc-multilib
- - sudo apt-get install -qq valgrind
-
- env:
- - ZSTD_TRAVIS_CI_ENV=travis-install
- - ZSTD_TRAVIS_CI_ENV=cmaketest
- - ZSTD_TRAVIS_CI_ENV=clangtest
- - ZSTD_TRAVIS_CI_ENV=gpptest
- - ZSTD_TRAVIS_CI_ENV=gnu90test
- - ZSTD_TRAVIS_CI_ENV=c99test
- - ZSTD_TRAVIS_CI_ENV=gnu99test
- - ZSTD_TRAVIS_CI_ENV=armtest-w-install
- - ZSTD_TRAVIS_CI_ENV=test
- - ZSTD_TRAVIS_CI_ENV="-C programs test32"
- - ZSTD_TRAVIS_CI_ENV="-C programs test-zstd_nolegacy"
- #- ZSTD_TRAVIS_CI_ENV="-C versionsTest"
- - ZSTD_TRAVIS_CI_ENV=usan
- - ZSTD_TRAVIS_CI_ENV=asan
- - ZSTD_TRAVIS_CI_ENV=asan32
- - ZSTD_TRAVIS_CI_ENV="-C programs valgrindTest"
+ - set -e
+ - |
+ if [ "$TRAVIS_OS_NAME" == "linux" ]; then
+ CAN_I_RUN_SUDO=$(sudo -n uptime 2>&1|grep "load"|wc -l)
+ echo "CAN_I_RUN_SUDO=$CAN_I_RUN_SUDO\n"
+ if [ ${CAN_I_RUN_SUDO} -gt 0 ]; then
+ sudo apt-get install -y -qq clang g++-multilib gcc-multilib valgrind
+ fi
+ fi
- compiler: gcc
-
- script:
- - make $ZSTD_TRAVIS_CI_ENV
+ script:
+ - make $MAKE_PARAM
+
- matrix:
- fast_finish: true
You can then reuse ZSTD_CCtx to compress some new frame.
*/
-typedef struct { U64 frameContentSize; U32 windowLog; } ZSTD_frameParams;
+typedef struct {
+ U64 frameContentSize;
+ U32 windowLog;
+ U32 dictID;
+} ZSTD_frameParams;
-#define ZSTD_FRAMEHEADERSIZE_MAX 13 /* for static allocation */
-static const size_t ZSTD_frameHeaderSize_min = 5;
+#define ZSTD_FRAMEHEADERSIZE_MAX 18 /* for static allocation */
+static const size_t ZSTD_frameHeaderSize_min = 6;
static const size_t ZSTD_frameHeaderSize_max = ZSTD_FRAMEHEADERSIZE_MAX;
+ static const size_t ZSTD_skippableHeaderSize = 8; /* magic number + skippable frame length */
ZSTDLIB_API size_t ZSTD_getFrameParams(ZSTD_frameParams* fparamsPtr, const void* src, size_t srcSize); /**< doesn't consume input */
ZSTDLIB_API size_t ZSTD_decompressBegin(ZSTD_DCtx* dctx);
DESTDIR?=
PREFIX ?= /usr/local
-CPPFLAGS= -I../lib/common -I../lib/dictBuilder
+BINDIR = $(PREFIX)/bin
+MANDIR = $(PREFIX)/share/man/man1
+
+ZSTDDIR = ../lib
+
- CPPFLAGS= -I$(ZSTDDIR)/common -DXXH_NAMESPACE=ZSTD_
++CPPFLAGS= -I$(ZSTDDIR)/common -I$(ZSTDDIR)/dictBuilder -DXXH_NAMESPACE=ZSTD_
CFLAGS ?= -O3 # -falign-loops=32 # not always beneficial
CFLAGS += -Wall -Wextra -Wcast-qual -Wcast-align -Wshadow -Wstrict-aliasing=1 -Wswitch-enum -Wstrict-prototypes -Wundef
FLAGS = $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) $(MOREFLAGS)
$ECHO "\n**** dictionary tests **** "
./datagen > tmpDict
- ./datagen -g1M | md5sum > tmp1
- ./datagen -g1M | $ZSTD -D tmpDict | $ZSTD -D tmpDict -dvq | md5sum > tmp2
+ ./datagen -g1M | $MD5SUM > tmp1
+ ./datagen -g1M | $ZSTD -D tmpDict | $ZSTD -D tmpDict -dvq | $MD5SUM > tmp2
diff -q tmp1 tmp2
-$ZSTD --train *.c *.h -o tmpDict
-$ZSTD xxhash.c -D tmpDict -of tmp
-$ZSTD -d tmp -D tmpDict -of result
-diff xxhash.c result
+$ECHO "Create first dictionary"
+$ZSTD --train *.c -o tmpDict
+cp zstdcli.c tmp
+$ZSTD -f tmp -D tmpDict
+$ZSTD -d tmp.zst -D tmpDict -of result
+diff zstdcli.c result
+$ECHO "Create second (different) dictionary"
+$ZSTD --train *.c *.h -o tmpDictC
+$ZSTD -d tmp.zst -D tmpDictC -of result && die "wrong dictionary not detected!"
+$ECHO "Create dictionary with short dictID"
+$ZSTD --train *.c --dictID 1 -o tmpDict1
+cmp tmpDict tmpDict1 && die "dictionaries should have different ID !"
+$ECHO "Compress without dictID"
+$ZSTD -f tmp -D tmpDict1 --no-dictID
+$ZSTD -d tmp.zst -D tmpDict -of result
+diff zstdcli.c result
+rm tmp*
$ECHO "\n**** multiple files tests **** "
/>
<Tool
Name="VCCLCompilerTool"
- Optimization="0"
+ Optimization="2"
+ EnableIntrinsicFunctions="true"
+ OmitFramePointers="true"
- AdditionalIncludeDirectories="$(SolutionDir)..\..\lib\common;$(SolutionDir)..\..\lib\legacy;$(SolutionDir)..\..\programs\legacy"
+ AdditionalIncludeDirectories="$(SolutionDir)..\..\lib\common;$(SolutionDir)..\..\lib\legacy;$(SolutionDir)..\..\programs\legacy;$(SolutionDir)..\..\lib\dictBuilder"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
+ PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+ RuntimeLibrary="0"
+ EnableFunctionLevelLinking="true"
UsePrecompiledHeader="0"
WarningLevel="4"
- WarnAsError="true"
DebugInformationFormat="3"
/>
<Tool
/>
<Tool
Name="VCCLCompilerTool"
- Optimization="2"
- EnableIntrinsicFunctions="true"
- OmitFramePointers="true"
+ Optimization="0"
- AdditionalIncludeDirectories="$(SolutionDir)..\..\lib\common;$(SolutionDir)..\..\lib\legacy;$(SolutionDir)..\..\programs\legacy"
+ AdditionalIncludeDirectories="$(SolutionDir)..\..\lib\common;$(SolutionDir)..\..\lib\legacy;$(SolutionDir)..\..\programs\legacy;$(SolutionDir)..\..\lib\dictBuilder"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="0"
- EnableFunctionLevelLinking="true"
+ PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
UsePrecompiledHeader="0"
WarningLevel="4"
+ WarnAsError="true"
DebugInformationFormat="3"
/>
<Tool
/>
<Tool
Name="VCCLCompilerTool"
- Optimization="0"
+ Optimization="2"
+ EnableIntrinsicFunctions="true"
+ OmitFramePointers="true"
- AdditionalIncludeDirectories="$(SolutionDir)..\..\lib\common;$(SolutionDir)..\..\lib\legacy;$(SolutionDir)..\..\programs\legacy"
+ AdditionalIncludeDirectories="$(SolutionDir)..\..\lib\common;$(SolutionDir)..\..\lib\legacy;$(SolutionDir)..\..\programs\legacy;$(SolutionDir)..\..\lib\dictBuilder"
- PreprocessorDefinitions="ZSTD_DLL_EXPORT=1;ZSTD_HEAPMODE=0;ZSTD_LEGACY_SUPPORT=0;WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
+ PreprocessorDefinitions="ZSTD_DLL_EXPORT=1;ZSTD_HEAPMODE=0;ZSTD_LEGACY_SUPPORT=0;WIN32;NDEBUG;_CONSOLE"
+ RuntimeLibrary="0"
+ EnableFunctionLevelLinking="true"
UsePrecompiledHeader="0"
WarningLevel="4"
- WarnAsError="true"
DebugInformationFormat="3"
/>
<Tool
/>
<Tool
Name="VCCLCompilerTool"
- Optimization="2"
- EnableIntrinsicFunctions="true"
- OmitFramePointers="true"
+ Optimization="0"
- AdditionalIncludeDirectories="$(SolutionDir)..\..\lib\common;$(SolutionDir)..\..\lib\legacy;$(SolutionDir)..\..\programs\legacy"
+ AdditionalIncludeDirectories="$(SolutionDir)..\..\lib\common;$(SolutionDir)..\..\lib\legacy;$(SolutionDir)..\..\programs\legacy;$(SolutionDir)..\..\lib\dictBuilder"
- PreprocessorDefinitions="ZSTD_DLL_EXPORT=1;ZSTD_HEAPMODE=0;ZSTD_LEGACY_SUPPORT=0;WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="0"
- EnableFunctionLevelLinking="true"
+ PreprocessorDefinitions="ZSTD_DLL_EXPORT=1;ZSTD_HEAPMODE=0;ZSTD_LEGACY_SUPPORT=0;WIN32;_DEBUG;_CONSOLE"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
UsePrecompiledHeader="0"
WarningLevel="4"
+ WarnAsError="true"
DebugInformationFormat="3"
/>
<Tool
SET(PROGRAMS_DIR ${ROOT_DIR}/programs)
INCLUDE_DIRECTORIES(${PROGRAMS_DIR} ${LIBRARY_DIR}/common ${LIBRARY_DIR}/dictBuilder)
-
IF (ZSTD_LEGACY_SUPPORT)
SET(PROGRAMS_LEGACY_DIR ${PROGRAMS_DIR}/legacy)
- INCLUDE_DIRECTORIES(${PROGRAMS_LEGACY_DIR})
-
- IF (WORKAROUND_OUTDATED_CODE_STYLE)
- INCLUDE_DIRECTORIES(${LIBRARY_DIR}/legacy)
- ENDIF (WORKAROUND_OUTDATED_CODE_STYLE)
-
+ INCLUDE_DIRECTORIES(${PROGRAMS_LEGACY_DIR} ${LIBRARY_DIR}/legacy)
SET(ZSTD_FILEIO_LEGACY ${PROGRAMS_LEGACY_DIR}/fileio_legacy.c)
ENDIF (ZSTD_LEGACY_SUPPORT)