CODESIGN := codesign
CARGO := cargo +nightly
TARGET := hyperpom
TARGET_DEBUG := target/debug/$(TARGET)
TARGET_RELEASE := target/release/$(TARGET)
TMP_DIR := ./tmp
CORPUS_DIR := "$(TMP_DIR)/corpus"
WORK_DIR := "$(TMP_DIR)/work"
KEYCHAIN := $(CERT_KEYCHAIN)
build-debug:
$(CARGO) fmt
$(CARGO) build
$(CODESIGN) --entitlements entitlements.xml -f -s "$(KEYCHAIN)" "$(TARGET_DEBUG)"
build-release:
$(CARGO) fmt
$(CARGO) build --release
$(CODESIGN) --entitlements entitlements.xml -f -s "$(KEYCHAIN)" "$(TARGET_RELEASE)"
build-test:
$(CARGO) test --no-run
$(CODESIGN) --entitlements entitlements.xml -f -s "$(KEYCHAIN)" \
$(shell $(CARGO) test --no-run --message-format=json | \
jq -r "select(.profile.test == true) | .filenames[]")
build-test-release:
$(CARGO) test --no-run --release
$(CODESIGN) --entitlements entitlements.xml -f -s "$(KEYCHAIN)" \
$(shell $(CARGO) test --no-run --release --message-format=json | \
jq -r "select(.profile.test == true) | .filenames[]")
tmp-dirs:
mkdir -p $(CORPUS_DIR)
mkdir -p $(WORK_DIR)
test: clean-dirs tmp-dirs build-test
$(CARGO) test $(filter-out $@,$(MAKECMDGOALS)) -- --nocapture --test-threads=1
tests: clean-dirs tmp-dirs build-test
$(CARGO) test --tests -- --nocapture --test-threads=1
tests-release: build-test-release
$(CARGO) test --release --tests -- --nocapture --test-threads=1
tests-threads: build-test
$(CARGO) test --tests -- --nocapture
clean-dirs:
rm -rf $(CORPUS_DIR)
rm -rf $(WORK_DIR)
clean: clean-dirs clean-target
$(CARGO) clean