Guest User

Untitled

a guest
Apr 13th, 2018
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Make 26.30 KB | None | 0 0
  1. ###########################################################
  2. # Variables
  3. ###########################################################
  4.  
  5. # do a debug build?
  6. DEBUG_BUILD?=YES
  7.  
  8. # use mingw and build Windows binaries?
  9. USE_MINGW?=NO
  10.  
  11. # client and dedicated server binaries
  12. BUILD_CLIENT?=YES
  13. BUILD_SERVER?=YES
  14.  
  15. # engine modules
  16. BUILD_IRC?=YES
  17. BUILD_SND_QF?=YES
  18. BUILD_SND_OPENAL?=YES
  19.  
  20. # game modules
  21. BUILD_CGAME?=YES
  22. BUILD_GAME?=YES
  23. BUILD_UI?=YES
  24.  
  25. # Warsow TV
  26. BUILD_TV_SERVER?=YES
  27.  
  28. ###########################################################
  29.  
  30. ifeq ($(USE_MINGW),YES)
  31. ARCH=x86
  32. SHARED_LIBRARY_EXTENSION=dll
  33.  
  34. CC=i586-mingw32msvc-gcc
  35. LD=i586-mingw32msvc-gcc
  36. else
  37. CC?=gcc
  38. LD=gcc
  39.  
  40. # this nice line comes from the linux kernel makefile
  41. BASE_ARCH:=$(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc/ -e s/sparc64/sparc/ -e s/arm.*/arm/ -e s/sa110/arm/ -e s/alpha/axp/)
  42. OS=$(shell uname)
  43.  
  44. ifeq ($(OS),FreeBSD)
  45. ARCH=freebsd_$(BASE_ARCH)
  46. else
  47. ARCH=$(BASE_ARCH)
  48. endif
  49.  
  50. SHARED_LIBRARY_EXTENSION=so
  51. endif
  52.  
  53. BUILDDIR=build$(ARCH)
  54. BINDIR=release
  55.  
  56. DEPENDFILE_CLIENT=$(BUILDDIR)/client/Makefile.d
  57. DEPENDFILE_OPENAL=$(BUILDDIR)/openal/Makefile.d
  58. DEPENDFILE_QF=$(BUILDDIR)/qf/Makefile.d
  59. DEPENDFILE_DED=$(BUILDDIR)/ded/Makefile.d
  60. DEPENDFILE_CGAME=$(BUILDDIR)/cgame/Makefile.d
  61. DEPENDFILE_GAME=$(BUILDDIR)/game/Makefile.d
  62. DEPENDFILE_UI=$(BUILDDIR)/ui/Makefile.d
  63. DEPENDFILE_IRC=$(BUILDDIR)/irc/Makefile.d
  64. DEPENDFILE_TV_SERVER=$(BUILDDIR)/tv_server/Makefile.d
  65. DEPENDFILE_NULL=$(BUILDDIR)/null/Makefile.d
  66.  
  67. BUILDDIRS=$(BUILDDIR)/client $(BUILDDIR)/ded $(BUILDDIR)/cgame $(BUILDDIR)/game $(BUILDDIR)/ui $(BUILDDIR)/openal $(BUILDDIR)/qf $(BUILDDIR)/irc $(BUILDDIR)/tv_server
  68.  
  69. ifeq ($(USE_MINGW),YES)
  70. CFLAGS_COMMON=$(CFLAGS) -MD -I. -Iwin32/include -D_M_IX86 -D__WIN32 -D__USE_LARGEFILE -D__USE_LARGEFILE64 -mwindows -Wall -Wno-unknown-pragmas
  71. CFLAGS_RELEASE=-O2 -fno-strict-aliasing -ffast-math -funroll-loops -DNDEBUG
  72. CFLAGS_DEBUG=-O0 -ggdb -D_DEBUG
  73. ifeq ($(DEBUG_BUILD),YES)
  74. CFLAGS_COMMON+=$(CFLAGS_DEBUG)
  75. else
  76. CFLAGS_COMMON+=$(CFLAGS_RELEASE)
  77. endif
  78.  
  79. CFLAGS_CLIENT=-I../dxsdk/include -DCURL_STATICLIB
  80. CFLAGS_DED=-DDEDICATED_ONLY -DCURL_STATICLIB
  81. CFLAGS_MODULE=-DPIC
  82. CFLAGS_TV_SERVER=-DDEDICATED_ONLY -DTV_SERVER_ONLY -DTV_MODULE_HARD_LINKED
  83.  
  84. LIBDIR=win32/$(ARCH)/lib/mingw
  85.  
  86. LDFLAGS_COMMON=-L$(LIBDIR) -lwsock32 -lwinmm -lzstat
  87.  
  88. LDFLAGS_CLIENT=-lcurlstat -lws2_32 -ljpegstat -lgdi32 -L../dxsdk/lib/ -lddraw -ldinput -ldxguid
  89. LDFLAGS_DED=-lcurlstat
  90. LDFLAGS_MODULE=-shared
  91. LDFLAGS_TV_SERVER=
  92.  
  93. # openal
  94. ifeq ($(BUILD_SND_OPENAL),YES)
  95. CFLAGS_OPENAL=-I../al11sdk/include
  96. LDFLAGS_OPENAL=-lvorbisfilestat -lvorbisstat -loggstat -L../dxsdk/lib/ -ldsound
  97. endif
  98.  
  99. ifeq ($(BUILD_SND_QF),YES)
  100. CFLAGS_DSOUND=-I../dxsdk/include
  101. LDFLAGS_QF=-lvorbisfilestat -lvorbisstat -loggstat
  102. endif
  103.  
  104. CLIENT_EXE=nosferatu_$(ARCH).exe
  105. SERVER_EXE=nos_server_$(ARCH).exe
  106. TV_SERVER_EXE=nostv_server_$(ARCH).exe
  107. else # USE_MINGW
  108. LOCALBASE?=/usr/local
  109. X11BASE?=/usr/X11R6
  110.  
  111. CFLAGS_COMMON=$(CFLAGS) -I. -I$(LOCALBASE)/include -I$(X11BASE)/include -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -Wall
  112. CFLAGS_RELEASE=-O2 -fno-strict-aliasing -ffast-math -funroll-loops -DNDEBUG
  113. CFLAGS_DEBUG=-O0 -ggdb -D_DEBUG
  114. ifeq ($(DEBUG_BUILD),YES)
  115. CFLAGS_COMMON+=$(CFLAGS_DEBUG)
  116. else
  117. CFLAGS_COMMON+=$(CFLAGS_RELEASE)
  118. endif
  119.  
  120. CFLAGS_CLIENT=$(shell curl-config --cflags)
  121. CFLAGS_DED=-DDEDICATED_ONLY -DC_ONLY $(shell curl-config --cflags)
  122. CFLAGS_MODULE=-DPIC -fPIC
  123. CFLAGS_TV_SERVER=-DDEDICATED_ONLY -DTV_SERVER_ONLY -DC_ONLY -DTV_MODULE_HARD_LINKED
  124.  
  125. ifeq ($(OS),FreeBSD)
  126. LDFLAGS_COMMON=-L/usr/local/lib -lm
  127. else
  128. LDFLAGS_COMMON=-L/usr/local/lib -ldl -lm
  129. endif
  130.  
  131. ifeq ($(ARCH),x86_64)
  132. LIB=lib64
  133. else
  134. LIB=lib
  135. endif
  136.  
  137. LDFLAGS_CLIENT=-ljpeg -lz -L$(X11BASE)/$(LIB) -lX11 -lXext -lXxf86dga -lXxf86vm -lXinerama $(shell curl-config --libs)
  138. LDFLAGS_DED=-lz $(shell curl-config --libs)
  139. LDFLAGS_MODULE=-shared
  140. LDFLAGS_TV_SERVER=-lz
  141.  
  142. # openal
  143. ifeq ($(BUILD_SND_OPENAL),YES)
  144. OPENAL_CONFIG?=pkg-config
  145.  
  146. CFLAGS_OPENAL=$(shell $(OPENAL_CONFIG) --cflags openal)
  147. LDFLAGS_OPENAL=-lvorbisfile
  148. endif
  149.  
  150. # sdl
  151. ifeq ($(BUILD_SND_QF),YES)
  152. ifeq ($(OS),FreeBSD)
  153. SDL_CONFIG?=sdl11-config
  154. else
  155. SDL_CONFIG?=sdl-config
  156. endif
  157.  
  158. CFLAGS_SDL=$(shell $(SDL_CONFIG) --cflags)
  159. LDFLAGS_QF=$(shell $(SDL_CONFIG) --libs) -lvorbisfile
  160. endif # BUILD_SND_QF
  161.  
  162. CLIENT_EXE=nosferatu.$(ARCH)
  163. SERVER_EXE=nos_server.$(ARCH)
  164. TV_SERVER_EXE=nostv_server.$(ARCH)
  165. endif # USE_MINGW
  166.  
  167. # Mac support, hacking this in at the end where it is easier than adding more if statements throughout
  168. ifeq ($(OS),Darwin)
  169. ARCH=mac
  170. SHARED_LIBRARY_EXTENSION=dylib
  171. LOCALBASE?=/usr
  172. CFLAGS_COMMON=-arch ppc -arch i386 -I. -I$(LOCALBASE)/include -Wall -isysroot /Developer/SDKs/MacOSX10.4u.sdk -mmacosx-version-min=10.4
  173. CFLAGS_RELEASE=-O2 -fno-strict-aliasing -ffast-math -funroll-loops -DNDEBUG
  174. CFLAGS_DEBUG=-O0 -ggdb -D_DEBUG
  175. ifeq ($(DEBUG_BUILD),YES)
  176. CFLAGS_COMMON+=$(CFLAGS_DEBUG)
  177. else
  178. CFLAGS_COMMON+=$(CFLAGS_RELEASE)
  179. endif
  180. CFLAGS_OPENAL=-I/System/Library/Frameworks/OpenAL.framework/Headers
  181. CFLAGS_QF=-I/Library/Frameworks/SDL.framework/Headers
  182. CFLAGS_SDL=-I/Library/Frameworks/SDL.framework/Headers
  183. CFLAGS_CLIENT=-std=gnu99 -I/Library/Frameworks/SDL.framework/Headers -I/Library/Frameworks/libjpeg.framework/Headers -I/System/Library/Frameworks/OpenAL.framework/Headers
  184. CFLAGS_DED=-DDEDICATED_ONLY -DC_ONLY
  185. LDFLAGS_CLIENT=-lz -lcurl -framework libjpeg -framework SDL -framework OpenGL -I/Library/Frameworks/SDL.framework/Headers
  186. LDFLAGS_MODULE=-bundle
  187. LDFLAGS_COMMON=-arch ppc -arch i386 -framework AppKit -mmacosx-version-min=10.4 -isysroot /Developer/SDKs/MacOSX10.4u.sdk
  188. LDFLAGS_DED=-lz -lcurl
  189. LDFLAGS_QF=-framework SDL -framework Ogg -framework Vorbis
  190. LDFLAGS_OPENAL=-framework OpenAL -framework Ogg -framework Vorbis
  191. endif
  192.  
  193. ######################################################################################################
  194. # Helper functions
  195. ######################################################################################################
  196. DO_CC=echo "  > Compiling $<" && \
  197.     $(CC) $(CFLAGS_COMMON) -c $< -o $@
  198.  
  199. DO_CC_CLIENT=$(DO_CC) $(CFLAGS_CLIENT)
  200. DO_CC_DED=$(DO_CC) $(CFLAGS_DED)
  201. DO_CC_MODULE=$(DO_CC) $(CFLAGS_MODULE)
  202. DO_CC_TV_SERVER=$(DO_CC) $(CFLAGS_TV_SERVER)
  203.  
  204.  
  205. ######################################################################################################
  206. # Files
  207. ######################################################################################################
  208. #########
  209. # CLIENT
  210. #########
  211. CFILES_CLIENT  = $(wildcard qcommon/*.c)
  212. CFILES_CLIENT += $(wildcard server/*.c)
  213. CFILES_CLIENT += $(wildcard client/*.c)
  214. ifeq ($(USE_MINGW),YES)
  215. CFILES_CLIENT += win32/win_vid.c win32/win_fs.c win32/win_qgl.c win32/win_net.c win32/conproc.c win32/win_glw.c win32/win_input.c win32/win_sys.c win32/win_lib.c
  216. else
  217. ifeq ($(OS),Darwin)
  218. CFILES_CLIENT += $(wildcard mac/*.c)
  219. else
  220. CFILES_CLIENT += unix/unix_input.c unix/unix_glw.c unix/unix_qgl.c
  221. endif
  222. CFILES_CLIENT += unix/unix_fs.c unix/unix_lib.c unix/unix_net.c unix/unix_sys.c unix/unix_vid.c
  223. endif
  224. CFILES_CLIENT += $(wildcard ref_gl/*.c)
  225. CFILES_CLIENT += $(wildcard game/q_*.c)
  226. CFILES_CLIENT += matchmaker/mm_common.c matchmaker/mm_supported.c matchmaker/mm_hash.c
  227. CFILES_CLIENT += null/mm_null.c
  228.  
  229. CFILES_CLIENT_WITHOUT_PATH= $(notdir  $(CFILES_CLIENT))
  230. OFILES_CLIENT=$(CFILES_CLIENT_WITHOUT_PATH:.c=.o)
  231. OBJS_CLIENT = $(addprefix $(BUILDDIR)/client/, $(OFILES_CLIENT) )
  232.  
  233. #########
  234. # OPENAL
  235. #########
  236. CFILES_OPENAL  = $(wildcard snd_openal/*.c)
  237. CFILES_OPENAL += $(wildcard game/q_*.c)
  238.  
  239. CFILES_OPENAL_WITHOUT_PATH= $(notdir  $(CFILES_OPENAL))
  240. OFILES_OPENAL=$(CFILES_OPENAL_WITHOUT_PATH:.c=.o)
  241. OBJS_OPENAL = $(addprefix $(BUILDDIR)/openal/, $(OFILES_OPENAL) )
  242.  
  243. #########
  244. # QF
  245. #########
  246. CFILES_QF  = $(wildcard snd_qf/*.c)
  247. ifeq ($(USE_MINGW),YES)
  248. CFILES_QF += win32/win_snd.c
  249. else
  250. CFILES_QF += unix/unix_snd.c
  251. endif
  252. CFILES_QF += $(wildcard game/q_*.c)
  253.  
  254. CFILES_QF_WITHOUT_PATH= $(notdir  $(CFILES_QF))
  255. OFILES_QF=$(CFILES_QF_WITHOUT_PATH:.c=.o)
  256. OBJS_QF = $(addprefix $(BUILDDIR)/qf/, $(OFILES_QF) )
  257.  
  258. #########
  259. # DED
  260. #########
  261. CFILES_DED  = qcommon/cm_main.c qcommon/cm_trace.c qcommon/patch.c qcommon/common.c qcommon/glob.c qcommon/files.c qcommon/cmd.c qcommon/mem.c qcommon/net.c qcommon/net_chan.c qcommon/msg.c qcommon/cvar.c qcommon/md5.c qcommon/trie.c qcommon/dynvar.c qcommon/irc.c qcommon/library.c qcommon/mlist.c qcommon/webdownload.c qcommon/svnrev.c
  262. CFILES_DED += $(wildcard server/*.c)
  263. CFILES_DED += null/cl_null.c null/mm_null.c
  264. ifeq ($(USE_MINGW),YES)
  265. CFILES_DED += win32/win_fs.c win32/win_net.c win32/conproc.c win32/win_sys.c win32/win_lib.c
  266. else
  267. CFILES_DED += unix/unix_fs.c unix/unix_net.c unix/unix_lib.c unix/unix_sys.c
  268. endif
  269. CFILES_DED += $(wildcard game/q_*.c)
  270. CFILES_DED += matchmaker/mm_common.c matchmaker/mm_supported.c
  271.  
  272. CFILES_DED_WITHOUT_PATH= $(notdir  $(CFILES_DED))
  273. OFILES_DED=$(CFILES_DED_WITHOUT_PATH:.c=.o)
  274. OBJS_DED = $(addprefix $(BUILDDIR)/ded/, $(OFILES_DED) )
  275.  
  276. #########
  277. # CGAME
  278. #########
  279. CFILES_CGAME  = $(wildcard cgame/*.c)
  280. CFILES_CGAME += $(wildcard gameshared/*.c)
  281. CFILES_CGAME += $(wildcard game/q_*.c)
  282.  
  283. CFILES_CGAME_WITHOUT_PATH= $(notdir  $(CFILES_CGAME))
  284. OFILES_CGAME=$(CFILES_CGAME_WITHOUT_PATH:.c=.o)
  285. OBJS_CGAME = $(addprefix $(BUILDDIR)/cgame/, $(OFILES_CGAME) )
  286.  
  287. #########
  288. # GAME
  289. #########
  290. CFILES_GAME  = $(wildcard game/*.c)
  291. CFILES_GAME += $(wildcard game/ai/*.c)
  292. CFILES_GAME += $(wildcard gameshared/*.c)
  293.  
  294. CFILES_GAME_WITHOUT_PATH= $(notdir  $(CFILES_GAME))
  295. OFILES_GAME=$(CFILES_GAME_WITHOUT_PATH:.c=.o)
  296. OBJS_GAME = $(addprefix $(BUILDDIR)/game/, $(OFILES_GAME) )
  297.  
  298. #########
  299. # UI
  300. #########
  301. CFILES_UI  = $(wildcard ui/*.c)
  302. CFILES_UI += $(wildcard gameshared/*.c)
  303. #CFILES_UI += $(wildcard gameshared/gs_weapondefs.c)
  304. #CFILES_UI += $(wildcard gameshared/gs_items.c)
  305. CFILES_UI += $(wildcard game/q_*.c)
  306. CFILES_UI += matchmaker/mm_supported.c
  307.  
  308. CFILES_UI_WITHOUT_PATH= $(notdir  $(CFILES_UI))
  309. OFILES_UI=$(CFILES_UI_WITHOUT_PATH:.c=.o)
  310. OBJS_UI = $(addprefix $(BUILDDIR)/ui/, $(OFILES_UI) )
  311.  
  312. #########
  313. # IRC
  314. #########
  315. CFILES_IRC  = $(wildcard irc/*.c)
  316. CFILES_IRC += $(wildcard game/q_*.c)
  317.  
  318. CFILES_IRC_WITHOUT_PATH= $(notdir  $(CFILES_IRC))
  319. OFILES_IRC=$(CFILES_IRC_WITHOUT_PATH:.c=.o)
  320. OBJS_IRC = $(addprefix $(BUILDDIR)/irc/, $(OFILES_IRC) )
  321.  
  322. #########
  323. # TV SERVER
  324. #########
  325. CFILES_TV_SERVER  = qcommon/cm_main.c qcommon/cm_trace.c qcommon/patch.c qcommon/common.c qcommon/glob.c qcommon/files.c qcommon/cmd.c qcommon/mem.c qcommon/net.c qcommon/net_chan.c qcommon/msg.c qcommon/cvar.c qcommon/md5.c qcommon/trie.c qcommon/dynvar.c qcommon/irc.c qcommon/library.c qcommon/svnrev.c
  326. CFILES_TV_SERVER += $(wildcard tv_server/*.c)
  327. CFILES_TV_SERVER += null/cl_null.c null/mm_null.c
  328. ifeq ($(USE_MINGW),YES)
  329. CFILES_TV_SERVER += win32/win_fs.c win32/win_net.c win32/conproc.c win32/win_sys.c win32/win_lib.c
  330. else
  331. CFILES_TV_SERVER += unix/unix_fs.c unix/unix_net.c unix/unix_sys.c unix/unix_lib.c
  332. endif
  333. CFILES_TV_SERVER += $(wildcard game/q_*.c)
  334. CFILES_TV_SERVER += $(wildcard tv_server/tv_module/*.c)
  335.  
  336. CFILES_TV_SERVER_WITHOUT_PATH= $(notdir  $(CFILES_TV_SERVER))
  337. OFILES_TV_SERVER=$(CFILES_TV_SERVER_WITHOUT_PATH:.c=.o)
  338. OBJS_TV_SERVER = $(addprefix $(BUILDDIR)/tv_server/, $(OFILES_TV_SERVER) )
  339.  
  340. ######################################################################################################
  341. # Building Rules
  342. ######################################################################################################
  343. .PHONY: all \
  344.     client message-client compile-client link-client \
  345.     openal message-openal compile-openal link-openal  \
  346.     qf message-qf compile-qf link-qf  \
  347.     ded message-ded compile-ded link-ded  \
  348.     game message-game compile-game link-game  \
  349.     cgame message-cgame compile-cgame link-cgame  \
  350.     ui message-ui compile-ui link-ui  \
  351.     irc message-irc compile-irc link-irc \
  352.     tv_server message-tv_server compile-tv_server link-tv_server  \
  353.     clean clean-depend clean-client clean-openal clean-qf clean-ded \
  354.     clean-cgame clean-game clean-ui clean-irc clean-game clean-tv_server \
  355.     compile
  356.  
  357. all: client openal qf ded cgame game ui irc tv_server
  358.  
  359. limited_win: client openal qf cgame game ui irc
  360.  
  361. client: $(BUILDDIRS) message-client compile-client link-client start-script-client
  362. openal: $(BUILDDIRS) message-openal compile-openal link-openal
  363. qf: $(BUILDDIRS) message-qf compile-qf link-qf
  364. ded: $(BUILDDIRS) message-ded compile-ded link-ded start-script-ded
  365. cgame: $(BUILDDIRS) message-cgame compile-cgame link-cgame
  366. game: $(BUILDDIRS) message-game compile-game link-game
  367. ui: $(BUILDDIRS) message-ui compile-ui link-ui
  368. irc: $(BUILDDIRS) message-irc compile-irc link-irc
  369. tv_server: $(BUILDDIRS) message-tv_server compile-tv_server link-tv_server start-script-tv_server
  370.  
  371. clean: clean-msg clean-depend clean-client clean-openal clean-qf clean-ded clean-cgame clean-game clean-ui clean-irc clean-tv_server
  372.  
  373. clean-msg:
  374.     @echo "> *********************************************************"
  375.     @echo "> * Cleaning build files"
  376.     @echo "> *********************************************************"
  377. clean-depend:
  378.     @echo "  > Removing depend files" && \
  379.     $(RM) $(DEPENDFILE_CLIENT) $(DEPENDFILE_DED) $(DEPENDFILE_CGAME) $(DEPENDFILE_GAME) $(DEPENDFILE_UI) $(DEPENDFILE_OPENAL) $(DEPENDFILE_TV_SERVER) $(DEPENDFILE_QF) $(DEPENDFILE_IRC)
  380.  
  381. $(BUILDDIRS) $(BINDIR) $(BINDIR)/data $(BINDIR)/libs:
  382.     @mkdir -p $@
  383.  
  384. ifeq ($(BUILD_CLIENT),YES)
  385. message-client:
  386.     @echo "> *********************************************************"
  387.     @echo "> * Building client"
  388.     @echo "> *********************************************************"
  389. compile-client: $(OBJS_CLIENT)
  390. link-client: $(BINDIR) $(BINDIR)/$(CLIENT_EXE)
  391. start-script-client: $(BINDIR) $(BINDIR)/nosferatu
  392. clean-client:
  393.     @echo "  > Removing client objects" && \
  394.     $(RM) $(OBJS_CLIENT)
  395. endif
  396.  
  397. ifeq ($(BUILD_SND_OPENAL),YES)
  398. message-openal:
  399.     @echo "> *********************************************************"
  400.     @echo "> * Building openal"
  401.     @echo "> *********************************************************"
  402. compile-openal: $(OBJS_OPENAL)
  403. link-openal: $(BINDIR)/libs $(BINDIR)/libs/snd_openal_$(ARCH).$(SHARED_LIBRARY_EXTENSION)
  404. clean-openal:
  405.     @echo "  > Removing openal objects" && \
  406.     $(RM) $(OBJS_OPENAL)
  407. endif
  408.  
  409. ifeq ($(BUILD_SND_QF),YES)
  410. message-qf:
  411.     @echo "> *********************************************************"
  412.     @echo "> * Building qf"
  413.     @echo "> *********************************************************"
  414. compile-qf: $(OBJS_QF)
  415. link-qf: $(BINDIR)/libs $(BINDIR)/libs/snd_qf_$(ARCH).$(SHARED_LIBRARY_EXTENSION)
  416. clean-qf:
  417.     @echo "  > Removing qf objects" && \
  418.     $(RM) $(OBJS_QF)
  419. endif
  420.  
  421. ifeq ($(BUILD_SERVER),YES)
  422. message-ded:
  423.     @echo "> *********************************************************"
  424.     @echo "> * Building dedicated server"
  425.     @echo "> *********************************************************"
  426. compile-ded: $(OBJS_DED)
  427. link-ded: $(BINDIR) $(BINDIR)/$(SERVER_EXE)
  428. start-script-ded: $(BINDIR) $(BINDIR)/nos_server
  429. clean-ded:
  430.     @echo "  > Removing dedicated server objects" && \
  431.     $(RM) $(OBJS_DED)
  432. endif
  433.  
  434. ifeq ($(BUILD_CGAME),YES)
  435. message-cgame:
  436.     @echo "> *********************************************************"
  437.     @echo "> * Building cgame"
  438.     @echo "> *********************************************************"
  439. compile-cgame: $(OBJS_CGAME)
  440. link-cgame: $(BINDIR)/data $(BINDIR)/data/cgame_$(ARCH).$(SHARED_LIBRARY_EXTENSION)
  441. clean-cgame:
  442.     @echo "  > Removing cgame objects" && \
  443.     $(RM) $(OBJS_CGAME)
  444. endif
  445.  
  446. ifeq ($(BUILD_GAME),YES)
  447. message-game:
  448.     @echo "> *********************************************************"
  449.     @echo "> * Building game"
  450.     @echo "> *********************************************************"
  451. compile-game: $(OBJS_GAME)
  452. link-game: $(BINDIR)/data $(BINDIR)/data/game_$(ARCH).$(SHARED_LIBRARY_EXTENSION)
  453. clean-game:
  454.     @echo "  > Removing game objects" && \
  455.     $(RM) $(OBJS_GAME)
  456. endif
  457.  
  458. ifeq ($(BUILD_UI),YES)
  459. message-ui:
  460.     @echo "> *********************************************************"
  461.     @echo "> * Building ui"
  462.     @echo "> *********************************************************"
  463. compile-ui: $(OBJS_UI)
  464. link-ui: $(BINDIR)/data $(BINDIR)/data/ui_$(ARCH).$(SHARED_LIBRARY_EXTENSION)
  465. clean-ui:
  466.     @echo "  > Removing ui objects" && \
  467.     $(RM) $(OBJS_UI)
  468. endif
  469.  
  470. ifeq ($(BUILD_IRC),YES)
  471. message-irc:
  472.     @echo "> *********************************************************"
  473.     @echo "> * Building irc"
  474.     @echo "> *********************************************************"
  475. compile-irc: $(OBJS_IRC)
  476. link-irc: $(BINDIR)/libs $(BINDIR)/libs/irc_$(ARCH).$(SHARED_LIBRARY_EXTENSION)
  477. clean-irc:
  478.     @echo "  > Removing irc objects" && \
  479.     $(RM) $(OBJS_IRC)
  480. endif
  481.  
  482. ifeq ($(BUILD_TV_SERVER),YES)
  483. message-tv_server:
  484.     @echo "> *********************************************************"
  485.     @echo "> * Building TV server"
  486.     @echo "> *********************************************************"
  487. compile-tv_server: $(OBJS_TV_SERVER)
  488. link-tv_server: $(BINDIR) $(BINDIR)/$(TV_SERVER_EXE)
  489. start-script-tv_server: $(BINDIR)/nostv_server
  490. clean-tv_server:
  491.     @echo "  > Removing TV server objects" && \
  492.     $(RM) $(OBJS_TV_SERVER)
  493. endif
  494.  
  495. ######################################################################################################
  496. # Linking Rules
  497. ######################################################################################################
  498. ########
  499. # DED
  500. ########
  501. $(BINDIR)/$(SERVER_EXE): $(OBJS_DED)
  502.     @echo "  > Linking $@" && \
  503.     $(LD) -o $@ $^ $(LDFLAGS_COMMON) $(LDFLAGS_DED)
  504.  
  505. #########
  506. # CLIENT
  507. #########
  508. ifeq ($(OS),Darwin)
  509. $(BINDIR)/$(CLIENT_EXE): $(OBJS_CLIENT)
  510.     @echo "  > Linking $@" && \
  511.     $(LD) -o $@ $(OBJS_CLIENT) mac/SDLMain.m $(LDFLAGS_COMMON) $(LDFLAGS_CLIENT)
  512. else
  513. $(BINDIR)/$(CLIENT_EXE): $(OBJS_CLIENT)
  514.     @echo "  > Linking $@" && \
  515.     $(LD) -o $@ $(OBJS_CLIENT) $(LDFLAGS_COMMON) $(LDFLAGS_CLIENT)
  516. endif
  517.  
  518. #########
  519. # OPENAL
  520. #########
  521. $(BINDIR)/libs/snd_openal_$(ARCH).$(SHARED_LIBRARY_EXTENSION): $(OBJS_OPENAL)
  522.     @echo "  > Linking $@" && \
  523.     $(LD) -o $@ $^ $(LDFLAGS_COMMON) $(LDFLAGS_MODULE) $(LDFLAGS_OPENAL)
  524.  
  525. #########
  526. # QF
  527. #########
  528. $(BINDIR)/libs/snd_qf_$(ARCH).$(SHARED_LIBRARY_EXTENSION): $(OBJS_QF)
  529.     @echo "  > Linking $@" && \
  530.     $(LD) -o $@ $^ $(LDFLAGS_COMMON) $(LDFLAGS_MODULE) $(LDFLAGS_QF)
  531.  
  532. ########
  533. # .SO
  534. ########
  535. $(BINDIR)/data/cgame_$(ARCH).$(SHARED_LIBRARY_EXTENSION): $(OBJS_CGAME)
  536.     @echo "  > Linking $@" && \
  537.     $(LD) -o $@ $^ $(LDFLAGS_COMMON) $(LDFLAGS_MODULE)
  538.  
  539. $(BINDIR)/data/game_$(ARCH).$(SHARED_LIBRARY_EXTENSION): $(OBJS_GAME)
  540.     @echo "  > Linking $@" && \
  541.     $(LD) -o $@ $^ $(LDFLAGS_COMMON) $(LDFLAGS_MODULE)
  542.  
  543. $(BINDIR)/data/ui_$(ARCH).$(SHARED_LIBRARY_EXTENSION): $(OBJS_UI)
  544.     @echo "  > Linking $@" && \
  545.     $(LD) -o $@ $^ $(LDFLAGS_COMMON) $(LDFLAGS_MODULE)
  546.  
  547. $(BINDIR)/libs/irc_$(ARCH).$(SHARED_LIBRARY_EXTENSION): $(OBJS_IRC)
  548.     @echo "  > Linking $@" && \
  549.     $(LD) -o $@ $^ $(LDFLAGS_COMMON) $(LDFLAGS_MODULE)
  550.  
  551. ########
  552. # TV
  553. ########
  554. $(BINDIR)/$(TV_SERVER_EXE): $(OBJS_TV_SERVER)
  555.     @echo "  > Linking $@" && \
  556.     $(LD) -o $@ $^ $(LDFLAGS_COMMON) $(LDFLAGS_TV_SERVER)
  557.  
  558. ######################################################################################################
  559. # Meta Rules
  560. ######################################################################################################
  561.  
  562. unix/start_script.sh:
  563.  
  564. ########
  565. # CLIENT
  566. ########
  567. $(BUILDDIR)/client/%.o: qcommon/%.c
  568.     @$(DO_CC_CLIENT)
  569.  
  570. $(BUILDDIR)/client/%.o: server/%.c
  571.     @$(DO_CC_CLIENT)
  572.  
  573. $(BUILDDIR)/client/%.o: client/%.c
  574.     @$(DO_CC_CLIENT)
  575.  
  576. $(BUILDDIR)/client/%.o: ref_gl/%.c
  577.     @$(DO_CC_CLIENT)
  578.  
  579. $(BUILDDIR)/client/%.o: null/%.c
  580.     @$(DO_CC_CLIENT)
  581.  
  582. $(BUILDDIR)/client/%.o: matchmaker/%.c
  583.     @$(DO_CC_CLIENT)
  584.  
  585. ifeq ($(USE_MINGW),YES)
  586. $(BUILDDIR)/client/%.o: win32/%.c
  587.     @$(DO_CC_CLIENT)
  588. else
  589. ifeq ($(OS),Darwin)
  590. $(BUILDDIR)/client/%.o: mac/%.c
  591.     @$(DO_CC_CLIENT)
  592. $(BUILDDIR)/client/%.o: unix/%.c
  593.     @$(DO_CC_CLIENT)
  594. else
  595. $(BUILDDIR)/client/%.o: unix/%.c
  596.     @$(DO_CC_CLIENT)
  597. endif
  598. endif
  599.  
  600. $(BUILDDIR)/client/%.o: game/%.c
  601.     @$(DO_CC_CLIENT)
  602.  
  603. $(BINDIR)/nosferatu: unix/start_script.sh
  604.     @echo "  > Installing client start script" && \
  605.     cp $< $@ && \
  606.     chmod a+x $@
  607.  
  608. ########
  609. # OPENAL
  610. ########
  611. $(BUILDDIR)/openal/%.o: snd_openal/%.c
  612.     @$(DO_CC_MODULE) $(CFLAGS_OPENAL)
  613.  
  614. $(BUILDDIR)/openal/%.o: game/%.c
  615.     @$(DO_CC_MODULE)
  616.  
  617. ########
  618. # QF
  619. ########
  620. $(BUILDDIR)/qf/%.o: snd_qf/%.c
  621.     @$(DO_CC_MODULE) $(CFLAGS_QF)
  622.  
  623. ifeq ($(USE_MINGW),YES)
  624. $(BUILDDIR)/qf/win_snd.o: win32/win_snd.c
  625.     @$(DO_CC_MODULE) $(CFLAGS_DSOUND)
  626. else
  627. $(BUILDDIR)/qf/unix_snd.o: unix/unix_snd.c
  628.     @$(DO_CC_MODULE) $(CFLAGS_SDL)
  629. endif
  630.  
  631. $(BUILDDIR)/qf/%.o: game/%.c
  632.     @$(DO_CC_MODULE)
  633.  
  634.  
  635. ########
  636. # DED
  637. ########
  638. $(BUILDDIR)/ded/%.o: qcommon/%.c
  639.     @$(DO_CC_DED)
  640.  
  641. $(BUILDDIR)/ded/%.o: server/%.c
  642.     @$(DO_CC_DED)
  643.  
  644. ifeq ($(USE_MINGW),YES)
  645. $(BUILDDIR)/ded/%.o: win32/%.c
  646.     @$(DO_CC_DED)
  647. else
  648. $(BUILDDIR)/ded/%.o: unix/%.c
  649.     @$(DO_CC_DED)
  650. endif
  651.  
  652. $(BUILDDIR)/ded/%.o: null/%.c
  653.     @$(DO_CC_DED)
  654.  
  655. $(BUILDDIR)/ded/%.o: game/%.c
  656.     @$(DO_CC_DED)
  657.  
  658. $(BUILDDIR)/ded/%.o: matchmaker/%.c
  659.     @$(DO_CC_DED)
  660.  
  661. $(BINDIR)/nos_server: unix/start_script.sh
  662.     @echo "  > Installing dedicated server start script" && \
  663.     cp $< $@ && \
  664.     chmod a+x $@
  665.  
  666. ########
  667. # CGAME
  668. ########
  669. $(BUILDDIR)/cgame/%.o: cgame/%.c
  670.     @$(DO_CC_MODULE)
  671.  
  672. $(BUILDDIR)/cgame/%.o: gameshared/%.c
  673.     @$(DO_CC_MODULE)
  674.  
  675. $(BUILDDIR)/cgame/%.o: game/%.c
  676.     @$(DO_CC_MODULE)
  677.  
  678. ########
  679. # GAME
  680. ########
  681. $(BUILDDIR)/game/%.o: game/%.c
  682.     @$(DO_CC_MODULE)
  683.  
  684. $(BUILDDIR)/game/%.o: game/ai/%.c
  685.     @$(DO_CC_MODULE)
  686.  
  687. $(BUILDDIR)/game/%.o: gameshared/%.c
  688.     @$(DO_CC_MODULE)
  689.  
  690. ########
  691. # UI
  692. ########
  693. $(BUILDDIR)/ui/%.o: game/%.c
  694.     @$(DO_CC_MODULE)
  695.  
  696. $(BUILDDIR)/ui/%.o: gameshared/%.c
  697.     @$(DO_CC_MODULE)
  698.  
  699. $(BUILDDIR)/ui/%.o: ui/%.c
  700.     @$(DO_CC_MODULE)
  701.  
  702. $(BUILDDIR)/ui/%.o: matchmaker/%.c
  703.     @$(DO_CC_MODULE)
  704.  
  705. ########
  706. # IRC
  707. ########
  708. $(BUILDDIR)/irc/%.o: game/%.c
  709.     @$(DO_CC_MODULE)
  710.  
  711. $(BUILDDIR)/irc/%.o: irc/%.c
  712.     @$(DO_CC_MODULE)
  713.  
  714. ########
  715. # TV SERVER
  716. ########
  717. $(BUILDDIR)/tv_server/%.o: qcommon/%.c
  718.     @$(DO_CC_TV_SERVER)
  719.  
  720. $(BUILDDIR)/tv_server/%.o: client/%.c
  721.     @$(DO_CC_TV_SERVER)
  722.  
  723. $(BUILDDIR)/tv_server/%.o: tv_server/tv_module/%.c
  724.     @$(DO_CC_TV_SERVER)
  725.  
  726. $(BUILDDIR)/tv_server/%.o: tv_server/%.c
  727.     @$(DO_CC_TV_SERVER)
  728.  
  729. ifeq ($(USE_MINGW),YES)
  730. $(BUILDDIR)/tv_server/%.o: win32/%.c
  731.     @$(DO_CC_TV_SERVER)
  732. else
  733. $(BUILDDIR)/tv_server/%.o: unix/%.c
  734.     @$(DO_CC_TV_SERVER)
  735. endif
  736.  
  737. $(BUILDDIR)/tv_server/%.o: null/%.c
  738.     @$(DO_CC_TV_SERVER)
  739.  
  740. $(BUILDDIR)/tv_server/%.o: game/%.c
  741.     @$(DO_CC_TV_SERVER)
  742.  
  743. $(BINDIR)/nostv_server: unix/start_script.sh
  744.     @echo "  > Installing TV server start script" && \
  745.     cp $< $@ && \
  746.     chmod a+x $@
  747.  
  748. ######################################################################################################
  749. # Depends
  750. ######################################################################################################
  751.  
  752. $(DEPENDFILE_CLIENT): $(BUILDDIRS) $(CFILES_CLIENT)
  753.     @makedepend -f - -- $(CFLAGS_COMMON) -- $(CFILES_CLIENT) 2> /dev/null | \
  754.     awk '/^[a-zA-Z_]/{ sub(/^([a-zA-Z_]*\/)+/, "$(BUILDDIR)/client/"); print $$0, "Makefile"; \
  755.         sub(/^.*\:/, "$(DEPENDFILE_CLIENT):"); print $$0, "Makefile" }' > $(DEPENDFILE_CLIENT)
  756.  
  757. $(DEPENDFILE_OPENAL): $(BUILDDIRS) $(CFILES_OPENAL)
  758.     @makedepend -f - -- $(CFLAGS_COMMON) $(CFLAGS_MODULES) $(CFLAGS_OPENAL) -- $(CFILES_OPENAL) 2> /dev/null | \
  759.     awk '/^[a-zA-Z_]/{ sub(/^([a-zA-Z_]*\/)+/, "$(BUILDDIR)/openal/"); print $$0, "Makefile"; \
  760.         sub(/^.*\:/, "$(DEPENDFILE_OPENAL):"); print $$0, "Makefile" }' > $(DEPENDFILE_OPENAL)
  761.  
  762. ifeq ($(USE_MINGW),YES)
  763. $(DEPENDFILE_QF): $(BUILDDIRS) $(CFILES_QF)
  764.     @makedepend -f - -- $(CFLAGS_COMMON) $(CFLAGS_MODULES) -- $(CFILES_QF) 2> /dev/null | \
  765.     awk '/^[a-zA-Z_]/{ sub(/^([a-zA-Z_]*\/)+/, "$(BUILDDIR)/qf/"); print $$0, "Makefile"; \
  766.         sub(/^.*\:/, "$(DEPENDFILE_QF):"); print $$0, "Makefile" }' > $(DEPENDFILE_QF)
  767. else
  768. $(DEPENDFILE_QF): $(BUILDDIRS) $(CFILES_QF)
  769.     @makedepend -f - -- $(CFLAGS_COMMON) $(CFLAGS_MODULES) $(CFLAGS_SDL) -- $(CFILES_QF) 2> /dev/null | \
  770.     awk '/^[a-zA-Z_]/{ sub(/^([a-zA-Z_]*\/)+/, "$(BUILDDIR)/qf/"); print $$0, "Makefile"; \
  771.         sub(/^.*\:/, "$(DEPENDFILE_QF):"); print $$0, "Makefile" }' > $(DEPENDFILE_QF)
  772. endif
  773.  
  774. $(DEPENDFILE_DED): $(BUILDDIRS) $(CFILES_DED)
  775.     @makedepend -f - -- $(CFLAGS_COMMON) $(CFLAGS_DED) -- $(CFILES_DED) 2> /dev/null | \
  776.     awk '/^[a-zA-Z_]/{ sub(/^([a-zA-Z_]*\/)+/, "$(BUILDDIR)/ded/"); print $$0, "Makefile"; \
  777.         sub(/^.*\:/, "$(DEPENDFILE_DED):"); print $$0, "Makefile" }' > $(DEPENDFILE_DED)
  778.  
  779. $(DEPENDFILE_CGAME): $(BUILDDIRS) $(CFILES_CGAME)
  780.     @makedepend -f - -- $(CFLAGS_COMMON) $(CFLAGS_MODULES) -- $(CFILES_CGAME) 2> /dev/null | \
  781.     awk '/^[a-zA-Z_]/{ sub(/^([a-zA-Z_]*\/)+/, "$(BUILDDIR)/cgame/"); print $$0, "Makefile"; \
  782.         sub(/^.*\:/, "$(DEPENDFILE_CGAME):"); print $$0, "Makefile" }' > $(DEPENDFILE_CGAME)
  783.  
  784. $(DEPENDFILE_GAME): $(BUILDDIRS) $(CFILES_GAME)
  785.     @makedepend -f - -- $(CFLAGS_COMMON) $(CFLAGS_MODULES) -- $(CFILES_GAME) 2> /dev/null | \
  786.     awk '/^[a-zA-Z_]/{ sub(/^([a-zA-Z_]*\/)+/, "$(BUILDDIR)/game/"); print $$0, "Makefile"; \
  787.         sub(/^.*\:/, "$(DEPENDFILE_GAME):"); print $$0, "Makefile" }' > $(DEPENDFILE_GAME)
  788.  
  789. $(DEPENDFILE_UI): $(BUILDDIRS) $(CFILES_UI)
  790.     @makedepend -f - -- $(CFLAGS_COMMON) $(CFLAGS_MODULES) -- $(CFILES_UI) 2> /dev/null | \
  791.     awk '/^[a-zA-Z_]/{ sub(/^([a-zA-Z_]*\/)+/, "$(BUILDDIR)/ui/"); print $$0, "Makefile"; \
  792.         sub(/^.*\:/, "$(DEPENDFILE_UI):"); print $$0, "Makefile" }' > $(DEPENDFILE_UI)
  793.  
  794. $(DEPENDFILE_IRC): $(BUILDDIRS) $(CFILES_IRC)
  795.     @makedepend -f - -- $(CFLAGS_COMMON) $(CFLAGS_MODULES) -- $(CFILES_IRC) 2> /dev/null | \
  796.     awk '/^[a-zA-Z_]/{ sub(/^([a-zA-Z_]*\/)+/, "$(BUILDDIR)/irc/"); print $$0, "Makefile"; \
  797.         sub(/^.*\:/, "$(DEPENDFILE_IRC):"); print $$0, "Makefile" }' > $(DEPENDFILE_IRC)
  798.  
  799. $(DEPENDFILE_TV_SERVER): $(BUILDDIRS) $(CFILES_TV_SERVER)
  800.     @makedepend -f - -- $(CFLAGS_COMMON) $(CFLAGS_TV_SERVER) -- $(CFILES_TV_SERVER) 2> /dev/null | \
  801.     awk '/^[a-zA-Z_]/{ sub(/^([a-zA-Z_]*\/)+/, "$(BUILDDIR)/tv_server/"); print $$0, "Makefile"; \
  802.         sub(/^.*\:/, "$(DEPENDFILE_TV_SERVER):"); print $$0, "Makefile" }' > $(DEPENDFILE_TV_SERVER)
  803.  
  804. ifeq ($(BUILD_CLIENT),YES)
  805. -include $(DEPENDFILE_CLIENT)
  806. endif
  807. ifeq ($(BUILD_SND_OPENAL),YES)
  808. -include $(DEPENDFILE_OPENAL)
  809. endif
  810. ifeq ($(BUILD_SND_QF),YES)
  811. -include $(DEPENDFILE_QF)
  812. endif
  813. ifeq ($(BUILD_SERVER),YES)
  814. -include $(DEPENDFILE_DED)
  815. endif
  816. ifeq ($(BUILD_CGAME),YES)
  817. -include $(DEPENDFILE_CGAME)
  818. endif
  819. ifeq ($(BUILD_GAME),YES)
  820. -include $(DEPENDFILE_GAME)
  821. endif
  822. ifeq ($(BUILD_UI),YES)
  823. -include $(DEPENDFILE_UI)
  824. endif
  825. ifeq ($(BUILD_IRC),YES)
  826. -include $(DEPENDFILE_IRC)
  827. endif
  828. ifeq ($(BUILD_TV_SERVER),YES)
  829. -include $(DEPENDFILE_TV_SERVER)
  830. endif
Add Comment
Please, Sign In to add comment