mirror of
https://git.code.sf.net/p/quake/quakeforge-old
synced 2024-11-29 15:12:17 +00:00
418 lines
11 KiB
Makefile
418 lines
11 KiB
Makefile
########################################################################
|
|
#
|
|
# Quake general stuff
|
|
#
|
|
|
|
PROJECT_DIR = @top_srcdir@
|
|
SRC_DIR = @srcdir@
|
|
QW_COMMON_DIR= $(PROJECT_DIR)/qw_common
|
|
COMMON_DIR=$(PROJECT_DIR)/common
|
|
BIN_PREFIX = qw-client
|
|
|
|
BUILD_DIR = ../targets/qw_client
|
|
|
|
LDFLAGS = @LDFLAGS@ @SND_LIBS@
|
|
LIBS = @LIBS@
|
|
CC = @CC@
|
|
INTEL_ARCH = @INTEL_ARCH@
|
|
|
|
ifneq ($(SRC_DIR),.)
|
|
SRC_DIR_INC = -I$(SRC_DIR)
|
|
endif
|
|
|
|
HAS_SVGA = @HAS_SVGA@
|
|
HAS_GLIDE = @HAS_GLIDE@
|
|
HAS_TDFXGL = @HAS_TDFXGL@
|
|
HAS_OGL = @HAS_OGL@
|
|
HAS_XIL = @HAS_XIL@
|
|
HAS_X11 = @HAS_X11@
|
|
|
|
MAKE_SURE_DIR = if test -d "$(BUILD_DIR)/$$DIR"; \
|
|
then \
|
|
true; \
|
|
else \
|
|
echo "Creating directory $(BUILD_DIR)/$$DIR"; \
|
|
mkdir -p $(BUILD_DIR)/$$DIR; \
|
|
fi
|
|
|
|
|
|
########################################################################
|
|
#
|
|
# Client targets
|
|
#
|
|
|
|
ifeq ($(HAS_OGL),yes)
|
|
GLQUAKE =$(BIN_PREFIX)-gl
|
|
endif
|
|
|
|
ifeq ($(HAS_TDFXGL),yes)
|
|
TDFXQUAKE= $(BIN_PREFIX)-3dfx
|
|
endif
|
|
|
|
ifeq ($(HAS_X11),yes)
|
|
X11QUAKE = $(BIN_PREFIX)-x11
|
|
endif
|
|
|
|
ifeq ($(HAS_SVGA),yes)
|
|
SVGAQUAKE = $(BIN_PREFIX)-svga
|
|
endif
|
|
|
|
RELEASE = @RELEASE@
|
|
ifeq ($(RELEASE),yes)
|
|
OPTFLAGS = @RELEASE_CFLAGS@
|
|
else
|
|
OPTFLAGS = -g
|
|
endif
|
|
|
|
targets = $(SVGAQUAKE) $(GLQUAKE) $(TDFXQUAKE) $(X11QUAKE)
|
|
CLEAN_TARGETS = $(patsubst %,clean-%, $(targets))
|
|
.PHONY: $(targets) ($CLEAN_TARGETS)
|
|
|
|
x: Makefile
|
|
@echo binaries: $(targets)
|
|
@echo other targets: distclean
|
|
@echo all: makes all targets - $(targets)
|
|
|
|
all: $(targets)
|
|
|
|
|
|
########################################################################
|
|
#
|
|
# Source files
|
|
#
|
|
|
|
# **** Note - two apps may appear to share source, but they may just share
|
|
# source file *names*
|
|
|
|
ifeq ($(INTEL_ARCH),yes)
|
|
# Source file the Intel archictecture only
|
|
UQ_GENERAL_SRC = worlda.s
|
|
UQ_SWREND_SRC_PLAT = dosasm.s
|
|
CL_ADDITIONAL_GENERAL_SRC = sys_dosa.s math.s
|
|
SWREND_SRC_PLAT = d_copy.s d_draw.s d_draw16.s d_parta.s d_polysa.s d_scana.s \
|
|
d_spr8.s d_varsa.s r_aclipa.s r_aliasa.s \
|
|
r_drawa.s r_edgea.s r_varsa.s surf16.s surf8.s
|
|
else
|
|
# Source files for non-Intel platforms
|
|
SWREND_SRC_PLAT = nonintel.c
|
|
endif
|
|
|
|
#
|
|
# System specific source files
|
|
#
|
|
CD_AUDIO_SRC = cd_wrapper.c
|
|
|
|
# sound
|
|
|
|
SND_STYLE = @SND_STYLE@
|
|
SND_SRC = snd_null.c
|
|
|
|
ifeq ($(SND_STYLE),Linux)
|
|
SND_SRC = snd_dma.c snd_linux.c snd_mixa.s
|
|
endif
|
|
ifeq ($(SND_STYLE),Solaris)
|
|
SND_SRC = snd_dma.c snd_sun.c
|
|
endif
|
|
ifeq ($(SND_STYLE),MME)
|
|
SND_SRC = snd_dma.c snd_mme.c
|
|
endif
|
|
|
|
SND_SRC += snd_mem.c snd_mix.c
|
|
|
|
X11_VID_SRC = @X11_VID_SRC@
|
|
QW_X11_VID_SRC = vid_x.c
|
|
|
|
SYS_SRC = @SYS_SRC@
|
|
QW_CL_SYS_SRC = @QW_CL_SYS_SRC@
|
|
QW_SRV_SYS_SRC = @QW_SRV_SYS_SRC@
|
|
|
|
#
|
|
# Networking source files
|
|
#
|
|
# XXX - Should not assume UNIX
|
|
NET_SRC = net_bsd.c net_udp.c
|
|
QW_NET_SRC = net_udp.c net_com.c mdfour.c
|
|
UQ_NET_SRC = net_dgrm.c net_loop.c net_main.c net_vcr.c $(NET_SRC)
|
|
|
|
#
|
|
# Common source files
|
|
#
|
|
MISC_SRC = common.c crc.c cvar.c cmd.c mathlib.c wad.c zone.c
|
|
|
|
#
|
|
# Rendering source files
|
|
#
|
|
|
|
# OpenGL
|
|
GL_REND_SRC = gl_screen.c gl_model.c gl_draw.c gl_mesh.c gl_refrag.c \
|
|
gl_rlight.c gl_rmain.c gl_rmisc.c gl_rsurf.c gl_warp.c nonintel.c
|
|
# gl_rlight.c gl_rmain.c gl_rmisc.c gl_rsurf.c gl_test.c gl_warp.c
|
|
QW_GL_REND_SRC = gl_ngraph.c
|
|
|
|
# Software source
|
|
SW_REND_SRC = screen.c $(SWREND_SRC_PLAT) draw.c \
|
|
d_edge.c d_fill.c d_init.c d_modech.c d_part.c d_polyse.c d_scan.c \
|
|
d_sky.c d_sprite.c d_surf.c d_vars.c d_zpoint.c r_aclip.c r_alias.c \
|
|
r_bsp.c r_draw.c r_edge.c r_efrag.c r_light.c r_main.c r_misc.c \
|
|
r_sky.c r_sprite.c r_surf.c r_vars.c
|
|
|
|
#
|
|
# Client source files
|
|
#
|
|
CL_SRC = cl_demo.c cl_input.c cl_main.c cl_parse.c cl_tent.c
|
|
QW_CL_SRC = cl_cam.c cl_ents.c cl_pred.c
|
|
CL_GUI_SRC= console.c sbar.c view.c keys.c menu.c
|
|
|
|
#
|
|
# Server source files
|
|
#
|
|
# Server-related source used by all
|
|
SRV_SRC = sv_main.c sv_user.c sv_move.c sv_phys.c
|
|
# Server-related source used just by QW server
|
|
QW_SRV_SRC = sv_ccmds.c sv_ents.c sv_init.c sv_send.c sv_nchan.c world.c
|
|
# Server-related source used just by UQ
|
|
UQ_SRV_SRC = host.c host_cmd.c $(SRV_SRC)
|
|
SRV_PR_SRC = pr_cmds.c pr_edict.c pr_exec.c
|
|
|
|
|
|
QW_GENERAL_SRC = pmove.c pmovetst.c
|
|
|
|
# Source common to both UQ and QW-client
|
|
CL_COMMON_SRC = $(MISC_SRC) $(CL_GUI_SRC) $(CL_SRC) \
|
|
$(CL_ADDITIONAL_GENERAL_SRC) $(SND_SRC) $(CD_AUDIO_SRC) r_part.c
|
|
|
|
########################################################################
|
|
#
|
|
# Directory specific stuff
|
|
#
|
|
DEFS = @DEFS@ @STRICMP_DEF@
|
|
CFLAGS = -Wall -DQUAKEWORLD $(OPTFLAGS) $(DEFS) -I. $(SRC_DIR_INC) \
|
|
-I$(QW_COMMON_DIR) -I$(COMMON_DIR) -I../common
|
|
ALL_X11_SRC = $(GENERAL_SRC) $(SW_REND_SRC) $(QW_X11_VID_SRC) model.c
|
|
ALL_GL_SRC = $(GENERAL_SRC) $(GL_REND_SRC) $(GL_VID_SRC) $(QW_GL_REND_SRC)
|
|
ALL_TDFX_SRC = $(GENERAL_SRC) $(GL_REND_SRC) $(TDFX_VID_SRC) $(QW_GL_REND_SRC)
|
|
|
|
GENERAL_SRC = $(CL_COMMON_SRC) \
|
|
$(QW_CL_SRC) $(QW_NET_SRC) net_chan.c skin.c \
|
|
$(QW_CL_SYS_SRC) \
|
|
$(QW_GENERAL_SRC)
|
|
# XXX - add dos/win specifc source
|
|
|
|
###########################################################################
|
|
#
|
|
# Compilation rules
|
|
#
|
|
|
|
###########################################################################
|
|
#
|
|
# qw-client-x11
|
|
#
|
|
ifneq ($(X11QUAKE),)
|
|
|
|
# Map the list of source files into a list of object files
|
|
OBJSquake-x11 = $(patsubst %,$(BUILD_DIR)/x11/%,$(addsuffix .@OBJEXT@, $(basename $(ALL_X11_SRC) .c .s)))
|
|
|
|
X11_CFLAGS = -DX11 $(X_CFLAGS)
|
|
X11_LDFLAGS = @X_LIBS@ -lX11 @X11_SHM_LIB@ @X_EXTRA_LIBS@ -lm
|
|
|
|
# This can be thought of as a macro that makes sure that the x11
|
|
# sub-directory is created
|
|
# XXX - can we avoid doing every compile?
|
|
MAKE_SURE_x11_DIR = @DIR=x11; $(MAKE_SURE_DIR)
|
|
|
|
$(BUILD_DIR)/x11/%.o: $(SRC_DIR)/%.c
|
|
$(MAKE_SURE_x11_DIR)
|
|
$(CC) $(CFLAGS) $(X11_CFLAGS) -o $@ -c $<
|
|
|
|
$(BUILD_DIR)/x11/%.o: $(SRC_DIR)/%.s
|
|
$(MAKE_SURE_x11_DIR)
|
|
$(CC) $(CFLAGS) -DELF -x assembler-with-cpp -o $@ -c $<
|
|
|
|
$(BUILD_DIR)/x11/%.o: $(COMMON_DIR)/%.c
|
|
$(MAKE_SURE_x11_DIR)
|
|
$(CC) $(CFLAGS) $(X11_CFLAGS) -o $@ -c $<
|
|
|
|
ifneq ($(QW_COMMON_DIR),)
|
|
$(BUILD_DIR)/x11/%.o: $(QW_COMMON_DIR)/%.c
|
|
$(MAKE_SURE_x11_DIR)
|
|
$(CC) $(CFLAGS) $(X11_CFLAGS) -o $@ -c $<
|
|
endif
|
|
|
|
$(BUILD_DIR)/x11/%.o: $(COMMON_DIR)/%.s
|
|
$(MAKE_SURE_x11_DIR)
|
|
$(CC) $(CFLAGS) -DELF -x assembler-with-cpp -o $@ -c $<
|
|
|
|
$(X11QUAKE): $(BUILD_DIR)/../$(X11QUAKE)
|
|
|
|
$(BUILD_DIR)/../$(X11QUAKE): $(OBJSquake-x11)
|
|
$(CC) $(CFLAGS) $(OBJSquake-x11) $(X11_LDFLAGS) $(LDFLAGS) -o $(BUILD_DIR)/../$(X11QUAKE)
|
|
# XXX - Can this be automated?
|
|
clean-$(X11QUAKE):
|
|
rm -f $(OBJSquake-x11)
|
|
endif
|
|
|
|
###########################################################################
|
|
#
|
|
# qw-client-svga
|
|
#
|
|
ifneq ($(SVGAQUAKE),)
|
|
ALL_SVGA_SRC = $(GENERAL_SRC) $(SW_REND_SRC) $(SVGA_VID_SRC) model.c
|
|
OBJSquake-svga= $(patsubst %,$(BUILD_DIR)/svga/%,$(addsuffix .@OBJEXT@, $(basename $(ALL_SVGA_SRC) .c .s)))
|
|
|
|
SVGA_CFLAGS = @SVGA_CFLAGS@
|
|
SVGA_LDFLAGS = @SVGA_LIBS@ -lm
|
|
SVGA_VID_SRC = vid_svgalib.c
|
|
|
|
# This can be thought of as a macro that makes sure that the x11
|
|
# sub-directory is created
|
|
# XXX - can we avoid doing every compile?
|
|
MAKE_SURE_svga_DIR = @DIR=svga; $(MAKE_SURE_DIR)
|
|
|
|
# Not sure why this -O is needed, but it is...
|
|
$(BUILD_DIR)/svga/vid_svgalib.o: $(COMMON_DIR)/vid_svgalib.c
|
|
$(MAKE_SURE_svga_DIR)
|
|
$(CC) -O $(CFLAGS) $(SVGA_CFLAGS) -o $@ -c $<
|
|
|
|
$(BUILD_DIR)/svga/%.o: $(SRC_DIR)/%.c
|
|
$(MAKE_SURE_svga_DIR)
|
|
$(CC) $(CFLAGS) $(SVGA_CFLAGS) -o $@ -c $<
|
|
|
|
$(BUILD_DIR)/svga/%.o: $(SRC_DIR)/%.s
|
|
$(MAKE_SURE_svga_DIR)
|
|
$(CC) $(CFLAGS) -DELF -x assembler-with-cpp -o $@ -c $<
|
|
|
|
$(BUILD_DIR)/svga/%.o: $(COMMON_DIR)/%.c
|
|
$(MAKE_SURE_svga_DIR)
|
|
$(CC) $(CFLAGS) $(SVGA_CFLAGS) -o $@ -c $<
|
|
|
|
ifneq ($(QW_COMMON_DIR),)
|
|
$(BUILD_DIR)/svga/%.o: $(QW_COMMON_DIR)/%.c
|
|
$(MAKE_SURE_svga_DIR)
|
|
$(CC) $(CFLAGS) $(SVGA_CFLAGS) -o $@ -c $<
|
|
endif
|
|
|
|
$(BUILD_DIR)/svga/%.o: $(COMMON_DIR)/%.s
|
|
$(MAKE_SURE_svga_DIR)
|
|
$(CC) $(CFLAGS) -DELF -x assembler-with-cpp -o $@ -c $<
|
|
|
|
$(SVGAQUAKE): $(BUILD_DIR)/../$(SVGAQUAKE)
|
|
|
|
$(BUILD_DIR)/../$(SVGAQUAKE): $(OBJSquake-svga)
|
|
$(CC) $(CFLAGS) $(OBJSquake-svga) $(SVGA_LDFLAGS) $(LDFLAGS) -o $(BUILD_DIR)/../$(SVGAQUAKE)
|
|
# XXX - Can this be automated?
|
|
clean-$(SVGAQUAKE):
|
|
rm -f $(OBJSquake-svga)
|
|
endif
|
|
|
|
###########################################################################
|
|
#
|
|
# qw-client-gl
|
|
#
|
|
ifneq ($(GLQUAKE),)
|
|
OBJSquake-gl = $(patsubst %,$(BUILD_DIR)/gl/%,$(addsuffix .@OBJEXT@, $(basename $(ALL_GL_SRC) .c .s)))
|
|
|
|
GL_CFLAGS = -DGLQUAKE @OGL_CFLAGS@
|
|
GL_LDFLAGS = $(X11_LDFLAGS) @OGL_LIBS@
|
|
# XXX - is this platform independent?
|
|
GL_VID_SRC = gl_vidlinuxglx.c
|
|
|
|
# This can be thought of as a macro that makes sure that the x11
|
|
# sub-directory is created
|
|
# XXX - can we avoid doing every compile?
|
|
MAKE_SURE_gl_DIR = @DIR=gl; $(MAKE_SURE_DIR)
|
|
|
|
$(BUILD_DIR)/gl/%.o: $(SRC_DIR)/%.c
|
|
$(MAKE_SURE_gl_DIR)
|
|
$(CC) $(CFLAGS) $(GL_CFLAGS) -o $@ -c $<
|
|
|
|
$(BUILD_DIR)/gl/%.o: $(SRC_DIR)/%.s
|
|
$(MAKE_SURE_gl_DIR)
|
|
$(CC) $(CFLAGS) -DELF -x assembler-with-cpp -o $@ -c $<
|
|
|
|
$(BUILD_DIR)/gl/%.o: $(COMMON_DIR)/%.c
|
|
$(MAKE_SURE_gl_DIR)
|
|
$(CC) $(CFLAGS) $(GL_CFLAGS) -o $@ -c $<
|
|
|
|
ifneq ($(QW_COMMON_DIR),)
|
|
$(BUILD_DIR)/gl/%.o: $(QW_COMMON_DIR)/%.c
|
|
$(MAKE_SURE_gl_DIR)
|
|
$(CC) $(CFLAGS) $(GL_CFLAGS) -o $@ -c $<
|
|
endif
|
|
|
|
$(BUILD_DIR)/gl/%.o: $(COMMON_DIR)/%.s
|
|
$(MAKE_SURE_gl_DIR)
|
|
$(CC) $(CFLAGS) -DELF -x assembler-with-cpp -o $@ -c $<
|
|
|
|
$(GLQUAKE): $(BUILD_DIR)/../$(GLQUAKE)
|
|
|
|
$(BUILD_DIR)/../$(GLQUAKE): $(OBJSquake-gl)
|
|
$(CC) $(CFLAGS) $(OBJSquake-gl) $(GL_LDFLAGS) $(LDFLAGS) -o $(BUILD_DIR)/../$(GLQUAKE)
|
|
|
|
# XXX - Can this be automated?
|
|
clean-$(GLQUAKE):
|
|
rm -f $(OBJSquake-gl)
|
|
endif
|
|
|
|
###########################################################################
|
|
#
|
|
# qw-client-3dfx
|
|
#
|
|
ifneq ($(TDFXQUAKE),)
|
|
OBJSquake-3dfx = $(patsubst %,$(BUILD_DIR)/3dfx/%,$(addsuffix .@OBJEXT@, $(basename $(ALL_TDFX_SRC) .c .s)))
|
|
|
|
TDFX_CFLAGS = -DGLQUAKE @OGL_CFLAGS@ @GLIDE_CFLAGS@
|
|
TDFX_LDFLAGS = @SVGA_LIBS@ @TDFXGL_LIBS@ -lm
|
|
TDFX_VID_SRC = gl_vidlinux_3dfx.c
|
|
|
|
# This can be thought of as a macro that makes sure that the x11
|
|
# sub-directory is created
|
|
# XXX - can we avoid doing every compile?
|
|
MAKE_SURE_3dfx_DIR = @DIR=3dfx; $(MAKE_SURE_DIR)
|
|
|
|
$(BUILD_DIR)/3dfx/%.o: $(SRC_DIR)/%.c
|
|
$(MAKE_SURE_3dfx_DIR)
|
|
$(CC) $(CFLAGS) $(TDFX_CFLAGS) -o $@ -c $<
|
|
|
|
$(BUILD_DIR)/3dfx/%.o: $(SRC_DIR)/%.s
|
|
$(MAKE_SURE_3dfx_DIR)
|
|
$(CC) $(CFLAGS) -DELF -x assembler-with-cpp -o $@ -c $<
|
|
|
|
$(BUILD_DIR)/3dfx/%.o: $(COMMON_DIR)/%.c
|
|
$(MAKE_SURE_3dfx_DIR)
|
|
$(CC) $(CFLAGS) $(TDFX_CFLAGS) -o $@ -c $<
|
|
|
|
ifneq ($(QW_COMMON_DIR),)
|
|
$(BUILD_DIR)/3dfx/%.o: $(QW_COMMON_DIR)/%.c
|
|
$(MAKE_SURE_3dfx_DIR)
|
|
$(CC) $(CFLAGS) $(TDFX_CFLAGS) -o $@ -c $<
|
|
endif
|
|
|
|
$(BUILD_DIR)/3dfx/%.o: $(COMMON_DIR)/%.s
|
|
$(MAKE_SURE_gl_DIR)
|
|
$(CC) $(CFLAGS) -DELF -x assembler-with-cpp -o $@ -c $<
|
|
|
|
$(TDFXQUAKE): $(BUILD_DIR)/../$(TDFXQUAKE)
|
|
|
|
$(BUILD_DIR)/../$(TDFXQUAKE): $(OBJSquake-3dfx)
|
|
$(CC) $(CFLAGS) $(OBJSquake-3dfx) $(TDFX_LDFLAGS) $(LDFLAGS) -o $(BUILD_DIR)/../$(TDFXQUAKE)
|
|
|
|
# XXX - Can this be automated?
|
|
clean-$(TDFXQUAKE):
|
|
rm -f $(OBJSquake-3dfx)
|
|
endif
|
|
|
|
|
|
###########################################################################
|
|
#
|
|
# cleaning (clean, distclean)
|
|
#
|
|
distclean: clean
|
|
rm -f config.cache config.log config.status Makefile
|
|
|
|
clean: $(CLEAN_TARGETS)
|
|
|
|
install:
|
|
@echo Install not implemented
|
|
|
|
check:
|
|
@echo check not implemented
|