########################################################################
# Quake Makefile for Elate
########################################################################
# Modified by profj (profj@bigfoot.com) - It now compiles! :-)

MOUNT_DIR=.

BUILD_DEBUG_DIR=debug
BUILD_RELEASE_DIR=bin

CC=vpcc

BASE_CFLAGS=
RELEASE_CFLAGS=$(BASE_CFLAGS) -O3
DEBUG_CFLAGS=$(BASE_CFLAGS) -g -Wall
LDFLAGS=

DO_CC=$(CC) $(CFLAGS) -o $@ -c $<
DO_DEBUG_CC=$(CC) $(DEBUG_CFLAGS) -o $@ -c $<
DO_O_CC=$(CC) -O $(CFLAGS) -o $@ -c $<
DO_AS=$(CC) $(CFLAGS) -DELF -x assembler-with-cpp -o $@ -c $<

########################################################################
# Setup and build
########################################################################

TARGETS=$(BUILDDIR)/avequake.00
#	$(BUILDDIR)/grfquake.00

build_release:
mkdir -p $(BUILD_RELEASE_DIR)/grfquake $(BUILD_RELEASE_DIR)/avequake
$(MAKE) targets {BUILDDIR=$(BUILD_RELEASE_DIR)} {CFLAGS=$(RELEASE_CFLAGS)}

build_debug:
mkdir -p $(BUILD_DEBUG_DIR)/grfquake $(BUILD_DEBUG_DIR)/avequake
$(MAKE) targets {BUILDDIR=$(BUILD_DEBUG_DIR)} {CFLAGS=$(DEBUG_CFLAGS)}

all: build_debug build_release

targets: $(TARGETS)

QUAKE_OBJS = cl_demo.o cl_input.o \
 cl_main.o cl_parse.o \
 cl_tent.o chase.o \
 cmd.o common.o \
 console.o crc.o \
 cvar.o draw.o \
 d_edge.o d_fill.o \
 d_init.o d_modech.o \
 d_part.o d_polyse.o \
 d_scan.o d_sky.o \
 d_sprite.o d_surf.o \
 d_vars.o d_zpoint.o \
 host.o host_cmd.o \
 keys.o menu.o \
 mathlib.o model.o \
 net_loop.o net_main.o \
 net_vcr.o net_none.o \
 nonintel.o pr_cmds.o \
 pr_edict.o pr_exec.o \
 r_aclip.o r_alias.o \
 r_bsp.o r_light.o \
 r_draw.o r_efrag.o \
 r_edge.o r_misc.o \
 r_main.o r_sky.o \
 r_sprite.o r_surf.o \
 r_part.o r_vars.o \
 screen.o sbar.o \
 sv_main.o sv_phys.o \
 sv_move.o sv_user.o \
 zone.o view.o \
 wad.o world.o \
 cd_null.o sys_elate.o \
 snd_null.o in_null.o

$(BUILDDIR)/%.o : $(MOUNT_DIR)/%.c
$(DO_CC)

########################################################################
# GRF Quake
########################################################################

GRFQUAKE_OBJS = $(QUAKE_OBJS:%=$(BUILDDIR)/%) $(BUILDDIR)/grfquake/vid_elate.o

$(BUILDDIR)/grfquake.00 : $(GRFQUAKE_OBJS)
$(CC) $(CFLAGS) -o $@ $(GRFQUAKE_OBJS) $(LDFLAGS)

$(BUILDDIR)/grfquake/vid_elate.o : $(MOUNT_DIR)/vid_elate.c
$(DO_O_CC)

########################################################################
# AVE Quake
########################################################################

AVEQUAKE_OBJS = $(QUAKE_OBJS:%=$(BUILDDIR)/%) $(BUILDDIR)/avequake/vid_elate.o

$(BUILDDIR)/avequake.00 : $(AVEQUAKE_OBJS)
$(CC) $(CFLAGS) -o $@ $(AVEQUAKE_OBJS) $(XLDFLAGS) $(LDFLAGS)

$(BUILDDIR)/avequake/vid_elate.o : $(MOUNT_DIR)/vid_elate.c
$(DO_O_CC) -DAVE

########################################################################
# Misc
########################################################################

clean:
rm -Rf $(BUILD_DEBUG_DIR) $(BUILD_RELEASE_DIR)

