1 contributor
34 lines888 bytes
Newer
Older
-
+
commited
{line.log.rev}
on
9 months ago
10
1
# Basic Makefile for a C program with multiple source files and header dependencies
2
3
CC = gcc
Yesterday
4
CDFLAGS = -Wall -Wextra -std=c17 -I include
5
CFLAGS = $(CDFLAGS) -g -O0 -MMD -MP
6
BUILD = build
9 months ago
7
EXAMPLES_SRC = $(wildcard examples/*.c)
Yesterday
8
EXAMPLES_OBJ = $(patsubst %.c, $(BUILD)/%.o, $(EXAMPLES_SRC))
9 months ago
9
EXAMPLES = $(patsubst examples/%.c, %, $(wildcard examples/*.c))
10
LIB_SRC = $(wildcard coroutine/*.c)
Yesterday
11
LIB_OBJ = $(patsubst %.c, $(BUILD)/%.o, $(LIB_SRC))
9 months ago
12
OBJ = $(EXAMPLES_OBJ) $(LIB_OBJ)
9 months ago
10
13
DEP = $(OBJ:.o=.d)
14
Yesterday
15
# Have $(OBJ) as a dependenacy for $(ALL) to avoid them being treated as intermediates which are deleted after build
16
all: $(EXAMPLES) $(OBJ)
9 months ago
10
17
Yesterday
18
build:
19
mkdir $(BUILD)
20
21
%: $(BUILD)/examples/%.o $(LIB_OBJ)
9 months ago
10
22
$(CC) $(CFLAGS) -o $@ $^
23
Yesterday
24
$(BUILD)/%.o: %.c build
25
$(CC) $(CFLAGS) -c $< -o $@ -MF $(@:.o=.d)
9 months ago
10
26
27
-include $(DEP)
28
29
clean:
Yesterday
30
echo Doing clean
9 months ago
31
rm -f $(OBJ) $(DEP) $(EXAMPLES)
9 months ago
10
32
33
.PHONY: all clean
34