summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile59
1 files changed, 59 insertions, 0 deletions
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..597fa29
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,59 @@
+# Program name
+NAME := philo
+
+# Directories
+SRC_DIR := src
+BUILD_DIR := ./build
+INC_DIR := ./include
+
+SRCS := $(addprefix $(SRC_DIR)/, \
+main.c \
+time.c \
+print.c \
+starve.c \
+free_memory.c \
+forks.c \
+philos.c \
+routine.c \
+monitoring.c \
+threads.c \
+queue.c \
+init.c \
+destroy.c \
+utils.c \
+utils_routine.c \
+validate_parameters.c \
+scheduler.c \
+sim.c)
+
+OBJS := $(SRCS:%.c=$(BUILD_DIR)/%.o)
+
+# Automatically generated dependency files
+DEPS := $(SRCS:%.c=$(BUILD_DIR)/%.d)
+
+# -MMD and -MP will assist the rule to create the dependencies using -include ...
+#CFLAGS := -Wall -Wextra -Werror -static-libasan -fsanitize=address -g3 -pthread
+#CFLAGS := -Wall -Wextra -Werror -static-libasan -fsanitize=thread -g3 -pthread -fno-sanitize=thread
+#CFLAGS_DEBUG := -Wall -Wextra -Werror -g3 -O0 -MMD -MP -pthread
+CFLAGS := -Wall -Wextra -Werror -MMD -MP -pthread -I$(INC_DIR)
+
+.DEFAULT_GOAL = all
+all: $(NAME)
+
+# that goes along with DEPS := $(OBJS:.o=.d)
+-include $(DEPS)
+
+$(BUILD_DIR)/%.o: %.c
+ mkdir -p $(dir $@)
+ $(CC) -c -o $@ $< $(CFLAGS)
+
+$(NAME) : $(OBJS)
+ $(CC) -o $@ $^ $(CFLAGS)
+
+.PHONY: clean fclean re all
+
+clean:
+ rm -rf $(BUILD_DIR)
+fclean: clean
+ rm -f $(NAME)
+re: fclean all