Post
Topic
Board Announcements (Altcoins)
Re: [ANN][YAC] YACoin ongoing development
by
ongle
on 01/06/2013, 12:55:16 UTC
Thank you for posting that it is possible - I've been pondering away most of the night without a terrible amount of success.  Any chance you could link me your Makefile.mingw?  I know there are some problems in there (as the included one wasn't even including scrypt-jane.o in the objects and didn't have the algorithms chosen in the compiler flags like the unix makefile has).

The only dependancy differences I'm noting is that you used boost 1.50 and I've used boost 1.53 - I'm still getting the error I mentioned above, but now that it's actually trying to include scrypt-jane, I've got a whole host of other errors for that which don't make a lot of sense...

Sure. This only gets you so far, have to do the qt pro build afterwards. I think I wasted a lot of time trying to build from within MSYS but ultimately ran this from CMD.

Code:
mingw32-make -f makefile.mingw

Code:
# Copyright (c) 2009-2010 Satoshi Nakamoto
# Distributed under the MIT/X11 software license, see the accompanying
# file COPYING or http://www.opensource.org/licenses/mit-license.php.

USE_UPNP:=0
USE_IPV6:=1

INCLUDEPATHS= \
 -I"d:\boost-1.50.0-mgw" \
 -I"d:\db-4.8.30.NC-mgw\build_unix" \
 -I"d:\openssl-1.0.1e-mgw\include"
 
LIBPATHS= \
 -L"d:\boost-1.50.0-mgw\stage\lib" \
 -L"d:\db-4.8.30.NC-mgw\build_unix" \
 -L"d:\openssl-1.0.1e-mgw"

LIBS= \
 -l boost_system-mgw46-mt-s-1_50 \
 -l boost_filesystem-mgw46-mt-s-1_50 \
 -l boost_program_options-mgw46-mt-s-1_50 \
 -l boost_thread-mgw46-mt-s-1_50 \
 -l boost_chrono-mgw46-mt-s-1_50 \
 -l db_cxx \
 -l ssl \
 -l crypto

DEFS=-DWIN32 -D_WINDOWS -DBOOST_THREAD_USE_LIB -DBOOST_SPIRIT_THREADSAFE
DEBUGFLAGS=-g
CFLAGS=-mthreads -O2 -msse2 -w -Wall -Wextra -Wformat -Wformat-security -Wno-unused-parameter $(DEBUGFLAGS) $(DEFS) $(INCLUDEPATHS)
LDFLAGS=-Wl,--dynamicbase -Wl,--nxcompat

# scrypt-jane specific parameters
DEFS+=-DSCRYPT_KECCAK512 -DSCRYPT_CHACHA -DSCRYPT_CHOOSE_COMPILETIME

xCXXFLAGS_SCRYPT_JANE=-O3 -msse2 -Wall -Wextra -Wformat -Wformat-security -Wno-unused-parameter \
    $(DEBUGFLAGS) $(DEFS) $(HARDENING) $(CXXFLAGS)

TESTDEFS = -DTEST_DATA_DIR=$(abspath test/data)

ifndef USE_UPNP
override USE_UPNP = -
endif
ifneq (${USE_UPNP}, -)
 INCLUDEPATHS += -I"d:\miniupnpc-1.8-mgw"
 LIBPATHS += -L"d:\miniupnpc-1.8-mgw\miniupnpc"
 LIBS += -l miniupnpc -l iphlpapi
 DEFS += -DSTATICLIB -DUSE_UPNP=$(USE_UPNP)
endif

ifneq (${USE_IPV6}, -)
DEFS += -DUSE_IPV6=$(USE_IPV6)
endif

LIBS += -l kernel32 -l user32 -l gdi32 -l comdlg32 -l winspool -l winmm -l shell32 -l comctl32 -l ole32 -l oleaut32 -l uuid -l rpcrt4 -l advapi32 -l ws2_32 -l mswsock -l shlwapi

# TODO: make the mingw builds smarter about dependencies, like the linux/osx builds are
HEADERS = $(wildcard *.h)

OBJS= \
    obj/alert.o \
    obj/version.o \
    obj/checkpoints.o \
    obj/netbase.o \
    obj/addrman.o \
    obj/crypter.o \
    obj/key.o \
    obj/db.o \
    obj/init.o \
    obj/irc.o \
    obj/keystore.o \
    obj/main.o \
    obj/net.o \
    obj/protocol.o \
    obj/bitcoinrpc.o \
    obj/rpcdump.o \
    obj/rpcnet.o \
    obj/rpcmining.o \
    obj/rpcwallet.o \
    obj/rpcblockchain.o \
    obj/rpcrawtransaction.o \
    obj/script.o \
    obj/sync.o \
    obj/util.o \
    obj/wallet.o \
    obj/walletdb.o \
    obj/noui.o \
    obj/kernel.o \
    obj/pbkdf2.o \
    obj/scrypt_mine.o \
    obj/scrypt-x86.o \
    obj/scrypt-x86_64.o \
obj/scrypt-jane.o

all: yacoind.exe

test check: test_yacoin.exe FORCE
test_yacoin.exe

obj/%.o: %.cpp $(HEADERS)
g++ -c $(CFLAGS) -o $@ $<

obj/scrypt-x86.o: scrypt-x86.S
$(CXX) -c $(xCXXFLAGS) -MMD -o $@ $<

obj/scrypt-x86_64.o: scrypt-x86_64.S
$(CXX) -c $(xCXXFLAGS) -MMD -o $@ $<

obj/scrypt-jane.o: scrypt-jane/scrypt-jane.c
gcc -c $(xCXXFLAGS_SCRYPT_JANE) -MMD -o $@ $<

yacoind.exe: $(OBJS:obj/%=obj/%)
g++ $(CFLAGS) $(LDFLAGS) -o $@ $(LIBPATHS) $^ $(LIBS)

TESTOBJS := $(patsubst test/%.cpp,obj-test/%.o,$(wildcard test/*.cpp))

obj-test/%.o: test/%.cpp $(HEADERS)
g++ -c $(TESTDEFS) $(CFLAGS) -o $@ $<

test_bitcoin.exe: $(TESTOBJS) $(filter-out obj/init.o,$(OBJS:obj/%=obj/%))
g++ $(CFLAGS) $(LDFLAGS) -o $@ $(LIBPATHS) $^ -lboost_unit_test_framework $(LIBS)

clean:
-del /Q yacoind test_yacoin
-del /Q obj\*
-del /Q obj-test\*

FORCE: