# ------------------------------------------------------ # # Makefile for the "Yamagi Quake 2 Client" # # # # Just type "make" to compile the # # - SDL Client (quake2) # # - Server (quake2ded) # # - SDL Software-Renderer (ref_soft.so) # # - SDL OpenGL-Renderer (ref_gl.so) # # - games: # # - Quake II (quake2) # # - Quake II - The Reckoning (xatrix) # # - Quake II - Ground Zero (rogue) # # - Quake II - Threewave Capture The Flag (ctf) # # # # Dependencies: # # - SDL 1.2 # # - libX11 # # - libGL # # # # Platforms: # # - Linux # # - FreeBSD # # - Maybe any other POSIX compliant system # # supported by SDL 1.2 # # ------------------------------------------------------ # # Check the OS type OSTYPE := $(shell uname -s) ifneq ($(OSTYPE),Linux) ifneq ($(OSTYPE),FreeBSD) $(error $(OSTYPE) is currently not supported by this Makefile.) endif endif # ---------- ARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/amd64/x86_64/) ifneq ($(ARCH),i386) ifneq ($(ARCH),x86_64) $(error arch $(ARCH) is currently not supported) endif endif # ---------- # The compiler and compiler flags CC = gcc ifeq ($(ARCH),i386) CFLAGS_BASE = -O2 -ffast-math -funroll-loops -falign-loops=2 \ -falign-jumps=2 -falign-functions=2 -fno-strict-aliasing \ -Wall -pipe endif ifeq ($(ARCH),x86_64) CFLAGS_BASE = -O2 -ffast-math -funroll-loops -fomit-frame-pointer \ -fexpensive-optimizations -fno-strict-aliasing \ -Wall -pipe endif # SDL SDLCFLAGS = $(shell sdl-config --cflags) # Client CFLAGS_CLIENT = $(CFLAGS_BASE) CFLAGS_CLIENT += -Werror # Dedicated Server CFLAGS_DEDICATED_SERVER = $(CFLAGS_BASE) CFLAGS_DEDICATED_SERVER += -DDEDICATED_ONLY -Werror # OpenGL refresher CFLAGS_OPENGL = $(CFLAGS_BASE) CFLAGS_OPENGL += -I/usr/include -I/usr/local/include -I/usr/X11R6/include CFLAGS_OPENGL += -DOPENGL -DBROKEN_GL -fPIC # ---------- # The linker and linkerflags # Linux ifeq ($(OSTYPE),Linux) LDFLAGS=-lm -ldl endif # FreeBSD ifeq ($(OSTYPE),FreeBSD) LDFLAGS=-lm endif # SDL SDLLDFLAGS=$(shell sdl-config --libs) # OpenGL OPENGLLDFLAGS = -L/usr/lib -L/usr/local/lib -shared # ---------- # Targets all: client dedicated_server client: @-mkdir -p build \ build/client \ build/client/console \ build/client/input \ build/client/menu \ build/client/sound \ build/common \ build/gameabi \ build/posix \ build/posix/glob \ build/posix/sdl \ build/posix/vid \ build/server \ release $(MAKE) release/quake2 dedicated_server: @-mkdir -p build \ build/dedicated_server \ build/dedicated_server_common \ build/dedicated_server_posix \ build/dedicated_server_posix/glob \ release $(MAKE) release/q2ded ref_gl : @-mkdir -p build \ build/ref_gl \ build/ref_gl_game \ build/ref_gl_posix \ release $(MAKE) release/ref_gl.so clean: @-rm -Rf build release # ---------- # Client object CLIENT_OBJS = \ build/client/cl_cin.o \ build/client/cl_ents.o \ build/client/cl_fx.o \ build/client/cl_input.o \ build/client/cl_inv.o \ build/client/cl_main.o \ build/client/cl_parse.o \ build/client/cl_pred.o \ build/client/cl_tent.o \ build/client/cl_scrn.o \ build/client/cl_view.o \ build/client/cl_newfx.o \ build/client/console/console.o \ build/client/input/keys.o \ build/client/menu/menu.o \ build/client/menu/qmenu.o \ build/client/sound/snd_dma.o \ build/client/sound/snd_mem.o \ build/client/sound/snd_mix.o # --------- # Common objects COMMON_OBJS = \ build/common/cmd.o \ build/common/cmodel.o \ build/common/common.o \ build/common/crc.o \ build/common/cvar.o \ build/common/files.o \ build/common/md4.o \ build/common/net_chan.o \ build/common/pmove.o # ---------- # Game ABI objets GAME_ABI_OBJS = \ build/gameabi/m_flash.o \ build/gameabi/q_shared.o # ---------- # Server objects SERVER_OBJS = \ build/server/sv_ccmds.o \ build/server/sv_ents.o \ build/server/sv_game.o \ build/server/sv_init.o \ build/server/sv_main.o \ build/server/sv_send.o \ build/server/sv_user.o \ build/server/sv_world.o # --------- # POSIX platform objects POSIX_OBJS = \ build/posix/network.o \ build/posix/posix.o \ build/posix/system.o \ build/posix/glob/glob.o \ build/posix/sdl/cd.o \ build/posix/sdl/sound.o \ build/posix/vid/menu.o \ build/posix/vid/refresh.o # ---------- # Dedicated server object DEDICATED_SERVER_OBJS = \ build/dedicated_server/sv_ccmds.o \ build/dedicated_server/sv_ents.o \ build/dedicated_server/sv_game.o \ build/dedicated_server/sv_init.o \ build/dedicated_server/sv_main.o \ build/dedicated_server/sv_send.o \ build/dedicated_server/sv_user.o \ build/dedicated_server/sv_world.o # ---------- # Dedicated server common objects DEDICATED_SERVER_COMMON_OBJS = \ build/dedicated_server_common/cmd.o \ build/dedicated_server_common/cmodel.o \ build/dedicated_server_common/common.o \ build/dedicated_server_common/crc.o \ build/dedicated_server_common/cvar.o \ build/dedicated_server_common/files.o \ build/dedicated_server_common/md4.o \ build/dedicated_server_common/net_chan.o \ build/dedicated_server_common/pmove.o # ---------- # Dedicated server POSIX platform objects DEDICATED_SERVER_POSIX_OBJS = \ build/dedicated_server_posix/glob/glob.o \ build/dedicated_server_posix/network.o \ build/dedicated_server_posix/posix.o \ build/dedicated_server_posix/system.o # ---------- # OpenGL refresher objects OPENGL_OBJS = \ build/ref_gl/gl_draw.o \ build/ref_gl/gl_image.o \ build/ref_gl/gl_light.o \ build/ref_gl/gl_mesh.o \ build/ref_gl/gl_model.o \ build/ref_gl/gl_rmain.o \ build/ref_gl/gl_rmisc.o \ build/ref_gl/gl_rsurf.o \ build/ref_gl/gl_warp.o # ---------- # OpenGL Game ABI OPENGL_GAME_OBJS = \ build/ref_gl_game/q_shared.o # ---------- # OpenGL refresher POSIX platform object OPENGL_POSIX_OBJS = \ build/ref_gl_posix/abi.o \ build/ref_gl_posix/glob.o \ build/ref_gl_posix/posix.o \ build/ref_gl_posix/qgl.o \ build/ref_gl_posix/refresh.o # ---------- # Client build build/client/cl_cin.o : src/client/cl_cin.c $(CC) $(CFLAGS_CLIENT) -o $@ -c $< build/client/cl_ents.o : src/client/cl_ents.c $(CC) $(CFLAGS_CLIENT) -o $@ -c $< build/client/cl_fx.o : src/client/cl_fx.c $(CC) $(CFLAGS_CLIENT) -o $@ -c $< build/client/cl_input.o : src/client/cl_input.c $(CC) $(CFLAGS_CLIENT) -o $@ -c $< build/client/cl_inv.o : src/client/cl_inv.c $(CC) $(CFLAGS_CLIENT) -o $@ -c $< build/client/cl_main.o : src/client/cl_main.c $(CC) $(CFLAGS_CLIENT) -o $@ -c $< build/client/cl_parse.o : src/client/cl_parse.c $(CC) $(CFLAGS_CLIENT) -o $@ -c $< build/client/cl_pred.o : src/client/cl_pred.c $(CC) $(CFLAGS_CLIENT) -o $@ -c $< build/client/cl_tent.o : src/client/cl_tent.c $(CC) $(CFLAGS_CLIENT) -o $@ -c $< build/client/cl_scrn.o : src/client/cl_scrn.c $(CC) $(CFLAGS_CLIENT) -o $@ -c $< build/client/cl_view.o : src/client/cl_view.c $(CC) $(CFLAGS_CLIENT) -o $@ -c $< build/client/cl_newfx.o : src/client/cl_newfx.c $(CC) $(CFLAGS_CLIENT) -o $@ -c $< build/client/console/console.o : src/client/console/console.c $(CC) $(CFLAGS_CLIENT) -o $@ -c $< build/client/input/keys.o : src/client/input/keys.c $(CC) $(CFLAGS_CLIENT) -o $@ -c $< build/client/menu/menu.o : src/client/menu/menu.c $(CC) $(CFLAGS_CLIENT) -o $@ -c $< build/client/menu/qmenu.o : src/client/menu/qmenu.c $(CC) $(CFLAGS_CLIENT) -o $@ -c $< build/client/sound/snd_dma.o : src/client/sound/snd_dma.c $(CC) $(CFLAGS_CLIENT) -o $@ -c $< build/client/sound/snd_mem.o : src/client/sound/snd_mem.c $(CC) $(CFLAGS_CLIENT) -o $@ -c $< build/client/sound/snd_mix.o : src/client/sound/snd_mix.c $(CC) $(CFLAGS_CLIENT) -o $@ -c $< # --------- # Common build build/common/cmd.o : src/common/cmd.c $(CC) $(CFLAGS_CLIENT) -o $@ -c $< build/common/cmodel.o : src/common/cmodel.c $(CC) $(CFLAGS_CLIENT) -o $@ -c $< build/common/common.o : src/common/common.c $(CC) $(CFLAGS_CLIENT) -o $@ -c $< build/common/crc.o : src/common/crc.c $(CC) $(CFLAGS_CLIENT) -o $@ -c $< build/common/cvar.o : src/common/cvar.c $(CC) $(CFLAGS_CLIENT) -o $@ -c $< build/common/files.o : src/common/files.c $(CC) $(CFLAGS_CLIENT) -o $@ -c $< build/common/md4.o : src/common/md4.c $(CC) $(CFLAGS_CLIENT) -o $@ -c $< build/common/net_chan.o : src/common/net_chan.c $(CC) $(CFLAGS_CLIENT) -o $@ -c $< build/common/pmove.o : src/common/pmove.c $(CC) $(CFLAGS_CLIENT) -o $@ -c $< # ---------- # Game ABI build build/gameabi/m_flash.o : src/game/quake2/m_flash.c $(CC) $(CFLAGS_CLIENT) -o $@ -c $< build/gameabi/q_shared.o : src/game/quake2/q_shared.c $(CC) $(CFLAGS_CLIENT) -o $@ -c $< # --------- # Server build build/server/sv_ccmds.o : src/server/sv_ccmds.c $(CC) $(CFLAGS_CLIENT) -o $@ -c $< build/server/sv_ents.o : src/server/sv_ents.c $(CC) $(CFLAGS_CLIENT) -o $@ -c $< build/server/sv_game.o : src/server/sv_game.c $(CC) $(CFLAGS_CLIENT) -o $@ -c $< build/server/sv_init.o : src/server/sv_init.c $(CC) $(CFLAGS_CLIENT) -o $@ -c $< build/server/sv_main.o : src/server/sv_main.c $(CC) $(CFLAGS_CLIENT) -o $@ -c $< build/server/sv_send.o : src/server/sv_send.c $(CC) $(CFLAGS_CLIENT) -o $@ -c $< build/server/sv_user.o : src/server/sv_user.c $(CC) $(CFLAGS_CLIENT) -o $@ -c $< build/server/sv_world.o : src/server/sv_world.c $(CC) $(CFLAGS_CLIENT) -o $@ -c $< # ---------- # POSIX build build/posix/network.o : src/platforms/posix/network.c $(CC) $(CFLAGS_CLIENT) -o $@ -c $< build/posix/posix.o : src/platforms/posix/posix.c $(CC) $(CFLAGS_CLIENT) -o $@ -c $< build/posix/system.o : src/platforms/posix/system.c $(CC) $(CFLAGS_CLIENT) -o $@ -c $< build/posix/glob/glob.o : src/platforms/posix/glob/glob.c $(CC) $(CFLAGS_CLIENT) -o $@ -c $< build/posix/sdl/cd.o : src/platforms/posix/sdl/cd.c $(CC) $(CFLAGS_CLIENT) $(SDLCFLAGS) -o $@ -c $< build/posix/sdl/sound.o : src/platforms/posix/sdl/sound.c $(CC) $(CFLAGS_CLIENT) $(SDLCFLAGS) -o $@ -c $< build/posix/vid/menu.o : src/platforms/posix/vid/menu.c $(CC) $(CFLAGS_CLIENT) -o $@ -c $< build/posix/vid/refresh.o : src/platforms/posix/vid/refresh.c $(CC) $(CFLAGS_CLIENT) -o $@ -c $< # ---------- # Dedicated server build build/dedicated_server/sv_ccmds.o : src/server/sv_ccmds.c $(CC) $(CFLAGS_DEDICATED_SERVER) -o $@ -c $< build/dedicated_server/sv_ents.o : src/server/sv_ents.c $(CC) $(CFLAGS_DEDICATED_SERVER) -o $@ -c $< build/dedicated_server/sv_game.o : src/server/sv_game.c $(CC) $(CFLAGS_DEDICATED_SERVER) -o $@ -c $< build/dedicated_server/sv_init.o : src/server/sv_init.c $(CC) $(CFLAGS_DEDICATED_SERVER) -o $@ -c $< build/dedicated_server/sv_main.o : src/server/sv_main.c $(CC) $(CFLAGS_DEDICATED_SERVER) -o $@ -c $< build/dedicated_server/sv_send.o : src/server/sv_send.c $(CC) $(CFLAGS_DEDICATED_SERVER) -o $@ -c $< build/dedicated_server/sv_user.o : src/server/sv_user.c $(CC) $(CFLAGS_DEDICATED_SERVER) -o $@ -c $< build/dedicated_server/sv_world.o : src/server/sv_world.c $(CC) $(CFLAGS_DEDICATED_SERVER) -o $@ -c $< # --------- # Dedicated server common build build/dedicated_server_common/cmd.o : src/common/cmd.c $(CC) $(CFLAGS_DEDICATED_SERVER) -o $@ -c $< build/dedicated_server_common/cmodel.o : src/common/cmodel.c $(CC) $(CFLAGS_DEDICATED_SERVER) -o $@ -c $< build/dedicated_server_common/common.o : src/common/common.c $(CC) $(CFLAGS_DEDICATED_SERVER) -o $@ -c $< build/dedicated_server_common/crc.o : src/common/crc.c $(CC) $(CFLAGS_DEDICATED_SERVER) -o $@ -c $< build/dedicated_server_common/cvar.o : src/common/cvar.c $(CC) $(CFLAGS_DEDICATED_SERVER) -o $@ -c $< build/dedicated_server_common/files.o : src/common/files.c $(CC) $(CFLAGS_DEDICATED_SERVER) -o $@ -c $< build/dedicated_server_common/md4.o : src/common/md4.c $(CC) $(CFLAGS_DEDICATED_SERVER) -o $@ -c $< build/dedicated_server_common/net_chan.o : src/common/net_chan.c $(CC) $(CFLAGS_DEDICATED_SERVER) -o $@ -c $< build/dedicated_server_common/pmove.o : src/common/pmove.c $(CC) $(CFLAGS_DEDICATED_SERVER) -o $@ -c $< # ---------- # Dedicated server POSIX build build/dedicated_server_posix/glob/glob.o : src/platforms/posix/glob/glob.c $(CC) $(CFLAGS_DEDICATED_SERVER) -o $@ -c $< build/dedicated_server_posix/network.o : src/platforms/posix/network.c $(CC) $(CFLAGS_DEDICATED_SERVER) -o $@ -c $< build/dedicated_server_posix/posix.o : src/platforms/posix/posix.c $(CC) $(CFLAGS_DEDICATED_SERVER) -o $@ -c $< build/dedicated_server_posix/system.o : src/platforms/posix/system.c $(CC) $(CFLAGS_DEDICATED_SERVER) -o $@ -c $< # ---------- # OpenGL refresher build build/ref_gl/gl_draw.o: src/refresh/opengl/gl_draw.c $(CC) $(CFLAGS_OPENGL) -o $@ -c $< build/ref_gl/gl_image.o: src/refresh/opengl/gl_image.c $(CC) $(CFLAGS_OPENGL) -o $@ -c $< build/ref_gl/gl_light.o: src/refresh/opengl/gl_light.c $(CC) $(CFLAGS_OPENGL) -o $@ -c $< build/ref_gl/gl_mesh.o: src/refresh/opengl/gl_mesh.c $(CC) $(CFLAGS_OPENGL) -o $@ -c $< build/ref_gl/gl_model.o: src/refresh/opengl/gl_model.c $(CC) $(CFLAGS_OPENGL) -o $@ -c $< build/ref_gl/gl_rmain.o: src/refresh/opengl/gl_rmain.c $(CC) $(CFLAGS_OPENGL) -o $@ -c $< build/ref_gl/gl_rmisc.o: src/refresh/opengl/gl_rmisc.c $(CC) $(CFLAGS_OPENGL) -o $@ -c $< build/ref_gl/gl_rsurf.o: src/refresh/opengl/gl_rsurf.c $(CC) $(CFLAGS_OPENGL) -o $@ -c $< build/ref_gl/gl_warp.o: src/refresh/opengl/gl_warp.c $(CC) $(CFLAGS_OPENGL) -o $@ -c $< # ---------- build/ref_gl_game/q_shared.o: src/game/quake2/q_shared.c $(CC) $(CFLAGS_OPENGL) -o $@ -c $< # ---------- # OpenGL refresher POSIX build build/ref_gl_posix/abi.o: src/platforms/posix/refresh/abi.c $(CC) $(CFLAGS_OPENGL) -o $@ -c $< build/ref_gl_posix/glob.o: src/platforms/posix/glob/glob.c $(CC) $(CFLAGS_OPENGL) -o $@ -c $< build/ref_gl_posix/posix.o: src/platforms/posix/posix.c $(CC) $(CFLAGS_OPENGL) -o $@ -c $< build/ref_gl_posix/qgl.o: src/platforms/posix/refresh/opengl/qgl.c $(CC) $(CFLAGS_OPENGL) -o $@ -c $< build/ref_gl_posix/refresh.o: src/platforms/posix/sdl/refresh.c $(CC) $(CFLAGS_OPENGL) $(SDLCFLAGS) -o $@ -c $< # ---------- # The client release/quake2 : $(CLIENT_OBJS) $(COMMON_OBJS) $(GAME_ABI_OBJS) \ $(SERVER_OBJS) $(POSIX_OBJS) $(CC) $(CFLAGS_CLIENT) -o $@ $(CLIENT_OBJS) $(COMMON_OBJS) $(GAME_ABI_OBJS) \ $(SERVER_OBJS) $(POSIX_OBJS) $(LDFLAGS) $(SDLLDFLAGS) # Dedicated Server release/q2ded : $(DEDICATED_SERVER_OBJS) $(DEDICATED_SERVER_COMMON_OBJS) \ $(GAME_ABI_OBJS) $(DEDICATED_SERVER_POSIX_OBJS) $(CC) $(CFLAGS_DEDICATED_SERVER) -o $@ $(DEDICATED_SERVER_OBJS) \ $(DEDICATED_SERVER_COMMON_OBJS) $(GAME_ABI_OBJS) \ $(DEDICATED_SERVER_POSIX_OBJS) $(LDFLAGS) # OpenGL refresher release/ref_gl.so : $(OPENGL_OBJS) $(OPENGL_POSIX_OBJS) $(OPENGL_GAME_OBJS) $(CC) $(CFLAGS_OPENGL) -o $@ $(OPENGL_OBJS) $(OPENGL_POSIX_OBJS) \ $(OPENGL_GAME_OBJS) $(LDFLAGS) $(SDLLDFLAGS) $(OPENGLLDFLAGS)