diff --git a/GNUmakefile b/GNUmakefile old mode 100644 new mode 100755 index 08f4f63d..c8eccfb5 --- a/GNUmakefile +++ b/GNUmakefile @@ -22,6 +22,7 @@ EGREP ?= egrep UNAME := $(shell uname) IS_X86 := $(shell uname -m | $(EGREP) -i -c "i.86|x86|i86|amd64") IS_X86_64 := $(shell uname -m | $(EGREP) -i -c "(_64|d64)") +IS_AARCH64 := $(shell uname -m | $(EGREP) -i -c "aarch64") IS_SUN := $(shell uname | $(EGREP) -i -c "SunOS") IS_LINUX := $(shell $(CXX) -dumpmachine 2>&1 | $(EGREP) -i -c "Linux") @@ -52,45 +53,42 @@ endif ifeq ($(IS_X86),1) IS_GCC_29 := $(shell $(CXX) -v 2>&1 | $(EGREP) -i -c gcc-9[0-9][0-9]) -IS_GCC_41 := $(shell $(CXX) -v 2>&1 | $(EGREP) -i -c "gcc version 4\.1\.") -GCC42_OR_LATER := $(shell $(CXX) -v 2>&1 | $(EGREP) -i -c "gcc version (4\.[2-9]|[5-9])") -GCC46_OR_LATER := $(shell $(CXX) -v 2>&1 | $(EGREP) -i -c "gcc version (4\.[6-9]|[5-9])") -GCC48_OR_LATER := $(shell $(CXX) -v 2>&1 | $(EGREP) -i -c "gcc version (4\.[8-9]|[5-9])") -GCC49_OR_LATER := $(shell $(CXX) -v 2>&1 | $(EGREP) -i -c "gcc version (4\.9|[5-9])") +GCC42_OR_LATER := $(shell $(CXX) -v 2>&1 | $(EGREP) -i -c "gcc version (4\.[2-9]|[5-9]\.)") +GCC46_OR_LATER := $(shell $(CXX) -v 2>&1 | $(EGREP) -i -c "gcc version (4\.[6-9]|[5-9]\.)") +GCC48_OR_LATER := $(shell $(CXX) -v 2>&1 | $(EGREP) -i -c "gcc version (4\.[8-9]|[5-9]\.)") +GCC49_OR_LATER := $(shell $(CXX) -v 2>&1 | $(EGREP) -i -c "gcc version (4\.9|[5-9]\.)") ICC111_OR_LATER := $(shell $(CXX) --version 2>&1 | $(EGREP) -c "\(ICC\) ([2-9][0-9]|1[2-9]|11\.[1-9])") GAS210_OR_LATER := $(shell $(CXX) -xc -c /dev/null -Wa,-v -o/dev/null 2>&1 | $(EGREP) -c "GNU assembler version (2\.[1-9][0-9]|[3-9])") GAS217_OR_LATER := $(shell $(CXX) -xc -c /dev/null -Wa,-v -o/dev/null 2>&1 | $(EGREP) -c "GNU assembler version (2\.1[7-9]|2\.[2-9]|[3-9])") GAS219_OR_LATER := $(shell $(CXX) -xc -c /dev/null -Wa,-v -o/dev/null 2>&1 | $(EGREP) -c "GNU assembler version (2\.19|2\.[2-9]|[3-9])") -# Add -fPIC for x86_64, but not X32 or Cygwin +# Add -fPIC for x86_64, but not X32, Cygwin or MinGW ifneq ($(IS_X86_64),0) IS_X32 := $(shell $(CXX) -dM -E - < /dev/null 2>&1 | $(EGREP) -c "ILP32") - ifeq ($(IS_X32),0) - ifeq ($(IS_CYGWIN),0) + ifeq ($(IS_X32)$(IS_CYGWIN)$(IS_MINGW),000) ifeq ($(findstring -fPIC,$(CXXFLAGS)),) CXXFLAGS += -fPIC endif endif - endif endif -# Work around GCC 4.1 bug. -ifneq ($(IS_GCC_41),0) +# Guard use of -march=native +ifeq ($(GCC_COMPILER),0) + CXXFLAGS += -march=native +else ifneq ($(GCC42_OR_LATER),0) + CXXFLAGS += -march=native +else + # GCC 3.3 and "unknown option -march=" # GCC 4.1 compiler crash with -march=native. - # Experienced on CentOS 5, which is still active. ifneq ($(IS_X86_64),0) CXXFLAGS += -m64 else CXXFLAGS += -m32 endif # X86/X32/X64 - # Not GCC 4.1, use default -else - CXXFLAGS += -march=native endif # Aligned access required at -O3 for GCC due to vectorization (circa 08/2008). Expect other compilers to do the same. -GCC46_OR_LATER ?= 0 UNALIGNED_ACCESS := $(shell $(EGREP) -c "^[[:space:]]*//[[:space:]]*\#[[:space:]]*define[[:space:]]*CRYPTOPP_NO_UNALIGNED_DATA_ACCESS" config.h) ifeq ($(findstring -O3,$(CXXFLAGS)),-O3) ifneq ($(UNALIGNED_ACCESS),0) @@ -111,13 +109,13 @@ CXXFLAGS += -DCRYPTOPP_DISABLE_ASM endif endif -ifeq ($(GAS210_OR_LATER),0) # .intel_syntax wasn't supported until GNU assembler 2.10 +ifeq ($(GCC_COMPILER)$(GAS210_OR_LATER),10) # .intel_syntax wasn't supported until GNU assembler 2.10 CXXFLAGS += -DCRYPTOPP_DISABLE_ASM else -ifeq ($(GAS217_OR_LATER),0) +ifeq ($(GCC_COMPILER)$(GAS217_OR_LATER),10) CXXFLAGS += -DCRYPTOPP_DISABLE_SSSE3 else -ifeq ($(GAS219_OR_LATER),0) +ifeq ($(GCC_COMPILER)$(GAS219_OR_LATER),10) CXXFLAGS += -DCRYPTOPP_DISABLE_AESNI endif endif @@ -151,6 +149,13 @@ M32OR64 = -m64 endif endif # IS_LINUX +# And add it for ARM64, too +ifneq ($(IS_AARCH64),0) + ifeq ($(findstring -fPIC,$(CXXFLAGS)),) + CXXFLAGS += -fPIC + endif +endif + ifneq ($(IS_DARWIN),0) AR = libtool ARFLAGS = -static -o @@ -233,6 +238,11 @@ endif # GNU Debug build # spills into POD data types, so cpu.cpp is the second candidate for explicit initialization order. SRCS := cryptlib.cpp cpu.cpp $(filter-out cryptlib.cpp cpu.cpp pch.cpp simple.cpp winpipes.cpp cryptlib_bds.cpp,$(wildcard *.cpp)) +# No need for CPU or RDRAND on non-X86 systems. X32 is represented with X64. +ifeq ($(IS_X86)$(IS_X86_64),00) + SRCS := $(filter-out cpu.cpp rdrand.cpp, $(SRCS)) +endif + ifneq ($(IS_MINGW),0) SRCS += winpipes.cpp endif @@ -253,8 +263,6 @@ LIBIMPORTOBJS := $(LIBOBJS:.o=.import.o) TESTIMPORTOBJS := $(TESTOBJS:.o=.import.o) DLLTESTOBJS := dlltest.dllonly.o -DIST_FILES := *.h *.cpp *.asm adhoc.cpp.proto License.txt Readme.txt GNUmakefile GNUmakefile-cross Doxyfile cryptest* cryptlib* dlltest* cryptdll* cryptopp.rc TestVectors/*.txt TestData/*.dat - # For Shared Objects, Diff, Dist/Zip rules LIB_VER := $(shell $(EGREP) "define CRYPTOPP_VERSION" config.h | cut -d" " -f 3) LIB_MAJOR := $(shell echo $(LIB_VER) | cut -c 1) @@ -282,30 +290,43 @@ asan ubsan align aligned: libcryptopp.a cryptest.exe test check: cryptest.exe ./cryptest.exe v -DOC_DIRECTORY := $(shell $(EGREP) "OUTPUT_DIRECTORY" Doxyfile | grep -v "\#" | cut -d "=" -f 2) -ifeq ($(DOC_DIRECTORY),) -DOC_DIRECTORY := html-docs +# Directory we want (can't specify on Doygen command line) +DOCUMENT_DIRECTORY := ref$(LIB_VER) +# Default directory (missing in config file) +ifeq ($(strip $(DOXYGEN_DIRECTORY)),) +DOXYGEN_DIRECTORY := html-docs +endif +# Directory Doxygen uses (specified in Doygen config file) +ifeq ($(wildcard Doxyfile),Doxyfile) +DOXYGEN_DIRECTORY := $(strip $(shell $(EGREP) "OUTPUT_DIRECTORY" Doxyfile | grep -v "\#" | cut -d "=" -f 2)) endif .PHONY: docs html docs html: - -$(RM) -r $(DOC_DIRECTORY)/ + -$(RM) -r $(DOXYGEN_DIRECTORY)/ $(DOCUMENT_DIRECTORY)/ doxygen Doxyfile -d CRYPTOPP_DOXYGEN_PROCESSING + mv $(DOXYGEN_DIRECTORY)/ $(DOCUMENT_DIRECTORY)/ -$(RM) CryptoPPRef.zip - zip -9 CryptoPPRef.zip -x ".*" -x "*/.*" -r $(DOC_DIRECTORY)/ + zip -9 CryptoPPRef.zip -x ".*" -x "*/.*" -r $(DOCUMENT_DIRECTORY)/ .PHONY: clean clean: -$(RM) libcryptopp.a libcryptopp.so libcryptopp.dylib cryptopp.dll libcryptopp.dll.a libcryptopp.import.a -$(RM) adhoc.cpp.o adhoc.cpp.proto.o $(LIBOBJS) $(TESTOBJS) $(DLLOBJS) $(LIBIMPORTOBJS) $(TESTIMPORTOBJS) $(DLLTESTOBJS) *.stackdump core-* - -$(RM) cryptest.exe dlltest.exe cryptest.import.exe ct + -$(RM) cryptest.exe dlltest.exe cryptest.import.exe ct rdrand-???.o ifneq ($(wildcard *.exe.dSYM),) -$(RM) -r *.exe.dSYM/ endif +ifneq ($(wildcard $(DOCUMENT_DIRECTORY)/),) + -$(RM) -r $(DOCUMENT_DIRECTORY)/ +endif +ifneq ($(wildcard cov-int/),) + -$(RM) -r cov-int/ +endif .PHONY: distclean distclean: clean - -$(RM) adhoc.cpp adhoc.cpp.copied GNUmakefile.deps cryptest-*result.txt *.o *.ii *.s + -$(RM) adhoc.cpp adhoc.cpp.copied GNUmakefile.deps benchmarks.html cryptest.txt cryptest-*.txt *.o *.ii *.s ifneq ($(wildcard cryptopp$(LIB_VER)\.*),) -$(RM) cryptopp$(LIB_VER)\.* endif @@ -376,40 +397,47 @@ cryptest.import.exe: cryptopp.dll libcryptopp.import.a $(TESTIMPORTOBJS) dlltest.exe: cryptopp.dll $(DLLTESTOBJS) $(CXX) -o $@ $(CXXFLAGS) $(DLLTESTOBJS) -L. -lcryptopp.dll $(LDFLAGS) $(LDLIBS) -# This recipe requires a previous "svn co -r 541 https://svn.code.sf.net/p/cryptopp/code/trunk/c5" +# This recipe requires a previous "svn co -r 541 http://svn.code.sf.net/p/cryptopp/code/trunk/c5" .PHONY: diff diff: -$(RM) cryptopp$(LIB_VER).diff -svn diff -r 541 > cryptopp$(LIB_VER).diff # This recipe prepares the distro files -TEXT_FILES := *.h *.cpp *.asm adhoc.cpp.proto License.txt Readme.txt Doxyfile cryptest* cryptlib* dlltest* cryptdll* cryptopp.rc TestVectors/*.txt TestData/*.dat -EXEC_FILES := GNUmakefile GNUmakefile-cross TestData/ TestVectors/ +TEXT_FILES := *.h *.cpp *.asm *.S adhoc.cpp.proto License.txt Readme.txt Filelist.txt Doxyfile cryptest* cryptlib* dlltest* cryptdll* cryptopp.rc TestVectors/*.txt TestData/*.dat +EXEC_FILES := GNUmakefile GNUmakefile-cross cryptest.sh rdrand-nasm.sh TestData/ TestVectors/ + +ifeq ($(wildcard Filelist.txt),Filelist.txt) +DIST_FILES := $(shell cat Filelist.txt) +endif .PHONY: convert convert: chmod a-x $(TEXT_FILES) chmod u+x $(EXEC_FILES) chmod u+x cryptest.sh - unix2dos --keepdate --quiet $(TEXT_FILES) + unix2dos --keepdate --quiet $(TEXT_FILES) rdrand-masm.cmd unix2dos --keepdate --quiet *.sln *.vcproj - dos2unix --keepdate --quiet GNUmakefile GNUmakefile-cross cryptest.sh + dos2unix --keepdate --quiet GNUmakefile GNUmakefile-cross cryptest.sh rdrand-nasm.sh .PHONY: zip dist zip dist: | distclean convert diff zip -q -9 cryptopp$(LIB_VER).zip $(DIST_FILES) -ifeq ($(wildcard cryptopp$(LIB_VER).diff),cryptopp$(LIB_VER).diff) - zip -q -9 -u cryptopp$(LIB_VER).zip cryptopp$(LIB_VER).diff -endif -ifeq ($(wildcard vs2010.zip),vs2010.zip) - zip -q -9 -u cryptopp$(LIB_VER).zip vs2010.zip -endif -ifeq ($(wildcard config.recommend),config.recommend) - zip -q -9 -u cryptopp$(LIB_VER).zip config.recommend -endif -ifeq ($(wildcard cryptest-sh.zip),cryptest-sh.zip) - -zip -d cryptopp$(LIB_VER).zip cryptest-sh.zip -endif + +.PHONY: bench benchmark benchmarks +bench benchmark benchmarks: cryptest.exe + rm -f benchmarks.html + echo "" >> benchmarks.html + echo "" >> benchmarks.html + echo "" >> benchmarks.html + echo "Speed Comparison of Popular Crypto Algorithms" >> benchmarks.html + echo "" >> benchmarks.html + echo "" >> benchmarks.html + echo "

Crypto++" $(LIB_MAJOR).$(LIB_MINOR).$(LIB_REVISION) "Benchmarks

" >> benchmarks.html + echo "

Here are speed benchmarks for some commonly used cryptographic algorithms.

" >> benchmarks.html + cryptest.exe b 3 2.4+1e9 >> benchmarks.html + echo "" >> benchmarks.html + echo "" >> benchmarks.html adhoc.cpp: adhoc.cpp.proto ifeq ($(wildcard adhoc.cpp),) @@ -423,10 +451,9 @@ ifeq ($(wildcard GNUmakefile.deps),GNUmakefile.deps) -include GNUmakefile.deps endif # Dependencies -# Work around MacPorts/GCC issue with init_priority. Apple/GCC and Fink/GCC are fine; limit to MacPorts. -# Also see https://lists.macosforge.org/pipermail/macports-users/2015-September/039223.html -ifneq ($(MACPORTS_COMPILER),0) -ifneq ($(GCC_COMPILER),0) +# MacPorts/GCC issue with init_priority. Apple/GCC and Fink/GCC are fine; limit to MacPorts. +# Also see http://lists.macosforge.org/pipermail/macports-users/2015-September/039223.html +ifeq ($(GCC_COMPILER)$(MACPORTS_COMPILER),11) ifeq ($(findstring -DMACPORTS_GCC_COMPILER,$(CXXFLAGS)),) cryptlib.o: $(CXX) $(CXXFLAGS) -DMACPORTS_GCC_COMPILER=1 -c cryptlib.cpp @@ -434,7 +461,6 @@ cpu.o: $(CXX) $(CXXFLAGS) -DMACPORTS_GCC_COMPILER=1 -c cpu.cpp endif endif -endif %.dllonly.o : %.cpp $(CXX) $(CXXFLAGS) -DCRYPTOPP_DLL_ONLY -c $< -o $@ @@ -448,7 +474,7 @@ endif %.o : %.cpp $(CXX) $(CXXFLAGS) -c $< -# Warn of potential configurations issues. This will go away after 5.6.3 +# Warn of potential configurations issues. They will go away after 5.6.3. UNALIGNED_ACCESS := $(shell $(EGREP) -c "^[[:space:]]*//[[:space:]]*\#[[:space:]]*define[[:space:]]*CRYPTOPP_NO_UNALIGNED_DATA_ACCESS" config.h) NO_INIT_PRIORITY := $(shell $(EGREP) -c "^[[:space:]]*//[[:space:]]*\#[[:space:]]*define[[:space:]]*CRYPTOPP_INIT_PRIORITY" config.h) COMPATIBILITY_562 := $(shell $(EGREP) -c "^[[:space:]]*\#[[:space:]]*define[[:space:]]*CRYPTOPP_MAINTAIN_BACKWARDS_COMPATIBILITY_562" config.h) @@ -463,9 +489,9 @@ endif ifneq ($(COMPATIBILITY_562),0) $(info WARNING: CRYPTOPP_MAINTAIN_BACKWARDS_COMPATIBILITY_562 is defined in config.h.) endif -ifneq (x$(UNALIGNED_ACCESS)$(NO_INIT_PRIORITY)$(COMPATIBILITY_562),x000) +ifneq ($(UNALIGNED_ACCESS)$(NO_INIT_PRIORITY)$(COMPATIBILITY_562),000) $(info WARNING: You should make these changes in config.h, and not CXXFLAGS.) $(info WARNING: You can 'mv config.recommend config.h', but it breaks versioning.) $(info WARNING: See http://cryptopp.com/wiki/config.h for more details.) $(info ) -endif \ No newline at end of file +endif diff --git a/GNUmakefile-cross b/GNUmakefile-cross old mode 100644 new mode 100755 index 8694ef96..83aebf66 --- a/GNUmakefile-cross +++ b/GNUmakefile-cross @@ -3,7 +3,6 @@ CXXFLAGS ?= -DNDEBUG -g2 -Os -fPIC -pipe # The following options reduce code size, but breaks link or makes link very slow on some systems # CXXFLAGS += -ffunction-sections -fdata-sections # LDFLAGS += -Wl,--gc-sections -CXXFLAGS += -Wno-unused-function -Wno-unused-parameter -Wno-unused-variable ARFLAGS = -cr # ar needs the dash on OpenBSD RANLIB ?= ranlib @@ -64,11 +63,7 @@ ifeq ($(IS_ARM_EMBEDDED),1) endif # List cryptlib.cpp first in an attempt to tame C++ static initialization problems -SRCS := cryptlib.cpp $(filter-out cryptlib.cpp pch.cpp simple.cpp winpipes.cpp cryptlib_bds.cpp,$(wildcard *.cpp)) - -ifneq ($(IS_MINGW),0) -SRCS += winpipes.cpp -endif +SRCS := cryptlib.cpp cpu.cpp $(filter-out cryptlib.cpp cpu.cpp pch.cpp simple.cpp winpipes.cpp cryptlib_bds.cpp,$(wildcard *.cpp)) # List of objects with crytlib.o at the first index position OBJS := $(SRCS:.cpp=.o) @@ -78,7 +73,7 @@ TESTOBJS := bench.o bench2.o test.o validat1.o validat2.o validat3.o adhoc.o dat LIBOBJS := $(filter-out $(TESTOBJS),$(OBJS)) # List cryptlib.cpp first in an attempt to tame C++ static initialization problems -DLLSRCS := cryptlib.cpp algebra.cpp algparam.cpp asn.cpp basecode.cpp cbcmac.cpp channels.cpp des.cpp dessp.cpp dh.cpp dll.cpp dsa.cpp ec2n.cpp eccrypto.cpp ecp.cpp eprecomp.cpp files.cpp filters.cpp fips140.cpp fipstest.cpp gf2n.cpp gfpcrypt.cpp hex.cpp hmac.cpp integer.cpp iterhash.cpp misc.cpp modes.cpp modexppc.cpp mqueue.cpp nbtheory.cpp oaep.cpp osrng.cpp pch.cpp pkcspad.cpp pubkey.cpp queue.cpp randpool.cpp rdtables.cpp rijndael.cpp rng.cpp rsa.cpp sha.cpp simple.cpp skipjack.cpp strciphr.cpp trdlocal.cpp +DLLSRCS := cryptlib.cpp cpu.cpp algebra.cpp algparam.cpp asn.cpp basecode.cpp cbcmac.cpp channels.cpp des.cpp dessp.cpp dh.cpp dll.cpp dsa.cpp ec2n.cpp eccrypto.cpp ecp.cpp eprecomp.cpp files.cpp filters.cpp fips140.cpp fipstest.cpp gf2n.cpp gfpcrypt.cpp hex.cpp hmac.cpp integer.cpp iterhash.cpp misc.cpp modes.cpp modexppc.cpp mqueue.cpp nbtheory.cpp oaep.cpp osrng.cpp pch.cpp pkcspad.cpp pubkey.cpp queue.cpp randpool.cpp rdtables.cpp rijndael.cpp rng.cpp rsa.cpp sha.cpp simple.cpp skipjack.cpp strciphr.cpp trdlocal.cpp DLLOBJS := $(DLLSRCS:.cpp=.export.o) # Import lib testing @@ -140,14 +135,14 @@ else -$(RM) $(PREFIX)/lib/libcryptopp.so endif -libcryptopp.a: $(LIBOBJS) +libcryptopp.a: public_service | $(LIBOBJS) $(AR) $(ARFLAGS) $@ $(LIBOBJS) $(RANLIB) $@ -libcryptopp.so: $(LIBOBJS) +libcryptopp.so: public_service | $(LIBOBJS) $(CXX) $(CXXFLAGS) -shared -o $@ $(LIBOBJS) $(LDFLAGS) $(LDLIBS) -cryptest.exe: libcryptopp.a $(TESTOBJS) +cryptest.exe: public_service | libcryptopp.a $(TESTOBJS) $(CXX) -o $@ $(CXXFLAGS) $(TESTOBJS) ./libcryptopp.a $(LDFLAGS) $(LDLIBS) adhoc.cpp: adhoc.cpp.proto @@ -157,13 +152,35 @@ else touch adhoc.cpp endif +# Include dependencies, if present. You must issue `make deps` to create them. +ifeq ($(wildcard GNUmakefile.deps),GNUmakefile.deps) +-include GNUmakefile.deps +endif # Dependencies + %.o : %.cpp $(CXX) $(CXXFLAGS) -c $< -# Do not build dependencies when cleaning -ifneq ($(findstring clean,$(MAKECMDGOALS)),clean) --include GNUmakefile.deps -endif - GNUmakefile.deps: $(CXX) $(CXXFLAGS) -MM *.cpp > GNUmakefile.deps + +# Warn of potential configurations issues. This will go away after 5.6.3 +UNALIGNED_ACCESS := $(shell $(EGREP) -c "^[[:space:]]*//[[:space:]]*\#[[:space:]]*define[[:space:]]*CRYPTOPP_NO_UNALIGNED_DATA_ACCESS" config.h) +NO_INIT_PRIORITY := $(shell $(EGREP) -c "^[[:space:]]*//[[:space:]]*\#[[:space:]]*define[[:space:]]*CRYPTOPP_INIT_PRIORITY" config.h) +COMPATIBILITY_562 := $(shell $(EGREP) -c "^[[:space:]]*\#[[:space:]]*define[[:space:]]*CRYPTOPP_MAINTAIN_BACKWARDS_COMPATIBILITY_562" config.h) +.PHONY: public_service +public_service: +ifneq ($(UNALIGNED_ACCESS),0) + $(info WARNING: CRYPTOPP_NO_UNALIGNED_DATA_ACCESS is not defined in config.h.) +endif +ifneq ($(NO_INIT_PRIORITY),0) + $(info WARNING: CRYPTOPP_INIT_PRIORITY is not defined in config.h.) +endif +ifneq ($(COMPATIBILITY_562),0) + $(info WARNING: CRYPTOPP_MAINTAIN_BACKWARDS_COMPATIBILITY_562 is defined in config.h.) +endif +ifneq (x$(UNALIGNED_ACCESS)$(NO_INIT_PRIORITY)$(COMPATIBILITY_562),x000) + $(info WARNING: You should make these changes in config.h, and not CXXFLAGS.) + $(info WARNING: You can 'mv config.recommend config.h', but it breaks versioning.) + $(info WARNING: See http://cryptopp.com/wiki/config.h for more details.) + $(info ) +endif diff --git a/Install.txt b/Install.txt index f9ba006b..9a116b38 100644 --- a/Install.txt +++ b/Install.txt @@ -38,15 +38,7 @@ The command above builds the static library and cryptest.exe program. If you wan Or: make libcryptopp.a libcryptopp.so cryptest.exe - -On Mac OS X, you can build fat binaries by setting MULTIARCH=1: - make MULTIARCH=1 - -Or - - export MULTIARCH=1 - make If you would like to use a different compiler, the set CXX: @@ -67,21 +59,6 @@ LLVM's libc++ is also supported, so you can: CXXFLAGS="-std=c++11 -stdlib=libc++" make -If you are experimenting with Clang and its integrated assembler, then you can: - - make FORCE_ASM=1 - -If you are experimenting with NASM, then you can: - - export AS=nasm - make - -Or - - make AS=nasm - -Be aware that the Clang assembler has a number of open issues, and trying to build with it will probably result in a compile failure or runtime test failure. - INSTALLING THE LIBRARY ---------------------- @@ -190,4 +167,3 @@ REPORTING PROBLEMS Dirty compiles and failures in the validation suite or test vectors should be reported at the Crypto++ User Group. The User Group is located at https://groups.google.com/forum/#!forum/cryptopp-users. Also see http://www.cryptopp.com/wiki/Bug_Report. - diff --git a/Readme.txt b/Readme.txt index aac3d08e..9ca1cc5e 100644 --- a/Readme.txt +++ b/Readme.txt @@ -455,6 +455,7 @@ the mailing list. - cleared most Undefined Behavior Sanitizer (UBsan) findings - cleared all Address Sanitizer (Asan) findings - cleared most Valgrind findings + - cleared most Coverity findings - cleared all Enterprise Analysis (/analyze) findings - cleared most GCC warnings with -Wall - cleared most Clang warnings with -Wall