Re: tcatm's 4-way SSE2 for Linux 32/64-bit is in 0.3.10

Participants: nelisky

Quote from: satoshi on August 19, 2010, 07:07:43 PM

Quote from: nelisky on August 18, 2010, 11:02:25 PM

And i5, at least on my macbookpro

Good, so I take it that’s a confirmation that it’s working on Mac as well?

Laszlo told me he did compile in the -4way stuff on Mac, so the -4way switch is also available to try on Mac. I don’t think makefile.osx on SVN has it yet, just the built version.

Yep, it’s working all right. The number I had posted were from an old svn revision patched with tcatm’s changes, but today I compiled trunk and while I had to once again tweak the makefile, after I did it works great with the numbers matching what I experienced before.

Changes I did for my system are below, and while some are cosmetic, like removing wx-config from making bitcoind, just to avoid the warnings if you don’t have it installed, others are system specific, like the DEPS dir, and the fact I don’t have 32bit libs which makes the link step fail if -arch i386 is there. The bsddb changes are, I believe, a typo. Includes and Libs point to db46, but then the object list for the linker states db48. Anyway, here’s the diff for what got me going:

Code:Index: makefile.osx

--- makefile.osx (revision 139) +++ makefile.osx (working copy) @@ -6,29 +6,29 @@

Laszlo Hanyecz (solar@heliacal.net)

CXX=llvm-g++ -DEPSDIR=/Users/macosuser/bitcoin/deps +DEPSDIR=/opt/local

INCLUDEPATHS= \

  • -I”$(DEPSDIR)/include”
  • -I”$(DEPSDIR)/include” -I”$(DEPSDIR)/include/db46”

LIBPATHS= \

  • -L”$(DEPSDIR)/lib”
  • -L”$(DEPSDIR)/lib” -L”$(DEPSDIR)/lib/db46”

-WXLIBS=$(shell $(DEPSDIR)/bin/wx-config —libs —static) +WXLIBS=

LIBS= -dead_strip \

  • $(DEPSDIR)/lib/libdb_cxx-4.8.a \
  • $(DEPSDIR)/lib/libboost_system.a \
  • $(DEPSDIR)/lib/libboost_filesystem.a \
  • $(DEPSDIR)/lib/libboost_program_options.a \
  • $(DEPSDIR)/lib/libboost_thread.a \
  • $(DEPSDIR)/lib/db46/libdb_cxx-4.6.a \
  • $(DEPSDIR)/lib/libboost_system-mt.a \
  • $(DEPSDIR)/lib/libboost_filesystem-mt.a \
  • $(DEPSDIR)/lib/libboost_program_options-mt.a \
  • $(DEPSDIR)/lib/libboost_thread-mt.a
    $(DEPSDIR)/lib/libcrypto.a

-DEFS=$(shell $(DEPSDIR)/bin/wx-config —cxxflags) -D__WXMAC_OSX__ -DNOPCH -DMSG_NOSIGNAL=0 +DEFS=-D__WXMAC_OSX__ -DNOPCH -DMSG_NOSIGNAL=0 -DFOURWAYSSE2

DEBUGFLAGS=-g -DwxDEBUG_LEVEL=0

ppc doesn’t work because we don’t support big-endian

-CFLAGS=-mmacosx-version-min=10.5 -arch i386 -arch x86_64 -O3 -Wno-invalid-offsetof -Wformat $(DEBUGFLAGS) $(DEFS) $(INCLUDEPATHS) +CFLAGS=-mmacosx-version-min=10.5 -arch x86_64 -O3 -Wno-invalid-offsetof -Wformat $(DEBUGFLAGS) $(DEFS) $(INCLUDEPATHS) HEADERS=headers.h strlcpy.h serialize.h uint256.h util.h key.h bignum.h base58.h
script.h db.h net.h irc.h main.h rpc.h uibase.h ui.h noui.h init.h

@@ -42,6 +42,7 @@ obj/rpc.o
obj/init.o
cryptopp/obj/sha.o \

  • obj/sha256.o
    cryptopp/obj/cpu.o

@@ -55,7 +56,7 @@ $(CXX) -c $(CFLAGS) -O3 -DCRYPTOPP_DISABLE_ASM -o $@ $<

bitcoin: $(OBJS) obj/ui.o obj/uibase.o

  • $(CXX) $(CFLAGS) -o $@ $(LIBPATHS) $^ $(WXLIBS) $(LIBS)
  • $(CXX) $(shell $(DEPSDIR)/bin/wx-config —cxxflags) $(CFLAGS) -o $@ $(LIBPATHS) $^ $(shell $(DEPSDIR)/bin/wx-config —libs —static) $(LIBS)

obj/nogui/%.o: %.cpp $(HEADERS)