-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathmakefile_linux
More file actions
145 lines (129 loc) · 2.63 KB
/
makefile_linux
File metadata and controls
145 lines (129 loc) · 2.63 KB
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
SRC=src
BIN=bin
OBJ=obj
SOURCE_FILES = \
cd_sdl.c \
chase.c \
cl_demo.c \
cl_input.c \
cl_main.c \
cl_parse.c \
cl_tent.c \
cmd.c \
common.c \
console.c \
crc.c \
cvar.c \
d_edge.c \
d_fill.c \
d_init.c \
d_modech.c \
d_part.c \
d_polyse.c \
d_scan.c \
d_sky.c \
d_sprite.c \
d_surf.c \
d_vars.c \
d_zpoint.c \
draw.c \
host.c \
host_cmd.c \
keys.c \
mathlib.c \
menu.c \
model.c \
net_bsd.c \
net_dgrm.c \
net_loop.c \
net_main.c \
net_udp.c \
net_vcr.c \
net_wso.c \
nonintel.c \
pr_cmds.c \
pr_edict.c \
pr_exec.c \
r_aclip.c \
r_alias.c \
r_bsp.c \
r_draw.c \
r_edge.c \
r_efrag.c \
r_light.c \
r_main.c \
r_misc.c \
r_part.c \
r_sky.c \
r_sprite.c \
r_surf.c \
r_vars.c \
sbar.c \
screen.c \
snd_dma.c \
snd_mem.c \
snd_mix.c \
snd_sdl.c \
sv_main.c \
sv_move.c \
sv_phys.c \
sv_user.c \
sys_sdl.c \
vid_sdl.c \
view.c \
wad.c \
world.c \
zone.c \
# tool macros
CC := gcc
INCLUDES := -I/usr/include/SDL
CCFLAG := -ffast-math -funroll-loops -fomit-frame-pointer -fexpensive-optimizations -Wall -Wextra -O2 -DSDL -D__linux__ -D_GNU_SOURCE=1 -D_REENTRANT $(INCLUDES)
DBGFLAG := -g
CCOBJFLAG := $(CCFLAG) -c
LDFLAGS := -lm -lSDL -lpthread
# path macros
BIN_PATH := bin
OBJ_PATH := obj
SRC_PATH := src
DBG_PATH := debug
# compile macros
TARGET_NAME := rgquake
TARGET := $(BIN_PATH)/$(TARGET_NAME)
TARGET_DEBUG := $(DBG_PATH)/$(TARGET_NAME)
MAIN_SRC := # FILL: src file contains `main()`
# src files & obj files
SRC := $(addprefix $(SRC_PATH)/, $(SOURCE_FILES))
OBJ := $(addprefix $(OBJ_PATH)/, $(addsuffix .o, $(notdir $(basename $(SRC)))))
OBJ_DEBUG := $(addprefix $(DBG_PATH)/, $(addsuffix .o, $(notdir $(basename $(SRC)))))
LINKCMD := $(CC) -o $(TARGET) $(OBJ) $(LDFLAGS)
LINKCMD_DEBUG := $(CC) -o $(TARGET_DEBUG) $(OBJ_DEBUG) $(LDFLAGS)
# clean files list
DISTCLEAN_LIST := $(OBJ) \
$(OBJ_DEBUG)
CLEAN_LIST := $(TARGET) \
$(TARGET_DEBUG) \
$(DISTCLEAN_LIST)
# default rule
default: all
# non-phony targets
$(TARGET): $(OBJ)
$(LINKCMD)
$(OBJ_PATH)/%.o: $(SRC_PATH)/%.c*
$(CC) $(CCOBJFLAG) -o $@ $<
$(DBG_PATH)/%.o: $(SRC_PATH)/%.c*
$(CC) $(CCOBJFLAG) $(DBGFLAG) -o $@ $<
$(TARGET_DEBUG): $(OBJ_DEBUG)
$(LINKCMD_DEBUG) $(DBGFLG)
# phony rules
.PHONY: all
all: $(TARGET)
.PHONY: debug
debug: $(TARGET_DEBUG)
.PHONY: clean
clean:
@echo CLEAN $(CLEAN_LIST)
@rm -f $(CLEAN_LIST)
.PHONY: distclean
distclean:
@echo CLEAN $(DISTCLEAN_LIST)
@rm -f $(DISTCLEAN_LIST)