6
6
# Mac OS X makefile for bitcoin
7
7
# Originally by Laszlo Hanyecz ([email protected] )
8
8
9
+ TOR_OBJS := $(shell mkdir -p $(CURDIR ) /obj/tor)
10
+ ENIGMA_OBJS := $(shell mkdir -p $(CURDIR ) /obj/enigma)
11
+
12
+ CFLAGS =-isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk
13
+
9
14
CXX =llvm-g++
10
- DEPSDIR =/opt/local
15
+ LINK =$(CXX )
16
+ DEPSDIR =/usr/local/opt
11
17
12
18
INCLUDEPATHS = \
13
19
-I"$(CURDIR ) " \
14
20
-I"$(CURDIR ) "/obj \
15
- -I"$(DEPSDIR ) /include" \
16
- -I"$(DEPSDIR ) /include/db48 " \
17
- -I"$(CURDIR ) /leveldb /include" \
18
- -I"$(CURDIR ) /leveldb/helpers "
21
+ -I"
$(DEPSDIR ) /
[email protected] /include"
\
22
+ -I"$(DEPSDIR ) /berkeley-db@4/include " \
23
+ -I"$(DEPSDIR ) /openssl /include" \
24
+ -I"$(DEPSDIR ) /libevent/include "
19
25
20
26
LIBPATHS = \
21
- -L"$(DEPSDIR ) /lib" \
22
- -L"$(DEPSDIR ) /lib/db48" \
23
- -L"$(CURDIR ) /leveldb/lib/osx/x64"
27
+ -L"
$(DEPSDIR ) /
[email protected] /lib"
\
28
+ -L"$(DEPSDIR ) /berkeley-db@4/lib" \
29
+ -L"$(DEPSDIR ) /openssl/lib" \
30
+ -L"$(DEPSDIR ) /libevent/lib"
24
31
25
- USE_UPNP: =1
32
+ USE_QRCODE: =1
33
+ USE_UPNP: =-
26
34
USE_IPV6: =1
27
35
USE_LEVELDB: =1
36
+ RELEASE: =1
28
37
29
38
LIBS = -dead_strip
30
39
31
40
TESTDEFS = -DTEST_DATA_DIR=$(abspath test/data)
32
41
33
- ifdef STATIC
34
- # Build STATIC if you are redistributing the bitcoind binary
35
- TESTLIBS += \
36
- $(DEPSDIR ) /lib/libboost_unit_test_framework-mt.a
37
- LIBS += \
38
- $(DEPSDIR ) /lib/db48/libdb_cxx-4.8.a \
39
- $(DEPSDIR ) /lib/libboost_system-mt.a \
40
- $(DEPSDIR ) /lib/libboost_filesystem-mt.a \
41
- $(DEPSDIR ) /lib/libboost_program_options-mt.a \
42
- $(DEPSDIR ) /lib/libboost_thread-mt.a \
43
- $(DEPSDIR ) /lib/libssl.a \
44
- $(DEPSDIR ) /lib/libcrypto.a \
45
- -lz
46
- else
47
42
TESTLIBS += \
48
- -lboost_unit_test_framework-mt
43
+ -lboost_unit_test_framework
44
+
49
45
LIBS += \
50
46
-ldb_cxx-4.8 \
51
47
-lboost_system-mt \
52
48
-lboost_filesystem-mt \
53
49
-lboost_program_options-mt \
54
50
-lboost_thread-mt \
55
- -lleveldb \
56
- -lmemenv \
51
+ -levent \
57
52
-lssl \
58
53
-lcrypto \
59
54
-lz
55
+
60
56
TESTDEFS += -DBOOST_TEST_DYN_LINK
61
- endif
62
57
63
58
DEFS =-DMAC_OSX -DMSG_NOSIGNAL=0 -DBOOST_SPIRIT_THREADSAFE
64
59
60
+ ifndef USE_UPNP
61
+ override USE_UPNP = -
62
+ endif
63
+ ifndef USE_IPV6
64
+ override USE_IPV6 = -
65
+ endif
66
+ ifndef USE_LEVELDB
67
+ override USE_LEVELDB = -
68
+ endif
69
+
70
+ ifneq (${USE_UPNP}, -)
71
+ DEFS += -DUSE_UPNP=$(USE_UPNP)
72
+ LIBS += -lminiupnpc
73
+ endif
74
+
75
+ ifneq (${USE_IPV6}, -)
76
+ DEFS += -DUSE_IPV6=$(USE_IPV6)
77
+ endif
78
+
79
+ ifneq (${USE_LEVELDB}, -)
80
+ DEFS += -DUSE_LEVELDB=$(USE_LEVELDB)
81
+ endif
82
+
83
+ ifeq (${USE_LEVELDB}, 1)
84
+ LIBS += $(CURDIR)/leveldb/out-static/libleveldb.a $(CURDIR)/leveldb/out-static/libmemenv.a
85
+ DEFS += $(addprefix -I,$(CURDIR)/leveldb/include)
86
+ DEFS += $(addprefix -I,$(CURDIR)/leveldb/helpers)
87
+ endif
88
+
65
89
ifdef RELEASE
66
- # Compile for maximum compatibility and smallest size.
67
- # This requires that dependencies are compiled
68
- # the same way.
69
- CFLAGS = -mmacosx-version-min=10.5 -arch x86_64 -O3 -msse2
90
+ CFLAGS += -mmacosx-version-min=10.7 -arch x86_64 -O3 -msse2 -stdlib=libc++
70
91
else
71
- CFLAGS = -g -msse2
92
+ CFLAGS + = -g -msse2
72
93
endif
73
94
74
95
# ppc doesn't work because we don't support big-endian
75
96
CFLAGS += -Wall -Wextra -Wformat -Wformat-security -Wno-unused-parameter \
76
97
$(DEBUGFLAGS ) $(DEFS ) $(INCLUDEPATHS )
77
98
99
+ xCXXFLAGS = $(CFLAGS )
100
+
78
101
OBJS = \
102
+ obj/tor/address.o \
103
+ obj/tor/addressmap.o \
104
+ obj/tor/aes.o \
105
+ obj/tor/backtrace.o \
106
+ obj/tor/buffers.o \
107
+ obj/tor/channel.o \
108
+ obj/tor/channeltls.o \
109
+ obj/tor/circpathbias.o \
110
+ obj/tor/circuitbuild.o \
111
+ obj/tor/circuitlist.o \
112
+ obj/tor/circuitmux.o \
113
+ obj/tor/circuitmux_ewma.o \
114
+ obj/tor/circuitstats.o \
115
+ obj/tor/circuituse.o \
116
+ obj/tor/command.o \
117
+ obj/tor/compat.o \
118
+ obj/tor/compat_libevent.o \
119
+ obj/tor/config.o \
120
+ obj/tor/config_codedigest.o \
121
+ obj/tor/confparse.o \
122
+ obj/tor/connection.o \
123
+ obj/tor/connection_edge.o \
124
+ obj/tor/connection_or.o \
125
+ obj/tor/container.o \
126
+ obj/tor/control.o \
127
+ obj/tor/cpuworker.o \
128
+ obj/tor/crypto.o \
129
+ obj/tor/crypto_curve25519.o \
130
+ obj/tor/crypto_format.o \
131
+ obj/tor/curve25519-donna.o \
132
+ obj/tor/di_ops.o \
133
+ obj/tor/directory.o \
134
+ obj/tor/dirserv.o \
135
+ obj/tor/dirvote.o \
136
+ obj/tor/dns.o \
137
+ obj/tor/dnsserv.o \
138
+ obj/tor/entrynodes.o \
139
+ obj/tor/ext_orport.o \
140
+ obj/tor/fp_pair.o \
141
+ obj/tor/geoip.o \
142
+ obj/tor/hibernate.o \
143
+ obj/tor/log.o \
144
+ obj/tor/memarea.o \
145
+ obj/tor/mempool.o \
146
+ obj/tor/microdesc.o \
147
+ obj/tor/networkstatus.o \
148
+ obj/tor/nodelist.o \
149
+ obj/tor/onion.o \
150
+ obj/tor/onion_fast.o \
151
+ obj/tor/onion_main.o \
152
+ obj/tor/onion_ntor.o \
153
+ obj/tor/onion_tap.o \
154
+ obj/tor/policies.o \
155
+ obj/tor/procmon.o \
156
+ obj/tor/reasons.o \
157
+ obj/tor/relay.o \
158
+ obj/tor/rendclient.o \
159
+ obj/tor/rendcommon.o \
160
+ obj/tor/rendmid.o \
161
+ obj/tor/rendservice.o \
162
+ obj/tor/rephist.o \
163
+ obj/tor/replaycache.o \
164
+ obj/tor/router.o \
165
+ obj/tor/routerlist.o \
166
+ obj/tor/routerparse.o \
167
+ obj/tor/routerset.o \
168
+ obj/tor/sandbox.o \
169
+ obj/tor/statefile.o \
170
+ obj/tor/status.o \
171
+ obj/tor/torgzip.o \
172
+ obj/tor/tortls.o \
173
+ obj/tor/tor_util.o \
174
+ obj/tor/transports.o \
175
+ obj/tor/util_codedigest.o \
176
+ obj/tor/cloak.o \
177
+ obj/fugue.o \
178
+ obj/hamsi.o \
179
+ obj/groestl.o \
180
+ obj/blake.o \
181
+ obj/bmw.o \
182
+ obj/skein.o \
183
+ obj/keccak.o \
184
+ obj/shavite.o \
185
+ obj/jh.o \
186
+ obj/luffa.o \
187
+ obj/cubehash.o \
188
+ obj/echo.o \
189
+ obj/simd.o \
79
190
obj/alert.o \
80
191
obj/version.o \
81
192
obj/checkpoints.o \
@@ -103,35 +214,28 @@ OBJS= \
103
214
obj/wallet.o \
104
215
obj/walletdb.o \
105
216
obj/noui.o \
106
- obj/pbkdf2.o \
107
217
obj/kernel.o \
218
+ obj/pbkdf2.o \
219
+ obj/scrypt.o \
108
220
obj/scrypt_mine.o \
109
221
obj/scrypt-x86.o \
110
222
obj/scrypt-x86_64.o \
223
+ obj/scrypt-arm.o \
111
224
obj/stealth.o \
112
- obj/conemarketcreatelisting.o \
113
- obj/onemarket.o \
114
225
obj/enigma/cloakingdata.o \
115
226
obj/enigma/cloakingrequest.o \
116
227
obj/enigma/enigmapeer.o \
117
228
obj/enigma/cloakshield.o \
229
+ obj/enigma/encryption.o \
118
230
obj/enigma/enigmaann.o \
231
+ obj/enigma/enigmapeer.o \
119
232
obj/enigma/enigma.o
120
233
121
- ifndef USE_UPNP
122
- override USE_UPNP = -
123
- endif
124
- ifneq (${USE_UPNP}, -)
125
- DEFS += -DUSE_UPNP=$(USE_UPNP)
126
- ifdef STATIC
127
- LIBS += $(DEPSDIR)/lib/libminiupnpc.a
128
- else
129
- LIBS += -lminiupnpc
130
- endif
234
+ ifeq (${USE_LEVELDB}, 1)
235
+ OBJS += obj/txdb-leveldb.o
131
236
endif
132
-
133
- ifneq (${USE_IPV6}, -)
134
- DEFS += -DUSE_IPV6=$(USE_IPV6)
237
+ ifneq (${USE_LEVELDB}, 1)
238
+ OBJS += obj/txdb-bdb.o
135
239
endif
136
240
137
241
all : cloakcoind
@@ -148,44 +252,76 @@ obj/build.h: FORCE
148
252
version.cpp : obj/build.h
149
253
DEFS += -DHAVE_BUILD_INFO
150
254
255
+ obj/scrypt-x86.o : scrypt-x86.S
256
+ $(CXX ) -c $(xCXXFLAGS ) -MMD -o $@ $<
257
+
258
+ obj/scrypt-x86_64.o : scrypt-x86_64.S
259
+ $(CXX ) -c $(xCXXFLAGS ) -MMD -o $@ $<
260
+
261
+ obj/scrypt-arm.o : scrypt-arm.S
262
+ $(CXX ) -c $(xCXXFLAGS ) -MMD -o $@ $<
263
+
151
264
obj/% .o : % .cpp
152
- $(CXX ) -c $(CFLAGS ) -MMD -MF $(@:%.o=%.d ) -o $@ $<
265
+ $(CXX ) -c $(xCXXFLAGS ) -MMD -MF $(@:%.o=%.d ) -o $@ $<
153
266
@cp $(@:%.o=%.d ) $(@:%.o=%.P ) ; \
154
267
sed -e ' s/#.*//' -e ' s/^[^:]*: *//' -e ' s/ *\\$$//' \
155
268
-e ' /^$$/ d' -e ' s/$$/ :/' < $(@:%.o=%.d ) >> $(@:%.o=%.P ) ; \
156
269
rm -f $(@:%.o=%.d )
157
270
158
- obj/scrypt-x86.o : scrypt-x86.S
159
- $(CXX ) -c $(xCXXFLAGS ) -MMD -o $@ $<
271
+ obj/tor/% .o : tor/% .c
272
+ $(CC ) -c $(xCXXFLAGS ) -MMD -MF $(@:%.o=%.d ) -o $@ $<
273
+ @cp $(@:%.o=%.d ) $(@:%.o=%.P ) ; \
274
+ sed -e ' s/#.*//' -e ' s/^[^:]*: *//' -e ' s/ *\\$$//' \
275
+ -e ' /^$$/ d' -e ' s/$$/ :/' < $(@:%.o=%.d ) >> $(@:%.o=%.P ) ; \
276
+ rm -f $(@:%.o=%.d )
160
277
161
- obj/scrypt-x86_64.o : scrypt-x86_64.S
162
- $(CXX ) -c $(xCXXFLAGS ) -MMD -o $@ $<
278
+ obj/tor/% .o : tor/cloak.cpp
279
+ $(CXX ) -c $(xCXXFLAGS ) -MMD -MF $(@:%.o=%.d ) -o $@ $<
280
+ @cp $(@:%.o=%.d ) $(@:%.o=%.P ) ; \
281
+ sed -e ' s/#.*//' -e ' s/^[^:]*: *//' -e ' s/ *\\$$//' \
282
+ -e ' /^$$/ d' -e ' s/$$/ :/' < $(@:%.o=%.d ) >> $(@:%.o=%.P ) ; \
283
+ rm -f $(@:%.o=%.d )
284
+
285
+ obj/enigma/% .o : enigma/% .cpp
286
+ $(CXX ) -c $(xCXXFLAGS ) -MMD -MF $(@:%.o=%.dx ) -o $@ $<
287
+ @cp $(@:%.o=%.d ) $(@:%.o=%.P ) ; \
288
+ sed -e ' s/#.*//' -e ' s/^[^:]*: *//' -e ' s/ *\\$$//' \
289
+ -e ' /^$$/ d' -e ' s/$$/ :/' < $(@:%.o=%.d ) >> $(@:%.o=%.P ) ; \
290
+ rm -f $(@:%.o=%.d )
291
+
292
+ obj/% .o : % .c
293
+ $(CXX ) -c $(xCXXFLAGS ) -fpermissive -MMD -MF $(@:%.o=%.d ) -o $@ $<
294
+ @cp $(@:%.o=%.d ) $(@:%.o=%.P ) ; \
295
+ sed -e ' s/#.*//' -e ' s/^[^:]*: *//' -e ' s/ *\\$$//' \
296
+ -e ' /^$$/ d' -e ' s/$$/ :/' < $(@:%.o=%.d ) >> $(@:%.o=%.P ) ; \
297
+ rm -f $(@:%.o=%.d )
163
298
164
299
cloakcoind : $(OBJS:obj/%=obj/% )
165
- $(CXX ) $(CFLAGS ) -o $@ $(LIBPATHS ) $^ $(LIBS )
300
+ $(LINK ) $(xCXXFLAGS ) -o $@ $(LIBPATHS ) $^ $( xLDFLAGS ) $(LIBS )
166
301
167
302
TESTOBJS := $(patsubst test/% .cpp,obj-test/% .o,$(wildcard test/* .cpp) )
168
303
169
304
obj-test/% .o : test/% .cpp
170
- $(CXX ) -c $(TESTDEFS ) $(CFLAGS ) -MMD -MF $(@:%.o=%.d ) -o $@ $<
305
+ $(CXX ) -c $(TESTDEFS ) $(xCXXFLAGS ) -MMD -MF $(@:%.o=%.d ) -o $@ $<
171
306
@cp $(@:%.o=%.d ) $(@:%.o=%.P ) ; \
172
307
sed -e ' s/#.*//' -e ' s/^[^:]*: *//' -e ' s/ *\\$$//' \
173
308
-e ' /^$$/ d' -e ' s/$$/ :/' < $(@:%.o=%.d ) >> $(@:%.o=%.P ) ; \
174
309
rm -f $(@:%.o=%.d )
175
310
176
311
test_cloakcoin : $(TESTOBJS ) $(filter-out obj/init.o,$(OBJS:obj/%=obj/% ) )
177
- $(CXX ) $(CFLAGS ) -o $@ $(LIBPATHS ) $^ $(LIBS ) $(TESTLIBS )
312
+ $(LINK ) $(xCXXFLAGS ) -o $@ $(LIBPATHS ) $^ $(xLDFLAGS ) $(TESTLIBS )
178
313
179
314
clean :
180
315
-rm -f cloakcoind test_cloakcoin
181
- -rm -f obj/*.o
182
- -rm -f obj-test/*.o
183
- -rm -f obj/*.P
184
- -rm -f obj-test/*.P
185
- -rm -f obj/build.h
186
- -rm -f obj/tor/*.o
187
- -rm -f obj/tor/*.P
188
- -rm -f obj/enigma/*.o
189
- -rm -f obj/enigma/*.P
316
+ -rm -f obj/* .o
317
+ -rm -f obj-test/* .o
318
+ -rm -f obj/* .P
319
+ -rm -f obj-test/* .P
320
+ -rm -f obj/build.h
321
+ -rm -f obj/tor/* .o
322
+ -rm -f obj/tor/* .P
323
+ -rm -f obj/enigma/* .o
324
+ -rm -f obj/enigma/* .P
190
325
191
326
FORCE :
327
+
0 commit comments