1 2# Check OS type. 3OSTYPE := $(shell uname -s) 4 5WITH_DGA_MOUSE?=YES # Enable DGA mouse extension. 6WITH_QMAX?=YES # Enable fancier OpenGL graphics. 7 8CC=gcc 9CC_VERSION=$(shell $(CC) -dumpversion | sed -e 's/\..*//g') 10 11BASE_CFLAGS= 12 13 14RELEASE_CFLAGS=$(BASE_CFLAGS) -ffast-math -fexpensive-optimizations 15 16ifneq ($(CC_VERSION),4) 17 RELEASE_CFLAGS+=-funroll-loops 18endif 19 20RELEASE_CFLAGS+= -O3 -falign-loops=2 -falign-jumps=2 -falign-functions=2 -fno-strict-aliasing 21 22DEBUG_CFLAGS=$(BASE_CFLAGS) -g -ggdb -Wall -pipe 23 24LDFLAGS=-lm 25 26ifeq ($(OSTYPE),Linux) 27LDFLAGS+=-ldl 28endif 29 30CFLAGS = $(RELEASE_CFLAGS) 31GLXLDFLAGS=-L/usr/X11R6/lib -lX11 -lXext -lXxf86vm -lGL -lGLU -ljpeg -lpng 32 33ifeq ($(strip $(WITH_DGA_MOUSE)),YES) 34CFLAGS+= -DUSE_XF86_DGA 35GLXLDFLAGS+= -lXxf86dga 36endif 37 38ifeq ($(strip $(WITH_QMAX)),YES) 39CFLAGS+= -DQMAX 40endif 41 42GLX_SRCS := gl_blooms.c \ 43 gl_decals.c \ 44 gl_draw.c \ 45 gl_flares.c \ 46 gl_image.c \ 47 gl_light.c \ 48 gl_md3.c \ 49 gl_mesh.c \ 50 gl_model.c \ 51 gl_refl.c \ 52 gl_rmain.c \ 53 gl_rmisc.c \ 54 gl_rsurf.c \ 55 gl_vlights.c \ 56 gl_warp.c \ 57 ../unix/qsh_unix.c \ 58 ../unix/qgl_unix.c \ 59 ../unix/rw_unix.c \ 60 ../unix/gl_glx.c \ 61 ../game/q_shared.c 62 63GLX_OBJS = $(GLX_SRCS:.c=.o) 64 65SHLIBLDFLAGS=-shared 66 67TARGETS=ref_q2glx.so 68 69ref_q2glx.so : $(GLX_OBJS) 70 $(CC) -o $@ $^ $(CFLAGS) $(LDFLAGS) $(SHLIBLDFLAGS) $(GLXLDFLAGS) 71debug: 72 $(MAKE) targets CFLAGS="$(DEBUG_CFLAGS)" 73 74release: 75 $(MAKE) targets CFLAGS="$(RELEASE_CFLAGS)" 76 77all: ref_q2glx.so 78 79install: 80 @printf "Moving file to your quake2 directory...\n" 81 @mv -fv ref_q2glx.so ~/quake2 82 @printf "Done.\n" 83 84targets: $(TARGETS) 85 86clean: 87 rm -f $(GLX_OBJS) $(TARGETS)