ifndef VERBOSE .SILENT: endif CC = gcc CFLAGS = -Wall -Wextra -ggdb BUILD_DIR = _build .DEFAULT_TARGET = interpreter interpreter: src/main.c $(BUILD_DIR)/run.o $(CC) $(CFLAGS) $< -o $@ $(BUILD_DIR)/run.o $(BUILD_DIR)/ast.o $(BUILD_DIR)/lex.o $(BUILD_DIR)/parse.o $(BUILD_DIR)/execute.o $(BUILD_DIR)/ast.o: src/ast.c src/ast.h mkdir -p $(BUILD_DIR)/ $(CC) $(CFLAGS) -c $< -o $@ $(BUILD_DIR)/lex.o: src/lex.c src/lex.h mkdir -p $(BUILD_DIR)/ $(CC) $(CFLAGS) -c $< -o $@ $(BUILD_DIR)/parse.o: src/parse.c src/parse.h $(BUILD_DIR)/ast.o $(BUILD_DIR)/lex.o $(CC) $(CFLAGS) -c $< -o $@ $(BUILD_DIR)/execute.o: src/execute.c src/execute.h $(BUILD_DIR)/ast.o $(CC) $(CFLAGS) -c $< -o $@ $(BUILD_DIR)/run.o: src/run.c src/run.h $(BUILD_DIR)/ast.o $(BUILD_DIR)/lex.o $(BUILD_DIR)/parse.o $(BUILD_DIR)/execute.o $(CC) $(CFLAGS) -c $< -o $@ .PHONY clean run: clean: rm -rf _build rm -rf interpreter rm -rf interpreter.dSYM run: interpreter ./interpreter program.code