aboutsummaryrefslogtreecommitdiff
path: root/src/makefile.linux-mingw
diff options
context:
space:
mode:
authorJackson Palmer <[email protected]>2014-01-19 15:41:55 +1100
committerJackson Palmer <[email protected]>2014-01-19 15:41:55 +1100
commit68b0507f00ee29bcf29f3c992a882c712f990da6 (patch)
tree3140d6000b9018767e91069ccd83b0bad3e256f5 /src/makefile.linux-mingw
downloaddiscoin-68b0507f00ee29bcf29f3c992a882c712f990da6.tar.xz
discoin-68b0507f00ee29bcf29f3c992a882c712f990da6.zip
Initial commit
Successfully building on Ubuntu + Windows.
Diffstat (limited to 'src/makefile.linux-mingw')
-rw-r--r--src/makefile.linux-mingw138
1 files changed, 138 insertions, 0 deletions
diff --git a/src/makefile.linux-mingw b/src/makefile.linux-mingw
new file mode 100644
index 000000000..eef93cd85
--- /dev/null
+++ b/src/makefile.linux-mingw
@@ -0,0 +1,138 @@
+# 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.
+
+DEPSDIR:=/usr/i686-w64-mingw32
+
+CC := i686-w64-mingw32-gcc
+CXX := i686-w64-mingw32-g++
+
+USE_UPNP:=0
+USE_IPV6:=1
+
+INCLUDEPATHS= \
+ -I"$(CURDIR)" \
+ -I"$(CURDIR)"/obj \
+ -I"$(DEPSDIR)/include" \
+ -I"$(DEPSDIR)"
+
+LIBPATHS= \
+ -L"$(DEPSDIR)/lib"
+
+LIBS= \
+ $(CURDIR)/leveldb/libleveldb.a $(CURDIR)/leveldb/libmemenv.a \
+ -l boost_system-mt-s \
+ -l boost_filesystem-mt-s \
+ -l boost_program_options-mt-s \
+ -l boost_thread_win32-mt-s \
+ -l boost_chrono-mt-s \
+ -l db_cxx \
+ -l ssl \
+ -l crypto
+
+DEFS=-D_MT -DWIN32 -D_WINDOWS -DBOOST_THREAD_USE_LIB -DBOOST_SPIRIT_THREADSAFE
+DEBUGFLAGS=-g
+xCXXFLAGS=-O2 -w -Wall -Wextra -Wformat -Wformat-security -Wno-unused-parameter $(DEBUGFLAGS) $(DEFS) $(INCLUDEPATHS) $(CXXFLAGS)
+# enable: ASLR, DEP and large address aware
+xLDFLAGS=-Wl,--dynamicbase -Wl,--nxcompat -Wl,--large-address-aware -static-libgcc -static-libstdc++ $(LDFLAGS)
+
+TESTDEFS = -DTEST_DATA_DIR=$(abspath test/data)
+
+ifndef USE_UPNP
+ override USE_UPNP = -
+endif
+ifneq (${USE_UPNP}, -)
+ LIBPATHS += -L"$(DEPSDIR)/miniupnpc"
+ LIBS += -l miniupnpc -l iphlpapi
+ DEFS += -DSTATICLIB -DUSE_UPNP=$(USE_UPNP)
+endif
+
+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 mswsock -l shlwapi
+
+# TODO: make the mingw builds smarter about dependencies, like the linux/osx builds are
+HEADERS = $(wildcard *.h)
+
+OBJS= \
+ leveldb/libleveldb.a \
+ 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/scrypt.o \
+ obj/sync.o \
+ obj/util.o \
+ obj/wallet.o \
+ obj/walletdb.o \
+ obj/noui.o \
+ obj/hash.o \
+ obj/bloom.o \
+ obj/leveldb.o \
+ obj/txdb.o
+
+ifdef USE_SSE2
+DEFS += -DUSE_SSE2
+OBJS_SSE2= obj/scrypt-sse2.o
+OBJS += $(OBJS_SSE2)
+endif
+
+all: dogecoind.exe
+
+DEFS += -I"$(CURDIR)/leveldb/include"
+DEFS += -I"$(CURDIR)/leveldb/helpers"
+leveldb/libleveldb.a:
+ @echo "Building LevelDB ..." && cd leveldb && TARGET_OS=OS_WINDOWS_CROSSCOMPILE $(MAKE) CC=$(CC) CXX=$(CXX) OPT="$(xCXXFLAGS)" libleveldb.a libmemenv.a && i686-w64-mingw32-ranlib libleveldb.a && i686-w64-mingw32-ranlib libmemenv.a && cd ..
+
+obj/build.h: FORCE
+ /bin/sh ../share/genbuild.sh obj/build.h
+version.cpp: obj/build.h
+DEFS += -DHAVE_BUILD_INFO
+
+obj/%-sse2.o: %-sse2.cpp
+ $(CXX) -c $(xCXXFLAGS) -msse2 -mstackrealign -o $@ $<
+
+obj/%.o: %.cpp $(HEADERS)
+ $(CXX) -c $(xCXXFLAGS) -o $@ $<
+
+dogecoind.exe: $(OBJS:obj/%=obj/%)
+ $(CXX) $(xCXXFLAGS) $(xLDFLAGS) -o $@ $(LIBPATHS) $^ $(LIBS)
+
+TESTOBJS := $(patsubst test/%.cpp,obj-test/%.o,$(wildcard test/*.cpp))
+
+obj-test/%.o: test/%.cpp $(HEADERS)
+ $(CXX) -c $(TESTDEFS) $(xCXXFLAGS) -o $@ $<
+
+test_dogecoin.exe: $(TESTOBJS) $(filter-out obj/init.o,$(OBJS:obj/%=obj/%))
+ $(CXX) $(xCXXFLAGS) $(xLDFLAGS) -o $@ $(LIBPATHS) $^ -lboost_unit_test_framework-mt-s $(LIBS)
+
+
+clean:
+ -rm -f obj/*.o
+ -rm -f dogecoind.exe
+ -rm -f obj-test/*.o
+ -rm -f test_dogecoin.exe
+ -rm -f obj/build.h
+ cd leveldb && TARGET_OS=OS_WINDOWS_CROSSCOMPILE $(MAKE) clean && cd ..
+
+FORCE: