diff options
| author | Zuhaitz Méndez Fernández de Aránguiz <zuhaitz@debian> | 2026-01-11 15:15:05 +0000 |
|---|---|---|
| committer | Zuhaitz Méndez Fernández de Aránguiz <zuhaitz@debian> | 2026-01-11 15:15:05 +0000 |
| commit | a524ba47371503e0a42d395d015dcd83c15c0199 (patch) | |
| tree | 35d4d7e327002f66776aeaa3b00b3e44792bae19 /Makefile | |
| parent | 55247a3f12a9eee7ba3fd7ca6d8fcea7a82c20f3 (diff) | |
Added Makefile and script for tests.
Diffstat (limited to 'Makefile')
| -rw-r--r-- | Makefile | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..a4dfccd --- /dev/null +++ b/Makefile @@ -0,0 +1,81 @@ + +CC = gcc +CFLAGS = -Wall -Wextra -g -I./src -I./src/ast -I./src/parser -I./src/codegen -I./plugins -I./src/zen -I./src/utils -I./src/lexer -I./src/analysis -I./src/lsp +TARGET = zc +LIBS = -lm -lpthread -ldl + +SRCS = src/main.c \ + src/parser/parser_core.c \ + src/parser/parser_expr.c \ + src/parser/parser_stmt.c \ + src/parser/parser_type.c \ + src/parser/parser_utils.c \ + src/ast/ast.c \ + src/codegen/codegen.c \ + src/codegen/codegen_decl.c \ + src/codegen/codegen_main.c \ + src/codegen/codegen_utils.c \ + src/utils/utils.c \ + src/lexer/token.c \ + src/analysis/typecheck.c \ + src/lsp/json_rpc.c \ + src/lsp/lsp_main.c \ + src/lsp/lsp_analysis.c \ + src/lsp/lsp_index.c \ + src/zen/zen_facts.c \ + src/repl/repl.c \ + src/plugins/plugin_manager.c \ + plugins/befunge.c \ + plugins/brainfuck.c \ + plugins/forth.c \ + plugins/lisp.c \ + plugins/regex.c \ + plugins/sql.c + +OBJ_DIR = obj +OBJS = $(patsubst %.c, $(OBJ_DIR)/%.o, $(SRCS)) + +# Installation paths +PREFIX = /usr/local +BINDIR = $(PREFIX)/bin +MANDIR = $(PREFIX)/share/man/man1 + +# Default target +all: $(TARGET) + +# Link +$(TARGET): $(OBJS) + @mkdir -p $(dir $@) + $(CC) $(CFLAGS) -o $@ $^ $(LIBS) + @echo "=> Build complete: $(TARGET)" + +# Compile +$(OBJ_DIR)/%.o: %.c + @mkdir -p $(dir $@) + $(CC) $(CFLAGS) -c $< -o $@ + +# Install +install: $(TARGET) + install -d $(BINDIR) + install -m 755 $(TARGET) $(BINDIR)/$(TARGET) + install -d $(MANDIR) + # Install man page if it exists + test -f man/zc.1 && install -m 644 man/zc.1 $(MANDIR)/zc.1 || true + @echo "=> Installed to $(BINDIR)/$(TARGET)" + +# Uninstall +uninstall: + rm -f $(BINDIR)/$(TARGET) + rm -f $(MANDIR)/zc.1 + @echo "=> Uninstalled from $(BINDIR)/$(TARGET)" + +# Clean +clean: + rm -rf $(OBJ_DIR) $(TARGET) out.c + @echo "=> Clean complete!" + +# Test +test: $(TARGET) + ./tests/run_tests.sh + +.PHONY: all clean install uninstall test |
