ssl_des/Makefile

143 lines
3 KiB
Makefile
Raw Normal View History

2018-10-07 19:34:39 +03:00
# **************************************************************************** #
# #
# ::: :::::::: #
# Makefile :+: :+: :+: #
# +:+ +:+ +:+ #
# By: gtertysh <marvin@42.fr> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2018/02/18 16:06:01 by gtertysh #+# #+# #
# Updated: 2018/06/24 18:49:59 by gtertysh ### ########.fr #
# #
# **************************************************************************** #
# name of the executable file
NAME := ft_ssl
# project directories
ROOT := $(shell pwd)
SRC_DIR := $(ROOT)/src/
OBJ_DIR := $(ROOT)/obj/
INC_DIR := $(ROOT)/inc/
LIB_DIR := $(ROOT)/lib/
TST_DIR := $(ROOT)/t/
# libraries
LIBFT_DIR := $(LIB_DIR)libft/
LIBFT_INC := -I $(LIBFT_DIR)includes/
LIBFT_LIB := -lft -L $(LIBFT_DIR)
LIBFT = $(LIBFT_DIR)libft.a
2018-10-08 02:39:31 +03:00
MUINUT_DIR := $(LIB_DIR)munit/
MUINUT_INC := -I $(MUINUT_DIR)
2018-10-07 19:34:39 +03:00
# project source files
SRC = main.c
# project object files
OBJ = $(addprefix $(OBJ_DIR), $(SRC:.c=.o))
# project test files
2018-10-08 02:39:31 +03:00
TEST_BIN = ft_ssl_test
2018-10-09 11:42:59 +03:00
TEST_SRC = main_test.c \
test_tests.c
2018-10-08 02:39:31 +03:00
TEST_SRC += munit.c
TEST_OBJ = $(addprefix $(OBJ_DIR), $(TEST_SRC:.c=.o))
2018-10-07 19:34:39 +03:00
# compilation flags
CC_FLAGS = -Wall -Wextra -Werror
CC_FLAGS += -Wpointer-arith
CC_FLAGS += -Wcast-align
CC_FLAGS += -Wwrite-strings
CC_FLAGS += -Wunreachable-code
CC_FLAGS += -Winit-self
CC_FLAGS += -Wmissing-field-initializers
CC_FLAGS += -Wno-unknown-pragmas
CC_FLAGS += -Wstrict-prototypes
CC_FLAGS += -Wundef
CC_FLAGS += -Wold-style-definition
# for debug
ifeq ($(DEBUG),true)
CC_FLAGS += -g
CC_FLAGS += -O0
endif
# linking flags
LINK_FLAGS = ""
# header flags
2018-10-09 11:42:59 +03:00
HEADER_FLAGS = -I $(INC_DIR) \
$(MUINUT_INC)
2018-10-07 19:34:39 +03:00
# compiler
CC := clang
# rules
all: $(NAME)
2018-10-08 02:39:31 +03:00
$(NAME): check $(LIBFT) $(OBJ)
2018-10-07 19:34:39 +03:00
$(CC) $(OBJ) $(LINK_FLAGS) -o $(NAME)
2018-10-08 02:39:31 +03:00
check: $(TEST_BIN)
2018-10-09 11:42:59 +03:00
clear
2018-10-08 02:39:31 +03:00
./$(TEST_BIN)
2018-10-07 19:34:39 +03:00
2018-10-08 02:39:31 +03:00
$(TEST_BIN): $(LIBFT) $(TEST_OBJ)
$(CC) $(TEST_OBJ) $(LINK_FLAGS) -o $(TEST_BIN)
2018-10-07 19:34:39 +03:00
2018-10-08 02:39:31 +03:00
$(TEST_OBJ) $(OBJ): | $(OBJ_DIR)
2018-10-07 19:34:39 +03:00
$(OBJ_DIR):
mkdir $(OBJ_DIR)
$(OBJ_DIR)%.o: %.c
$(CC) -c $< -o $@ $(CC_FLAGS) $(HEADER_FLAGS)
$(LIBFT):
$(MAKE) -C $(LIBFT_DIR)
clean:
rm -f $(OBJ)
rm -f $(TEST_OBJ)
$(MAKE) -C $(LIBFT_DIR) clean
fclean: clean
rm -f $(NAME)
$(MAKE) -C $(LIBFT_DIR) fclean
re: fclean all
multi:
$(MAKE) $(LIBFT)
$(MAKE) check
$(MAKE) $(NAME)
# special stuff
2018-10-08 02:39:31 +03:00
vpath %.c $(SRC_DIR) \
$(TST_DIR) \
$(MUINUT_DIR)
2018-10-07 19:34:39 +03:00
.PHONY: all check clean fclean re multi