-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
executable file
·63 lines (48 loc) · 1.37 KB
/
Makefile
File metadata and controls
executable file
·63 lines (48 loc) · 1.37 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
GCC=gcc
AR=ar
CFLAGS := -g -m32
WARNINGS:= -Wall
LEMON:=./lemon/lemon.out
FEATURES := -DENABLE_KEY_VALUE #-DPRINT_BYTE_CODE
GRAMMER_FILE:=src/grammer.y
LEXER_FILE:=src/lexer.l
SOURCE := src/compiler.c
SOURCE += src/util.c
SOURCE += src/identifier.c
SOURCE += src/executable.c
SOURCE += src/execute_context.c
SOURCE += src/function.c
SOURCE += src/variable_list.c
SOURCE += src/native_functions.c
SOURCE += test/main.c
M_LIB:=libM.a
LD_FLAGS := -m32 -L.
COMPILER_OBJECTS :=
COMPILER_OBJECTS += $(GRAMMER_FILE:.y=.o)
COMPILER_OBJECTS += $(LEXER_FILE:.l=.o)
COMPILER_OBJECTS += $(SOURCE:.c=.o)
INCLUDES:= -Iinc -Isrc
OUTPUT:=a.out
all: $(OUTPUT)
$(OUTPUT): $(COMPILER_OBJECTS)
@echo "building $@"
@$(GCC) $(CFLAGS) $(COMPILER_OBJECTS) $(LD_FLAGS) -o $@
$(M_LIB):$(COMPILER_OBJECTS)
@echo "building $(M_LIB)"
@rm -f $(M_LIB)
@$(AR) -q $(M_LIB) $(COMPILER_OBJECTS)
%.o:%.l
@echo "compiling $^"
@flex --outfile=`dirname $^`/`basename $^ .l`.c $(LEXER_FILE)
@$(GCC) $(CFLAGS) $(INCLUDES) -c `dirname $^`/`basename $^ .l`.c -o $@
@rm `dirname $^`/`basename $^ .l`.c
%.o:%.y
echo "compiling $^"
@$(LEMON) -q $^
@$(GCC) $(CFLAGS) $(INCLUDES) -c `dirname $^`/`basename $^ .y`.c -o $@
@rm `dirname $^`/`basename $^ .y`.c
%.o:%.c
@echo "compiling $^"
@$(GCC) $(CFLAGS) $(FEATURES) $(WARNINGS) $(INCLUDES) -c $^ -o $@
clean:
@rm -f $(COMPILER_OBJECTS) $(OUTPUT) $(M_LIB) *core*