Makefile 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  1. .POSIX:
  2. # Install prefix
  3. PREFIX = $(HOME)/.cargo
  4. # Cargo binary
  5. CARGO = cargo +nightly
  6. # Compile target for system binaries
  7. RUST_TARGET = $(shell rustc -Vv | grep '^host: ' | cut -d' ' -f2)
  8. # Uncomment when doing musl static builds
  9. #RUSTFLAGS = -C target-feature=+crt-static -C link-self-contained=yes
  10. # List of zkas circuits to compile, used for tests
  11. PROOFS_SRC = \
  12. $(shell find proof -type f -name '*.zk') \
  13. $(shell find bin/darkirc/proof -type f -name '*.zk')
  14. PROOFS_BIN = $(PROOFS_SRC:=.bin)
  15. # List of all binaries built
  16. BINS = \
  17. zkas \
  18. darkfid \
  19. darkfi-mmproxy \
  20. minerd \
  21. drk \
  22. darkirc \
  23. genev \
  24. genevd \
  25. lilith \
  26. taud \
  27. vanityaddr
  28. all: $(BINS)
  29. zkas:
  30. $(MAKE) -C bin/$@ \
  31. PREFIX="$(PREFIX)" \
  32. CARGO="$(CARGO)" \
  33. RUST_TARGET="$(RUST_TARGET)" \
  34. RUSTFLAGS="$(RUSTFLAGS)"
  35. $(PROOFS_BIN): zkas $(PROOFS_SRC)
  36. ./zkas $(basename $@) -o $@
  37. contracts: zkas
  38. $(MAKE) -C src/contract/money
  39. $(MAKE) -C src/contract/dao
  40. $(MAKE) -C src/contract/deployooor
  41. darkfid: contracts
  42. $(MAKE) -C bin/$@ \
  43. PREFIX="$(PREFIX)" \
  44. CARGO="$(CARGO)" \
  45. RUST_TARGET="$(RUST_TARGET)" \
  46. RUSTFLAGS="$(RUSTFLAGS)"
  47. minerd: contracts
  48. $(MAKE) -C bin/$@ \
  49. PREFIX="$(PREFIX)" \
  50. CARGO="$(CARGO)" \
  51. RUST_TARGET="$(RUST_TARGET)" \
  52. RUSTFLAGS="$(RUSTFLAGS)"
  53. darkfi-mmproxy:
  54. $(MAKE) -C bin/$@ \
  55. PREFIX="$(PREFIX)" \
  56. CARGO="$(CARGO)" \
  57. RUST_TARGET="$(RUST_TARGET)" \
  58. RUSTFLAGS="$(RUSTFLAGS)"
  59. drk: contracts
  60. $(MAKE) -C bin/$@ \
  61. PREFIX="$(PREFIX)" \
  62. CARGO="$(CARGO)" \
  63. RUST_TARGET="$(RUST_TARGET)" \
  64. RUSTFLAGS="$(RUSTFLAGS)"
  65. darkirc: zkas
  66. $(MAKE) -C bin/$@ \
  67. PREFIX="$(PREFIX)" \
  68. CARGO="$(CARGO)" \
  69. RUST_TARGET="$(RUST_TARGET)" \
  70. RUSTFLAGS="$(RUSTFLAGS)"
  71. genev:
  72. $(MAKE) -C bin/genev/genev-cli \
  73. PREFIX="$(PREFIX)" \
  74. CARGO="$(CARGO)" \
  75. RUST_TARGET="$(RUST_TARGET)" \
  76. RUSTFLAGS="$(RUSTFLAGS)"
  77. genevd:
  78. $(MAKE) -C bin/genev/genevd \
  79. PREFIX="$(PREFIX)" \
  80. CARGO="$(CARGO)" \
  81. RUST_TARGET="$(RUST_TARGET)" \
  82. RUSTFLAGS="$(RUSTFLAGS)"
  83. lilith:
  84. $(MAKE) -C bin/$@ \
  85. PREFIX="$(PREFIX)" \
  86. CARGO="$(CARGO)" \
  87. RUST_TARGET="$(RUST_TARGET)" \
  88. RUSTFLAGS="$(RUSTFLAGS)"
  89. taud:
  90. $(MAKE) -C bin/tau/$@ \
  91. PREFIX="$(PREFIX)" \
  92. CARGO="$(CARGO)" \
  93. RUST_TARGET="$(RUST_TARGET)" \
  94. RUSTFLAGS="$(RUSTFLAGS)"
  95. vanityaddr:
  96. $(MAKE) -C bin/$@ \
  97. PREFIX="$(PREFIX)" \
  98. CARGO="$(CARGO)" \
  99. RUST_TARGET="$(RUST_TARGET)" \
  100. RUSTFLAGS="$(RUSTFLAGS)"
  101. # -- END OF BINS --
  102. fmt:
  103. $(CARGO) fmt --all
  104. # cargo install cargo-hack
  105. check: contracts $(PROOFS_BIN)
  106. RUSTFLAGS="$(RUSTFLAGS)" $(CARGO) hack check --target=$(RUST_TARGET) \
  107. --release --feature-powerset --workspace
  108. clippy: contracts $(PROOFS_BIN)
  109. RUSTFLAGS="$(RUSTFLAGS)" $(CARGO) clippy --target=$(RUST_TARGET) \
  110. --release --all-features --workspace --tests
  111. fix: contracts $(PROOFS_BIN)
  112. RUSTFLAGS="$(RUSTFLAGS)" $(CARGO) clippy --target=$(RUST_TARGET) \
  113. --release --all-features --workspace --tests --fix --allow-dirty
  114. rustdoc: contracts $(PROOFS_BIN)
  115. RUSTFLAGS="$(RUSTFLAGS)" $(CARGO) doc --target=$(RUST_TARGET) \
  116. --release --all-features --workspace --document-private-items --no-deps
  117. test: contracts $(PROOFS_BIN)
  118. RUSTFLAGS="$(RUSTFLAGS)" $(CARGO) test --target=$(RUST_TARGET) \
  119. --release --all-features --workspace
  120. bench-zk-from-json: contracts $(PROOFS_BIN)
  121. rm -f src/contract/test-harness/*.bin
  122. RUSTFLAGS="$(RUSTFLAGS)" $(CARGO) bench --target=$(RUST_TARGET) \
  123. --bench zk_from_json --all-features --workspace \
  124. -- --save-baseline master
  125. bench: contracts $(PROOFS_BIN)
  126. rm -f src/contract/test-harness/*.bin
  127. RUSTFLAGS="$(RUSTFLAGS)" $(CARGO) bench --target=$(RUST_TARGET) \
  128. --all-features --workspace \
  129. -- --save-baseline master
  130. coverage: contracts $(PROOFS_BIN)
  131. RUSTFLAGS="$(RUSTFLAGS)" $(CARGO) llvm-cov --target=$(RUST_TARGET) \
  132. --release --all-features --workspace --html
  133. clean:
  134. $(MAKE) -C src/contract/money clean
  135. $(MAKE) -C src/contract/dao clean
  136. $(MAKE) -C src/contract/deployooor clean
  137. $(MAKE) -C bin/zkas clean
  138. $(MAKE) -C bin/darkfid clean
  139. $(MAKE) -C bin/darkfi-mmproxy clean
  140. $(MAKE) -C bin/minerd clean
  141. $(MAKE) -C bin/drk clean
  142. $(MAKE) -C bin/darkirc clean
  143. $(MAKE) -C bin/genev/genev-cli clean
  144. $(MAKE) -C bin/genev/genevd clean
  145. $(MAKE) -C bin/lilith clean
  146. $(MAKE) -C bin/tau/taud clean
  147. $(MAKE) -C bin/vanityaddr clean
  148. RUSTFLAGS="$(RUSTFLAGS)" $(CARGO) clean --target=$(RUST_TARGET) --release
  149. rm -f $(PROOFS_BIN)
  150. distclean: clean
  151. rm -rf target
  152. .PHONY: all $(BINS) fmt check clippy fix rustdoc test bench-zk-from-json bench coverage clean distclean