BUILD_RELEASE_DIR=.
ARCH=x86
CC=gcc
BASE_CFLAGS=-O3 -DC_ONLY -D__ZCAM__ -mwindows -mno-cygwin -I./game -I./cgame
GAME_CFLAGS=$(BASE_CFLAGS)
CGAME_CFLAGS=$(BASE_CFLAGS) -DCGAME

SHLIBEXT=dll

SHLIBCFLAGS=
SHLIBLDFLAGS=-shared

DO_GAME_SHLIB_CC=$(CC) $(GAME_CFLAGS) $(SHLIBCFLAGS) -o $@ -c $<
DO_CGAME_SHLIB_CC=$(CC) $(CGAME_CFLAGS) $(SHLIBCFLAGS) -o $@ -c $<

TARGETS=game/qagame$(ARCH).$(SHLIBEXT) \
	cgame/cgame$(ARCH).$(SHLIBEXT)

targets: $(TARGETS)

BGAME_OBJS = \
	game/bg_misc.o \
	game/bg_pmove.o \
	game/bg_slidemove.o \
	game/q_math.o \
	game/q_shared.o 

GAME_OBJS = \
	game/zcam.o \
	game/zcam_target.o \
	game/g_main.o \
	game/g_syscalls.o \
	game/ai_dmnet.o \
	game/ai_dmq3.o \
	game/ai_main.o \
	game/ai_chat.o \
	game/ai_cmd.o \
	game/ai_team.o \
	game/g_active.o \
	game/g_arenas.o \
	game/g_bot.o \
	game/g_client.o \
	game/g_cmds.o \
	game/g_combat.o \
	game/g_items.o \
	game/g_mem.o \
	game/g_misc.o \
	game/g_missile.o \
	game/g_mover.o \
	game/g_session.o \
	game/g_spawn.o \
	game/g_svcmds.o \
	game/g_target.o \
	game/g_team.o \
	game/g_trigger.o \
	game/g_utils.o \
	game/g_weapon.o \
	game/ai_vcmd.o

CGAME_OBJS = \
	cgame/cg_syscalls.o \
	cgame/cg_consolecmds.o \
	cgame/cg_draw.o \
	cgame/cg_drawtools.o \
	cgame/cg_effects.o \
	cgame/cg_ents.o \
	cgame/cg_event.o \
	cgame/cg_info.o \
	cgame/cg_localents.o \
	cgame/cg_main.o \
	cgame/cg_marks.o \
	cgame/cg_players.o \
	cgame/cg_playerstate.o \
	cgame/cg_predict.o \
	cgame/cg_scoreboard.o \
	cgame/cg_servercmds.o \
	cgame/cg_snapshot.o \
	cgame/cg_view.o \
	cgame/cg_weapons.o

game/qagame$(ARCH).$(SHLIBEXT) : $(GAME_OBJS) $(BGAME_OBJS)
	$(CC) $(GAME_CFLAGS) $(SHLIBLDFLAGS) --input-def game/game.def -o $@ $(GAME_OBJS) $(BGAME_OBJS)
	-cp $@ "C:\Program Files\Quake III Arena\zcam"

cgame/cgame$(ARCH).$(SHLIBEXT) : $(CGAME_OBJS) $(BGAME_OBJS)
	$(CC) $(CGAME_CFLAGS) $(SHLIBLDFLAGS) --input-def cgame/cgame.def -o $@ $(CGAME_OBJS) $(BGAME_OBJS) 
	-cp $@ "C:\Program Files\Quake III Arena\zcam"

game/%.o: game/%.c
	$(DO_GAME_SHLIB_CC)

cgame/%.o: cgame/%.c
	$(DO_CGAME_SHLIB_CC)

#####

clean:
	-rm -f $(TARGETS) $(BGAME_OBJS) $(GAME_OBJS) $(CGAME_OBJS)

depend:
	$(CC) -MM $(GAME_CFLAGS) $(GAME_OBJS:.o=.c) $(BGAME_OBJS:.o=.c)
	$(CC) -MM $(CGAME_CFLAGS) $(CGAME_OBJS:.o=.c)


##### dependencies

game/zcam.o: game/zcam.c game/g_local.h game/q_shared.h game/surfaceflags.h \
 game/bg_public.h game/g_public.h game/g_team.h game/zcam.h
game/zcam_target.o: game/zcam_target.c game/g_local.h game/q_shared.h \
 game/surfaceflags.h game/bg_public.h game/g_public.h game/g_team.h \
 game/zcam.h
game/g_main.o: game/g_main.c game/g_local.h game/q_shared.h \
 game/surfaceflags.h game/bg_public.h game/g_public.h game/g_team.h \
 game/zcam.h
game/g_syscalls.o: game/g_syscalls.c game/g_local.h game/q_shared.h \
 game/surfaceflags.h game/bg_public.h game/g_public.h game/g_team.h
game/ai_dmnet.o: game/ai_dmnet.c game/g_local.h game/q_shared.h \
 game/surfaceflags.h game/bg_public.h game/g_public.h game/g_team.h \
 game/botlib.h game/be_aas.h game/be_ea.h game/be_ai_char.h \
 game/be_ai_chat.h game/be_ai_gen.h game/be_ai_goal.h \
 game/be_ai_move.h game/be_ai_weap.h game/ai_main.h game/ai_dmq3.h \
 game/ai_chat.h game/ai_cmd.h game/ai_dmnet.h game/ai_team.h \
 game/chars.h game/inv.h game/syn.h game/match.h \
 game/../../ui/menudef.h
game/ai_dmq3.o: game/ai_dmq3.c game/g_local.h game/q_shared.h \
 game/surfaceflags.h game/bg_public.h game/g_public.h game/g_team.h \
 game/botlib.h game/be_aas.h game/be_ea.h game/be_ai_char.h \
 game/be_ai_chat.h game/be_ai_gen.h game/be_ai_goal.h \
 game/be_ai_move.h game/be_ai_weap.h game/ai_main.h game/ai_dmq3.h \
 game/ai_chat.h game/ai_cmd.h game/ai_dmnet.h game/ai_team.h \
 game/chars.h game/inv.h game/syn.h game/match.h \
 game/../../ui/menudef.h
game/ai_main.o: game/ai_main.c game/g_local.h game/q_shared.h \
 game/surfaceflags.h game/bg_public.h game/g_public.h game/g_team.h \
 game/botlib.h game/be_aas.h game/be_ea.h game/be_ai_char.h \
 game/be_ai_chat.h game/be_ai_gen.h game/be_ai_goal.h \
 game/be_ai_move.h game/be_ai_weap.h game/ai_main.h game/ai_dmq3.h \
 game/ai_chat.h game/ai_cmd.h game/ai_dmnet.h game/ai_vcmd.h \
 game/chars.h game/inv.h game/syn.h
game/ai_chat.o: game/ai_chat.c game/g_local.h game/q_shared.h \
 game/surfaceflags.h game/bg_public.h game/g_public.h game/g_team.h \
 game/botlib.h game/be_aas.h game/be_ea.h game/be_ai_char.h \
 game/be_ai_chat.h game/be_ai_gen.h game/be_ai_goal.h \
 game/be_ai_move.h game/be_ai_weap.h game/ai_main.h game/ai_dmq3.h \
 game/ai_chat.h game/ai_cmd.h game/ai_dmnet.h game/chars.h game/inv.h \
 game/syn.h game/match.h
game/ai_cmd.o: game/ai_cmd.c game/g_local.h game/q_shared.h \
 game/surfaceflags.h game/bg_public.h game/g_public.h game/g_team.h \
 game/botlib.h game/be_aas.h game/be_ea.h game/be_ai_char.h \
 game/be_ai_chat.h game/be_ai_gen.h game/be_ai_goal.h \
 game/be_ai_move.h game/be_ai_weap.h game/ai_main.h game/ai_dmq3.h \
 game/ai_chat.h game/ai_cmd.h game/ai_dmnet.h game/ai_team.h \
 game/chars.h game/inv.h game/syn.h game/match.h \
 game/../../ui/menudef.h
game/ai_team.o: game/ai_team.c game/g_local.h game/q_shared.h \
 game/surfaceflags.h game/bg_public.h game/g_public.h game/g_team.h \
 game/botlib.h game/be_aas.h game/be_ea.h game/be_ai_char.h \
 game/be_ai_chat.h game/be_ai_gen.h game/be_ai_goal.h \
 game/be_ai_move.h game/be_ai_weap.h game/ai_main.h game/ai_dmq3.h \
 game/ai_chat.h game/ai_cmd.h game/ai_dmnet.h game/ai_team.h \
 game/ai_vcmd.h game/match.h game/../../ui/menudef.h
game/g_active.o: game/g_active.c game/g_local.h game/q_shared.h \
 game/surfaceflags.h game/bg_public.h game/g_public.h game/g_team.h \
 game/zcam.h
game/g_arenas.o: game/g_arenas.c game/g_local.h game/q_shared.h \
 game/surfaceflags.h game/bg_public.h game/g_public.h game/g_team.h
game/g_bot.o: game/g_bot.c game/g_local.h game/q_shared.h \
 game/surfaceflags.h game/bg_public.h game/g_public.h game/g_team.h
game/g_client.o: game/g_client.c game/g_local.h game/q_shared.h \
 game/surfaceflags.h game/bg_public.h game/g_public.h game/g_team.h \
 game/zcam.h
game/g_cmds.o: game/g_cmds.c game/g_local.h game/q_shared.h \
 game/surfaceflags.h game/bg_public.h game/g_public.h game/g_team.h \
 game/zcam.h game/../../ui/menudef.h
game/g_combat.o: game/g_combat.c game/g_local.h game/q_shared.h \
 game/surfaceflags.h game/bg_public.h game/g_public.h game/g_team.h
game/g_items.o: game/g_items.c game/g_local.h game/q_shared.h \
 game/surfaceflags.h game/bg_public.h game/g_public.h game/g_team.h
game/g_mem.o: game/g_mem.c game/g_local.h game/q_shared.h \
 game/surfaceflags.h game/bg_public.h game/g_public.h game/g_team.h
game/g_misc.o: game/g_misc.c game/g_local.h game/q_shared.h \
 game/surfaceflags.h game/bg_public.h game/g_public.h game/g_team.h
game/g_missile.o: game/g_missile.c game/g_local.h game/q_shared.h \
 game/surfaceflags.h game/bg_public.h game/g_public.h game/g_team.h
game/g_mover.o: game/g_mover.c game/g_local.h game/q_shared.h \
 game/surfaceflags.h game/bg_public.h game/g_public.h game/g_team.h
game/g_session.o: game/g_session.c game/g_local.h game/q_shared.h \
 game/surfaceflags.h game/bg_public.h game/g_public.h game/g_team.h
game/g_spawn.o: game/g_spawn.c game/g_local.h game/q_shared.h \
 game/surfaceflags.h game/bg_public.h game/g_public.h game/g_team.h
game/g_svcmds.o: game/g_svcmds.c game/g_local.h game/q_shared.h \
 game/surfaceflags.h game/bg_public.h game/g_public.h game/g_team.h
game/g_target.o: game/g_target.c game/g_local.h game/q_shared.h \
 game/surfaceflags.h game/bg_public.h game/g_public.h game/g_team.h
game/g_team.o: game/g_team.c game/g_local.h game/q_shared.h \
 game/surfaceflags.h game/bg_public.h game/g_public.h game/g_team.h
game/g_trigger.o: game/g_trigger.c game/g_local.h game/q_shared.h \
 game/surfaceflags.h game/bg_public.h game/g_public.h game/g_team.h
game/g_utils.o: game/g_utils.c game/g_local.h game/q_shared.h \
 game/surfaceflags.h game/bg_public.h game/g_public.h game/g_team.h
game/g_weapon.o: game/g_weapon.c game/g_local.h game/q_shared.h \
 game/surfaceflags.h game/bg_public.h game/g_public.h game/g_team.h
game/ai_vcmd.o: game/ai_vcmd.c game/g_local.h game/q_shared.h \
 game/surfaceflags.h game/bg_public.h game/g_public.h game/g_team.h \
 game/botlib.h game/be_aas.h game/be_ea.h game/be_ai_char.h \
 game/be_ai_chat.h game/be_ai_gen.h game/be_ai_goal.h \
 game/be_ai_move.h game/be_ai_weap.h game/ai_main.h game/ai_dmq3.h \
 game/ai_chat.h game/ai_cmd.h game/ai_dmnet.h game/ai_team.h \
 game/ai_vcmd.h game/chars.h game/inv.h game/syn.h game/match.h \
 game/../../ui/menudef.h
game/bg_misc.o: game/bg_misc.c game/q_shared.h game/surfaceflags.h \
 game/bg_public.h
game/bg_pmove.o: game/bg_pmove.c game/q_shared.h game/surfaceflags.h \
 game/bg_public.h game/bg_local.h
game/bg_slidemove.o: game/bg_slidemove.c game/q_shared.h \
 game/surfaceflags.h game/bg_public.h game/bg_local.h
game/q_math.o: game/q_math.c game/q_shared.h game/surfaceflags.h
game/q_shared.o: game/q_shared.c game/q_shared.h game/surfaceflags.h
cgame/cg_syscalls.o: cgame/cg_syscalls.c cgame/cg_local.h \
 cgame/../game/q_shared.h cgame/../game/surfaceflags.h \
 cgame/tr_types.h cgame/../game/bg_public.h cgame/cg_public.h
cgame/cg_consolecmds.o: cgame/cg_consolecmds.c cgame/cg_local.h \
 cgame/../game/q_shared.h cgame/../game/surfaceflags.h \
 cgame/tr_types.h cgame/../game/bg_public.h cgame/cg_public.h \
 cgame/../ui/ui_shared.h cgame/../ui/../game/q_shared.h \
 cgame/../ui/../cgame/tr_types.h cgame/../ui/keycodes.h \
 cgame/../ui/../../ui/menudef.h
cgame/cg_draw.o: cgame/cg_draw.c cgame/cg_local.h cgame/../game/q_shared.h \
 cgame/../game/surfaceflags.h cgame/tr_types.h \
 cgame/../game/bg_public.h cgame/cg_public.h
cgame/cg_drawtools.o: cgame/cg_drawtools.c cgame/cg_local.h \
 cgame/../game/q_shared.h cgame/../game/surfaceflags.h \
 cgame/tr_types.h cgame/../game/bg_public.h cgame/cg_public.h
cgame/cg_effects.o: cgame/cg_effects.c cgame/cg_local.h \
 cgame/../game/q_shared.h cgame/../game/surfaceflags.h \
 cgame/tr_types.h cgame/../game/bg_public.h cgame/cg_public.h
cgame/cg_ents.o: cgame/cg_ents.c cgame/cg_local.h cgame/../game/q_shared.h \
 cgame/../game/surfaceflags.h cgame/tr_types.h \
 cgame/../game/bg_public.h cgame/cg_public.h
cgame/cg_event.o: cgame/cg_event.c cgame/cg_local.h cgame/../game/q_shared.h \
 cgame/../game/surfaceflags.h cgame/tr_types.h \
 cgame/../game/bg_public.h cgame/cg_public.h
cgame/cg_info.o: cgame/cg_info.c cgame/cg_local.h cgame/../game/q_shared.h \
 cgame/../game/surfaceflags.h cgame/tr_types.h \
 cgame/../game/bg_public.h cgame/cg_public.h
cgame/cg_localents.o: cgame/cg_localents.c cgame/cg_local.h \
 cgame/../game/q_shared.h cgame/../game/surfaceflags.h \
 cgame/tr_types.h cgame/../game/bg_public.h cgame/cg_public.h
cgame/cg_main.o: cgame/cg_main.c cgame/cg_local.h cgame/../game/q_shared.h \
 cgame/../game/surfaceflags.h cgame/tr_types.h \
 cgame/../game/bg_public.h cgame/cg_public.h
cgame/cg_marks.o: cgame/cg_marks.c cgame/cg_local.h cgame/../game/q_shared.h \
 cgame/../game/surfaceflags.h cgame/tr_types.h \
 cgame/../game/bg_public.h cgame/cg_public.h
cgame/cg_players.o: cgame/cg_players.c cgame/cg_local.h \
 cgame/../game/q_shared.h cgame/../game/surfaceflags.h \
 cgame/tr_types.h cgame/../game/bg_public.h cgame/cg_public.h
cgame/cg_playerstate.o: cgame/cg_playerstate.c cgame/cg_local.h \
 cgame/../game/q_shared.h cgame/../game/surfaceflags.h \
 cgame/tr_types.h cgame/../game/bg_public.h cgame/cg_public.h
cgame/cg_predict.o: cgame/cg_predict.c cgame/cg_local.h \
 cgame/../game/q_shared.h cgame/../game/surfaceflags.h \
 cgame/tr_types.h cgame/../game/bg_public.h cgame/cg_public.h
cgame/cg_scoreboard.o: cgame/cg_scoreboard.c cgame/cg_local.h \
 cgame/../game/q_shared.h cgame/../game/surfaceflags.h \
 cgame/tr_types.h cgame/../game/bg_public.h cgame/cg_public.h
cgame/cg_servercmds.o: cgame/cg_servercmds.c cgame/cg_local.h \
 cgame/../game/q_shared.h cgame/../game/surfaceflags.h \
 cgame/tr_types.h cgame/../game/bg_public.h cgame/cg_public.h \
 cgame/../../ui/menudef.h
cgame/cg_snapshot.o: cgame/cg_snapshot.c cgame/cg_local.h \
 cgame/../game/q_shared.h cgame/../game/surfaceflags.h \
 cgame/tr_types.h cgame/../game/bg_public.h cgame/cg_public.h
cgame/cg_view.o: cgame/cg_view.c cgame/cg_local.h cgame/../game/q_shared.h \
 cgame/../game/surfaceflags.h cgame/tr_types.h \
 cgame/../game/bg_public.h cgame/cg_public.h
cgame/cg_weapons.o: cgame/cg_weapons.c cgame/cg_local.h \
 cgame/../game/q_shared.h cgame/../game/surfaceflags.h \
 cgame/tr_types.h cgame/../game/bg_public.h cgame/cg_public.h
