change: improve Makefile
This commit is contained in:
parent
42706ab8cc
commit
347f34086d
1 changed files with 31 additions and 22 deletions
53
Makefile
53
Makefile
|
@ -1,4 +1,4 @@
|
||||||
# The interesting part
|
##### THE INTERESTING PART #####
|
||||||
NAME = so_long
|
NAME = so_long
|
||||||
SRCS = src/
|
SRCS = src/
|
||||||
INCLUDES = includes/
|
INCLUDES = includes/
|
||||||
|
@ -22,46 +22,55 @@ LIBRARIES = mlx libtf
|
||||||
LIBRARIES_FILES = libtf/libtf.a
|
LIBRARIES_FILES = libtf/libtf.a
|
||||||
LIBRARIES_LINK = mlx
|
LIBRARIES_LINK = mlx
|
||||||
LINK = Xext X11 m z
|
LINK = Xext X11 m z
|
||||||
|
MORE_FLAGS +=
|
||||||
|
##### END OF THE INTERESTING PART #####
|
||||||
|
|
||||||
|
|
||||||
# It works and I probably won't change it for the rest of my life
|
|
||||||
C_FILES = $(addsuffix .c,$(addprefix $(SRCS),$(CODE)))
|
C_FILES = $(addsuffix .c,$(addprefix $(SRCS),$(CODE)))
|
||||||
O_FILES = $(addsuffix .o,$(addprefix $(SRCS),$(CODE)))
|
O_FILES = $(addsuffix .o,$(addprefix $(SRCS),$(CODE)))
|
||||||
ifdef DEBUG
|
ifdef DEBUG
|
||||||
CC = cc -Wall -Wextra -Werror -g
|
CC = cc -Wall -Wextra -Werror -g $(MORE_FLAGS)
|
||||||
else
|
else
|
||||||
CC = cc -Wall -Wextra -Werror
|
CC = cc -Wall -Wextra -Werror $(MORE_FLAGS)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
||||||
|
##### PUBLIC RULES #####
|
||||||
all : $(NAME)
|
all : $(NAME)
|
||||||
|
@echo "\t\t \e[0;92m\(^o^)/ \e[0;102;30;1m $(NAME) made! \e[0;92m \(^o^)/\e[0m"
|
||||||
$(NAME) : $(O_FILES) $(LIBRARIES)
|
|
||||||
$(CC) -o $(NAME) $(O_FILES) $(addprefix -L ,$(LIBRARIES_LINK)) $(addprefix -l ,$(LIBRARIES_LINK) $(LINK)) $(LIBRARIES_FILES)
|
|
||||||
@echo "\t\t \e[0;92m\(^o^)/ \e[0;102;30;1m $(NAME) compiled! \e[0;92m \(^o^)/\e[0m"
|
|
||||||
|
|
||||||
$(LIBRARIES) :
|
|
||||||
ifdef DEBUG
|
|
||||||
make -C $@ debug || make -C $@
|
|
||||||
else
|
|
||||||
make -C $@
|
|
||||||
endif
|
|
||||||
@echo "\e[30;47;1m library $@ made! \e[0m"
|
|
||||||
|
|
||||||
%.o : %.c
|
|
||||||
$(CC) $(addprefix -I ,$(INCLUDES) $(LIBRARIES)) -c $< -o $@
|
|
||||||
|
|
||||||
clean :
|
clean :
|
||||||
|
@echo "\e[30;47;1m $(NAME): removing *.o files... \e[0m"
|
||||||
-rm -f $(O_FILES)
|
-rm -f $(O_FILES)
|
||||||
@echo "\e[30;47;1m clean finished! \e[0m"
|
@echo "\e[30;47;1m $(NAME): removing *.o files finished! \e[0m"
|
||||||
|
|
||||||
fclean : clean
|
fclean : clean
|
||||||
|
@echo "\e[30;47;1m $(NAME): fclean... \e[0m"
|
||||||
$(foreach lib,$(LIBRARIES), make fclean -C $(lib) || make clean -C $(lib); )
|
$(foreach lib,$(LIBRARIES), make fclean -C $(lib) || make clean -C $(lib); )
|
||||||
-rm -f $(NAME)
|
-rm -f $(NAME)
|
||||||
@echo "\e[30;47;1m fclean finished! \e[0m"
|
@echo "\e[30;47;1m $(NAME): fclean finished! \e[0m"
|
||||||
|
|
||||||
|
|
||||||
re : clean all
|
re : clean all
|
||||||
|
|
||||||
debug :
|
debug :
|
||||||
make all DEBUG=yes
|
make all DEBUG=yes
|
||||||
|
|
||||||
|
|
||||||
|
$(NAME) : $(O_FILES) $(LIBRARIES)
|
||||||
|
@echo "\e[30;47;1m $(NAME): linking... \e[0m"
|
||||||
|
$(CC) -o $(NAME) $(O_FILES) $(addprefix -L ,$(LIBRARIES_LINK)) $(addprefix -l ,$(LIBRARIES_LINK) $(LINK)) $(LIBRARIES_FILES)
|
||||||
|
@echo "\e[30;47;1m $(NAME): linked! \e[0m"
|
||||||
|
|
||||||
|
$(LIBRARIES) :
|
||||||
|
@echo "\e[30;47;1m $(NAME): making library $@... \e[0m"
|
||||||
|
ifdef DEBUG
|
||||||
|
make -C $@ debug || make -C $@
|
||||||
|
else
|
||||||
|
make -C $@
|
||||||
|
endif
|
||||||
|
@echo "\e[30;47;1m $(NAME): library $@ made! \e[0m"
|
||||||
|
|
||||||
|
%.o : %.c
|
||||||
|
$(CC) $(addprefix -I ,$(INCLUDES) $(LIBRARIES)) -c $< -o $@
|
||||||
|
|
||||||
.PHONY : all debug clean fclean re $(LIBRARIES)
|
.PHONY : all debug clean fclean re $(LIBRARIES)
|
||||||
|
|
Loading…
Add table
Reference in a new issue