summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile62
1 files changed, 62 insertions, 0 deletions
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..3136504
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,62 @@
+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