TARGET=cryptops-api

CFLAGS=-O0 -g -Wall -D_GNU_SOURCE -Iincludes -Isrc
LFLAGS=-L./libraries -lcryptsetup -lc -lulfius -lyder -lorcania -ljansson
CC=gcc
LINKER=gcc

SRCDIR   = src
OBJDIR   = obj
BINDIR   = bin

DEPS=$(wildcard $(SRCDIR)/*/*.c) $(wildcard $(SRCDIR)/*.c)

SOURCES  := $(SRCDIR)/$(TARGET).c
OBJECTS  := $(SOURCES:$(SRCDIR)/%.c=$(OBJDIR)/%.o)

$(BINDIR)/$(TARGET): $(BINDIR)
$(BINDIR):
	mkdir -p $(BINDIR)

# Make binary linking .o files and libraries
$(BINDIR)/$(TARGET): $(OBJECTS)
	@$(LINKER) $(OBJECTS) $(LFLAGS) -o $@
	@echo "Linking complete."

# Compile an object for a c file in SRCDIR
$(OBJDIR)/%.o: $(SRCDIR)/%.c $(DEPS)
	mkdir -p $(OBJDIR)
	@$(CC) $(CFLAGS) -c $< -o $@
	@echo "Compiled "$<" successfully."

# Remove intermediate files
.PHONY: clean
clean:
	@rm -rf $(OBJDIR)
	@echo "Cleanup complete."

# Remove all compiled files
.PHONY: remove
remove: clean
	@rm -rf $(BINDIR)
	@echo "Executable removed."