-
Notifications
You must be signed in to change notification settings - Fork 0
/
Makefile
64 lines (48 loc) · 1.54 KB
/
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
CC = gcc
LD= gcc
CFLAGS = -Wall -std=gnu11
LIB = -llua -lncursesw -lm -lmenu
INC = -Isrc/
CFLAGS_DEBUG = $(CFLAGS) -g
LIB_DEBUG = $(LIB)
LIBDIR_DEBUG = $(LIBDIR)
INC_DEBUG = $(INC)
OBJDIR_DEBUG = obj/Debug
OUT_DEBUG = bin/Debug/thea
CFLAGS_RELEASE = $(CFLAGS) -O2 -march=native
LIB_RELEASE = $(LIB)
LIBDIR_RELEASE = $(LIBDIR)
INC_RELEASE = $(INC)
OBJDIR_RELEASE = obj/Release
OUT_RELEASE = bin/Release/thea
SOURCES = $(wildcard src/*.c)
OBJ_DEBUG = $(patsubst src/%.c, $(OBJDIR_DEBUG)/%.o, $(SOURCES))
OBJ_RELEASE = $(patsubst src/%.c, $(OBJDIR_RELEASE)/%.o, $(SOURCES))
all: debug release
debug: before_debug $(OBJ_DEBUG) out_debug
release: before_release $(OBJ_RELEASE) out_release
before_debug:
test -d bin/Debug || mkdir -p bin/Debug
test -d obj/Debug || mkdir -p obj/Debug
test -d obj/Debug/utils || mkdir -p obj/Debug/utils
before_release:
test -d bin/Release || mkdir -p bin/Release
test -d obj/Release || mkdir -p obj/Release
test -d obj/Release/utils || mkdir -p obj/Release/utils
clean: clean_debug clean_release
clean_debug:
rm -f $(OBJ_DEBUG) $(OUT_DEBUG)
rm -rf bin/Debug
rm -rf $(OBJDIR_DEBUG)
clean_release:
rm -f $(OBJ_RELEASE) $(OUT_RELEASE)
rm -rf bin/Release
rm -rf $(OBJDIR_RELEASE)
out_debug: $(OBJ_DEBUG)
$(LD) $(LIBDIR_DEBUG) $(OBJ_DEBUG) $(LIB_DEBUG) -o $(OUT_DEBUG)
out_release: $(OBJ_RELEASE)
$(LD) $(LIBDIR_RELEASE) $(OBJ_RELEASE) $(LIB_RELEASE) -o $(OUT_RELEASE)
$(OBJDIR_DEBUG)/%.o: src/%.c
$(CC) $(INC_DEBUG) $(CFLAGS_DEBUG) -c $< -o $@
$(OBJDIR_RELEASE)/%.o: src/%.c
$(CC) $(INC_RELEASE) $(CFLAGS_RELEASE) -c $< -o $@