LIB_DIR=lib
SRC_DIR=src
BUILD_DIR=.build
BIN_DIR=bin

CC=gcc

build: key_gen crypt_rsa crypt_rsa_file

key_gen: $(BIN_DIR)/key_gen

crypt_rsa: $(BIN_DIR)/crypt_rsa

crypt_rsa_file: $(BIN_DIR)/crypt_rsa_file

clean:
	rm -r $(BUILD_DIR) $(BIN_DIR)

.PHONY: build key_gen crypt_rsa crypt_rsa_file clean

$(BIN_DIR)/key_gen: $(BUILD_DIR)/key_gen.o $(BUILD_DIR)/key_utils.o $(BUILD_DIR)/crypt_utils.o $(BUILD_DIR)/big.o
	mkdir -p $(BIN_DIR)
	$(CC) -o $@ $^

$(BIN_DIR)/crypt_rsa: $(BUILD_DIR)/crypt_rsa.o $(BUILD_DIR)/key_utils.o $(BUILD_DIR)/crypt_utils.o $(BUILD_DIR)/big.o
	mkdir -p $(BIN_DIR)
	$(CC) -o $@ $^

$(BIN_DIR)/crypt_rsa_file: $(BUILD_DIR)/crypt_rsa_file.o $(BUILD_DIR)/key_utils.o $(BUILD_DIR)/crypt_utils.o $(BUILD_DIR)/big.o
	mkdir -p $(BIN_DIR)
	$(CC) -o $@ $^

$(BUILD_DIR)/key_gen.o: $(SRC_DIR)/key_gen.c
	mkdir -p $(BUILD_DIR)
	$(CC) -c -o $@ $<

$(BUILD_DIR)/crypt_rsa.o: $(SRC_DIR)/crypt_rsa.c
	mkdir -p $(BUILD_DIR)
	$(CC) -c -o $@ $<

$(BUILD_DIR)/crypt_rsa_file.o: $(SRC_DIR)/crypt_rsa_file.c
	mkdir -p $(BUILD_DIR)
	$(CC) -c -o $@ $<

$(BUILD_DIR)/crypt_utils.o: $(SRC_DIR)/crypt_utils.c
	mkdir -p $(BUILD_DIR)
	$(CC) -c -o $@ $<

$(BUILD_DIR)/key_utils.o: $(SRC_DIR)/key_utils.c
	mkdir -p $(BUILD_DIR)
	$(CC) -c -o $@ $<

$(BUILD_DIR)/big.o: $(LIB_DIR)/big.c
	mkdir -p $(BUILD_DIR)
	$(CC) -c -o $@ $<
