X-Git-Url: https://git.novaco.in/?p=novacoin.git;a=blobdiff_plain;f=src%2Fmakefile.linux-mingw;h=28372185167d8a6eb7713ed4a9fbeb4a14589fbf;hp=cae82f8cff6fec577fc8624e0c96a419ac1a4307;hb=415da519893e8fef7a10007fc82934385addd03d;hpb=e122e42354149386159fbff82fbd66e7a8ba1fdb diff --git a/src/makefile.linux-mingw b/src/makefile.linux-mingw index cae82f8..2837218 100644 --- a/src/makefile.linux-mingw +++ b/src/makefile.linux-mingw @@ -1,126 +1,191 @@ # Copyright (c) 2009-2010 Satoshi Nakamoto # Distributed under the MIT/X11 software license, see the accompanying -# file license.txt or http://www.opensource.org/licenses/mit-license.php. +# file COPYING or http://www.opensource.org/licenses/mit-license.php. -DEPSDIR:=/usr/i586-mingw32msvc +TARGET_PLATFORM:=i686 +#TARGET_PLATFORM:=x86_64 +CC:=$(TARGET_PLATFORM)-w64-mingw32-gcc +CXX:=$(TARGET_PLATFORM)-w64-mingw32-g++ +RANLIB:=$(TARGET_PLATFORM)-w64-mingw32-ranlib +STRIP:=$(TARGET_PLATFORM)-w64-mingw32-strip -USE_UPNP:=0 +DEPSDIR:=/usr/$(TARGET_PLATFORM)-w64-mingw32 + +BOOST_LIB_PATH:=$(DEPSDIR)/boost_1_57_0/stage/lib +BDB_LIB_PATH:=$(DEPSDIR)/db-6.0.20.NC/build_unix +OPENSSL_LIB_PATH:=$(DEPSDIR)/openssl-1.0.2g + +BOOST_INCLUDE_PATH:=$(DEPSDIR)/boost_1_57_0 +BDB_INCLUDE_PATH:=$(DEPSDIR)/db-6.0.20.NC/build_unix +OPENSSL_INCLUDE_PATH:=$(DEPSDIR)/openssl-1.0.2g/include + +USE_LEVELDB:=0 +USE_IPV6:=1 INCLUDEPATHS= \ - -I"$(DEPSDIR)/boost_1_47_0" \ - -I"$(DEPSDIR)/db-4.8.30.NC/build_unix" \ - -I"$(DEPSDIR)/openssl-1.0.0d/include" \ - -I"$(DEPSDIR)/wxWidgets-2.9.2/lib/gcc_lib/mswud" \ - -I"$(DEPSDIR)/wxWidgets-2.9.2/include" \ - -I"$(DEPSDIR)/wxWidgets-2.9.2/lib/wx/include/i586-mingw32msvc-msw-unicode-static-2.9/" \ - -I"$(DEPSDIR)" + -I"$(CURDIR)" \ + -I"$(CURDIR)"/obj \ + -I"$(BOOST_INCLUDE_PATH)" \ + -I"$(BDB_INCLUDE_PATH)" \ + -I"$(OPENSSL_INCLUDE_PATH)" LIBPATHS= \ - -L"$(DEPSDIR)/boost_1_47_0/stage/lib" \ - -L"$(DEPSDIR)/db-4.8.30.NC/build_unix" \ - -L"$(DEPSDIR)/openssl-1.0.0d" \ - -L"$(DEPSDIR)/wxWidgets-2.9.2/lib" - -WXLIBS= -l wx_mswu-2.9-i586-mingw32msvc + -L"$(BOOST_LIB_PATH)" \ + -L"$(BDB_LIB_PATH)" \ + -L"$(OPENSSL_LIB_PATH)" LIBS= \ - -l boost_system-mt-s \ - -l boost_filesystem-mt-s \ - -l boost_program_options-mt-s \ - -l boost_thread_win32-mt-s \ + -l boost_system-mt \ + -l boost_filesystem-mt \ + -l boost_program_options-mt \ + -l boost_thread_win32-mt \ + -l boost_chrono-mt \ -l db_cxx \ -l ssl \ - -l crypto - -DEFS=-D_MT -DWIN32 -D__WXMSW__ -D_WINDOWS -DNOPCH -DUSE_SSL -DBOOST_THREAD_USE_LIB -DEBUGFLAGS=-g -D__WXDEBUG__ -CFLAGS=-O2 -w -Wno-invalid-offsetof -Wformat $(DEBUGFLAGS) $(DEFS) $(INCLUDEPATHS) -HEADERS = \ - base58.h \ - bignum.h \ - crypter.h \ - db.h \ - headers.h \ - init.h \ - irc.h \ - key.h \ - keystore.h \ - main.h \ - net.h \ - noui.h \ - protocol.h \ - bitcoinrpc.h \ - script.h \ - serialize.h \ - strlcpy.h \ - ui.h \ - uibase.h \ - uint256.h \ - util.h \ - wallet.h - -ifdef USE_UPNP - LIBPATHS += -L"$(DEPSDIR)/miniupnpc" - LIBS += -l miniupnpc -l iphlpapi - DEFS += -DSTATICLIB -DUSE_UPNP=$(USE_UPNP) + -l crypto \ + -Wl,-Bstatic -lpthread -Wl,-Bdynamic + +xOPT_LEVEL=-O2 +ifeq (${USE_O3}, 1) + xOPT_LEVEL=-O3 +endif + +DEFS=-D_MT -DWIN32 -D_WINDOWS -DBOOST_THREAD_USE_LIB -DBOOST_SPIRIT_THREADSAFE -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS + +DEBUGFLAGS=-g +CFLAGS=$(xOPT_LEVEL) -msse2 -w -Wall -Wextra -Wno-ignored-qualifiers -Wformat -Wformat-security -Wno-unused-parameter $(DEBUGFLAGS) $(DEFS) $(INCLUDEPATHS) +LDFLAGS=-Wl,--dynamicbase -Wl,--nxcompat -static-libgcc -static-libstdc++ + +ifneq (${USE_IPV6}, -) + DEFS += -DUSE_IPV6=$(USE_IPV6) endif -LIBS += -l mingwthrd -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 shlwapi +LIBS += -l mingwthrd -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/base58.o \ + obj/key.o \ obj/db.o \ obj/init.o \ obj/irc.o \ obj/keystore.o \ obj/main.o \ + obj/miner.o \ obj/net.o \ + obj/ntp.o \ + obj/stun.o \ obj/protocol.o \ obj/bitcoinrpc.o \ + obj/rpccrypt.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 \ - cryptopp/obj/sha.o \ - cryptopp/obj/cpu.o - + obj/walletdb.o \ + obj/noui.o \ + obj/kernel.o \ + obj/kernel_worker.o \ + obj/ecies.o \ + obj/cryptogram.o \ + obj/ipcollector.o + +all: novacoind.exe + +# +# LevelDB support +# +ifeq (${USE_LEVELDB}, 1) +LIBS += $(CURDIR)/leveldb/libleveldb.a $(CURDIR)/leveldb/libmemenv.a +DEFS += -I"$(CURDIR)/leveldb/include" -DUSE_LEVELDB +DEFS += -I"$(CURDIR)/leveldb/helpers" +OBJS += obj/txdb-leveldb.o +leveldb/libleveldb.a: + @echo "Building LevelDB ..." && cd leveldb && CC=$(CC) CXX=$(CXX) TARGET_OS=OS_WINDOWS_CROSSCOMPILE CXXFLAGS="-I$(INCLUDEPATHS)" LDFLAGS="-L$(LIBPATHS)" $(MAKE) libleveldb.a libmemenv.a && $(RANLIB) libleveldb.a && $(RANLIB) libmemenv.a && cd .. +obj/txdb-leveldb.o: leveldb/libleveldb.a +else +OBJS += obj/txdb-bdb.o +endif -all: bitcoin.exe +ifeq (${USE_ASM}, 1) +# Assembler implementation +OBJS += crypto/scrypt/asm/obj/scrypt-arm.o crypto/scrypt/asm/obj/scrypt-x86.o crypto/scrypt/asm/obj/scrypt-x86_64.o crypto/scrypt/asm/obj/asm-wrapper.o +crypto/scrypt/asm/obj/scrypt-x86.o: crypto/scrypt/asm/scrypt-x86.S + $(CXX) -c $(CFLAGS) -MMD -o $@ $< -obj/%.o: %.cpp $(HEADERS) - i586-mingw32msvc-g++ -c $(CFLAGS) -DGUI -o $@ $< +crypto/scrypt/asm/obj/scrypt-x86_64.o: crypto/scrypt/asm/scrypt-x86_64.S + $(CXX) -c $(CFLAGS) -MMD -o $@ $< -cryptopp/obj/%.o: cryptopp/%.cpp - i586-mingw32msvc-g++ -c $(CFLAGS) -O3 -DCRYPTOPP_DISABLE_ASM -o $@ $< +crypto/scrypt/asm/obj/scrypt-arm.o: crypto/scrypt/asm/scrypt-arm.S + $(CXX) -c $(CFLAGS) -MMD -o $@ $< -obj/ui_res.o: ../share/ui.rc ../share/pixmaps/bitcoin.ico ../share/pixmaps/check.ico ../share/pixmaps/send16.bmp ../share/pixmaps/send16mask.bmp ../share/pixmaps/send16masknoshadow.bmp ../share/pixmaps/send20.bmp ../share/pixmaps/send20mask.bmp ../share/pixmaps/addressbook16.bmp ../share/pixmaps/addressbook16mask.bmp ../share/pixmaps/addressbook20.bmp ../share/pixmaps/addressbook20mask.bmp - i586-mingw32msvc-windres $(DEFS) $(INCLUDEPATHS) -o $@ -i $< +crypto/scrypt/asm/obj/asm-wrapper.o: crypto/scrypt/asm/asm-wrapper.cpp + $(CXX) -c $(CFLAGS) -MMD -o $@ $< -bitcoin.exe: $(OBJS) obj/ui.o obj/uibase.o obj/ui_res.o - i586-mingw32msvc-g++ $(CFLAGS) -mwindows -Wl,--subsystem,windows -o $@ $(LIBPATHS) $^ $(WXLIBS) $(LIBS) +DEFS += -DUSE_ASM +else +ifeq (${USE_SSE2}, 1) +# Intrinsic implementation +DEFS += -DUSE_SSE2 +OBJS += crypto/scrypt/intrin/obj/scrypt-sse2.o +crypto/scrypt/intrin/obj/scrypt-sse2.o: crypto/scrypt/intrin/scrypt-sse2.cpp $(HEADERS) + $(CXX) -c $(CFLAGS) -MMD -o $@ $< +else +ifneq (${USE_ASM}, 1) +# Generic implementation +OBJS += crypto/scrypt/generic/obj/scrypt-generic.o -obj/nogui/%.o: %.cpp $(HEADERS) - i586-mingw32msvc-g++ -c $(CFLAGS) -o $@ $< +crypto/scrypt/generic/obj/scrypt-generic.o: crypto/scrypt/generic/scrypt-generic.cpp + $(CXX) -c $(CFLAGS) -MMD -o $@ $< +endif +endif +endif -bitcoind.exe: $(OBJS:obj/%=obj/nogui/%) obj/ui_res.o - i586-mingw32msvc-g++ $(CFLAGS) -o $@ $(LIBPATHS) $^ $(LIBS) -obj/test/%.o: obj/test/%.cpp $(HEADERS) - i586-mingw32msvc-g++ -c $(CFLAGS) -o $@ $< +obj/build.h: FORCE + /bin/sh ../share/genbuild.sh obj/build.h +version.cpp: obj/build.h +DEFS += -DHAVE_BUILD_INFO -test_bitcoin.exe: obj/test/test_bitcoin.o $(filter-out obj/nogui/init.o,$(OBJS:obj/%=obj/nogui/%)) - i586-mingw32msvc-g++ $(CFLAGS) -o $@ $(LIBPATHS) $^ $(LIBS) -lboost_unit_test_framework-mt-s +obj/%.o: %.cpp $(HEADERS) + $(CXX) -c $(CFLAGS) -o $@ $< +novacoind.exe: $(OBJS:obj/%=obj/%) + $(CXX) $(CFLAGS) $(LDFLAGS) -o $@ $(LIBPATHS) $^ $(LIBS) -lshlwapi + $(STRIP) novacoind.exe clean: + -rm -f novacoind.exe -rm -f obj/*.o - -rm -f obj/nogui/*.o - -rm -f obj/test/*.o - -rm -f cryptopp/obj/*.o - -rm -f test/*.o - -rm -f headers.h.gch - -rm -f bitcoin.exe - -rm -f bitcoind.exe - -rm -f test_bitcoin.exe + -rm -f obj/*.P + -rm -f obj/*.d + -rm -f crypto/scrypt/asm/obj/*.o + -rm -f crypto/scrypt/asm/obj/*.P + -rm -f crypto/scrypt/asm/obj/*.d + -rm -f crypto/scrypt/intrin/obj/*.o + -rm -f crypto/scrypt/intrin/obj/*.P + -rm -f crypto/scrypt/intrin/obj/*.d + -rm -f crypto/scrypt/generic/obj/*.o + -rm -f crypto/scrypt/generic/obj/*.P + -rm -f crypto/scrypt/generic/obj/*.d + -rm -f obj/build.h + cd leveldb && TARGET_OS=OS_WINDOWS_CROSSCOMPILE $(MAKE) clean && cd .. + +FORCE: