-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathmakefile
More file actions
50 lines (37 loc) · 1.22 KB
/
Copy pathmakefile
File metadata and controls
50 lines (37 loc) · 1.22 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
CC=gcc
BINDIR = bin
SRCDIR = src
WARNING_FLAGS = -Wall -Wextra -Werror -Wstrict-prototypes -Wno-unused-result
OPT_FLAGS = -fdata-sections -ffunction-sections -Wl,--gc-sections
GIT_COMMIT = $(shell git rev-parse --short HEAD)
CFLAGS = -g -std=gnu99 $(WARNING_FLAGS) $(release) $(FLAGS) $(OPT_FLAGS) -DGIT_COMMIT=\"$(GIT_COMMIT)\"
LINK_FLAGS = -lreadline -lm
_DEPS = *.h
DEPS = $(patsubst %,$(SRCDIR)/%,$(_DEPS))
MAINS = $(SRCDIR)/main.o $(SRCDIR)/vm_main.o
SRC = $(wildcard $(SRCDIR)/*.c)
OBJ = $(filter-out $(MAINS), $(SRC:%.c=%.o))
all: test
release: release += -DRELEASE
release: LINK_FLAGS += -O2
release: CFLAGS += -O2
release: | clean all
$(SRCDIR)/%.o: $(SRCDIR)/%.c $(DEPS)
$(CC) -c -o $@ $< $(CFLAGS)
setup:
mkdir -p $(BINDIR)
vm_main: $(OBJ) $(SRCDIR)/vm_main.o setup
$(CC) -o $(BINDIR)/wvm $(OBJ) $(SRCDIR)/vm_main.o $(LINK_FLAGS) $(CFLAGS)
main: $(OBJ) $(SRCDIR)/main.o setup
$(CC) -o $(BINDIR)/wendy $(OBJ) $(SRCDIR)/main.o $(LINK_FLAGS) $(CFLAGS)
ln -f $(BINDIR)/wendy $(BINDIR)/windu
$(MAKE) -C tools/
library: $(OBJ) setup $(DEPS)
ar rvs $(BINDIR)/wendy.a $(OBJ)
.PHONY: clean
libraries: vm_main main
@bash ./build-libraries.sh
test: libraries
@bash ./io-test.sh
clean:
rm -f $(SRCDIR)/*.o *~ core $(SRCDIR)/*~