quakeforge-old/uquake/Makefile.in
Bill Currie fabe501768 the merge continues. qw_common/common.c and uquake/common.c have /finally/ been
merged with the command line args merged into common/qargs.c. Args rebuilding
in qargs.c should now be totally safe with no limits.
2000-02-10 13:49:39 +00:00

521 lines
13 KiB
Makefile

########################################################################
#
# Quake general stuff
#
PROJECT_DIR = @top_srcdir@
PROJECT_ODIR = ..
SRC_DIR = @srcdir@
COMMON_DIR = $(PROJECT_DIR)/common
COMMON_ODIR = $(PROJECT_ODIR)/common
BIN_PREFIX = uquake
DESTDIR =
prefix = @prefix@
exec_prefix = @exec_prefix@
bindir = @bindir@
mandir = @mandir@
TARGET_DIR = $(PROJECT_ODIR)/targets
BUILD_DIR = $(TARGET_DIR)/uquake
LDFLAGS = @LDFLAGS@ @SOUND_LIBS@ @NET_LIBS@ -lm
LIBS = @LIBS@
CC = @CC@
INTEL_ARCH = @INTEL_ARCH@
NO_ASMOPT = @NO_ASMOPT@
ifneq ($(SRC_DIR),.)
SRC_DIR_INC = -I$(SRC_DIR)
endif
HAS_DGA = @HAS_DGA@
HAS_VGA = @HAS_VGA@
HAS_MGL = @HAS_MGL@
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@
HAVE_WSOCK = @HAVE_WSOCK@
HAVE_UDP = @HAVE_UDP@
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
#
COMMON_LIB=common_lib.a
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_VGA),yes)
VGAQUAKE = $(BIN_PREFIX)-vga
endif
ifeq ($(HAS_MGL),yes)
MGLQUAKE = $(BIN_PREFIX)-mgl
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
soft_targets = $(X11QUAKE) $(SVGAQUAKE) $(GGIQUAKE) $(SDLQUAKE) $(MGLQUAKE) \
$(VGAQUAKE)
gl_targets = $(GLQUAKE) $(TDFXQUAKE)
lib_targets = $(COMMON_LIB)
targets = $(lib_targets) $(gl_targets) $(soft_targets)
CLEAN_TARGETS = $(patsubst %,clean-%, $(targets))
.PHONY: $(targets) $(CLEAN_TARGETS) clean-soft clean-gl
all: $(targets)
########################################################################
#
# Source files
#
ifneq ($(NO_ASMOPT),yes)
# Source file the Intel archictecture only
CFLAGS = -Did386=1
UQ_GENERAL_SRC = worlda.s
UQ_SWREND_SRC_PLAT = dosasm.s
CL_ADDITIONAL_GENERAL_SRC = sys_dosa.s math.s
SWREND_SRC_PLAT = 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
CFLAGS = -Did386=0
SWREND_SRC_PLAT = nonintel.c
endif
# System specific source files
CD_AUDIO_SRC = cd_wrapper.c
SYS_SRC = sys_common.c @SYS_SRC@
# Networking source files
ifeq ($(HAVE_WSOCK),yes)
NET_SRC = net_win.c net_wins.c net_wipx.c
else
ifeq ($(HAVE_UDP),yes)
NET_SRC = net_bsd.c net_udp.c
else
NET_SRC = net_dos.c net_bw.c net_ipx.c net_mp.c net_ser.c
endif
endif
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 cvars.c lib_replace.c qendian.c quakefs.c \
quakeio.c qargs.c
# GL renderer source
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 \
gl_cl_parse.c gl_rpart.c gl_view.c
# Software renderer 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 sw_cl_parse.c sw_rpart.c sw_view.c
# Client source files
CL_SRC = cl_demo.c cl_input.c cl_main.c cl_parse.c cl_tent.c cl_ents.c
CL_GUI_SRC= console.c sbar.c view.c keys.c menu.c
# Server source files
SRV_SRC = sv_main.c sv_user.c sv_move.c sv_phys.c
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 QW/UQuake
CL_COMMON_SRC = $(MISC_SRC) $(CL_GUI_SRC) $(CL_SRC) \
$(CL_ADDITIONAL_GENERAL_SRC) r_part.c
########################################################################
#
# Directory specific stuff
#
DEFS = @DEFS@
CFLAGS += @CFLAGS@ $(OPTFLAGS) $(DEFS) -I. $(SRC_DIR_INC) \
-I$(COMMON_ODIR) -I$(COMMON_DIR) -DUQUAKE
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)
# FIXME: add dos/win specific source
###########################################################################
#
# Compilation rules
#
# Common lib targets.
$(BUILD_DIR)/common_lib/%.@OBJEXT@: $(SRC_DIR)/%.c
$(CC) $(CFLAGS) -o $@ -c $<
$(BUILD_DIR)/common_lib/%.@OBJEXT@: $(SRC_DIR)/%.s
$(CC) $(CFLAGS) -x assembler-with-cpp -o $@ -c $<
$(BUILD_DIR)/common_lib/%.@OBJEXT@: $(COMMON_DIR)/%.c
$(CC) $(CFLAGS) -o $@ -c $<
$(BUILD_DIR)/common_lib/%.@OBJEXT@: $(COMMON_DIR)/%.s
$(CC) $(CFLAGS) -x assembler-with-cpp -o $@ -c $<
# Software targets
$(BUILD_DIR)/%.@OBJEXT@: $(SRC_DIR)/%.c
$(CC) $(CFLAGS) -o $@ -c $<
$(BUILD_DIR)/%.@OBJEXT@: $(SRC_DIR)/%.s
$(CC) $(CFLAGS) -x assembler-with-cpp -o $@ -c $<
$(BUILD_DIR)/%.@OBJEXT@: $(COMMON_DIR)/%.c
$(CC) $(CFLAGS) -o $@ -c $<
$(BUILD_DIR)/%.@OBJEXT@: $(COMMON_DIR)/%.s
$(CC) $(CFLAGS) -x assembler-with-cpp -o $@ -c $<
# GL targets
$(BUILD_DIR)/%.@OBJEXT@: $(SRC_DIR)/%.c
$(CC) $(CFLAGS) $(GL_CFLAGS) -o $@ -c $<
$(BUILD_DIR)/%.@OBJEXT@: $(SRC_DIR)/%.s
$(CC) $(CFLAGS) -x assembler-with-cpp -o $@ -c $<
$(BUILD_DIR)/%.@OBJEXT@: $(COMMON_DIR)/%.c
$(CC) $(CFLAGS) $(GL_CFLAGS) -o $@ -c $<
$(BUILD_DIR)/%.@OBJEXT@: $(COMMON_DIR)/%.s
$(CC) $(CFLAGS) -x assembler-with-cpp -o $@ -c $<
###########################################################################
#
# Specific target rules
#
# Lib Software targets
ALL_COMMON_LIB_OBJS = $(patsubst %,$(BUILD_DIR)/common_lib/%,$(addsuffix \
.@OBJEXT@, $(basename $(GENERAL_SRC) .c .s)))
common_lib_DIR:
@DIR=common_lib; $(MAKE_SURE_DIR)
$(COMMON_LIB): common_lib_DIR $(BUILD_DIR)/common_lib.a
$(BUILD_DIR)/common_lib.a: $(ALL_COMMON_LIB_OBJS)
ar cru $@ $(ALL_COMMON_LIB_OBJS)
@RANLIB@ $@
# X11 software target
ifneq ($(X11QUAKE),)
ALL_X11_SRC = $(CD_AUDIO_SRC) $(SW_REND_SRC) @X11_VID_SRC@ model.c
ALL_X11_OBJS = $(patsubst %,$(BUILD_DIR)/%,$(addsuffix .@OBJEXT@,\
$(basename $(ALL_X11_SRC) .c .s))) \
$(BUILD_DIR)/common_lib.a \
$(TARGET_DIR)/sound_lib.a
X11_CFLAGS = -DX11 @X_CFLAGS@
X11_LDFLAGS = @X_LIBS@ -lX11 @X11_SHM_LIB@ @X_EXTRA_LIBS@
# FIXME: This rule is pathological because of the seperate sunx driver,
# either merge it into vid_x.c or make a seperate sun target. In either
# case, find the moro^wpeople responsible for this and other stupidities
# in Solaris and "educate" them.
$(BUILD_DIR)/$(addsuffix .@OBJEXT@,$(basename @X11_VID_SRC@ .c)):\
$(COMMON_DIR)/@X11_VID_SRC@
$(CC) $(CFLAGS) $(X11_CFLAGS) -o $@ -c $<
$(X11QUAKE): $(BUILD_DIR)/../$(X11QUAKE)
$(BUILD_DIR)/../$(X11QUAKE): $(ALL_X11_OBJS)
$(CC) $(CFLAGS) $(ALL_X11_OBJS) $(X11_LDFLAGS) $(LDFLAGS) $(LIBS) \
-o $(BUILD_DIR)/../$(X11QUAKE)
endif
# SVGALib software target
ifneq ($(SVGAQUAKE),)
ALL_SVGA_SRC = $(CD_AUDIO_SRC) $(SW_REND_SRC) \
vid_svgalib.c in_svgalib.c d_copy.s model.c
ALL_SVGA_OBJS = $(patsubst %,$(BUILD_DIR)/%,$(addsuffix .@OBJEXT@,\
$(basename $(ALL_SVGA_SRC) .c .s))) \
$(BUILD_DIR)/common_lib.a \
$(TARGET_DIR)/sound_lib.a
SVGA_CFLAGS = @SVGA_CFLAGS@
SVGA_LDFLAGS = @SVGA_LIBS@
# Not sure why this -O is needed, but it is...
$(BUILD_DIR)/vid_svgalib.@OBJEXT@: $(COMMON_DIR)/vid_svgalib.c
$(CC) $(CFLAGS) $(SVGA_CFLAGS) -O -o $@ -c $<
$(BUILD_DIR)/d_copy.@OBJEXT@: $(COMMON_DIR)/d_copy.s
$(CC) $(CFLAGS) -x assembler-with-cpp -o $@ -c $<
$(SVGAQUAKE): $(BUILD_DIR)/../$(SVGAQUAKE)
$(BUILD_DIR)/../$(SVGAQUAKE): $(ALL_SVGA_OBJS)
$(CC) $(CFLAGS) $(ALL_SVGA_OBJS) $(SVGA_LDFLAGS) $(LDFLAGS) $(LIBS) \
-o $(BUILD_DIR)/../$(SVGAQUAKE)
endif
# GGI software target
ifneq ($(GGIQUAKE),)
# Map the list of source files into a list of object files
ALL_GGI_SRC = $(CD_AUDIO_SRC) $(SW_REND_SRC) vid_ggi.c\
model.c
ALL_GGI_OBJS = $(patsubst %,$(BUILD_DIR)/%,$(addsuffix .@OBJEXT@,\
$(basename $(ALL_GGI_SRC) .c .s))) \
$(BUILD_DIR)/common_lib.a \
$(TARGET_DIR)/sound_lib.a
GGI_SRC = vid_ggi.c
GGI_CFLAGS = -DGGI @GGI_CFLAGS@
GGI_LDFLAGS = @GGI_LIBS@
$(BUILD_DIR)/vid_ggi.@OBJEXT@: $(COMMON_DIR)/vid_ggi.c
$(CC) $(CFLAGS) $(GGI_CFLAGS) -o $@ -c $<
$(GGIQUAKE): $(BUILD_DIR)/../$(GGIQUAKE)
$(BUILD_DIR)/../$(GGIQUAKE): $(ALL_GGI_OBJS)
$(CC) $(CFLAGS) $(ALL_GGI_OBJS) $(GGI_LDFLAGS) $(LDFLAGS) $(LIBS) \
-o $(BUILD_DIR)/../$(GGIQUAKE)
endif
# SDL software target
ifneq ($(SDLQUAKE),)
ALL_SDL_SRC = $(SW_REND_SRC) $(SDL_SRC) vid_sdl.c cd_sdl.c\
model.c
ALL_SDL_OBJS = $(patsubst %,$(BUILD_DIR)/%,$(addsuffix .@OBJEXT@,\
$(basename $(ALL_SDL_SRC) .c .s))) \
$(BUILD_DIR)/common_lib.a \
$(TARGET_DIR)/sound_lib.a
SDL_CFLAGS = @SDL_CFLAGS@ -DSDL
SDL_LDFLAGS = @SDL_LIBS@
$(BUILD_DIR)/vid_sdl.@OBJEXT@: $(COMMON_DIR)/vid_sdl.c
$(CC) $(CFLAGS) $(SDL_CFLAGS) -o $@ -c $<
$(BUILD_DIR)/cd_sdl.@OBJEXT@: $(COMMON_DIR)/cd_sdl.c
$(CC) $(CFLAGS) $(SDL_CFLAGS) -o $@ -c $<
$(SDLQUAKE): $(BUILD_DIR)/../$(SDLQUAKE)
$(BUILD_DIR)/../$(SDLQUAKE): $(ALL_SDL_OBJS)
$(CC) $(CFLAGS) $(ALL_SDL_OBJS) $(SDL_LDFLAGS) $(LDFLAGS) $(LIBS) \
-o $(BUILD_DIR)/../$(SDLQUAKE)
endif
# MGL software target
ifneq ($(MGLQUAKE),)
# Map the list of source files into a list of object files
ALL_MGL_SRC = $(CD_AUDIO_SRC) $(SW_REND_SRC) \
vid_win.c in_win.c conproc.c model.c
ALL_MGL_OBJS = $(patsubst %,$(BUILD_DIR)/%,$(addsuffix .@OBJEXT@,\
$(basename $(ALL_MGL_SRC) .c .s))) \
$(BUILD_DIR)/common_lib.a \
$(TARGET_DIR)/sound_lib.a
MGL_CFLAGS = @MGL_CFLAGS@ -DMGL
MGL_LDFLAGS = @MGL_LIBS@
$(BUILD_DIR)/vid_win.@OBJEXT@: $(COMMON_DIR)/vid_win.c
$(CC) $(CFLAGS) $(MGL_CFLAGS) -o $@ -c $<
$(BUILD_DIR)/in_win.@OBJEXT@: $(COMMON_DIR)/in_win.c
$(CC) $(CFLAGS) $(MGL_CFLAGS) -o $@ -c $<
$(MGLQUAKE): $(BUILD_DIR)/../$(MGLQUAKE)
$(BUILD_DIR)/../$(MGLQUAKE): $(ALL_MGL_OBJS)
$(CC) $(CFLAGS) $(ALL_MGL_OBJS) $(MGL_LDFLAGS) $(LDFLAGS) $(LIBS) \
-o $(BUILD_DIR)/../$(MGLQUAKE)
endif
# VGA software target
ifneq ($(VGAQUAKE),)
# Map the list of source files into a list of object files
ALL_VGA_SRC = $(CD_AUDIO_SRC) $(SW_REND_SRC) $(DOS_NET_SRC) \
vid_vga.c vid_ext.c vid_dos.c vregset.c in_dos.c dos_v2.c \
d_copy.s model.c
ALL_VGA_OBJS = $(patsubst %,$(BUILD_DIR)/%,$(addsuffix .@OBJEXT@,\
$(basename $(ALL_VGA_SRC) .c .s))) \
$(BUILD_DIR)/common_lib.a \
$(TARGET_DIR)/sound_lib.a
VGA_CFLAGS = @VGA_CFLAGS@ -DVGA
VGA_LDFLAGS = @VGA_LIBS@
$(BUILD_DIR)/vid_win.@OBJEXT@: $(COMMON_DIR)/vid_win.c
$(CC) $(CFLAGS) $(VGA_CFLAGS) -o $@ -c $<
$(BUILD_DIR)/in_win.@OBJEXT@: $(COMMON_DIR)/in_win.c
$(CC) $(CFLAGS) $(VGA_CFLAGS) -o $@ -c $<
$(VGAQUAKE): $(BUILD_DIR)/../$(VGAQUAKE)
$(BUILD_DIR)/../$(VGAQUAKE): $(ALL_VGA_OBJS)
$(CC) $(CFLAGS) $(ALL_VGA_OBJS) $(VGA_LDFLAGS) $(LDFLAGS) $(LIBS) \
-o $(BUILD_DIR)/../$(VGAQUAKE)
endif
# X11 GL target
ifneq ($(GLQUAKE),)
ALL_GL_SRC = $(CD_AUDIO_SRC) $(GL_REND_SRC) \
gl_vidglx.c dga_check.c
ALL_GL_OBJS = $(patsubst %,$(BUILD_DIR)/%,$(addsuffix .@OBJEXT@,\
$(basename $(ALL_GL_SRC) .c .s))) \
$(BUILD_DIR)/common_lib.a \
$(TARGET_DIR)/sound_lib.a
GL_CFLAGS = @OGL_CFLAGS@
GL_LDFLAGS = $(X11_LDFLAGS) @OGL_LIBS@ @DGA_LIBS@ @DYN_LIBS@
$(BUILD_DIR)/gl_vidglx.o: $(COMMON_DIR)/gl_vidglx.c
$(CC) $(CFLAGS) $(GL_CFLAGS) -o $@ -c $<
$(BUILD_DIR)/dga_check.@OBJEXT@: $(COMMON_DIR)/dga_check.c
$(CC) $(CFLAGS) $(X11_CFLAGS) -o $@ -c $<
$(GLQUAKE): $(BUILD_DIR)/../$(GLQUAKE)
$(BUILD_DIR)/../$(GLQUAKE): $(ALL_GL_OBJS)
$(CC) $(CFLAGS) $(ALL_GL_OBJS) $(GL_LDFLAGS) $(LDFLAGS) $(LIBS) \
-o $(BUILD_DIR)/../$(GLQUAKE)
endif
# 3Dfx GL MCD target
ifneq ($(TDFXQUAKE),)
ALL_TDFX_SRC = $(CD_AUDIO_SRC) $(GL_REND_SRC) \
gl_vidlinux_3dfx.c in_svgalib.c
ALL_TDFX_OBJS = $(patsubst %,$(BUILD_DIR)/%,$(addsuffix .@OBJEXT@,\
$(basename $(ALL_TDFX_SRC) .c .s))) \
$(BUILD_DIR)/common_lib.a \
$(TARGET_DIR)/sound_lib.a
TDFX_CFLAGS = @OGL_CFLAGS@ @GLIDE_CFLAGS@
TDFX_LDFLAGS = @SVGA_LIBS@ @TDFXGL_LIBS@
$(BUILD_DIR)/gl_vidlinux_3dfx.@OBJEXT@: $(COMMON_DIR)/gl_vidlinux_3dfx.c
$(CC) $(CFLAGS) $(TDFX_CFLAGS) -o $@ -c $<
$(TDFXQUAKE): $(BUILD_DIR)/../$(TDFXQUAKE)
$(BUILD_DIR)/../$(TDFXQUAKE): $(ALL_TDFX_OBJS)
$(CC) $(CFLAGS) $(ALL_TDFX_OBJS) $(TDFX_LDFLAGS) $(LDFLAGS) $(LIBS) \
-o $(BUILD_DIR)/../$(TDFXQUAKE)
endif
###########################################################################
#
# Misc targets
#
distclean: clean
rm -f Makefile
$(CLEAN_TARGETS):
rm -f $(BUILD_DIR)/../$(subst clean-,,$@)
clean-soft clean-gl clean-common_lib:
rm -rf $(BUILD_DIR)/$(subst clean-,,$@)
clean: clean-soft clean-gl clean-common_lib $(CLEAN_TARGETS)
-rmdir $(BUILD_DIR)
install: $(targets)
$(PROJECT_DIR)/mkinstalldirs $(DESTDIR)/$(bindir)
for i in $(targets); do \
$(PROJECT_DIR)/install-sh -m 755 $(BUILD_DIR)/../$$i \
$(DESTDIR)/$(bindir)/$$i; \
done
check:
@echo check not implemented