CC := gcc
CFLAGS = -std=c99 -Wall -Wextra -Werror -Wpedantic
+ifneq ("$(wildcard .debug)","")
+ CFLAGS += -g
+endif
+
+ifneq ("$(wildcard .noleaks)","")
+ CFLAGS += -DNOLEAKS
+else
+ EXT_LIBS := readline
+ LINKS := $(addprefix -l, $(EXT_LIBS))
+endif
+
RM := rm -f
-EXT_LIBS := readline
-LINKS := $(addprefix -l, $(EXT_LIBS))
SUBPROJECTS := Libft
all : $(NAME)
-debug : CFLAGS += -g
-debug : $(NAME)
+.PHONY : Libft/libft.a
-noleaks : CFLAGS += -DNOLEAKS
-noleaks : debug
+debug : .debug
+ $(MAKE) -C Libft debug
+ $(MAKE) all
+
+nodebug :
+ $(MAKE) -C Libft nodebug
+ $(RM) .debug
+ $(MAKE) shallow_re
+
+noleaks : .noleaks
+ $(MAKE) all
+
+readline :
+ $(RM) .noleaks
+ $(MAKE) shallow_re
+
+.% :
+ $(MAKE) shallow_fclean
+ touch $@
$(NAME) : $(OBJECTS) Libft/libft.a
$(CC) $(CFLAGS) -o $@ $^ $(LINKS)
Libft/libft.a : | Libft/Makefile
-ifneq (,$(findstring debug, $(MAKECMDGOALS)))
- $(MAKE) -C Libft debug
-else
$(MAKE) -C Libft
-endif
%.o : %.c | Libft/Makefile
$(CC) $(CFLAGS) -o $@ -c $< $(INCLUDE)
fclean : clean
$(RM) $(NAME)
+ $(MAKE) -C Libft fclean
re : fclean
$(MAKE) all
+
+shallow_fclean : clean
+ $(RM) $(NAME)
+
+shallow_re : shallow_fclean
+ $(MAKE) all