Skip to content

Commit 526a2e9

Browse files
committed
updated makefile
1 parent 59eaa9c commit 526a2e9

File tree

1 file changed

+104
-21
lines changed

1 file changed

+104
-21
lines changed

Makefile

Lines changed: 104 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,20 @@
1-
2-
# Simple Makefile for Lab 1
1+
# Simple Makefile for Lab 1, Lab 2, Lab 3
32
CC = gcc
43
CFLAGS = -std=c11 -Wall -Wextra -Wpedantic -O2
5-
LDFLAGS =
4+
LDFLAGS = -lm
65
BUILD_DIR = bin
76
SRC_DIR = src
87

9-
PROGRAMS = $(BUILD_DIR)/hello $(BUILD_DIR)/calculator $(BUILD_DIR)/formats
8+
PROGRAMS = $(BUILD_DIR)/hello $(BUILD_DIR)/calculator $(BUILD_DIR)/formats \
9+
$(BUILD_DIR)/lab2_1 $(BUILD_DIR)/lab2_2 $(BUILD_DIR)/lab2_3 \
10+
$(BUILD_DIR)/lab3_task1 $(BUILD_DIR)/lab3_task2 $(BUILD_DIR)/lab3_task3
1011

11-
all: $(BUILD_DIR)/hello $(BUILD_DIR)/calculator $(BUILD_DIR)/formats \
12-
$(BUILD_DIR)/lab2_1 $(BUILD_DIR)/lab2_2 $(BUILD_DIR)/lab2_3
12+
all: $(PROGRAMS)
1313

14+
# -----------------------
15+
# Lab 1
16+
# -----------------------
17+
lab1: $(BUILD_DIR)/hello $(BUILD_DIR)/calculator $(BUILD_DIR)/formats
1418

1519
$(BUILD_DIR)/hello: $(SRC_DIR)/hello.c
1620
@mkdir -p $(BUILD_DIR)
@@ -24,42 +28,121 @@ $(BUILD_DIR)/formats: $(SRC_DIR)/format_specifiers.c
2428
@mkdir -p $(BUILD_DIR)
2529
$(CC) $(CFLAGS) $< -o $@ $(LDFLAGS)
2630

31+
# -----------------------
32+
# Lab 2
33+
# -----------------------
34+
lab2: $(BUILD_DIR)/lab2_1 $(BUILD_DIR)/lab2_2 $(BUILD_DIR)/lab2_3
35+
2736
$(BUILD_DIR)/lab2_1: $(SRC_DIR)/lab2_1.c
2837
@mkdir -p $(BUILD_DIR)
29-
$(CC) $(CFLAGS) $< -o $@
38+
$(CC) $(CFLAGS) $< -o $@ $(LDFLAGS)
3039

3140
$(BUILD_DIR)/lab2_2: $(SRC_DIR)/lab2_2.c
3241
@mkdir -p $(BUILD_DIR)
33-
$(CC) $(CFLAGS) $< -o $@
42+
$(CC) $(CFLAGS) $< -o $@ $(LDFLAGS)
3443

3544
$(BUILD_DIR)/lab2_3: $(SRC_DIR)/lab2_3.c
3645
@mkdir -p $(BUILD_DIR)
37-
$(CC) $(CFLAGS) $< -o $@
46+
$(CC) $(CFLAGS) $< -o $@ $(LDFLAGS)
47+
48+
# -----------------------
49+
# Lab 3
50+
# -----------------------
51+
lab3: $(BUILD_DIR)/lab3_task1 $(BUILD_DIR)/lab3_task2 $(BUILD_DIR)/lab3_task3
52+
53+
$(BUILD_DIR)/lab3_task1: $(SRC_DIR)/lab3_task1.c
54+
@mkdir -p $(BUILD_DIR)
55+
$(CC) $(CFLAGS) $< -o $@ $(LDFLAGS)
3856

39-
hello: $(BUILD_DIR)/hello
40-
calculator: $(BUILD_DIR)/calculator
41-
formats: $(BUILD_DIR)/formats
42-
lab2_1: $(BUILD_DIR)/lab2_1
43-
lab2_2: $(BUILD_DIR)/lab2_2
44-
lab2_3: $(BUILD_DIR)/lab2_3
57+
$(BUILD_DIR)/lab3_task2: $(SRC_DIR)/lab3_task2.c
58+
@mkdir -p $(BUILD_DIR)
59+
$(CC) $(CFLAGS) $< -o $@ $(LDFLAGS)
60+
61+
$(BUILD_DIR)/lab3_task3: $(SRC_DIR)/lab3_task3.c
62+
@mkdir -p $(BUILD_DIR)
63+
$(CC) $(CFLAGS) $< -o $@ $(LDFLAGS)
4564

46-
run-hello: hello
65+
# -----------------------
66+
# Run targets
67+
# -----------------------
68+
run-hello: $(BUILD_DIR)/hello
4769
./$(BUILD_DIR)/hello
4870

49-
run-calculator: calculator
71+
run-calculator: $(BUILD_DIR)/calculator
5072
./$(BUILD_DIR)/calculator
5173

52-
run-formats: formats
74+
run-formats: $(BUILD_DIR)/formats
5375
./$(BUILD_DIR)/formats
5476

55-
run-lab2_1: lab2_1
77+
run-lab2_1: $(BUILD_DIR)/lab2_1
5678
./$(BUILD_DIR)/lab2_1
5779

58-
run-lab2_2: lab2_2
80+
run-lab2_2: $(BUILD_DIR)/lab2_2
5981
./$(BUILD_DIR)/lab2_2
6082

61-
run-lab2_3: lab2_3
83+
run-lab2_3: $(BUILD_DIR)/lab2_3
6284
./$(BUILD_DIR)/lab2_3
6385

86+
run-lab3_task1: $(BUILD_DIR)/lab3_task1
87+
./$(BUILD_DIR)/lab3_task1
88+
89+
run-lab3_task2: $(BUILD_DIR)/lab3_task2
90+
./$(BUILD_DIR)/lab3_task2
91+
92+
run-lab3_task3: $(BUILD_DIR)/lab3_task3
93+
./$(BUILD_DIR)/lab3_task3
94+
95+
# Run all tasks in Lab 2
96+
run-lab2: lab2
97+
./$(BUILD_DIR)/lab2_1
98+
./$(BUILD_DIR)/lab2_2
99+
./$(BUILD_DIR)/lab2_3
100+
101+
# Run all tasks in Lab 3
102+
run-lab3: lab3
103+
./$(BUILD_DIR)/lab3_task1
104+
./$(BUILD_DIR)/lab3_task2
105+
./$(BUILD_DIR)/lab3_task3
106+
107+
# Run all labs (Lab 1 → Lab 2 → Lab 3)
108+
run-all: all
109+
./$(BUILD_DIR)/hello
110+
./$(BUILD_DIR)/calculator
111+
./$(BUILD_DIR)/formats
112+
./$(BUILD_DIR)/lab2_1
113+
./$(BUILD_DIR)/lab2_2
114+
./$(BUILD_DIR)/lab2_3
115+
./$(BUILD_DIR)/lab3_task1
116+
./$(BUILD_DIR)/lab3_task2
117+
./$(BUILD_DIR)/lab3_task3
118+
119+
# -----------------------
120+
# Debug build
121+
# -----------------------
122+
debug:
123+
$(MAKE) clean
124+
$(MAKE) CFLAGS="-std=c11 -Wall -Wextra -Wpedantic -g" all
125+
126+
# -----------------------
127+
# Help
128+
# -----------------------
129+
help:
130+
@echo "Available make targets:"
131+
@echo " make all - Build all labs (with optimization)"
132+
@echo " make lab1 - Build Lab 1 programs"
133+
@echo " make lab2 - Build Lab 2 programs"
134+
@echo " make lab3 - Build Lab 3 programs"
135+
@echo " make run-hello - Run Lab 1 hello program"
136+
@echo " make run-calculator - Run Lab 1 calculator"
137+
@echo " make run-formats - Run Lab 1 format specifiers"
138+
@echo " make run-lab2 - Run all Lab 2 programs"
139+
@echo " make run-lab3 - Run all Lab 3 programs"
140+
@echo " make run-all - Run all labs (1, 2, and 3)"
141+
@echo " make debug - Rebuild all with debugging (-g)"
142+
@echo " make clean - Remove build artifacts"
143+
144+
# -----------------------
145+
# Cleanup
146+
# -----------------------
64147
clean:
65148
rm -rf $(BUILD_DIR)/*.o $(PROGRAMS)

0 commit comments

Comments
 (0)