mirror of https://github.com/fairyglade/ly.git
50 lines
1011 B
Makefile
50 lines
1011 B
Makefile
NAME = dragonfail
|
|
CC = gcc
|
|
FLAGS = -std=c99 -pedantic -g
|
|
FLAGS+= -Wall -Wno-unused-parameter -Wextra -Werror=vla -Werror
|
|
VALGRIND = --show-leak-kinds=all --track-origins=yes --leak-check=full
|
|
|
|
BIND = bin
|
|
OBJD = obj
|
|
SRCD = src
|
|
EXPD = example
|
|
|
|
INCL = -I$(SRCD)
|
|
INCL+= -I$(EXPD)
|
|
|
|
SRCS = $(EXPD)/example.c
|
|
SRCS+= $(SRCD)/dragonfail.c
|
|
|
|
SRCS_OBJS := $(patsubst %.c,$(OBJD)/%.o,$(SRCS))
|
|
|
|
# aliases
|
|
.PHONY: final
|
|
final: $(BIND)/$(NAME)
|
|
|
|
# generic compiling command
|
|
$(OBJD)/%.o: %.c
|
|
@echo "building object $@"
|
|
@mkdir -p $(@D)
|
|
@$(CC) $(INCL) $(FLAGS) -c -o $@ $<
|
|
|
|
# final executable
|
|
$(BIND)/$(NAME): $(SRCS_OBJS) $(FINAL_OBJS)
|
|
@echo "compiling executable $@"
|
|
@mkdir -p $(@D)
|
|
@$(CC) -o $@ $^ $(LINK)
|
|
|
|
run:
|
|
@cd $(BIND) && ./$(NAME)
|
|
|
|
# tools
|
|
## valgrind memory leak detection
|
|
leak: $(BIND)/$(NAME)
|
|
@echo "# running valgrind"
|
|
rm -f valgrind.log
|
|
cd $(BIND) && valgrind $(VALGRIND) 2> ../valgrind.log ./$(NAME)
|
|
less valgrind.log
|
|
## repository cleaning
|
|
clean:
|
|
@echo "# cleaning"
|
|
rm -rf $(BIND) $(OBJD) valgrind.log
|