CC = gcc

CFLAGS = -I./include -g -Wall -Wextra -Wpedantic -g -O0
LDFLAGS = 

TARGET = matrix

SRC_DIR = src
OBJ_DIR = .obj

SRC = $(wildcard $(SRC_DIR)/*.c)
OBJ = $(patsubst $(SRC_DIR)/%.c,$(OBJ_DIR)/%.o,$(SRC))

all: $(TARGET)

$(TARGET): $(OBJ)
	$(CC) $(OBJ) -o $(TARGET) $(LDFLAGS)

# Компиляция .c -> .o в .obj/
$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c | $(OBJ_DIR)
	$(CC) $(CFLAGS) -c $< -o $@

# Создание папки для объектов
$(OBJ_DIR):
	mkdir -p $(OBJ_DIR)

run:
	./matrix < input > output

clean:
	rm -rf $(OBJ_DIR) $(TARGET) output

.cc: $(OBJ)
	mkdir -p $(OBJ_DIR)
	@for src in $(SRC); do \
		obj=$(OBJ_DIR)/$$(basename $$src .c).o; \
		bear -- $(CC) $(CFLAGS) -c $$src -o $$obj; \
	done	
	mv ./compile_commands.json .build/ || true
                                                     
