ngunix/WinQuake/makefile.djgpp
2014-04-12 08:29:30 -04:00

331 lines
6.4 KiB
Text

#
# DJGPP makefile for DOSQuake by Norberto Alfredo Bensa <nbensa@hotmail.com>
# Usage: make -f makefile.djgpp [DEBUG=X] [VERBOSE=X]
#
# Use DEBUG=X for a debug version
# Use VERBOSE=X to see all the tool calls
#
# --------------------------------------------------------------------------
#
# Necessary changes for the code to work with DJGPP:
# 1. Remove the "static" statement for the isDedicated variable in SYS_DOS.C
# 2. Add the following to lines to SYS_DOS.C to fix the memory detection bug
# #include <crt0.h>
# int _crt0_startup_flags = _CRT0_FLAG_UNIX_SBRK;
# 3. There are more bugs in DOSQuake, for a list of known Quake bugs visit
# the Quake Info Pool through http://www.bigfoot.com/~maddes (redirection)
#
# --------------------------------------------------------------------------
#
# Packages needed to build DOSQuake can be downloaded at http://www.delorie.com/djgpp/
# (ftp://ftp.simtelnet.net/pub/simtelnet/gnu/djgpp/)
#
# Go to the ZipPicker page and choose the following for the minimum download:
# - "Build and run programs with DJGPP"
# - state your OS
# - online-documentation: "yes" (not necessary, but helpful)
# - programming language: "C"
# - you don't need RHide or the GNU debugger
# - get the extra documentation formats if you are not used to info
#
# As of 2000-07-27 you will get the following download list (older versions may work too)
# - v2/copying.dj DJGPP Copyright info 3 kb
# - v2/djdev203.zip DJGPP Basic Development Kit 1.5 mb
# - v2/faq230b.zip Frequently Asked Questions 664 kb
# - v2/readme.1st Installation instructions 20 kb
# - v2gnu/bnu2951b.zip Basic assembler, linker 2.4 mb
# - v2gnu/gcc2952b.zip Basic GCC compiler 1.8 mb
# - v2gnu/gdb418b.zip GNU debugger 1.1 mb
# - v2gnu/mak379b.zip Make (processes makefiles) 263 kb
# - v2gnu/txi40b.zip Info file viewer 632 kb
#
# Additional tools needed:
# - v2gnu/bsh203b.zip BASH ported to DJGPP 483 kb
# - v2gnu/fil316b.zip Unix tools ported to DJGPP 979 kb
# - v2gnu/sed302b.zip SED ported to DJGPP 105 kb
#
#
# NOTE: You can compress the final executable with UPX (http://upx.tsx.org/)
#
# --------------------------------------------------------------------------
#
# Enjoy,
# Norberto Alfredo Bensa, Argentina
#
# 2000-05-02 NVS Network Versioning by Maddes
# added NVS files
#
# General and compiler variables
#
ifndef VERBOSE
MAKEFLAGS+=-s
endif
SHELL=/bin/sh
CC=gcc
LD=gcc
AS=gcc -x assembler-with-cpp
RM=rm -f
CFLAGS=\
-DDOSQUAKE \
-O9 \
-march=i586 \
-Wall \
-fomit-frame-pointer \
-ffast-math \
-fno-unroll-loops \
-fno-inline-functions
LDFLAGS=
CSTUB=
LIBS=-lc -lgcc -lm -lalleg
ifdef DEBUG
CFLAGS+=\
-gstabs+3 \
-O0 \
-fno-omit-frame-pointer \
-fno-fast-math
OBJDIR=debug_dos
else
CFLAGS+=-DNDEBUG
LDFLAGS+=-s
OBJDIR=release_dos
endif
#
# Filename variables
#
# Executable
BUILD=$(OBJDIR)/tnqdos.exe
# Source files
NET= \
net_dgrm.c \
net_loop.c \
net_main.c \
net_vcr.c
RENDER= \
r_aclip.c \
r_aclipa.s \
r_alias.c \
r_aliasa.s \
r_bsp.c \
r_draw.c \
r_drawa.s \
r_edge.c \
r_edgea.s \
r_efrag.c \
r_light.c \
r_main.c \
r_misc.c \
r_part.c \
r_sky.c \
r_sprite.c \
r_surf.c \
r_vars.c \
r_varsa.s
DRAW= \
d_copy.s \
d_draw.s \
d_draw16.s \
d_fog16.s \
d_edge.c \
d_fill.c \
d_init.c \
d_modech.c \
d_part.c \
d_polyse.c \
d_polysa.s \
d_parta.s \
d_scan.c \
d_scana.s \
d_sky.c \
d_spr8.s \
d_sprite.c \
d_surf.c \
d_vars.c \
d_varsa.s \
d_zpoint.c
CLIENT= \
nvs_client.c \
cl_demo.c \
cl_input.c \
cl_main.c \
cl_parse.c \
cl_tent.c
SERVER= \
nvs_server.c \
nvs_server_data.c \
sv_main.c \
sv_move.c \
sv_phys.c \
bot.c \
sv_user.c
SOUND= \
snd_dma.c \
snd_mem.c \
snd_mix.c \
snd_mixa.s
PROGRAMS= \
pr_cmds.c \
pr_edict.c \
pr_exec.c
DOS= \
cd_audio.c \
dos_v2.c \
dosasm.s \
in_dos.c \
mplib.c \
mplpc.c \
net_bw.c \
net_dos.c \
net_ipx.c \
net_mp.c \
net_ser.c \
snd_dos.c \
snd_gus.c \
sys_dos.c \
sys_dosa.s \
vid_vga.c \
vid_ext.c \
vid_dos.c \
vregset.c
SOURCES= \
$(CLIENT) \
$(DRAW) \
$(NET) \
$(PROGRAMS) \
$(RENDER) \
$(SERVER) \
$(SOUND) \
$(DOS) \
chase.c \
cmd.c \
nvs_common.c \
common.c \
console.c \
crc.c \
cvar.c \
draw.c \
host.c \
host_cmd.c \
keys.c \
math.s \
mathlib.c \
menu.c \
model_common.c \
model.c \
nonintel.c \
sbar.c \
screen.c \
surf8.s \
surf8fst.s \
surf16.s \
view.c \
wad.c \
world.c \
worlda.s \
zone.c
# Compute object files from source files
OBJS=\
$(addprefix $(OBJDIR)/,\
$(addsuffix .o,\
$(basename $(SOURCES))\
)\
)
# Compute dependency files from source files
DEPS=\
$(addprefix $(OBJDIR)/,\
$(addsuffix .d,\
$(basename $(SOURCES))\
)\
)
#
# Rules
#
# Standard for "Build it, please"
.PHONY : all
all : $(BUILD)
@echo "Done."
# Compile directory
$(OBJDIR) :
@echo "Creating compiling directory $(OBJDIR)..."
mkdir $(OBJDIR)
# Dependencies
SEDDEP=\
sed '1s|$*.o|$(OBJDIR)/& $@ |' > $@;\
[ -s $@ ] || $(RM) $@
$(OBJDIR)/%.d : %.c $(OBJDIR)
@echo "Generating dependencies for $<..."
set -e; $(CC) -MM $(CFLAGS) $< | $(SEDDEP)
$(OBJDIR)/%.d : ../asm/%.s $(OBJDIR)
@echo "Generating dependencies for $<..."
set -e; $(AS) -MM $(CFLAGS) $< | $(SEDDEP)
# Objects
$(OBJDIR)/%.o : %.c $(OBJDIR)
@echo "Compiling $<..."
$(CC) $(CFLAGS) -c -o $@ $<
$(OBJDIR)/%.o : ../asm/%.s $(OBJDIR)
@echo "Assembling $<..."
$(AS) $(CFLAGS) -c -o $@ $<
# Include all dependencies
ifeq (,$(filter $(MAKECMDGOALS),\
clean \
cleanexe \
cleanobj \
cleandep))
-include $(DEPS)
endif
# Executable
$(BUILD) : $(OBJS)
@echo "Linking $@..."
$(LD) -o $(BUILD) $(LDFLAGS) $(CSTUB) $(OBJS) $(LIBS)
#
# Cleaning procedures
#
.PHONY : clean cleanexe cleanobj cleandep
clean : cleanexe cleanobj cleandep
cleanexe :
@echo "Cleaning executable from $(OBJDIR)..."
$(RM) $(BUILD)
cleanobj :
@echo "Cleaning objects from $(OBJDIR)..."
$(RM) $(OBJS)
cleandep :
@echo "Cleaning dependecies from $(OBJDIR)..."
$(RM) $(DEPS)