Makefile (3075B)
1 # This Makefile has been placed under the public domain 2 -include .config.mk 3 4 # Defaults for an unconfigured tree. config.mk is included above, so whatever 5 # ./configure resolved wins over these; a plain `make` without ./configure still 6 # works and uses whichever cargo is on $PATH. No rustup required either way. 7 cargo ?= cargo 8 prefix ?= /usr/local 9 10 # Absolute DESTDIR or empty string if DESTDIR unset/empty 11 abs_destdir=$(abspath $(DESTDIR)) 12 13 bin_dir=$(abs_destdir)$(prefix)/bin 14 lib_dir=$(abs_destdir)$(prefix)/lib 15 share_dir=$(abs_destdir)$(prefix)/share 16 man_dir=$(share_dir)/man 17 18 all: build 19 20 .PHONY: build 21 build: 22 $(cargo) build --release --bin libeufin-bank --bin libeufin-nexus --bin libeufin-ebisync 23 24 .PHONY: install-files 25 install-files: 26 install -m 644 -D -t $(share_dir)/libeufin/config.d contrib/currencies.conf 27 install -m 644 -D -t $(share_dir)/libeufin/config.d contrib/bank.conf 28 install -m 644 -D -t $(share_dir)/libeufin/config.d contrib/nexus.conf 29 install -m 644 -D -t $(share_dir)/libeufin/sql database-versioning/versioning.sql 30 install -m 644 -D -t $(share_dir)/libeufin/sql database-versioning/libeufin-bank*.sql 31 install -m 644 -D -t $(share_dir)/libeufin/sql database-versioning/libeufin-nexus*.sql 32 install -m 644 -D -t $(share_dir)/libeufin/sql database-versioning/libeufin-conversion*.sql 33 install -m 644 -D -t $(share_dir)/libeufin-ebisync/config.d libeufin-ebisync/ebisync.conf 34 install -m 644 -D -t $(share_dir)/libeufin-ebisync/sql database-versioning/versioning.sql 35 install -m 644 -D -t $(share_dir)/libeufin-ebisync/sql database-versioning/ebisync*.sql 36 install -m 644 -D -t $(man_dir)/man1 doc/prebuilt/man/libeufin-bank.1 37 install -m 644 -D -t $(man_dir)/man5 doc/prebuilt/man/libeufin-bank.conf.5 38 install -m 644 -D -t $(man_dir)/man1 doc/prebuilt/man/libeufin-nexus.1 39 install -m 644 -D -t $(man_dir)/man5 doc/prebuilt/man/libeufin-nexus.conf.5 40 install -m 644 -D -t $(man_dir)/man1 doc/prebuilt/man/libeufin-ebisync.1 41 install -m 644 -D -t $(man_dir)/man5 doc/prebuilt/man/libeufin-ebisync.conf.5 42 install -D -t $(bin_dir) contrib/libeufin-dbconfig 43 install -D -t $(bin_dir) contrib/libeufin-ebisync-dbconfig 44 install -D -t $(bin_dir) contrib/libeufin-tan-*.sh 45 install -d $(share_dir)/libeufin/spa 46 cp contrib/spa/* $(share_dir)/libeufin/spa/ 47 install -d $(share_dir)/libeufin-ebisync/spa 48 cp libeufin-ebisync/spa/* $(share_dir)/libeufin-ebisync/spa/ 49 50 .PHONY: install 51 install: build install-files 52 install -D -t $(bin_dir) target/release/libeufin-bank 53 install -D -t $(bin_dir) target/release/libeufin-nexus 54 install -D -t $(bin_dir) target/release/libeufin-ebisync 55 56 .PHONY: check 57 check: install-files 58 $(cargo) test 59 $(cargo) clippy --all-targets 60 61 .PHONY: doc 62 doc: 63 $(cargo) doc 64 65 .PHONY: deb 66 deb: 67 dpkg-buildpackage -b -uc -us 68 69 .PHONY: ci 70 ci: 71 contrib/ci/run-all-jobs.sh 72 73 .PHONY: fmt 74 fmt: 75 rustfmt-unstable --apply 76 77 .PHONY: bank-bench-db 78 bank-bench-db: install-files 79 $(cargo) test -rp libeufin-bank bench_db -- --nocapture 80 81 .PHONY: nexus-bench-db 82 nexus-bench-db: install-files 83 $(cargo) test -rp libeufin-nexus bench_db -- --nocapture