-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
52 lines (38 loc) · 996 Bytes
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
NAME = pipex
CC = gcc
CCFLAGS = -Wall -Wextra -Werror
DIR_H := include/
H = pipex.h
H := $(addprefix $(DIR_H), $(H))
DIR_SRC = src/
SRC = main_pipex.c \
utils.c \
extra.c
SRC := $(addprefix $(DIR_SRC), $(SRC))
DIR_OBJ = obj/
OBJ = $(SRC:%.c=%.o)
OBJ := $(patsubst $(DIR_SRC)%, $(DIR_OBJ)%, $(OBJ))
DIR_LIB := libft/
DIR_LIB_H := $(addprefix $(DIR_LIB), include/)
LIB := $(addprefix $(DIR_LIB), libft.a)
all: subsystem $(DIR_OBJ) $(NAME)
subsystem:
@$(MAKE) -sC $(DIR_LIB)
$(DIR_OBJ):
@mkdir -p $(DIR_OBJ)
$(NAME): $(OBJ)
@$(CC) $(CCFLAGS) $(OBJ) -o $(NAME) $(LIB)
@echo "--------------------------------"
@echo "${NAME} compiled"
@echo "--------------------------------"
$(DIR_OBJ)%.o: $(DIR_SRC)%.c $(LIB) $(H) Makefile
@echo "[$<] ---> [$@]"
@$(CC) $(CCFLAGS) -I$(DIR_LIB_H) -I$(DIR_H) -c $< -o $@
clean:
@rm -rf $(DIR_OBJ)
@$(MAKE) -sC $(DIR_LIB) clean
fclean: clean
@rm -rf $(NAME)
@$(MAKE) -sC $(DIR_LIB) fclean
re: fclean all
.PHONY: subsystem clean fclean re