-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
63 lines (46 loc) · 1.38 KB
/
Copy pathMakefile
File metadata and controls
63 lines (46 loc) · 1.38 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
.SUFFIXES:
# ===== Config =====
BUILD := build
TARGET := $(BUILD)/Sintact
# Fuentes
PARSER := parser.y
LEXER := lexer.l
# Generados en build/
GEN_C := $(BUILD)/parser.tab.c
GEN_H := $(BUILD)/parser.tab.h
GEN_OUT := $(BUILD)/parser.output
LEX_C := $(BUILD)/lex.yy.c
OBJ_P := $(BUILD)/parser.tab.o
OBJ_L := $(BUILD)/lex.yy.o
CFLAGS ?= -Wall -Wextra -O2
# Añade -I$(BUILD) para incluir los headers generados por bison
CPPFLAGS := -I$(BUILD)
.PHONY: all clean distclean run tree
# ===== Targets principales =====
all: $(TARGET)
$(TARGET): $(OBJ_P) $(OBJ_L) | $(BUILD)
@gcc -o $@ $(OBJ_P) $(OBJ_L)
# ===== Objetos =====
$(OBJ_P): $(GEN_C) | $(BUILD)
@gcc $(CFLAGS) $(CPPFLAGS) -c $(GEN_C) -o $@
$(OBJ_L): $(LEX_C) $(GEN_H) | $(BUILD)
@gcc $(CFLAGS) $(CPPFLAGS) -c $(LEX_C) -o $@
# ===== Generados por Bison =====
$(GEN_C) $(GEN_H) $(GEN_OUT): $(PARSER) | $(BUILD)
@bison -t -v -d -o $(GEN_C) $(PARSER) -Wcounterexamples
# ===== Generado por Flex =====
$(LEX_C): $(LEXER) $(GEN_H) | $(BUILD)
@flex -l -o $(LEX_C) $(LEXER)
# ===== Utilidades =====
$(BUILD):
@mkdir -p $(BUILD)
clean:
@rm -f $(OBJ_P) $(OBJ_L) $(GEN_C) $(GEN_H) $(GEN_OUT) $(LEX_C) $(TARGET)
distclean:
@rm -rf $(BUILD)
# make run FILE=tests/test_ok.pl
run: $(TARGET)
@$(TARGET) $(FILE)
# Visualiza el árbol de build
tree:
@printf "Contenido de $(BUILD):\n"; find $(BUILD) -maxdepth 2 -print 2>/dev/null || true