makefile.osx 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  1. # ECOin - Copyright (c) - 2014/2022 - GPLv3 - epsylon@riseup.net (https://03c8.net)
  2. CXX=llvm-g++
  3. DEPSDIR=/opt/local
  4. INCLUDEPATHS= \
  5. -I"$(CURDIR)" \
  6. -I"$(CURDIR)"/obj \
  7. -I"$(DEPSDIR)/include" \
  8. -I"$(DEPSDIR)/include/db48"
  9. LIBPATHS= \
  10. -L"$(DEPSDIR)/lib" \
  11. -L"$(DEPSDIR)/lib/db48"
  12. USE_UPNP:=1
  13. USE_IPV6:=1
  14. LIBS= -dead_strip
  15. ifdef STATIC
  16. # Build STATIC if you are redistributing the ecoind binary
  17. LIBS += \
  18. $(DEPSDIR)/lib/db48/libdb_cxx-4.8.a \
  19. $(DEPSDIR)/lib/libboost_system-mt.a \
  20. $(DEPSDIR)/lib/libboost_filesystem-mt.a \
  21. $(DEPSDIR)/lib/libboost_program_options-mt.a \
  22. $(DEPSDIR)/lib/libboost_thread-mt.a \
  23. $(DEPSDIR)/lib/libssl.a \
  24. $(DEPSDIR)/lib/libcrypto.a \
  25. -lz
  26. else
  27. LIBS += \
  28. -ldb_cxx-4.8 \
  29. -lboost_system-mt \
  30. -lboost_filesystem-mt \
  31. -lboost_program_options-mt \
  32. -lboost_thread-mt \
  33. -lssl \
  34. -lcrypto \
  35. -lz
  36. endif
  37. DEFS=-DMAC_OSX -DMSG_NOSIGNAL=0 -DBOOST_SPIRIT_THREADSAFE
  38. ifdef RELEASE
  39. # Compile for maximum compatibility and smallest size.
  40. # This requires that dependencies are compiled
  41. # the same way.
  42. CFLAGS = -mmacosx-version-min=10.5 -arch x86_64 -O3 -msse2
  43. else
  44. CFLAGS = -g -msse2
  45. endif
  46. # ppc doesn't work because we don't support big-endian
  47. CFLAGS += -Wall -Wextra -Wformat -Wno-ignored-qualifiers -Wformat-security -Wno-unused-parameter \
  48. $(DEBUGFLAGS) $(DEFS) $(INCLUDEPATHS)
  49. OBJS= \
  50. obj/alert.o \
  51. obj/version.o \
  52. obj/checkpoints.o \
  53. obj/netbase.o \
  54. obj/addrman.o \
  55. obj/crypter.o \
  56. obj/key.o \
  57. obj/db.o \
  58. obj/init.o \
  59. obj/irc.o \
  60. obj/keystore.o \
  61. obj/main.o \
  62. obj/miner.o \
  63. obj/net.o \
  64. obj/protocol.o \
  65. obj/ecoinrpc.o \
  66. obj/rpcdump.o \
  67. obj/rpcnet.o \
  68. obj/rpcmining.o \
  69. obj/rpcwallet.o \
  70. obj/rpcblockchain.o \
  71. obj/rpcrawtransaction.o \
  72. obj/script.o \
  73. obj/sync.o \
  74. obj/util.o \
  75. obj/wallet.o \
  76. obj/walletdb.o \
  77. obj/noui.o \
  78. obj/pbkdf2.o \
  79. obj/kernel.o \
  80. obj/scrypt.o \
  81. obj/scrypt-x86.o \
  82. obj/scrypt-x86_64.o \
  83. obj/zerocoin/Accumulator.o \
  84. obj/zerocoin/AccumulatorProofOfKnowledge.o \
  85. obj/zerocoin/Coin.o \
  86. obj/zerocoin/CoinSpend.o \
  87. obj/zerocoin/Commitment.o \
  88. obj/zerocoin/ParamGeneration.o \
  89. obj/zerocoin/Params.o \
  90. obj/zerocoin/SerialNumberSignatureOfKnowledge.o \
  91. obj/zerocoin/SpendMetaData.o \
  92. obj/zerocoin/ZeroTest.o
  93. ifndef USE_UPNP
  94. override USE_UPNP = -
  95. endif
  96. ifneq (${USE_UPNP}, -)
  97. DEFS += -DUSE_UPNP=$(USE_UPNP)
  98. ifdef STATIC
  99. LIBS += $(DEPSDIR)/lib/libminiupnpc.a
  100. else
  101. LIBS += -lminiupnpc
  102. endif
  103. endif
  104. ifneq (${USE_IPV6}, -)
  105. DEFS += -DUSE_IPV6=$(USE_IPV6)
  106. endif
  107. all: ecoind
  108. LIBS += $(CURDIR)/leveldb/libleveldb.a $(CURDIR)/leveldb/libmemenv.a
  109. DEFS += $(addprefix -I,$(CURDIR)/leveldb/include)
  110. DEFS += $(addprefix -I,$(CURDIR)/leveldb/helpers)
  111. OBJS += obj/txdb-leveldb.o
  112. leveldb/libleveldb.a:
  113. @echo "Building LevelDB ..."; cd leveldb; make; cd ..
  114. obj/txdb-leveldb.o: leveldb/libleveldb.a
  115. # auto-generated dependencies:
  116. -include obj/*.P
  117. obj/build.h: FORCE
  118. /bin/sh ../share/genbuild.sh obj/build.h
  119. version.cpp: obj/build.h
  120. DEFS += -DHAVE_BUILD_INFO
  121. obj/%.o: %.cpp
  122. $(CXX) -c $(CFLAGS) -MMD -MF $(@:%.o=%.d) -o $@ $<
  123. @cp $(@:%.o=%.d) $(@:%.o=%.P); \
  124. sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \
  125. -e '/^$$/ d' -e 's/$$/ :/' < $(@:%.o=%.d) >> $(@:%.o=%.P); \
  126. rm -f $(@:%.o=%.d)
  127. obj/zerocoin/%.o: zerocoin/%.cpp
  128. $(CXX) -c $(xCXXFLAGS) -MMD -MF $(@:%.o=%.d) -o $@ $<
  129. @cp $(@:%.o=%.d) $(@:%.o=%.P); \
  130. sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \
  131. -e '/^$$/ d' -e 's/$$/ :/' < $(@:%.o=%.d) >> $(@:%.o=%.P); \
  132. rm -f $(@:%.o=%.d)
  133. obj/scrypt-x86.o: scrypt-x86.S
  134. $(CXX) -c $(xCXXFLAGS) -MMD -o $@ $<
  135. obj/scrypt-x86_64.o: scrypt-x86_64.S
  136. $(CXX) -c $(xCXXFLAGS) -MMD -o $@ $<
  137. ecoind: $(OBJS:obj/%=obj/%)
  138. $(CXX) $(CFLAGS) -o $@ $(LIBPATHS) $^ $(LIBS)
  139. clean:
  140. -rm -f ecoind
  141. -rm -f obj/*.o
  142. -rm -f obj/zerocoin/*.o
  143. -rm -f obj/*.P
  144. -rm -f obj/zerocoin/*.P
  145. -rm -f obj/build.h
  146. FORCE: