-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathmakefile
More file actions
209 lines (165 loc) · 5.01 KB
/
makefile
File metadata and controls
209 lines (165 loc) · 5.01 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
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
# Console command(s) for compiling on Cygwin/MinGW:
# Example Cygwin: make HOST=cygwin
# http://www.xake.dk/target/tools.html
MODNAME = podbot_mm
SRCFILES = bot.cpp bot_chat.cpp bot_client.cpp bot_combat.cpp bot_globals.cpp \
bot_sounds.cpp compress.cpp dll.cpp engine.cpp util.cpp bot_navigate.cpp waypoint.cpp
RESFILE = podbot_mm.rc
EXTRA_LIBS_LINUX =
EXTRA_LIBS_WIN32 =
EXTRA_LIBDIRS_LINUX = -Lextra/lib_linux
EXTRA_LIBDIRS_WIN32 = -Lextra/lib_win32
#EXTRA_FLAGS = -Dstrcmpi=strcasecmp
SDKTOP=../hlsdk-2.3-p4
SDKSRC=$(SDKTOP)/multiplayer
METADIR=../metamod-p/metamod
SRCDIR=.
OBJDIR_LINUX=obj.linux
OBJDIR_WIN32=obj.win32
ifeq "$(shell uname | cut -d _ -f1)" "CYGWIN"
HOST=cygwin
endif
#for linux platform - need to start it so for cygwin - to generate win32 dll under linux
MCPU=-march
ifdef ComSpec
ifeq "$(HOST)" "cygwin"
OS=LINUX
# MCPU=-mcpu
MCPU=-mtune
PATH_WIN=/usr/local/cross-tools/i386-mingw32msvc/bin
CLEAN=clean_linux
else
OS=WIN32
MCPU=-mtune
PATH_WIN=/mingw/bin
CLEAN=clean_win32
endif
else
ifdef COMSPEC
ifeq "$(HOST)" "cygwin"
OS=LINUX
# MCPU=-mcpu
MCPU=-mtune
PATH_WIN=/usr/local/cross-tools/i386-mingw32msvc/bin
CLEAN=clean_linux
else
OS=WIN32
MCPU=-mtune
PATH_WIN=/mingw/bin
CLEAN=clean_msys_w32
endif
else
OS=LINUX
PATH_WIN=/usr/local/cross-tools/i386-mingw32msvc/bin
CLEAN=clean_linux
# MCPU=-mcpu
MCPU=-mtune
endif
endif
ifeq "$(HOST)" "cygwin"
ifeq "$(ARCH)" "amd64"
CC_LINUX=g++-linux-x86_64
else
CC_LINUX=g++-linux-4.1
# CC_LINUX=g++-linux
endif
else
ifeq "$(ARCH)" "amd64"
CC_LINUX=g++-4.8-x86_64
else
CC_LINUX=g++-4.8
endif
endif
ifeq "$(OS)" "LINUX"
INSTALL=install -m 644
LD_WINDLL= PATH=$(PATH_WIN) $(PATH_WIN)/dllwrap
DEFAULT=linux
# CLEAN=clean_linux
else # WIN32
INSTALL=cp
CC_WIN32=g++-4.8
LD_WINDLL= dllwrap
DEFAULT=win32
# CLEAN=clean_win32
endif
RES_WIN32=windres
# Just call everything i386 unless its a 64bit binary!
ifeq "$(ARCH)" "amd64"
LIBFILE_LINUX = $(MODNAME)_amd64.so
else
LIBFILE_LINUX = $(MODNAME).so
endif
LIBFILE_WIN32 = $(MODNAME).dll
TARGET_LINUX = $(OBJDIR_LINUX)/$(LIBFILE_LINUX)
TARGET_WIN32 = $(OBJDIR_WIN32)/$(LIBFILE_WIN32)
FILES_ALL = *.cpp *.h [A-Z]* *.rc
ifeq "$(OS)" "LINUX"
# ASRCFILES := $(shell ls -t $(SRCFILES))
else
# ASRCFILES := $(shell dir /b)
endif
OBJ_LINUX := $(SRCFILES:%.cpp=$(OBJDIR_LINUX)/%.o)
OBJ_WIN32 := $(SRCFILES:%.cpp=$(OBJDIR_WIN32)/%.o)
RES_OBJ_WIN32 := $(RESFILE:%.rc=$(OBJDIR_WIN32)/%.o)
# optimisation level; overridden for certain problematic files
CCO = -w -O2 -fomit-frame-pointer -s -pipe -mmmx -msse -msse2 -mfpmath=sse
#use this one for debug
#CCO = -ggdb
# architecture tuning by arch type
ifeq "$(ARCH)" "amd64"
# CCOPT_ARCH = -D__amd64__=1
CCOPT_ARCH =
else
CCOPT_ARCH = -m32 -march=i686 $(MCPU)=generic
endif
BASEFLAGS = -Dstricmp=strcasecmp -Dstrcmpi=strcasecmp
#BASEFLAGS =
CCOPT = $(CCO) $(CCOPT_ARCH) -fno-exceptions -fno-rtti -DNDEBUG
#CCOPT = $(CCO) $(CCOPT_ARCH) -DNDEBUG -D_DEBUG
INCLUDEDIRS= -I$(SRCDIR) -I$(METADIR) -I$(SDKSRC)/engine -I$(SDKSRC)/common -I$(SDKSRC)/pm_shared -I$(SDKSRC)/dlls -I$(SDKSRC) $(EXTRA_INCLUDEDIRS)
CFLAGS=$(BASEFLAGS) -Wall -Wno-unknown-pragmas
#CFLAGS=$(BASEFLAGS)
ODEF = -DOPT_TYPE=\"optimized\"
#ODEF =
CFLAGS:=$(CCOPT) $(CFLAGS) $(ODEF)
DO_CC_LINUX=$(CC_LINUX) $(CFLAGS) -fPIC $(INCLUDEDIRS) -DLINUX -o $@ -c $<
#DO_CC_LINUX=$(CC_LINUX) $(CFLAGS) -fPIC $(INCLUDEDIRS) -DLINUX -D__linux__=1 -o $@ -c $<
DO_CC_WIN32=$(CC_WIN32) $(CFLAGS) $(INCLUDEDIRS) -DWIN32 -o $@ -c $<
DO_RES_WIN32=$(RES_WIN32) -I$(SRCDIR) -I$(METADIR) -i $< -O coff -o $@
#LINK_LINUX=$(CC_LINUX) $(CFLAGS) -shared -ldl -lm -static-libgcc $(OBJ_LINUX) $(EXTRA_LIBDIRS_LINUX) $(EXTRA_LIBS_LINUX) -s -o $@
LINK_LINUX=$(CC_LINUX) $(CFLAGS) -shared -ldl -lm -static-libgcc -L. $(OBJ_LINUX) $(EXTRA_LIBDIRS_LINUX) $(EXTRA_LIBS_LINUX) -s -o $@
LINK_WIN32=$(CC_WIN32) -mdll -Xlinker --add-stdcall-alias $(OBJ_WIN32) $(RES_OBJ_WIN32) $(EXTRA_LIBDIRS_WIN32) $(EXTRA_LIBS_WIN32) -s -o $@
#for debug use 2 below
#LINK_LINUX=$(CC_LINUX) $(CFLAGS) -shared -ldl -lm -static-libgcc $(OBJ_LINUX) $(EXTRA_LIBDIRS_LINUX) $(EXTRA_LIBS_LINUX) -o $@
#LINK_WIN32=$(CC_WIN32) -mdll -Xlinker --add-stdcall-alias $(OBJ_WIN32) $(RES_OBJ_WIN32) $(EXTRA_LIBDIRS_WIN32) $(EXTRA_LIBS_WIN32) -o $@
$(OBJDIR_LINUX)/%.o: $(SRCDIR)/%.cpp
$(DO_CC_LINUX)
$(OBJDIR_WIN32)/%.o: $(SRCDIR)/%.cpp
$(DO_CC_WIN32)
# compiling windows resource file
$(OBJDIR_WIN32)/%.o: $(SRCDIR)/%.rc $(INFOFILES)
$(DO_RES_WIN)
# compiling windows resource file
$(OBJDIR_WIN32)/%.o: $(SRCDIR)/%.rc
$(DO_RES_WIN32)
default: $(DEFAULT)
$(TARGET_LINUX): $(OBJDIR_LINUX) $(OBJ_LINUX)
$(LINK_LINUX)
$(TARGET_WIN32): $(OBJDIR_WIN32) $(OBJ_WIN32) $(RES_OBJ_WIN32)
$(LINK_WIN32)
$(OBJDIR_LINUX):
mkdir $@
$(OBJDIR_WIN32):
mkdir $@
win32: $(TARGET_WIN32)
linux: $(TARGET_LINUX)
clean: $(CLEAN)
clean_linux:
test -n "$(OBJDIR_LINUX)"
-rm -f $(OBJDIR_LINUX)/*.o
clean_win32:
-if exist $(OBJDIR_WIN32)\*.o del /q $(OBJDIR_WIN32)\*.o
clean_msys_w32:
test -n "$(OBJDIR_WIN32)"
-rm -f $(OBJDIR_WIN32)/*.o
clean_both: clean_linux clean_win32