Hi Mouse,
I'd suggest a couple of small corrections here...
*****
Change:
CXX=g++
to:
CXX ?= g++
That keeps the makefile from stepping on the compiler set in the
environment. If its not set, then the assignment is performed. Its
particularly painful when cross-compiling.
Ditto for RANLIB.
*****
Change:
CLANG_COMPILER = $(shell $(CXX) --version 2>&1 | $(EGREP) -i -c "clang
version")
To:
CLANG_COMPILER = $(shell $(CXX) --version 2>&1 | $(EGREP) -i -c
"clang")
Apple uses "clang version", while building it from sources does not. So if
you built your own Clang or used one from a distro, then its usually
mis-identified.
You should make the above change and then try Mac OS X again and see if you
have the same problems with the assembler.
*****
-Os is usually more useful than -O2 or -O3 because it keeps the code
tighter and caches hotter.
*****
libcryptopp.so target is missing both CXXFLAGS and LDFLAGS.
*****
By the way, here's a diff of the Makefile I use (it has a few more
changes): http://pastebin.com/xCYekFQ0
Jeff
On Sunday, January 4, 2015 11:03:09 AM UTC-5, Mouse wrote:
>
> On Jan 4, 2015, at 5:38 , Jean-Pierre Münch <[email protected]
> <javascript:>> wrote:
> > @mouse: Sorry but I don't see the attached makefile :-(. Please retry
> posting it here and if it fails, we'll find a way.
>
> Your mailer must be weird. ;)
>
> Below I’ll just paste it.
>
>
> > Concerning the discussion on the Bernstein functions:
> > I'd be willing include the curves,
>
> Yes!
>
> > but I won't make any changes to the logic that processes ECs. So there'd
> be no advantage as this curve requires modifications of the generic logic
> implemented in Crypto++.
> > Everyone who already had to do with EC-Crypto knows what I mean.
>
> YES!!!
>
> #!/usr/bin/env make
>
> SO = so
> LIBLDFLAGS =
> LDLIBS =
> #-lstdc++
> CXX=g++
> #CXX=g++-mp-4.8
> #CXX=clang++-mp-3.4
> #CXX=clang++
>
> # -O3 fails to link on Cygwin GCC version 4.5.3
> CXXFLAGS = -DNDEBUG -O3 -Ofast -Wno-unused-value
>
> # These are required on newer Mac OS X, as somehow they aren't set
> # up automatically even when the native CPU supports them.
> CXXFLAGS += -maes -mpclmul -mavx2
>
>
> # -fPIC is supported. Please report any breakage of -fPIC as a bug.
> CXXFLAGS += -fPIC
> # the following options reduce code size, but breaks link or makes
> # link very slow on some systems
> CXXFLAGS += -ffunction-sections -fdata-sections
> # The following seems to break link on Mac OS X
> # LDFLAGS += -Wl,--gc-sections
> ARFLAGS = -cr # ar needs the dash on OpenBSD
> RANLIB = ranlib
> CP = cp -f
> MKDIR = mkdir -p
> EGREP = egrep
> UNAME = $(shell uname)
> ISX86 = $(shell uname -m | $(EGREP) -c "i.86|x86|i86|amd64")
> IS_SUN_CC = $(shell $(CXX) -V 2>&1 | $(EGREP) -c "CC: Sun")
> IS_LINUX = $(shell $(CXX) -dumpmachine 2>&1 | $(EGREP) -c "linux")
> IS_MINGW = $(shell $(CXX) -dumpmachine 2>&1 | $(EGREP) -c "mingw")
> CLANG_COMPILER = $(shell $(CXX) --version 2>&1 | $(EGREP) -i -c "clang
> version")
>
> # Default prefix for make install
> ifeq ($(PREFIX),)
> PREFIX = /usr
> endif
>
> ifeq ($(CXX),gcc) # for some reason CXX is gcc on cygwin 1.1.4
> CXX = g++
> endif
>
>
> ifeq ($(ISX86),1)
>
> GCC42_OR_LATER = $(shell $(CXX) -v 2>&1 | $(EGREP) -c "^gcc version
> (4.[2-9]|[5-9])")
> INTEL_COMPILER = $(shell $(CXX) --version 2>&1 | $(EGREP) -c "\(ICC\)")
> 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])")
>
>
> ifneq ($(INTEL_COMPILER),0)
> CXXFLAGS += -wd68 -wd186 -wd279 -wd327
> ifeq ($(ICC111_OR_LATER),0)
> # "internal error: backend signals" occurs on some x86 inline assembly
> with ICC 9 and some x64 inline assembly with ICC 11.0
> # if you want to use Crypto++'s assembly code with ICC, try enabling it on
> individual files
> CXXFLAGS += -DCRYPTOPP_DISABLE_ASM
> endif
> endif
>
> ifeq ($(GAS210_OR_LATER),0) # .intel_syntax wasn't supported until
> GNU assembler 2.10
> CXXFLAGS += -DCRYPTOPP_DISABLE_ASM
> else
> ifeq ($(GAS217_OR_LATER),0)
> CXXFLAGS += -DCRYPTOPP_DISABLE_SSSE3
> else
> ifeq ($(GAS219_OR_LATER),0)
> CXXFLAGS += -DCRYPTOPP_DISABLE_AESNI
> endif
> endif
> ifeq ($(UNAME),SunOS)
> CXXFLAGS += -Wa,--divide # allow use of "/" operator
> endif
> endif
>
> endif # ISX86
>
> ifeq ($(UNAME),) # for DJGPP, where uname doesn't exist
> CXXFLAGS += -mbnu210
> else
> #CXXFLAGS += -pipe
> endif
>
> ifeq ($(IS_MINGW),1)
> LDLIBS += -lws2_32
> endif
>
> ifeq ($(IS_LINUX),1)
> LDFLAGS += -pthread
> ifneq ($(shell uname -i | $(EGREP) -c "(_64|d64)"),0)
> M32OR64 = -m64
> endif
> endif
>
> ifeq ($(UNAME),Darwin)
> AR = libtool
> ARFLAGS = -static -o
> CXXFLAGS += -m64 -arch x86_64 # -arch i386
> LIBLDFLAGS += -dynamiclib
> SO = dylib
> ifeq ($(CXX),g++)
> # On Mac OS X this employs native assembler that knows AES-NI
> CXXFLAGS += -Wa,-q
> else
> # These are for Xcode clang++ for compatibility with gcc stuff
> CXXFLAGS += -stdlib=libstdc++
> LDLIBS += -lstdc++
> LIBLDFLAGS += -stdlib=libstdc++
> endif
> else
> SO = so
> endif
>
> ifeq ($(UNAME),SunOS)
> LDLIBS += -lnsl -lsocket
> M32OR64 = -m$(shell isainfo -b)
> endif
>
> ifneq ($(CLANG_COMPILER),0)
> CXXFLAGS += -Wno-tautological-compare
> endif
>
> ifneq ($(IS_SUN_CC),0) # override flags for CC Sun C++ compiler
> CXXFLAGS = -DNDEBUG -O -g0 -native -template=no%extdef $(M32OR64)
> LDFLAGS =
> AR = $(CXX)
> ARFLAGS = -xar -o
> RANLIB = true
> SUN_CC10_BUGGY = $(shell $(CXX) -V 2>&1 | $(EGREP) -c "CC: Sun .* 5\.10 .*
> (2009|2010/0[1-4])")
> ifneq ($(SUN_CC10_BUGGY),0)
> # -DCRYPTOPP_INCLUDE_VECTOR_CC is needed for Sun Studio 12u1 Sun C++ 5.10
> SunOS_i386 128229-02 2009/09/21 and was fixed in May 2010
> # remove it if you get "already had a body defined" errors in vector.cc
> CXXFLAGS += -DCRYPTOPP_INCLUDE_VECTOR_CC
> endif
> endif
>
> SRCS = $(wildcard *.cpp)
> ifeq ($(SRCS),) # workaround wildcard
> function bug in GNU Make 3.77
> SRCS = $(shell echo *.cpp)
> endif
>
> OBJS = $(SRCS:.cpp=.o)
> # test.o needs to be after bench.o for cygwin 1.1.4 (possible ld bug?)
> TESTOBJS = bench.o bench2.o test.o validat1.o validat2.o validat3.o
> adhoc.o datatest.o regtest.o fipsalgt.o dlltest.o
> LIBOBJS = $(filter-out $(TESTOBJS),$(OBJS))
>
> DLLSRCS = algebra.cpp algparam.cpp asn.cpp basecode.cpp cbcmac.cpp
> channels.cpp cryptlib.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)
> LIBIMPORTOBJS = $(LIBOBJS:.o=.import.o)
> TESTIMPORTOBJS = $(TESTOBJS:.o=.import.o)
> DLLTESTOBJS = dlltest.dllonly.o
>
> all: cryptest.exe
> static: libcryptopp.a
> dynamic: libcryptopp.$(SO)
> shared: dynamic
>
> test: cryptest.exe
> ./cryptest.exe v
>
> clean:
> -$(RM) cryptest.exe libcryptopp.a libcryptopp.$(SO) $(LIBOBJS)
> $(TESTOBJS) cryptopp.dll libcryptopp.dll.a libcryptopp.import.a
> cryptest.import.exe dlltest.exe $(DLLOBJS) $(LIBIMPORTOBJS) $(TESTI
> MPORTOBJS) $(DLLTESTOBJS)
>
> install: libcryptopp.a
> $(MKDIR) -p $(PREFIX)/include/cryptopp $(PREFIX)/lib $(PREFIX)/bin
> -$(CP) *.h $(PREFIX)/include/cryptopp
> -$(CP) *.a $(PREFIX)/lib
> -$(RANLIB) $(PREFIX)/lib/libcryptopp.a
> -$(CP) *.exe $(PREFIX)/bin
> -$(CP) *.$(SO) $(PREFIX)/lib
>
> remove:
> -$(RM) -rf $(PREFIX)/include/cryptopp
> -$(RM) $(PREFIX)/lib/libcryptopp.a
> -$(RM) $(PREFIX)/lib/libcryptopp.$(SO)
> -$(RM) $(PREFIX)/bin/cryptest.exe
>
> libcryptopp.a: $(LIBOBJS)
> $(AR) $(ARFLAGS) $@ $(LIBOBJS)
> $(RANLIB) $@
>
> libcryptopp.$(SO): $(LIBOBJS)
> $(CXX) $(LIBLDFLAGS) -o $@ $(LIBOBJS) $(LDLIBS)
> # $(CXX) -shared $(LIBLDFLAGS) -o $@ $(LIBOBJS) $(LDLIBS)
>
> cryptest.exe: libcryptopp.a $(TESTOBJS)
> $(CXX) -o $@ $(CXXFLAGS) $(TESTOBJS) ./libcryptopp.a $(LDFLAGS)
> $(LDLIBS)
>
> nolib: $(OBJS) # makes it faster to test changes
> $(CXX) -o ct $(CXXFLAGS) $(OBJS) $(LDFLAGS) $(LDLIBS)
>
> dll: cryptest.import.exe dlltest.exe
>
> cryptopp.dll: $(DLLOBJS)
> $(CXX) -shared -o $@ $(CXXFLAGS) $(DLLOBJS) $(LDFLAGS) $(LDLIBS)
> -Wl,--out-implib=libcryptopp.dll.a
>
> libcryptopp.import.a: $(LIBIMPORTOBJS)
> $(AR) $(ARFLAGS) $@ $(LIBIMPORTOBJS)
> $(RANLIB) $@
>
> cryptest.import.exe: cryptopp.dll libcryptopp.import.a $(TESTIMPORTOBJS)
> $(CXX) -o $@ $(CXXFLAGS) $(TESTIMPORTOBJS) -L. -lcryptopp.dll
> -lcryptopp.import $(LDFLAGS) $(LDLIBS)
>
> dlltest.exe: cryptopp.dll $(DLLTESTOBJS)
> $(CXX) -o $@ $(CXXFLAGS) $(DLLTESTOBJS) -L. -lcryptopp.dll
> $(LDFLAGS) $(LDLIBS)
>
> adhoc.cpp: adhoc.cpp.proto
> ifeq ($(wildcard adhoc.cpp),)
> cp adhoc.cpp.proto adhoc.cpp
> else
> touch adhoc.cpp
> endif
>
> %.dllonly.o : %.cpp
> $(CXX) $(CXXFLAGS) -DCRYPTOPP_DLL_ONLY -c $< -o $@
>
> %.import.o : %.cpp
> $(CXX) $(CXXFLAGS) -DCRYPTOPP_IMPORTS -c $< -o $@
>
> %.export.o : %.cpp
> $(CXX) $(CXXFLAGS) -DCRYPTOPP_EXPORTS -c $< -o $@
>
> %.o : %.cpp
> $(CXX) $(CXXFLAGS) -c $<
>
>
--
--
You received this message because you are subscribed to the "Crypto++ Users"
Google Group.
To unsubscribe, send an email to [email protected].
More information about Crypto++ and this group is available at
http://www.cryptopp.com.
---
You received this message because you are subscribed to the Google Groups
"Crypto++ Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.