CC := gcc # CC := tcc PROJECT_NAME := cube BUILD_DIR := ./build SRC_DIR := ./src GEN_DIR := ./generated SRCS := $(shell find $(SRC_DIR) -name "*.c") OBJS := $(BUILD_DIR)/xdg-shell.c.o $(SRCS:%=$(BUILD_DIR)/%.o) RED := \033[0;31m GREEN := \033[0;32m NC := \033[0m # INC_DIRS := $(shell find $(SRC_DIRS) -type d) INC_DIRS := $(SRC_DIR) $(GEN_DIR) INC_FLAGS := $(addprefix -I,$(INC_DIRS)) CFLAGS := $(INC_FLAGS) -Wall -Wextra -lwayland-client -std=gnu23 -Ofast # CFLAGS := $(INC_FLAGS) -Wall -Wextra -lwayland-client -std=gnu23 -Oz # CFLAGS := $(INC_FLAGS) -Wall -Wextra -lwayland-client -std=gnu23 -g EXEC_FILE := $(BUILD_DIR)/$(PROJECT_NAME) all: $(EXEC_FILE) $(EXEC_FILE): $(shell find $(SRC_DIR) -name "*.c") $(OBJS) $(CC) $(CFLAGS) $(OBJS) -o $@ $(LDFLAGS) $(BUILD_DIR)/%.c.o: %.c mkdir -p $(dir $@) $(CC) $(CFLAGS) -c $< -o $@ $(BUILD_DIR)/xdg-shell.c.o: mkdir -p $(GEN_DIR) mkdir -p $(BUILD_DIR) wayland-scanner client-header /usr/share/wayland-protocols/stable/xdg-shell/xdg-shell.xml $(GEN_DIR)/xdg-shell.h wayland-scanner public-code /usr/share/wayland-protocols/stable/xdg-shell/xdg-shell.xml $(GEN_DIR)/xdg-shell.c gcc -c $(GEN_DIR)/xdg-shell.c -o $(BUILD_DIR)/xdg-shell.c.o $(CFLAGS) lsp-files: clean bear -- make all .PHONY: clean clean: rm -rf $(BUILD_DIR) rm -rf $(GEN_DIR) run: $(EXEC_FILE) $(EXEC_FILE) $(args) val-run: $(EXEC_FILE) valgrind --log-file="val.log" --leak-check=full --track-origins=yes --show-leak-kinds=all -s $(EXEC_FILE) $(args) gdb-run: $(EXEC_FILE) gdb $(EXEC_FILE) $(args) # $@ = left hand of : # $< = right hand of : first one of them # $^ = right hand of : all