-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
39 lines (28 loc) · 849 Bytes
/
Makefile
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
TARGET ?= dye
INCLUDE_DIR := ./include
SOURCE_DIR := ./src
BUILD_DIR := ./build
SOURCES := $(SOURCE_DIR)/dye.c
CC ?= gcc
CCFLAGS := -c -I"$(INCLUDE_DIR)" -Wall -Wextra -static -std=gnu99
AR := ar
ARFLAGS := rcs
MD := mkdir
MDFLAGS := -p
RM := rm
RMFLAGS := -rf
.PHONY: all
all: release debug
.PHONY: release
release:
$(MD) $(MDFLAGS) "$(BUILD_DIR)/$@"
$(CC) $(CCFLAGS) -D"NDEBUG" -O3 -o "$(BUILD_DIR)/$@/dye.o" $(UCCFLAGS) $(SOURCES)
$(AR) $(ARFLAGS) $(UARFLAGS) "$(BUILD_DIR)/$@/lib$(TARGET).a" "$(BUILD_DIR)/$@/dye.o"
.PHONY: debug
debug:
$(MD) $(MDFLAGS) "$(BUILD_DIR)/$@"
$(CC) $(CCFLAGS) -D"DEBUG" -D"_DEBUG" -g -Og -o "$(BUILD_DIR)/$@/dye.o" $(UCCFLAGS) $(SOURCES)
$(AR) $(ARFLAGS) $(UARFLAGS) "$(BUILD_DIR)/$@/lib$(TARGET).a" "$(BUILD_DIR)/$@/dye.o"
.PHONY: clean
clean:
$(RM) $(RMFLAGS) $(BUILD_DIR)