| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- .POSIX:
- # Install prefix
- PREFIX = $(HOME)/.cargo
- # Cargo binary
- CARGO = cargo
- # Compile target
- RUST_TARGET = $(shell rustc -Vv | grep '^host: ' | cut -d' ' -f2)
- # Uncomment when doing musl static builds
- #RUSTFLAGS = -C target-feature=+crt-static -C link-self-contained=yes
- # zkas compiler binary
- ZKAS = ../../zkas
- # zkas circuits
- PROOFS_SRC = $(shell find ../../src/event_graph -type f -name '*.zk')
- PROOFS_BIN = $(PROOFS_SRC:=.bin)
- SRC = \
- Cargo.toml \
- ../../Cargo.toml \
- $(shell find src -type f -name '*.rs') \
- $(shell find ../../src -type f -name '*.rs') \
- BIN = $(shell grep '^name = ' Cargo.toml | sed 1q | cut -d' ' -f3 | tr -d '"')
- all: $(BIN)
- $(PROOFS_BIN): $(ZKAS) $(PROOFS_SRC)
- $(ZKAS) $(basename $@) -o $@
- $(BIN): $(PROOFS_BIN) $(SRC)
- RUSTFLAGS="$(RUSTFLAGS)" $(CARGO) build --target=$(RUST_TARGET) --release --package $@ --bin $@
- cp -f ../../target/$(RUST_TARGET)/release/$@ $@
- cp -f ../../target/$(RUST_TARGET)/release/$@ ../../$@
- # To build for android, install the Android NDK (Android Studio)
- # and then install cargo-ndk: `cargo install cargo-ndk`.
- # After that, add new android rust toolchains:
- # - rustup target add aarch64-linux-android
- # - rustup target add armv7-linux-androideabi
- # - rustup target add x86_64-linux-android
- # - rustup target add i686-linux-android
- $(BIN).android64:
- RUSTFLAGS="$(RUSTFLAGS)" $(CARGO) ndk -t arm64-v8a -o ./jniLibs build --release --package $(BIN)
- cp -f ../../target/aarch64-linux-android/release/$(BIN) $@
- # UNTESTED:
- #$(BIN).android32:
- # RUSTFLAGS="$(RUSTFLAGS)" $(CARGO) ndk -t armeabi-v7a -o ./jniLibs build --release --package $(BIN)
- # cp -f ../../target/armv7-linux-androideabi/release/$(BIN) $(BIN).$@
- # This target doesn't require installing any packages from Android Studio
- podman-android:
- # s/podman/docker/ if you are using docker instead
- podman build -t test:latest . --file android.Dockerfile
- # Use this command to get an interactive terminal inside docker:
- #docker run -v $(shell pwd)/../../:/root/src -it test:latest /bin/bash
- podman run --rm -v $(shell pwd)/../../:/root/src -t test:latest make _aarch64-android
- cp -f ../../target/aarch64-linux-android/release/darkirc darkirc.aarch64-android
- # Invoked inside docker by the command above
- # We need to mount this directory as a volume using -v so docker can access it
- _aarch64-android:
- cargo build --release --target aarch64-linux-android --package darkirc
- clippy: all
- RUSTFLAGS="$(RUSTFLAGS)" $(CARGO) clippy --target=$(RUST_TARGET) --release --package $(BIN) --tests
- clean:
- RUSTFLAGS="$(RUSTFLAGS)" $(CARGO) clean --target=$(RUST_TARGET) --release --package $(BIN)
- rm -f $(BIN) ../../$(BIN) $(BIN).android64 $(BIN).android32
- install: all
- mkdir -p $(DESTDIR)$(PREFIX)/bin
- cp -f $(BIN) $(DESTDIR)$(PREFIX)/bin
- chmod 755 $(DESTDIR)$(PREFIX)/bin/$(BIN)
- uninstall:
- rm -f $(DESTDIR)$(PREFIX)/bin/$(BIN)
- .PHONY: all clean install uninstall
|