-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmakefile
More file actions
41 lines (31 loc) · 977 Bytes
/
Copy pathmakefile
File metadata and controls
41 lines (31 loc) · 977 Bytes
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
CC := gcc
SDIR := ./src
IDIR := $(SDIR)/include
CFLAGS := -march='native' -std=gnu11 -pedantic -I$(IDIR) -Wall
LIBS := -lpthread
ODIR := $(SDIR)/obj
ifeq ($(MAKECMDGOALS),$(filter $(MAKECMDGOALS),release sleepsort))
CFLAGS := $(CFLAGS) -O3
else ifeq ($(MAKECMDGOALS),$(filter $(MAKECMDGOALS),debug sleepsort-debug))
CFLAGS := $(CFLAGS) -Og -g -pg
ODIR := $(SDIR)/obj/debug
endif
DEPS := $(wildcard $(IDIR)/*.h)
_OBJ := $(patsubst %.c, %.o, $(notdir $(wildcard $(SDIR)/*.c)))
OBJ := $(patsubst %, $(ODIR)/%, $(_OBJ))
$(ODIR)/%.o: $(SDIR)/%.c $(DEPS)
@if [ ! -d "$(ODIR)" ]; then \
mkdir -p $(ODIR); \
fi;
$(CC) $(CFLAGS) -c -o $@ $<
.PHONY: release debug cleanobj cleanall
release: sleepsort
debug: sleepsort-debug
sleepsort: $(OBJ)
$(CC) $(CFLAGS) -o $@ $^ $(LIBS)
sleepsort-debug: $(OBJ)
$(CC) $(CFLAGS) -o $@ $^ $(LIBS)
cleanobj:
rm -f $(ODIR)/*.o $(ODIR)/debug/*.o *~ core $(IDIR)/*~
cleanall: cleanobj
rm -f sleepsort sleepsort-debug