-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
46 lines (33 loc) · 821 Bytes
/
Makefile
File metadata and controls
46 lines (33 loc) · 821 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
42
43
44
45
46
STATIC=libsll.a
SHARED=libsll.so
TEST=testing
SRC=./src
COMP=./comp
BIN=./bin
CC=gcc
CFLAGS=-std=c17 -Wall -Wextra -pedantic -pedantic-errors
CFLAGS_RELEASE=-O2
CFLAGS_DEBUG=-g -O0
FILES=./src/sll.c
OBJECTS=$(patsubst $(SRC)/%,$(COMP)/%,$(patsubst %.c,%.o,$(FILES)))
DEPENDS=$(patsubst $(SRC)/%,$(COMP)/%,$(patsubst %.c,%.d,$(FILES)))
DEBUG ?= 0
.PHONY: all clean
all: static shared
test: static
$(CC) $(SRC)/test.c $(BIN)/$(STATIC) -o $(BIN)/$(TEST)
static: $(OBJECTS)
ar rcs $(BIN)/$(STATIC) $<
shared: $(OBJECTS)
$(CC) $^ -fPIC -shared -o $(BIN)/$(SHARED)
-include $(DEPENDS)
$(COMP)/%.o: $(SRC)/%.c Makefile
ifeq ($(DEBUG),0)
$(CC) -MMD -MP -c $< -o $@ $(CFLAGS) $(CFLAGS_RELEASE)
endif
ifeq ($(DEBUG),1)
$(CC) -MMD -MP -c $< -o $@ $(CFLAGS) $(CFLAGS_DEBUG)
endif
clean:
@rm $(COMP)/*
@rm $(BIN)/*