diff --git a/lib/Makefile b/lib/Makefile index 1b4cb378f..579a906fe 100644 --- a/lib/Makefile +++ b/lib/Makefile @@ -46,7 +46,7 @@ PREFIX ?= /usr/local LIBDIR ?= $(PREFIX)/lib INCLUDEDIR=$(PREFIX)/include -CPPFLAGS= -I. -I./common -DXXH_NAMESPACE=ZSTD_ +CPPFLAGS= -I. -I./common CFLAGS ?= -O3 CFLAGS += -Wall -Wextra -Wcast-qual -Wcast-align -Wshadow -Wstrict-aliasing=1 \ -Wswitch-enum -Wdeclaration-after-statement -Wstrict-prototypes -Wundef diff --git a/lib/common/xxhash.h b/lib/common/xxhash.h index 75e2ed209..2c9b7c61b 100644 --- a/lib/common/xxhash.h +++ b/lib/common/xxhash.h @@ -71,6 +71,10 @@ XXH32 6.8 GB/s 6.0 GB/s extern "C" { #endif +#ifndef XXH_NAMESPACE +# define XXH_NAMESPACE ZSTD_ /* Zstandard specific */ +#endif + /* **************************** * Definitions diff --git a/programs/Makefile b/programs/Makefile index be6fbf2c2..9a9fcd346 100644 --- a/programs/Makefile +++ b/programs/Makefile @@ -44,7 +44,7 @@ else ALIGN_LOOP = endif -CPPFLAGS= -I$(ZSTDDIR) -I$(ZSTDDIR)/common -I$(ZSTDDIR)/dictBuilder -DXXH_NAMESPACE=ZSTD_ +CPPFLAGS= -I$(ZSTDDIR) -I$(ZSTDDIR)/common -I$(ZSTDDIR)/dictBuilder CFLAGS ?= -O3 CFLAGS += -Wall -Wextra -Wcast-qual -Wcast-align -Wshadow -Wstrict-aliasing=1 \ -Wswitch-enum -Wdeclaration-after-statement -Wstrict-prototypes -Wundef diff --git a/tests/.gitignore b/tests/.gitignore index bda081a64..5ea6b5b75 100644 --- a/tests/.gitignore +++ b/tests/.gitignore @@ -2,6 +2,7 @@ zstdtest speedTest versionsTest +namespaceTest # Local script startSpeedTest diff --git a/tests/Makefile b/tests/Makefile index 153e8ef1a..d83a1dfc1 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -25,18 +25,22 @@ # versionstest : Compatibility test between zstd versions stored on Github (v0.1+) # ########################################################################## -PYTHON ?= python3 -TESTDIR := versionsTest +PYTHON ?= python3 +TESTARTEFACT := versionsTest namespaceTest -.PHONY: default all clean versionsTest +.PHONY: default all clean namespaceTest versionsTest default: all -all: versionsTest +all: namespaceTest versionsTest + +namespaceTest: + if $(CC) namespaceTest.c ../lib/common/xxhash.c -o $@ ; then echo compilation should fail; exit 1 ; fi + $(RM) $@ versionsTest: $(PYTHON) test-zstd-versions.py clean: - @$(RM) -fR $(TESTDIR) + @$(RM) -fR $(TESTARTEFACT) @echo Cleaning completed diff --git a/tests/namespaceTest.c b/tests/namespaceTest.c new file mode 100644 index 000000000..49d9b3696 --- /dev/null +++ b/tests/namespaceTest.c @@ -0,0 +1,38 @@ +/* ########################################################################## +# namespaceTest +# ensure xxhash namespace emulation is properly triggered +# Copyright (C) Yann Collet 2016 +# +# GPL v2 License +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +# +# You can contact the author at : +# - zstd homepage : http://www.zstd.net/ +# ########################################################################*/ + + +#include /* size_t */ +#include /* strlen */ + +/* symbol definition */ +extern unsigned XXH32(const void* src, size_t srcSize, unsigned seed); + +int main(int argc, const char** argv) +{ + const char* exename = argv[0]; + unsigned result = XXH32(exename, strlen(exename), argc); + return !result; +}