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)