default: all #==============================================================================# #--------------------------------- SHELL --------------------------------------# #==============================================================================# SHELL := /bin/sh #==============================================================================# #------------------------------ DIRECTORIES -----------------------------------# #==============================================================================# SRCS_DIR = src/ OBJS_DIR = obj/ LFT_DIR = libft/ LFT_INCS_DIR = ${LFT_DIR}inc/ LFT_SRCS_DIR = ${LFT_DIR}src/ #==============================================================================# #--------------------------------- FILES --------------------------------------# #==============================================================================# SRCS_NAME = minishell.c SRCS_NAME += ft_s_init.c SRCS_NAME += ft_s_destroy.c #------------------------------------------------------------------------------# SRCS = $(addprefix ${SRCS_DIR}, ${SRCS_NAME}) #------------------------------------------------------------------------------# INCS_NAME = ft_s_struct.h INCS_NAME += ft_d_enum.h INCS_NAME += $(patsubst %.c,%.h,${SRCS_NAME}) #------------------------------------------------------------------------------# INCS = $(addprefix ${SRCS_DIR}, ${INCS_NAME}) #------------------------------------------------------------------------------# OBJS = $(patsubst ${SRCS_DIR}%.c,${OBJS_DIR}%.o,${SRCS}) #------------------------------------------------------------------------------# NAME = minishell #------------------------------------------------------------------------------# HISTFILE = minishell_history #------------------------------------------------------------------------------# LFT_SRCS = $(shell find ${LFT_SRCS_DIR} -name "*.c") #==============================================================================# #-------------------------------- COMPILER ------------------------------------# #==============================================================================# CC = clang CFLAGS = -std=c89 CFLAGS += -Wall CFLAGS += -Wextra CFLAGS += -Werror CFLAGS += -pedantic #------------------------------------------------------------------------------# CDEFS = -DFT_HISTFILE=${HISTFILE} #------------------------------------------------------------------------------# LDFLAGS = -L${LFT_DIR} LDFLAGS += -lft #==============================================================================# #--------------------------------- UNIX ---------------------------------------# #==============================================================================# RM = rm -rf MKDIR = mkdir -p #==============================================================================# #--------------------------------- RULES --------------------------------------# #==============================================================================# LFTRULE = all #------------------------------------------------------------------------------# ${OBJS_DIR}%.o: ${SRCS_DIR}%.c ${INCS} @${MKDIR} ${OBJS_DIR} ${CC} -c ${CFLAGS} ${CDEFS} -I${SRCS_DIR} -I${LFT_INCS_DIR} -o $@ $< #------------------------------------------------------------------------------# $(NAME): ${OBJS} ${LFT_SRCS} ${LFT_INCS_DIR}libft.h @$(MAKE) --no-print-directory -C ${LFT_DIR} ${LFTRULE} ${CC} ${CFLAGS} -o ${NAME} ${OBJS} ${LDFLAGS} #------------------------------------------------------------------------------# all: ${NAME} #------------------------------------------------------------------------------# debug: CFLAGS += -ggdb debug: LFTRULE = debug debug: all #------------------------------------------------------------------------------# asan: CFLAGS += -ggdb asan: CFLAGS += -fsanitize=address asan: LFTRULE = asan asan: all #------------------------------------------------------------------------------# clean: @$(MAKE) --no-print-directory -C ${LFT_DIR} clean ${RM} ${OBJS_DIR} #------------------------------------------------------------------------------# fclean: clean @$(MAKE) --no-print-directory -C ${LFT_DIR} fclean ${RM} ${NAME} ${NAME}.dSYM/ ${HISTFILE} #------------------------------------------------------------------------------# re: fclean all #------------------------------------------------------------------------------# .PHONY: all clean clean fclean re debug asan