110 lines
2.7 KiB
Makefile
110 lines
2.7 KiB
Makefile
# **************************************************************************** #
|
|
# #
|
|
# ::: :::::::: #
|
|
# Makefile :+: :+: :+: #
|
|
# +:+ +:+ +:+ #
|
|
# By: gtertysh <marvin@42.fr> +#+ +:+ +#+ #
|
|
# +#+#+#+#+#+ +#+ #
|
|
# Created: 2016/12/14 16:54:48 by gtertysh #+# #+# #
|
|
# Updated: 2016/12/23 19:59:53 by gtertysh ### ########.fr #
|
|
# #
|
|
# **************************************************************************** #
|
|
|
|
# clor constants
|
|
|
|
SWITCH = \033[
|
|
|
|
NORMAL = $(SWITCH)0m
|
|
GREEN = $(SWITCH)32m
|
|
BLUE = $(SWITCH)34m
|
|
CYAN = $(SWITCH)36m
|
|
|
|
# final binary name
|
|
|
|
NAME = fdf
|
|
|
|
# static libraries
|
|
|
|
LIBFT = libft.a
|
|
MLX = libmlx.a
|
|
|
|
# directories
|
|
|
|
SRC_DIR = ./src/
|
|
OBJ_DIR = ./obj/
|
|
LIBFT_DIR = ./libft/
|
|
MLX_DIR = ./minilibx/
|
|
|
|
# src and obj files
|
|
|
|
SRC_FILES = $(shell ls $(SRC_DIR))
|
|
OBJ_FILES = $(SRC_FILES:.c=.o)
|
|
|
|
SRC = $(addprefix $(SRC_DIR), $(SRC_FILES))
|
|
OBJ = $(addprefix $(OBJ_DIR), $(OBJ_FILES))
|
|
|
|
# header files
|
|
|
|
INC = -I $(LIBFT_DIR)includes/ \
|
|
-I $(MLX_DIR) \
|
|
-I ./inc
|
|
|
|
# compiler flags
|
|
|
|
# for valgrind debugging uncomment $(DEBUG) flag.
|
|
# command for generate output:
|
|
# valgrind --tool=callgrind --dump-instr=yes --simulate-cache=yes --collect-jumps=yes program arguments
|
|
|
|
LIBFT_FLAGS = -lft -L $(LIBFT_DIR)
|
|
MLX_FLAGS = -lmlx -lXext -lX11 -L $(MLX_DIR)
|
|
OTHER_FLAGS = -lm
|
|
CC_FLAGS = -Werror -Wextra -Wall -O3
|
|
DEBUG = -g
|
|
OPT = -O3
|
|
FLAGS := $(CC_FLAGS) $(LIBFT_FLAGS) $(MLX_FLAGS) $(OTHER_FLAGS) \
|
|
$(OPT) \
|
|
$(DEBUG)
|
|
|
|
# compiler
|
|
|
|
CC = gcc
|
|
|
|
# rules
|
|
|
|
all: $(NAME)
|
|
|
|
$(NAME): $(OBJ) $(LIBFT_DIR)$(LIBFT) $(MLX_DIR)$(MLX)
|
|
@echo "$(CYAN)Linking fdf binary...$(NORMAL)"
|
|
@$(CC) $(OBJ) $(FLAGS) -o $(NAME)
|
|
@echo "$(GREEN)Done!$(NORMAL)"
|
|
|
|
$(OBJ_DIR)%.o : $(SRC_DIR)%.c
|
|
@echo "$(CYAN)Compiling object files: $(BLUE)$@$(NORMAL)"
|
|
@$(CC) $(FLAGS) $(INC) -c $< -o $@
|
|
|
|
$(LIBFT_DIR)$(LIBFT):
|
|
@echo "$(CYAN)Compiling libft library...$(NORMAL)"
|
|
@make -s -C $(LIBFT_DIR)
|
|
|
|
$(MLX_DIR)$(MLX):
|
|
@echo "$(CYAN)Compiling libmlx library...$(NORMAL)"
|
|
@make -s -C $(MLX_DIR)
|
|
|
|
clean:
|
|
@rm -rf $(OBJ)
|
|
|
|
fclean: clean
|
|
@rm -rf $(NAME)
|
|
|
|
libclean:
|
|
@make clean -s -C $(LIBFT_DIR)
|
|
@make clean -s -C $(MLX_DIR)
|
|
|
|
libfclean:
|
|
@make fclean -s -C $(LIBFT_DIR)
|
|
|
|
re: fclean libfclean all
|
|
|
|
pu: fclean libfclean libclean
|
|
@echo "$(CYAN)Cleaning for push...$(NORMAL)"
|
|
|