-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
42 lines (27 loc) · 835 Bytes
/
Copy pathMakefile
File metadata and controls
42 lines (27 loc) · 835 Bytes
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
# pmake
CFLAGS = -g -fsanitize=address
YYSRCS = y.tab.c y.tab.h lex.yy.c lex.yy.h
PARSE_OBJS = lex.yy.o y.tab.o parsetypes.o strings.o variables.o
SHELL_OBJS = main.o $(PARSE_OBJS) interpret.o sighandler.o builtin.o jobcontrol.o error.o
CMD_OBJS = cat.o ls.o
CMD_DIR = cmd
PARSETEST_OBJS = parsetest.o $(PARSE_OBJS) error.o
.PHONY: all clean
shell: $(SHELL_OBJS)
cc $(CFLAGS) -o $(.TARGET) $(.ALLSRC)
main.o: main.c
cc $(CFLAGS) -c $(.ALLSRC)
main.c: lex.yy.h
lex.yy.c: y.tab.h
# cmd: $(CMD_OBJS)
# cd $(CMD_DIR) ; for cmd in $(CMD_OBJS) ; do \
# cc -o $${cmd%.o} $$cmd \
# done
lex.yy.c lex.yy.h: shell.lex
flex --header-file=lex.yy.h shell.lex
y.tab.c y.tab.h: shell.y
yacc -d shell.y
parsetest: $(PARSETEST_OBJS)
cc $(CFLAGS) -o $(.TARGET) $(.ALLSRC)
clean:
-rm shell *.o $(CMD_DIR)/*.o $(YYSRCS) parsetest