-
Notifications
You must be signed in to change notification settings - Fork 5
/
makefile.mingw
158 lines (136 loc) · 4.33 KB
/
makefile.mingw
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
# Copyright (c) 2009-2010 Satoshi Nakamoto
# Copyright (c) 2012 The LoMoCoin developers
# Distributed under the MIT/X11 software license, see the accompanying
# file license.txt or http://www.opensource.org/licenses/mit-license.php.
# Windows commandline build procedure:
# - Install MinGW following http://www.mingw.org/wiki/Getting_Started.
# Install with the C++ and MSYS options checked
#
# - Add/edit 'MAKE' environment variable with value '/c/MinGW32/bin/mingw32-make.exe'
#
# - Build openssl library version: 1.0.1g
# download from http://www.openssl.org/source/
# Extract to c:\openssl-1.0.1g-mgw
# In MinGW MSYS:
# ./config
# make
#
# - Build Berkeley DB library version: 4.8.30.NC
# download from http://www.oracle.com/technology/software/products/berkeley-db/index.html
# Extract to c:\db-4.8.30.NC-mgw
# In MinGW MSYS:
# cd build_unix
# sh ../dist/configure --disable-replication --enable-mingw --enable-cxx --prefix=/usr/local
# Edit db.h@113 in build_unix
# from
# typedef pthread_t db_threadid_t;
# to
# typedef u_int32_t db_threadid_t;
# Then
# make
#
# - Build Boost C++ library version: 1.47.0
# download from http://www.boost.org/users/download/
# Extract to c:\boost-1.47.0-mgw
# Install Boost.Build:
# cd tools\build\v2
# bootstrap.bat
# b2 install --prefix=BOOST_BUILD_INSTALL_DIR
# Add BOOST_BUILD_INSTALL_DIR to your PATH system environment variable
# Build boost library in MSDOS:
# cd c:\boost-1.47.0-mgw
# bjam toolset=gcc --build-type=complete stage
#
# - Build Miniupnp library version: 1.6
# download from http://miniupnp.free.fr/files/
# file name is miniupnpc-1.6.20120509.tar.gz
# Extract to c:\miniupnpc-1.6-mgw
# In MinGW MSYS shell:
# cd /c/miniupnpc-1.6-mgw
# make -f Makefile.mingw
# mkdir miniupnpc
# cp *.h miniupnpc/
#
# - Build lomocoind.exe
# in MinGW MSYS
# cd lomocoin/src
# make lomocoind.exe -f makefile.mingw USE_UPNP=1
#
#
USE_UPNP:=0
INCLUDEPATHS= \
-I"leveldb\include" \
-I"C:\boost-1.47.0-mgw" \
-I"C:\db-4.8.30.NC-mgw\build_unix" \
-I"C:\openssl-1.0.1g-mgw\include"
LIBPATHS= \
-L"C:\boost-1.47.0-mgw\stage\lib" \
-L"C:\db-4.8.30.NC-mgw\build_unix" \
-L"C:\openssl-1.0.1g-mgw"
LIBS= \
-l boost_system-mgw46-mt-s-1_47 \
-l boost_filesystem-mgw46-mt-s-1_47 \
-l boost_program_options-mgw46-mt-s-1_47 \
-l boost_thread-mgw46-mt-s-1_47 \
-l boost_date_time-mgw46-mt-s-1_47 \
-l db_cxx \
-l ssl \
-l crypto
DEFS=-DWIN32 -D_WINDOWS -DBOOST_THREAD_USE_LIB -DBOOST_SPIRIT_THREADSAFE
DEBUGFLAGS=-g
CFLAGS=-mthreads -O2 -w -Wno-invalid-offsetof -Wformat $(DEBUGFLAGS) $(DEFS) $(INCLUDEPATHS)
TESTDEFS = -DTEST_DATA_DIR=$(abspath test/data)
ifdef USE_UPNP
INCLUDEPATHS += -I"C:\miniupnpc-1.6-mgw"
LIBPATHS += -L"C:\miniupnpc-1.6-mgw"
LIBS += -l miniupnpc -l iphlpapi
DEFS += -DSTATICLIB -DUSE_UPNP=$(USE_UPNP)
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 shlwapi
# TODO: make the mingw builds smarter about dependencies, like the linux/osx builds are
HEADERS = $(wildcard *.h)
OBJS= \
leveldb/libleveldb.a \
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/script.o \
obj/util.o \
obj/wallet.o \
obj/walletdb.o \
obj/walletbackup.o \
obj/leveldbeng.o \
obj/btxdb.o \
obj/wtxdb.o \
obj/noui.o \
obj/kernel.o
all: lomocoind.exe
obj/%.o: %.cpp $(HEADERS)
g++ -c $(CFLAGS) -o $@ $<
leveldb/libleveldb.a:
cd leveldb && $(MAKE) CC=$(CC) CXX=$(CXX) OPT="$(CFLAGS)" TARGET_OS=NATIVE_WINDOWS libleveldb.a && cd ..
lomocoind.exe: $(OBJS:obj/%=obj/%)
g++ $(CFLAGS) -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) -o $@ $(LIBPATHS) $^ -lboost_unit_test_framework $(LIBS)
clean:
-del /Q lomocoind test_bitcoin
-del /Q obj\*
-del /Q obj-test\*
-del /Q build.h
cd leveldb && $(MAKE) TARGET_OS=NATIVE_WINDOWS clean && cd ..