88 lines
1.9 KiB
Makefile
88 lines
1.9 KiB
Makefile
SRC = main.c \
|
||
io.c \
|
||
parsing.c \
|
||
parsing_simple.c \
|
||
solution.c \
|
||
printing.c \
|
||
mem.c \
|
||
map_helpers.c \
|
||
|
||
HEADERS = parsing.h \
|
||
printing.h \
|
||
solution.h \
|
||
|
||
OBJDIR = obj
|
||
SRCDIR = srcs
|
||
INCDIR = includes
|
||
|
||
CC = cc
|
||
CFLAGS = \
|
||
-Wall \
|
||
-Wextra \
|
||
-Werror \
|
||
-I$(INCDIR) \
|
||
-fcolor-diagnostics \
|
||
|
||
LDFLAGS =
|
||
|
||
_OBJ = $(SRC:.c=.o)
|
||
OBJ = $(addprefix $(OBJDIR)/,$(_OBJ))
|
||
DEPS = $(addprefix $(INCDIR)/,$(HEADERS))
|
||
|
||
RM = /bin/rm -f
|
||
RMDIR = /bin/rmdir
|
||
|
||
.DEFAULT_GOAL = test
|
||
|
||
NAME ?= bsq
|
||
|
||
.PHONY: re fclean clean all
|
||
|
||
all: $(NAME)
|
||
|
||
clean:
|
||
@$(RM) $(OBJ)
|
||
|
||
fclean: clean
|
||
@$(RM) $(NAME)
|
||
@$(RMDIR) $(OBJDIR) 2>/dev/null || true
|
||
|
||
re: fclean all
|
||
|
||
$(NAME): $(OBJ)
|
||
@$(CC) $(LDFLAGS) $^ -o $@
|
||
|
||
$(OBJ): | $(OBJDIR)
|
||
|
||
$(OBJDIR)/%.o: $(SRCDIR)/%.c $(DEPS)
|
||
@norminette $< >/dev/null || { printf '\033[101;37m%s\033[m\n' "!Norminette Failed>>>"; norminette $<; printf '\033[101;37m%s\033[m\n' "<<<Norminette Failed!"; exit 1; }
|
||
@$(CC) $(CFLAGS) -c $< -o $@
|
||
|
||
$(OBJDIR):
|
||
@mkdir -p $@
|
||
|
||
tests: test
|
||
|
||
test: re run fclean
|
||
|
||
SUCCESS_MSG = printf '\n\033[102;30m --- %s --- \033[m\n\n' "Test passed!"
|
||
FAIL_MSG = printf '\n\033[101;37m --- %s --- \033[m\n\n' "Test failed!"
|
||
SUCCESS_MSG_VALG = printf '\n\033[102;30m --- %s --- \033[m\n\n' "Valgrind ran without errors!"
|
||
FAIL_MSG_VALG = printf '\n\033[101;37m --- %s --- \033[m\n\n' "Valgrind Failed!"
|
||
SUCCESS = && $(SUCCESS_MSG) || $(FAIL_MSG)
|
||
SUCCESS_VALG = && $(SUCCESS_MSG_VALG) || $(FAIL_MSG_VALG)
|
||
FAIL = && $(FAIL_MSG) || $(SUCCESS_MSG)
|
||
VALGRIND = valgrind --leak-check=full --error-exitcode=1
|
||
VALGRIND_SMALL = 2>/dev/null 1>&2 valgrind --leak-check=full --error-exitcode=1
|
||
YLW = : [33m;
|
||
CYN = : [36m;
|
||
CLR_RST = && : [m
|
||
|
||
run:
|
||
@#clear
|
||
$(CYN) $(VALGRIND_SMALL) ./$(NAME) $(CLR_RST) $(SUCCESS_VALG)
|
||
$(YLW) ./$(NAME) $(CLR_RST) $(SUCCESS)
|
||
|
||
valgrind: re
|
||
$(CYN) $(VALGRIND) ./$(NAME) $(CLR_RST) $(SUCCESS_VALG)
|