CC = gcc
CFLAGS = -g -MD -MP

TARGET = build/storectl

SRC := $(wildcard src/*.c)
OBJ := $(patsubst src/%.c,build/%.o,$(SRC))
INC = ./include ../shared/include

LIBS = readline 

HDR_FLG = $(foreach D, $(INC), -I$(D))
DEP_FILES = $(wildcard build/*.d)
LIB_FLG = $(foreach D, $(LIBS), -l$(D))

all: $(TARGET)

# link step
$(TARGET): $(OBJ)
	@mkdir -p build
	$(CC) $(CFLAGS) $(LIB_FLG) -o $@ $^

# compile step
build/%.o: src/%.c
	@mkdir -p build
	$(CC) $(CFLAGS) $(HDR_FLG)  -c $< -o $@

clean:
	rm -rf build

re: clean all

run: all
	@./$(TARGET)

cloc:
	@cloc --exclude-ext=d,json --fullpath --not-match-d='(.*)deps(.*)' .

monitor: 
	@watch -t -n 0.1 "ls /dev/mqueue/ /tmp | grep -E 'store|:'"

-include $(DEP_FILES)
.PHONY: all clean re run cloc monitor
