-
Notifications
You must be signed in to change notification settings - Fork 14
/
Copy pathGNUmakefile
152 lines (108 loc) · 4.59 KB
/
GNUmakefile
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
146
147
148
149
150
151
152
# sub-directory macros
locSRC =./source
locINC =./include
locLIB =./libraries
locBIN =./binaries
# -----------------------------------
# Choices
# "Debug" for debug build, "Release" for release build
build ?=Debug
# "win" for Windows 32-bit, "posix" for POSIX (32-bit for now)
PLATdep ?=posix
# "1" to use v5.$(AS), "0" to not use
USEV5ASM ?=1
# "nasm" for Netwide Assembler, "jwasm" for Japeth Open-Watcomm Assembler
AS =nasm
# "win" for winmain (DirectX), "sdl" for sdlmain (libsdl)
GFX =sdl
# C compiler must be able to accept gcc flags
CC ?=gcc
CXX ?=g++
# END Choices
# -----------------------------------
# -----------------------------------
# Build Flags
nasm_FLAGS =-o $(@) # Netwide Assembler (nasm)
jwasm_FLAGS =-Fo $(@) -c -8 # Micrsoft Macro Assembler (masm)
AFLAGS =$($(AS)_FLAGS) $($(PLATdep)_$(AS)_FLAGS)
CFLAGS =-o $(@) -funsigned-char -m32 -mfpmath=sse -msse -m3dnow -ffast-math $(CC_$(build)) $($(GFX)_CFLAGS) $(Random_Macros) -I $(locINC)
CC_Debug =-ggdb -Wall -Wextra -Wno-unused-variable -Wno-unused-parameter -Wno-unused-but-set-variable
CC_Release =-O3
LDFLAGS =-o $(@) -m32 $($(LNK)_FLAGS) $(LD_$(build))
LD_Debug =-ggdb -Wall -Wextra -Wno-unused-variable -Wno-unused-parameter -Wno-unused-but-set-variable
LD_Release =-O3
LDLIBS =$($(GFX)_LDLIBS)
CCX ?=$(CC)
CXXFLAGS =$(CFLAGS)
OBJSuf =$($(PLATdep)_OBJSuf)
EXESuf =$($(PLATdep)_EXESuf)
# END Build Flags
# -----------------------------------
# -----------------------------------
# Platform
posix_OBJSuf =.elf.o
posix_EXESuf =
posix_nasm_FLAGS =-f elf32
posix_jwasm_FLAGS =-elf
win_OBJSuf =.obj
win_EXESuf =.exe
win_nasm_FLAGS =-f win -DWIN32 --prefix _
win_jwasm_FLAGS =-coff -DWIN32
# END Platform
# -----------------------------------
# -----------------------------------
# Graphics Backend
sdl_CFLAGS =`sdl-config --cflags`
sdl_LDLIBS =`sdl-config --libs`
# END Platform
# -----------------------------------
# -----------------------------------
# Toggle Random Macros
ifeq "$(USEV5ASM)" "1"
if_USEV5ASM =$(locBIN)/v5$(OBJSuf)
endif
Random_Macros =-D USEV5ASM=$(USEV5ASM)
# END Toggle Random Macros
# -----------------------------------
Phony: all
all: voxlap slab6
voxlap: $(locBIN)/simple$(EXESuf) $(locBIN)/game$(EXESuf) $(locBIN)/voxed$(EXESuf) $(locBIN)/kwalk$(EXESuf)
# executable ($(EXESuf)) (meta)targets
simple: $(locBIN)/simple$(EXESuf)
$(locBIN)/simple$(EXESuf): $(locBIN)/simple$(OBJSuf) $(locBIN)/voxlap5$(OBJSuf) $(if_USEV5ASM) $(locBIN)/kplib$(OBJSuf) $(locBIN)/$(GFX)main1$(OBJSuf)
$(CXX) $(LDFLAGS) $^ $(LDLIBS)
game: $(locBIN)/game$(EXESuf)
$(locBIN)/game$(EXESuf): $(locBIN)/game$(OBJSuf) $(locBIN)/voxlap5$(OBJSuf) $(if_USEV5ASM) $(locBIN)/kplib$(OBJSuf) $(locBIN)/$(GFX)main1$(OBJSuf)
$(CXX) $(LDFLAGS) $^ $(LDLIBS)
voxed: $(locBIN)/voxed$(EXESuf)
$(locBIN)/voxed$(EXESuf): $(locBIN)/voxed$(OBJSuf) $(locBIN)/voxlap5$(OBJSuf) $(if_USEV5ASM) $(locBIN)/kplib$(OBJSuf) $(locBIN)/$(GFX)main2$(OBJSuf)
$(CXX) $(LDFLAGS) $^ $(LDLIBS)
kwalk: $(locBIN)/kwalk$(EXESuf)
$(locBIN)/kwalk$(EXESuf): $(locBIN)/kwalk$(OBJSuf) $(locBIN)/voxlap5$(OBJSuf) $(if_USEV5ASM) $(locBIN)/kplib$(OBJSuf) $(locBIN)/$(GFX)main2$(OBJSuf)
$(CXX) $(LDFLAGS) $^ $(LDLIBS)
slab6: $(locBIN)/slab6$(EXESuf)
$(locBIN)/slab6$(EXESuf): $(locBIN)/slab6$(OBJSuf) $(locBIN)/s6$(OBJSuf) $(locBIN)/$(GFX)main2$(OBJSuf)
$(CXX) $(LDFLAGS) $^ $(LDLIBS)
# binary object ($(OBJSuf)) targets
$(locBIN)/%$(OBJSuf): $(locSRC)/%.cpp $(locBIN)
$(CXX) $(CXXFLAGS) -c $<
$(locBIN)/%$(OBJSuf): $(locSRC)/%.c $(locBIN)
$(CC) $(CFLAGS) -c $<
$(locBIN)/%$(OBJSuf): $(locSRC)/%.$(AS) $(locBIN)
$(AS) $(AFLAGS) $<
$(locBIN)/%1$(OBJSuf): $(locSRC)/%.cpp $(locBIN)
$(CXX) $(CXXFLAGS) -c $< -D USEKZ -D ZOOM_TEST
$(locBIN)/%2$(OBJSuf): $(locSRC)/%.cpp $(locBIN)
$(CXX) $(CXXFLAGS) -c $< -D NOSOUND
$(locBIN)/%1$(OBJSuf): $(locSRC)/%.c $(locBIN)
$(CC) $(CFLAGS) -c $< -D USEKZ -D ZOOM_TEST
$(locBIN)/%2$(OBJSuf): $(locSRC)/%.c $(locBIN)
$(CC) $(CFLAGS) -c $< -D NOSOUND
$(locBIN):
mkdir -p $(locBIN)
# Clearn Script
cleanall: clean
rm "$(locBIN)/*"
clean:
rm "$(locBIN)/*$(OBJSuf)"
rm "$(locBIN)/*$(EXESuf)"