|
| 1 | +# -*- mode: Makefile; -*- |
| 2 | +# Copyright (c) 2011 Bitcoin Developers |
| 3 | +# Distributed under the MIT/X11 software license, see the accompanying |
| 4 | +# file COPYING or http://www.opensource.org/licenses/mit-license.php. |
| 5 | + |
| 6 | +# Mac OS X makefile for bitcoin |
| 7 | +# Originally by Laszlo Hanyecz ([email protected]) |
| 8 | + |
| 9 | +CXX=llvm-g++ |
| 10 | +DEPSDIR=/opt/local |
| 11 | + |
| 12 | +INCLUDEPATHS= \ |
| 13 | + -I"$(CURDIR)" \ |
| 14 | + -I"$(CURDIR)"/obj \ |
| 15 | + -I"$(DEPSDIR)/include" \ |
| 16 | + -I"$(DEPSDIR)/include/db48" \ |
| 17 | + -I"$(DEPSDIR)/include/boost" |
| 18 | + |
| 19 | +LIBPATHS= \ |
| 20 | + -L"$(DEPSDIR)/lib" \ |
| 21 | + -L"$(DEPSDIR)/lib/db48" |
| 22 | + |
| 23 | +USE_UPNP:=1 |
| 24 | +USE_IPV6:=1 |
| 25 | + |
| 26 | +LIBS= -dead_strip |
| 27 | + |
| 28 | +TESTDEFS = -DTEST_DATA_DIR=$(abspath test/data) |
| 29 | + |
| 30 | +ifdef STATIC |
| 31 | +# Build STATIC if you are redistributing the bitcoind binary |
| 32 | +TESTLIBS += \ |
| 33 | + $(DEPSDIR)/lib/libboost_unit_test_framework-mt.a |
| 34 | +LIBS += \ |
| 35 | + $(DEPSDIR)/lib/db48/libdb_cxx.a \ |
| 36 | + $(DEPSDIR)/lib/libboost_system-mt.a \ |
| 37 | + $(DEPSDIR)/lib/libboost_filesystem-mt.a \ |
| 38 | + $(DEPSDIR)/lib/libboost_program_options-mt.a \ |
| 39 | + $(DEPSDIR)/lib/libboost_thread-mt.a \ |
| 40 | + $(DEPSDIR)/lib/libboost_chrono-mt.a \ |
| 41 | + $(DEPSDIR)/lib/libssl.a \ |
| 42 | + $(DEPSDIR)/lib/libcrypto.a \ |
| 43 | + -lz |
| 44 | +else |
| 45 | +TESTLIBS += \ |
| 46 | + -lboost_unit_test_framework |
| 47 | +LIBS += \ |
| 48 | + -ldb_cxx \ |
| 49 | + -lboost_system-mt \ |
| 50 | + -lboost_filesystem-mt \ |
| 51 | + -lboost_program_options-mt \ |
| 52 | + -lboost_thread-mt \ |
| 53 | + -lboost_chrono-mt \ |
| 54 | + -lssl \ |
| 55 | + -lcrypto \ |
| 56 | + -lz |
| 57 | +TESTDEFS += -DBOOST_TEST_DYN_LINK |
| 58 | +endif |
| 59 | + |
| 60 | +DEFS=-DMAC_OSX -DMSG_NOSIGNAL=0 -DBOOST_SPIRIT_THREADSAFE |
| 61 | + |
| 62 | +ifdef RELEASE |
| 63 | +# Compile for maximum compatibility and smallest size. |
| 64 | +# This requires that dependencies are compiled |
| 65 | +# the same way. |
| 66 | +CFLAGS = -mmacosx-version-min=10.5 -arch i386 -O3 |
| 67 | +else |
| 68 | +DEBUGFLAGS = -g |
| 69 | +endif |
| 70 | + |
| 71 | +# osx 10.9 has changed the stdlib default to libc++. To prevent some link error, you may need to use libstdc++ |
| 72 | +LFLAGS += -stdlib=libc++ |
| 73 | + |
| 74 | +CFLAGS += -stdlib=libc++ |
| 75 | + |
| 76 | +# ppc doesn't work because we don't support big-endian |
| 77 | +CFLAGS += -Wall -Wextra -Wformat -Wformat-security -Wno-unused-parameter \ |
| 78 | + $(DEBUGFLAGS) $(DEFS) $(INCLUDEPATHS) |
| 79 | + |
| 80 | +OBJS= \ |
| 81 | + leveldb/libleveldb.a \ |
| 82 | + obj/auxpow.o \ |
| 83 | + obj/alert.o \ |
| 84 | + obj/version.o \ |
| 85 | + obj/checkpoints.o \ |
| 86 | + obj/netbase.o \ |
| 87 | + obj/addrman.o \ |
| 88 | + obj/crypter.o \ |
| 89 | + obj/key.o \ |
| 90 | + obj/db.o \ |
| 91 | + obj/init.o \ |
| 92 | + obj/keystore.o \ |
| 93 | + obj/main.o \ |
| 94 | + obj/net.o \ |
| 95 | + obj/protocol.o \ |
| 96 | + obj/bitcoinrpc.o \ |
| 97 | + obj/rpcdump.o \ |
| 98 | + obj/rpcnet.o \ |
| 99 | + obj/rpcmining.o \ |
| 100 | + obj/rpcwallet.o \ |
| 101 | + obj/rpcblockchain.o \ |
| 102 | + obj/rpcrawtransaction.o \ |
| 103 | + obj/script.o \ |
| 104 | + obj/scrypt.o \ |
| 105 | + obj/sync.o \ |
| 106 | + obj/util.o \ |
| 107 | + obj/wallet.o \ |
| 108 | + obj/walletdb.o \ |
| 109 | + obj/hash.o \ |
| 110 | + obj/bloom.o \ |
| 111 | + obj/noui.o \ |
| 112 | + obj/leveldb.o \ |
| 113 | + obj/txdb.o \ |
| 114 | + obj/alias.o \ |
| 115 | + obj/offer.o \ |
| 116 | + obj/cert.o |
| 117 | + |
| 118 | +ifdef USE_SSE2 |
| 119 | +DEFS += -DUSE_SSE2 |
| 120 | +OBJS_SSE2= obj/scrypt-sse2.o |
| 121 | +OBJS += $(OBJS_SSE2) |
| 122 | +endif |
| 123 | + |
| 124 | +ifndef USE_UPNP |
| 125 | + override USE_UPNP = - |
| 126 | +endif |
| 127 | +ifneq (${USE_UPNP}, -) |
| 128 | + DEFS += -DUSE_UPNP=$(USE_UPNP) |
| 129 | +ifdef STATIC |
| 130 | + LIBS += $(DEPSDIR)/lib/libminiupnpc.a |
| 131 | +else |
| 132 | + LIBS += -lminiupnpc |
| 133 | +endif |
| 134 | +endif |
| 135 | + |
| 136 | +ifneq (${USE_IPV6}, -) |
| 137 | + DEFS += -DUSE_IPV6=$(USE_IPV6) |
| 138 | +endif |
| 139 | + |
| 140 | +all: syscoind |
| 141 | + |
| 142 | +test check: test_syscoin FORCE |
| 143 | + ./test_syscoin |
| 144 | + |
| 145 | +# |
| 146 | +# LevelDB support |
| 147 | +# |
| 148 | +LIBS += $(CURDIR)/leveldb/libleveldb.a $(CURDIR)/leveldb/libmemenv.a |
| 149 | +DEFS += $(addprefix -I,$(CURDIR)/leveldb/include) |
| 150 | +DEFS += $(addprefix -I,$(CURDIR)/leveldb/helpers) |
| 151 | +leveldb/libleveldb.a: |
| 152 | + @echo "Building LevelDB ..." && cd leveldb && $(MAKE) CC=$(CC) CXX=$(CXX) OPT="$(CFLAGS)" libleveldb.a libmemenv.a && cd .. |
| 153 | + |
| 154 | +# auto-generated dependencies: |
| 155 | +-include obj/*.P |
| 156 | +-include obj-test/*.P |
| 157 | + |
| 158 | +obj/build.h: FORCE |
| 159 | + /bin/sh ../share/genbuild.sh obj/build.h |
| 160 | +version.cpp: obj/build.h |
| 161 | +DEFS += -DHAVE_BUILD_INFO |
| 162 | + |
| 163 | +obj/%-sse2.o: %-sse2.cpp |
| 164 | + $(CXX) -c $(CFLAGS) -msse2 -MMD -MF $(@:%.o=%.d) -o $@ $< |
| 165 | + @cp $(@:%.o=%.d) $(@:%.o=%.P); \ |
| 166 | + sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ |
| 167 | + -e '/^$$/ d' -e 's/$$/ :/' < $(@:%.o=%.d) >> $(@:%.o=%.P); \ |
| 168 | + rm -f $(@:%.o=%.d) |
| 169 | + |
| 170 | +obj/%.o: %.cpp |
| 171 | + $(CXX) -c $(CFLAGS) -MMD -MF $(@:%.o=%.d) -o $@ $< |
| 172 | + @cp $(@:%.o=%.d) $(@:%.o=%.P); \ |
| 173 | + sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ |
| 174 | + -e '/^$$/ d' -e 's/$$/ :/' < $(@:%.o=%.d) >> $(@:%.o=%.P); \ |
| 175 | + rm -f $(@:%.o=%.d) |
| 176 | + |
| 177 | +syscoind: $(OBJS:obj/%=obj/%) |
| 178 | + $(CXX) $(CFLAGS) -o $@ $(LIBPATHS) $^ $(LIBS) |
| 179 | + |
| 180 | +TESTOBJS := $(patsubst test/%.cpp,obj-test/%.o,$(wildcard test/*.cpp)) |
| 181 | + |
| 182 | +obj-test/%.o: test/%.cpp |
| 183 | + $(CXX) -c $(TESTDEFS) $(CFLAGS) -MMD -MF $(@:%.o=%.d) -o $@ $< |
| 184 | + @cp $(@:%.o=%.d) $(@:%.o=%.P); \ |
| 185 | + sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ |
| 186 | + -e '/^$$/ d' -e 's/$$/ :/' < $(@:%.o=%.d) >> $(@:%.o=%.P); \ |
| 187 | + rm -f $(@:%.o=%.d) |
| 188 | + |
| 189 | +test_syscoin: $(TESTOBJS) $(filter-out obj/init.o,$(OBJS:obj/%=obj/%)) |
| 190 | + $(CXX) $(CFLAGS) -o $@ $(LIBPATHS) $^ $(LIBS) $(TESTLIBS) |
| 191 | + |
| 192 | +clean: |
| 193 | + -rm -f syscoind test_syscoin |
| 194 | + -rm -f obj/*.o |
| 195 | + -rm -f obj-test/*.o |
| 196 | + -rm -f obj/*.P |
| 197 | + -rm -f obj-test/*.P |
| 198 | + -rm -f obj/build.h |
| 199 | + -cd leveldb && $(MAKE) clean || true |
| 200 | + |
| 201 | +FORCE: |
0 commit comments