summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
authorA404M <ahmadmahmoudiprogrammer@gmail.com>2025-01-18 20:42:54 +0330
committerA404M <ahmadmahmoudiprogrammer@gmail.com>2025-01-18 20:49:30 +0330
commit43392fc66ab207e53a6924a2edbcd7ca0acecea8 (patch)
tree5a064c4e144035d1a07f31f767417b9e44b2ebbf /Makefile
initial commit
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile59
1 files changed, 59 insertions, 0 deletions
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..0dc0bf7
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,59 @@
+CC := gcc
+# CC := tcc
+
+BUILD_DIR := ./build
+SRC_DIR := ./src
+
+SRCS := $(shell find $(SRC_DIR) -name "*.c" -type f)
+HEADERS := $(shell find $(SRC_DIR) -name "*.h" -type f)
+OBJS := $(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)
+INC_FLAGS := $(addprefix -I,$(INC_DIRS))
+
+CFLAGS := $(INC_FLAGS) -Wall -Wextra -std=gnu23 -O3
+# CFLAGS := $(INC_FLAGS) -Wall -Wextra -std=gnu23 -Oz
+# CFLAGS := $(INC_FLAGS) -Wall -Wextra -std=gnu23 -g
+
+EXEC_FILE := $(BUILD_DIR)/felan
+
+all: $(EXEC_FILE)
+
+$(EXEC_FILE): $(OBJS)
+ $(CC) $(CFLAGS) $(OBJS) -o $@ $(LDFLAGS)
+
+$(BUILD_DIR)/%.c.o: %.c $(HEADERS) Makefile
+ mkdir -p $(dir $@)
+ $(CC) $(CFLAGS) -c $< -o $@
+
+lsp-files: clean
+ bear -- make all
+
+.PHONY: clean
+clean:
+ rm -rf $(BUILD_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)
+
+.PHONY: test
+test: $(EXEC_FILE)
+ $(EXEC_FILE) test/main.felan
+
+val-test: $(EXEC_FILE)
+ valgrind --log-file="val.log" --leak-check=full --track-origins=yes --show-leak-kinds=all -s $(EXEC_FILE) test/main.felan
+
+# $@ = left hand of :
+# $< = right hand of : first one of them
+# $^ = right hand of : all