-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
55 lines (42 loc) · 1.59 KB
/
Makefile
File metadata and controls
55 lines (42 loc) · 1.59 KB
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
53
54
CC = gcc
CFLAGS = -Wall -Wextra -g
OUT_DIR = out
DEBUG_DIR = debug
SRC_DIR = .
EXAMPLES_DIR = examples
TESTS_DIR = tests
MEMALLOC_SRC = $(SRC_DIR)/memalloc.c
MEMALLOC_OBJ = $(OUT_DIR)/memalloc.o
LINKED_LIST_SRC = $(EXAMPLES_DIR)/linked_list.c
BINARY_TREE_SRC = $(EXAMPLES_DIR)/binary_tree.c
DIRECTED_GRAPH_SRC = $(EXAMPLES_DIR)/directed_graph.c
TEST_MEMALLOC_SRC = $(TESTS_DIR)/test_memalloc.c
LINKED_LIST_BIN = $(DEBUG_DIR)/linked_list
BINARY_TREE_BIN = $(DEBUG_DIR)/binary_tree
DIRECTED_GRAPH_BIN = $(DEBUG_DIR)/directed_graph
TEST_MEMALLOC_BIN = $(DEBUG_DIR)/test_memalloc
all: $(MEMALLOC_OBJ) linked_list binary_tree directed_graph
$(MEMALLOC_OBJ): $(MEMALLOC_SRC)
@mkdir -p $(OUT_DIR)
$(CC) $(CFLAGS) -c $< -o $@
linked_list: $(MEMALLOC_OBJ)
@mkdir -p $(DEBUG_DIR)
$(CC) $(CFLAGS) $(MEMALLOC_OBJ) $(LINKED_LIST_SRC) -o $(LINKED_LIST_BIN)
@echo "Linked List example compiled successfully."
binary_tree: $(MEMALLOC_OBJ)
@mkdir -p $(DEBUG_DIR)
$(CC) $(CFLAGS) $(MEMALLOC_OBJ) $(BINARY_TREE_SRC) -o $(BINARY_TREE_BIN)
@echo "Binary Tree example compiled successfully."
directed_graph: $(MEMALLOC_OBJ)
@mkdir -p $(DEBUG_DIR)
$(CC) $(CFLAGS) $(MEMALLOC_OBJ) $(DIRECTED_GRAPH_SRC) -o $(DIRECTED_GRAPH_BIN)
@echo "Directed Graph example compiled successfully."
test_memalloc: $(MEMALLOC_OBJ)
@mkdir -p $(DEBUG_DIR)
$(CC) $(CFLAGS) $(MEMALLOC_OBJ) $(TEST_MEMALLOC_SRC) -o $(TEST_MEMALLOC_BIN)
@echo "Unit tests compiled successfully."
@./$(TEST_MEMALLOC_BIN)
clean:
@rm -rf $(OUT_DIR) $(DEBUG_DIR)
@echo "Cleaned up build artifacts."
.PHONY: all linked_list binary_tree directed_graph test_memalloc clean