1NAME = testoasterror
2CC = gcc
3FLAGS = -std=c99 -pedantic -g
4FLAGS+= -Wall -Wextra -Werror=vla -Werror
5VALGRIND = --show-leak-kinds=all --track-origins=yes --leak-check=full
6
7BIND = bin
8OBJD = obj
9SRCD = src
10TESTS = tests
11
12INCL = -I$(SRCD)
13
14SRCS = $(SRCD)/testoasterror.c
15SRCS+= $(TESTS)/main.c
16
17OBJS:= $(patsubst %.c,$(OBJD)/%.o,$(SRCS))
18
19.PHONY: $(BIND)/$(NAME)
20
21$(OBJD)/%.o: %.c
22	@echo "building object $@"
23	@mkdir -p $(@D)
24	@$(CC) $(INCL) $(FLAGS) -c -o $@ $<
25
26$(BIND)/$(NAME): $(OBJS)
27	@echo "compiling executable $@"
28	@mkdir -p $(@D)
29	@$(CC) -o $@ $^ $(LINK)
30
31run:
32	@cd $(BIND) && ./$(NAME)
33
34leakgrind: $(BIND)/$(NAME)
35	@cd $(BIND) && valgrind $(VALGRIND) 2> ../valgrind.log ./$(NAME)
36
37clean:
38	@echo "cleaning"
39	@rm -rf $(BIND) $(OBJD) valgrind.log
40