mirror of
https://git.code.sf.net/p/quake/quakeforge-old
synced 2024-12-02 00:11:46 +00:00
e468985ee1
there, more will be added later as needed.. Added -Wall to the cflags on a few things, may have missed some stuff.. Changed the tests on HAVE_GL_COLOR_INDEX8_EXT to actually function.. (Fixes the GL texture problem..) Added tests for GLAPIENTRY and APIENTRY, there will alweys be something.. Fixed the check for the 3dfxgl lib.. Some makefile tweaking.. Changed VERSION into a string so it can easily be 0.1.0.. Removed the generated configure script, does not merge sanely..
416 lines
11 KiB
Makefile
416 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 = $(PROJECT_DIR)/targets/qw_client
|
|
|
|
LDFLAGS = @LDFLAGS@
|
|
LIBS = @LIBS@
|
|
CC = @CC@
|
|
INTEL_ARCH = @INTEL_ARCH@
|
|
|
|
ifneq ($(SRC_DIR),.)
|
|
SRC_DIR_INC = -I$(SRC_DIR)
|
|
endif
|
|
|
|
HAS_VGA = @HAS_VGA@
|
|
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_VGA),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
|
|
|
|
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 md4.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)
|
|
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_LDFLAGS = -lvga
|
|
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_LDFLAGS@ -lGL
|
|
# XXX - this is for glx
|
|
# 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_LDFLAGS) @GLIDE_LDFLAGS@ @TDFXGL_LDFLAGS@ -ldl
|
|
# XXX - this is for 3dfxgl
|
|
TDFX_VID_SRC = gl_vidlinux.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
|