mirror of
https://git.code.sf.net/p/quake/quakeforge-old
synced 2024-11-22 11:51:17 +00:00
6c74e92dd2
experienced almost no visible benefit in terms of compile time, others with older machines will and the makefiles are generally cleaner now.
469 lines
12 KiB
Makefile
469 lines
12 KiB
Makefile
########################################################################
|
|
#
|
|
# Quake general stuff
|
|
#
|
|
|
|
PROJECT_DIR = @top_srcdir@
|
|
SRC_DIR = @srcdir@
|
|
BIN_PREFIX = quake
|
|
|
|
DESTDIR =
|
|
|
|
prefix = @prefix@
|
|
bindir = @bindir@
|
|
mandir = @mandir@
|
|
|
|
COMMON_DIR=$(PROJECT_DIR)/common
|
|
BUILD_DIR =../targets/uquake
|
|
|
|
LDFLAGS = @LDFLAGS@ @SND_LIBS@ -lm
|
|
LIBS = @LIBS@
|
|
CC = @CC@
|
|
INTEL_ARCH = @INTEL_ARCH@
|
|
|
|
ifneq ($(SRC_DIR),.)
|
|
SRC_DIR_INC = -I$(SRC_DIR)
|
|
endif
|
|
|
|
HAS_GGI = @HAS_GGI@
|
|
HAS_SVGA = @HAS_SVGA@
|
|
HAS_GLIDE = @HAS_GLIDE@
|
|
HAS_TDFXGL = @HAS_TDFXGL@
|
|
HAS_OGL = @HAS_OGL@
|
|
HAS_XIL = @HAS_XIL@
|
|
HAS_X11 = @HAS_X11@
|
|
HAS_SDL = @HAS_SDL@
|
|
|
|
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
|
|
|
|
ifeq ($(HAS_GGI),yes)
|
|
GGIQUAKE = $(BIN_PREFIX)-ggi
|
|
endif
|
|
|
|
ifeq ($(HAS_SDL),yes)
|
|
SDLQUAKE = $(BIN_PREFIX)-sdl
|
|
endif
|
|
|
|
RELEASE = @RELEASE@
|
|
ifeq ($(RELEASE),yes)
|
|
OPTFLAGS = @RELEASE_CFLAGS@
|
|
else
|
|
OPTFLAGS = -g
|
|
endif
|
|
|
|
targets = $(GGIQUAKE) $(SVGAQUAKE) $(GLQUAKE) $(TDFXQUAKE) $(X11QUAKE) $(SDLQUAKE)
|
|
CLEAN_TARGETS = $(patsubst %,clean-%, $(targets))
|
|
.PHONY: $(targets) ($CLEAN_TARGETS)
|
|
|
|
all: $(targets)
|
|
|
|
########################################################################
|
|
#
|
|
# Source files
|
|
#
|
|
|
|
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),ALSA)
|
|
SND_SRC = snd_alsa.c alsa.c
|
|
endif
|
|
ifeq ($(SND_STYLE),OSS)
|
|
SND_SRC = snd_dma.c snd_oss.c
|
|
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
|
|
ifeq ($(SND_STYLE),Windows)
|
|
SND_SRC = snd_dma.c snd_win.c
|
|
endif
|
|
|
|
SND_SRC += snd_mem.c snd_mix.c snd_mixa.s
|
|
|
|
# x11 vid
|
|
|
|
X11_VID_SRC = @X11_VID_SRC@
|
|
|
|
SYS_SRC = @SYS_SRC@
|
|
|
|
#
|
|
# Networking source files
|
|
#
|
|
# XXX - Should not assume UNIX
|
|
NET_SRC = net_bsd.c net_udp.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 register_check.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_test.c gl_warp.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
|
|
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 UQ
|
|
UQ_SRV_SRC = host.c host_cmd.c $(SRV_SRC)
|
|
SRV_PR_SRC = pr_cmds.c pr_edict.c pr_exec.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@
|
|
CFLAGS = @CFLAGS@ $(OPTFLAGS) $(DEFS) -I. $(SRC_DIR_INC) \
|
|
-I$(COMMON_DIR) -I$(SRC_DIR)/include
|
|
ALL_X11_SRC = $(GENERAL_SRC) $(SW_REND_SRC) $(X11_VID_SRC) model.c
|
|
ALL_GL_SRC = $(GENERAL_SRC) $(GL_REND_SRC) $(GL_VID_SRC)
|
|
ALL_TDFX_SRC = $(GENERAL_SRC) $(GL_REND_SRC) $(TDFX_VID_SRC)
|
|
|
|
GENERAL_SRC = $(CL_COMMON_SRC) \
|
|
$(SYS_SRC) chasecam.c world.c $(SRV_PR_SRC) \
|
|
$(UQ_NET_SRC) $(UQ_SRV_SRC) \
|
|
$(UQ_GENERAL_SRC) $(UQ_SWREND_SRC_PLAT)
|
|
|
|
# XXX - add dos/win specific source
|
|
|
|
###########################################################################
|
|
#
|
|
# Compilation rules
|
|
#
|
|
|
|
###########################################################################
|
|
#
|
|
# quake-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@
|
|
|
|
# This can be thought of as a macro that makes sure that the x11
|
|
# sub-directory is created
|
|
x11_DIR:
|
|
DIR=x11; $(MAKE_SURE_DIR)
|
|
|
|
$(BUILD_DIR)/x11/%.o: $(SRC_DIR)/%.c
|
|
$(CC) $(CFLAGS) $(X11_CFLAGS) -o $@ -c $<
|
|
|
|
$(BUILD_DIR)/x11/%.o: $(SRC_DIR)/%.s
|
|
$(CC) $(CFLAGS) -DELF -x assembler-with-cpp -o $@ -c $<
|
|
|
|
$(BUILD_DIR)/x11/%.o: $(COMMON_DIR)/%.c
|
|
$(CC) $(CFLAGS) $(X11_CFLAGS) -o $@ -c $<
|
|
|
|
$(BUILD_DIR)/x11/%.o: $(COMMON_DIR)/%.s
|
|
$(CC) $(CFLAGS) -DELF -x assembler-with-cpp -o $@ -c $<
|
|
|
|
$(X11QUAKE): x11_DIR $(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
|
|
|
|
###########################################################################
|
|
#
|
|
# quake-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@
|
|
SVGA_VID_SRC = vid_svgalib.c
|
|
|
|
# This can be thought of as a macro that makes sure that the x11
|
|
# sub-directory is created
|
|
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
|
|
$(CC) -O $(CFLAGS) $(SVGA_CFLAGS) -o $@ -c $<
|
|
|
|
$(BUILD_DIR)/svga/%.o: $(SRC_DIR)/%.c
|
|
$(CC) $(CFLAGS) $(SVGA_CFLAGS) -o $@ -c $<
|
|
|
|
$(BUILD_DIR)/svga/%.o: $(SRC_DIR)/%.s
|
|
$(CC) $(CFLAGS) -DELF -x assembler-with-cpp -o $@ -c $<
|
|
|
|
$(BUILD_DIR)/svga/%.o: $(COMMON_DIR)/%.c
|
|
$(CC) $(CFLAGS) $(SVGA_CFLAGS) -o $@ -c $<
|
|
|
|
$(BUILD_DIR)/svga/%.o: $(COMMON_DIR)/%.s
|
|
$(CC) $(CFLAGS) -DELF -x assembler-with-cpp -o $@ -c $<
|
|
|
|
$(SVGAQUAKE): svga_DIR $(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
|
|
|
|
###########################################################################
|
|
#
|
|
# quake-ggi
|
|
#
|
|
ifneq ($(GGIQUAKE),)
|
|
|
|
# Map the list of source files into a list of object files
|
|
ALL_GGI_SRC = $(GENERAL_SRC) $(SW_REND_SRC) $(GGI_VID_SRC) model.c
|
|
OBJSquake-ggi = $(patsubst %,$(BUILD_DIR)/ggi/%,$(addsuffix .@OBJEXT@, $(basename $(ALL_GGI_SRC) .c .s)))
|
|
|
|
GGI_CFLAGS = -DGGI @GGI_CFLAGS@
|
|
GGI_LDFLAGS = @GGI_LIBS@
|
|
GGI_VID_SRC = vid_ggi.c
|
|
|
|
# This can be thought of as a macro that makes sure that the ggi
|
|
# sub-directory is created
|
|
ggi_DIR:
|
|
DIR=ggi; $(MAKE_SURE_DIR)
|
|
|
|
$(BUILD_DIR)/ggi/%.o: $(SRC_DIR)/%.c
|
|
$(CC) $(CFLAGS) $(GGI_CFLAGS) -o $@ -c $<
|
|
|
|
$(BUILD_DIR)/ggi/%.o: $(SRC_DIR)/%.s
|
|
$(CC) $(CFLAGS) -DELF -x assembler-with-cpp -o $@ -c $<
|
|
|
|
$(BUILD_DIR)/ggi/%.o: $(COMMON_DIR)/%.c
|
|
$(CC) $(CFLAGS) $(GGI_CFLAGS) -o $@ -c $<
|
|
|
|
$(BUILD_DIR)/ggi/%.o: $(COMMON_DIR)/%.s
|
|
$(CC) $(CFLAGS) -DELF -x assembler-with-cpp -o $@ -c $<
|
|
|
|
$(GGIQUAKE): ggi_DIR $(BUILD_DIR)/../$(GGIQUAKE)
|
|
|
|
$(BUILD_DIR)/../$(GGIQUAKE): $(OBJSquake-ggi)
|
|
$(CC) $(CFLAGS) $(OBJSquake-ggi) $(GGI_LDFLAGS) $(LDFLAGS) -o $(BUILD_DIR)/../$(GGIQUAKE)
|
|
# XXX - Can this be automated?
|
|
clean-$(GGIQUAKE):
|
|
rm -f $(OBJSquake-ggi)
|
|
endif
|
|
|
|
###########################################################################
|
|
#
|
|
# quake-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
|
|
gl_DIR:
|
|
DIR=gl; $(MAKE_SURE_DIR)
|
|
|
|
$(BUILD_DIR)/gl/%.o: $(SRC_DIR)/%.c
|
|
$(CC) $(CFLAGS) $(GL_CFLAGS) -o $@ -c $<
|
|
|
|
$(BUILD_DIR)/gl/%.o: $(SRC_DIR)/%.s
|
|
$(CC) $(CFLAGS) -DELF -x assembler-with-cpp -o $@ -c $<
|
|
|
|
$(BUILD_DIR)/gl/%.o: $(COMMON_DIR)/%.c
|
|
$(CC) $(CFLAGS) $(GL_CFLAGS) -o $@ -c $<
|
|
|
|
$(BUILD_DIR)/gl/%.o: $(COMMON_DIR)/%.s
|
|
$(CC) $(CFLAGS) -DELF -x assembler-with-cpp -o $@ -c $<
|
|
|
|
$(GLQUAKE): gl_DIR $(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
|
|
|
|
###########################################################################
|
|
#
|
|
# quake-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@
|
|
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
|
|
3dfx_DIR:
|
|
DIR=3dfx; $(MAKE_SURE_DIR)
|
|
|
|
$(BUILD_DIR)/3dfx/%.o: $(SRC_DIR)/%.c
|
|
$(CC) $(CFLAGS) $(TDFX_CFLAGS) -o $@ -c $<
|
|
|
|
$(BUILD_DIR)/3dfx/%.o: $(SRC_DIR)/%.s
|
|
$(CC) $(CFLAGS) -DELF -x assembler-with-cpp -o $@ -c $<
|
|
|
|
$(BUILD_DIR)/3dfx/%.o: $(COMMON_DIR)/%.c
|
|
$(CC) $(CFLAGS) $(TDFX_CFLAGS) -o $@ -c $<
|
|
|
|
$(BUILD_DIR)/3dfx/%.o: $(COMMON_DIR)/%.s
|
|
$(CC) $(CFLAGS) -DELF -x assembler-with-cpp -o $@ -c $<
|
|
|
|
$(TDFXQUAKE): 3dfx_DIR $(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
|
|
|
|
|
|
###########################################################################
|
|
#
|
|
# quake-sdl
|
|
#
|
|
ifneq ($(SDLQUAKE),)
|
|
ALL_SDL_SRC = $(GENERAL_SRC) $(SW_REND_SRC) $(SDL_VID_SRC) model.c
|
|
OBJSquake-sdl= $(patsubst %,$(BUILD_DIR)/sdl/%,$(addsuffix .@OBJEXT@, $(basename $(ALL_SDL_SRC) .c .s)))
|
|
|
|
SDL_CFLAGS = @SDL_CFLAGS@ -DSDL
|
|
SDL_LDFLAGS = @SDL_LIBS@
|
|
SDL_VID_SRC = vid_sdl.c
|
|
|
|
# This can be thought of as a macro that makes sure that the x11
|
|
# sub-directory is created
|
|
sdl_DIR:
|
|
DIR=sdl; $(MAKE_SURE_DIR)
|
|
|
|
$(BUILD_DIR)/sdl/%.o: $(SRC_DIR)/%.c
|
|
$(CC) $(CFLAGS) $(SDL_CFLAGS) -o $@ -c $<
|
|
|
|
$(BUILD_DIR)/sdl/%.o: $(SRC_DIR)/%.s
|
|
$(CC) $(CFLAGS) -DELF -x assembler-with-cpp -o $@ -c $<
|
|
|
|
$(BUILD_DIR)/sdl/%.o: $(COMMON_DIR)/%.c
|
|
$(CC) $(CFLAGS) $(SDL_CFLAGS) -o $@ -c $<
|
|
|
|
$(BUILD_DIR)/sdl/%.o: $(COMMON_DIR)/%.s
|
|
$(CC) $(CFLAGS) -DELF -x assembler-with-cpp -o $@ -c $<
|
|
|
|
$(SDLQUAKE): sdl_DIR $(BUILD_DIR)/../$(SDLQUAKE)
|
|
|
|
$(BUILD_DIR)/../$(SDLQUAKE): $(OBJSquake-sdl)
|
|
$(CC) $(CFLAGS) $(OBJSquake-sdl) $(SDL_LDFLAGS) $(LDFLAGS) -o $(BUILD_DIR)/../$(SDLQUAKE)
|
|
# XXX - Can this be automated?
|
|
clean-$(SDLQUAKE):
|
|
rm -f $(OBJSquake-sdl)
|
|
endif
|
|
|
|
###########################################################################
|
|
#
|
|
# cleaning (clean, distclean)
|
|
#
|
|
distclean: clean
|
|
rm -f config.cache config.log config.status Makefile
|
|
|
|
clean: $(CLEAN_TARGETS)
|
|
for i in $(targets); do \
|
|
rm -f $(BUILD_DIR)/../$$i; \
|
|
done
|
|
|
|
install: $(targets)
|
|
$(PROJECT_DIR)/mkinstalldirs $(DESTDIR)$(prefix)$(bindir)
|
|
for i in $(targets); do \
|
|
$(PROJECT_DIR)/install-sh -m 755 $(BUILD_DIR)/../$$i \
|
|
$(DESTDIR)$(prefix)$(bindir)/$$i; \
|
|
done
|
|
|
|
check:
|
|
@echo check not implemented
|
|
|