SOURCE_FILES := $(shell find src -name "*.java")
TEST_FILES := $(shell find test -name "*.java")
BUILD_MARKER := bin/built

LIBS := lib/eddsa-0.3.0.jar:lib/sqlite-jdbc-3.23.1.jar
BUILD_DEST := bin/java

.PHONY: all test tests refit clean
.DELETE_ON_ERROR:

all: refit

refit: $(BUILD_MARKER)

bin/built: $(SOURCE_FILES)
	mkdir -p $(BUILD_DEST)
	touch $(BUILD_MARKER)
	javac -d $(BUILD_DEST) -cp $(LIBS) $^

keys: refit
	mkdir -p scripts/keys
	java -cp $(BUILD_DEST):$(LIBS) refit.message.REFITKeyManager

testreplica: refit
	java -cp $(BUILD_DEST):$(LIBS) refit.client.REFITLocalSystem 20

test: $(BUILD_MARKER) tests

tests: $(TEST_FILES) | $(BUILD_MARKER)
	mkdir -p bin/tests
	javac -d bin/tests -cp $(BUILD_DEST):$(LIBS):lib/junit-4.13.jar $^

# basic config sanity check
check-config: refit
	java -cp $(BUILD_DEST):$(LIBS) refit.config.REFITConfigTest

clean:
	-rm -rf bin || true