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.

Reply via email to