1 # Copyright (c) 2009-2010 Satoshi Nakamoto
2 # Distributed under the MIT/X11 software license, see the accompanying
3 # file COPYING or http://www.opensource.org/licenses/mit-license.php.
5 DEPSDIR:=/usr/i586-mingw32msvc
14 -I"$(DEPSDIR)/boost_1_50_0" \
15 -I"$(DEPSDIR)/db-4.8.30.NC/build_unix" \
16 -I"$(DEPSDIR)/openssl-1.0.1c/include" \
20 -L"$(DEPSDIR)/boost_1_50_0/stage/lib" \
21 -L"$(DEPSDIR)/db-4.8.30.NC/build_unix" \
22 -L"$(DEPSDIR)/openssl-1.0.1c"
26 -l boost_filesystem-mt \
27 -l boost_program_options-mt \
28 -l boost_thread_win32-mt \
34 DEFS=-D_MT -DWIN32 -D_WINDOWS -DBOOST_THREAD_USE_LIB -DBOOST_SPIRIT_THREADSAFE
36 CFLAGS=-O2 -msse2 -w -Wall -Wextra -Wformat -Wformat-security -Wno-unused-parameter $(DEBUGFLAGS) $(DEFS) $(INCLUDEPATHS)
37 LDFLAGS=-Wl,--dynamicbase -Wl,--nxcompat
39 TESTDEFS = -DTEST_DATA_DIR=$(abspath test/data)
44 ifneq (${USE_UPNP}, -)
45 LIBPATHS += -L"$(DEPSDIR)/miniupnpc"
46 LIBS += -l miniupnpc -l iphlpapi
47 DEFS += -DSTATICLIB -DUSE_UPNP=$(USE_UPNP)
50 ifneq (${USE_IPV6}, -)
51 DEFS += -DUSE_IPV6=$(USE_IPV6)
54 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
56 # TODO: make the mingw builds smarter about dependencies, like the linux/osx builds are
57 HEADERS = $(wildcard *.h)
81 obj/rpcrawtransaction.o \
99 ifeq (${USE_LEVELDB}, 1)
100 LIBS += $(CURDIR)/leveldb/libleveldb.a $(CURDIR)/leveldb/libmemenv.a
101 DEFS += -I"$(CURDIR)/leveldb/include" -DUSE_LEVELDB
102 DEFS += -I"$(CURDIR)/leveldb/helpers"
103 OBJS += obj/txdb-leveldb.o
104 leveldb/libleveldb.a:
105 @echo "Building LevelDB ..." && cd leveldb && CC=i586-mingw32msvc-gcc CXX=i586-mingw32msvc-g++ TARGET_OS=OS_WINDOWS_CROSSCOMPILE CXXFLAGS="-I$(INCLUDEPATHS)" LDFLAGS="-L$(LIBPATHS)" $(MAKE) libleveldb.a libmemenv.a && i586-mingw32msvc-ranlib libleveldb.a && i586-mingw32msvc-ranlib libmemenv.a && cd ..
106 obj/txdb-leveldb.o: leveldb/libleveldb.a
108 OBJS += obj/txdb-bdb.o
112 /bin/sh ../share/genbuild.sh obj/build.h
113 version.cpp: obj/build.h
114 DEFS += -DHAVE_BUILD_INFO
116 obj/%.o: %.cpp $(HEADERS)
117 i586-mingw32msvc-g++ -c $(CFLAGS) -o $@ $<
119 novacoind.exe: $(OBJS:obj/%=obj/%)
120 i586-mingw32msvc-g++ $(CFLAGS) $(LDFLAGS) -o $@ $(LIBPATHS) $^ $(LIBS) -lshlwapi
122 TESTOBJS := $(patsubst test/%.cpp,obj-test/%.o,$(wildcard test/*.cpp))
124 obj-test/%.o: test/%.cpp $(HEADERS)
125 i586-mingw32msvc-g++ -c $(TESTDEFS) $(CFLAGS) -o $@ $<
127 test_novacoin.exe: $(TESTOBJS) $(filter-out obj/init.o,$(OBJS:obj/%=obj/%))
128 i586-mingw32msvc-g++ $(CFLAGS) $(LDFLAGS) -o $@ $(LIBPATHS) $^ -lboost_unit_test_framework-mt-s $(LIBS)
130 obj/scrypt-x86.o: scrypt-x86.S
131 i586-mingw32msvc-g++ -c $(CFLAGS) -MMD -o $@ $<
133 obj/scrypt-x86_64.o: scrypt-x86_64.S
134 i586-mingw32msvc-g++ -c $(CFLAGS) -MMD -o $@ $<
140 -rm -f test_novacoin.exe
142 cd leveldb && TARGET_OS=OS_WINDOWS_CROSSCOMPILE $(MAKE) clean && cd ..