-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathMakefile
More file actions
45 lines (33 loc) · 974 Bytes
/
Copy pathMakefile
File metadata and controls
45 lines (33 loc) · 974 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
42
43
44
45
CC := gcc
CFLAGS := -std=c11 -Wall -Wextra -pedantic -I. -Iclex
AR := ar
ARFLAGS := rcs
LIBSRC := util.c grammar.c lr1_lalr1.c
LIBOBJ := $(LIBSRC:.c=.o)
CLEXSRC := clex/clex.c clex/fa.c
CLEXOBJ := $(CLEXSRC:.c=.o)
TARGET := libcparse.a
TEST_BIN := tests
EXAMPLESRC := examples/expr_parser.c
EXAMPLEOBJ := $(EXAMPLESRC:.c=.o)
EXAMPLEBIN := examples/expr_parser
all: $(TEST_BIN)
$(TARGET): $(LIBOBJ)
$(AR) $(ARFLAGS) $@ $^
$(TEST_BIN): $(TARGET) $(CLEXOBJ) tests.o
$(CC) $(CFLAGS) -o $@ tests.o $(CLEXOBJ) $(TARGET)
examples: $(EXAMPLEBIN)
$(EXAMPLEBIN): $(TARGET) $(CLEXOBJ) $(EXAMPLEOBJ)
$(CC) $(CFLAGS) -o $@ $(EXAMPLEOBJ) $(CLEXOBJ) $(TARGET)
%.o: %.c
$(CC) $(CFLAGS) -c $< -o $@
clex/%.o: clex/%.c
$(CC) $(CFLAGS) -c $< -o $@
examples/%.o: examples/%.c
$(CC) $(CFLAGS) -c $< -o $@
.PHONY: clean test
clean:
rm -f $(LIBOBJ) $(CLEXOBJ) tests.o $(EXAMPLEOBJ) $(TARGET) $(TEST_BIN) $(EXAMPLEBIN)
# Run the full test suite.
test: $(TEST_BIN)
./$(TEST_BIN)