################################################################
#
# $Id: makefile,v 1.40 1998/10/17 03:11:37 jim Exp $
#
################################################################

CC = gcc

# the command you use to delete files
RM = del

# the command you use to copy files
CP = copy /y

# options common to all builds
CFLAGS_common = -Wall -Winline -Wno-parentheses -DNORMALUNIX

# debug options
#CFLAGS_debug = -g -O2 -DRANGECHECK -DINSTRUMENTED -DCHECKHEAP
CFLAGS_debug = -g -O2 -DRANGECHECK -DINSTRUMENTED
LDFLAGS_debug =

# optimized (release) options
CFLAGS_release = -O3 -ffast-math -fomit-frame-pointer -m486
LDFLAGS_release = -s

# new features; comment out what you don't want at the moment
#CFLAGS_newfeatures = 
CFLAGS_newfeatures = 

# libraries to link in
LIBS=-lalleg -lm -lemu -lbcd

# this selects flags based on debug and release tagets
mode = release
CFLAGS =  $(CFLAGS_common)  $(CFLAGS_$(mode)) $(CFLAGS_newfeatures)
LDFLAGS = $(LDFLAGS_common) $(LDFLAGS_$(mode))

# subdirectory for objects (depends on target, to allow you
# to build debug and release versions simultaneously)

O=$(O_$(mode))
O_release=obj
O_debug=objdebug

# object files
OBJS=   $(O)/doomdef.o      \
        $(O)/doomstat.o     \
        $(O)/dstrings.o     \
        $(O)/i_system.o     \
        $(O)/i_sound.o      \
        $(O)/i_video.o      \
        $(O)/i_net.o        \
        $(O)/tables.o       \
        $(O)/f_finale.o     \
        $(O)/f_wipe.o       \
        $(O)/d_main.o       \
        $(O)/d_net.o        \
        $(O)/d_items.o      \
        $(O)/g_game.o       \
        $(O)/m_menu.o       \
        $(O)/m_misc.o       \
        $(O)/m_argv.o       \
        $(O)/m_bbox.o       \
        $(O)/m_cheat.o      \
        $(O)/m_random.o     \
        $(O)/am_map.o       \
        $(O)/p_ceilng.o     \
        $(O)/p_doors.o      \
        $(O)/p_enemy.o      \
        $(O)/p_floor.o      \
        $(O)/p_inter.o      \
        $(O)/p_lights.o     \
        $(O)/p_map.o        \
        $(O)/p_maputl.o     \
        $(O)/p_plats.o      \
        $(O)/p_pspr.o       \
        $(O)/p_setup.o      \
        $(O)/p_sight.o      \
        $(O)/p_spec.o       \
        $(O)/p_switch.o     \
        $(O)/p_mobj.o       \
        $(O)/p_telept.o     \
        $(O)/p_tick.o       \
        $(O)/p_saveg.o      \
        $(O)/p_user.o       \
        $(O)/r_bsp.o        \
        $(O)/r_data.o       \
        $(O)/r_draw.o       \
        $(O)/r_main.o       \
        $(O)/r_plane.o      \
        $(O)/r_segs.o       \
        $(O)/r_sky.o        \
        $(O)/r_things.o     \
        $(O)/w_wad.o        \
        $(O)/wi_stuff.o     \
        $(O)/v_video.o      \
        $(O)/st_lib.o       \
        $(O)/st_stuff.o     \
        $(O)/hu_stuff.o     \
        $(O)/hu_lib.o       \
        $(O)/s_sound.o      \
        $(O)/z_zone.o       \
        $(O)/info.o         \
        $(O)/sounds.o       \
        $(O)/mmus2mid.o     \
        $(O)/i_main.o       \
        $(O)/pproblit.o     \
        $(O)/drawspan.o     \
        $(O)/drawcol.o      \
        $(O)/p_genlin.o     \
        $(O)/d_deh.o	    \
        $(O)/lprintf.o	    \
	$(O)/d_chase.o      \
	$(O)/r_chase.o      \
	$(O)/p_chase.o      \
	$(O)/m_chase.o      \
	$(O)/p_chase2.o     \
	$(O)/g_chase.o      \
        $(O)/debug.o        \
        $(O)/g_prjdm.o      \
	$(O)/p_prjdm.o      \
	$(O)/d_prjdm.o      \
        $(O)/i_cdaud.o      \
        $(O)/g_mapinfo.o    \
	$(O)/keyboard.o     \
	$(O)/emu8kmid.o

boom doom release all: $(O)/boom.exe
	$(CP) $(O)\boom.exe .

debug:
	$(MAKE) mode=debug

clean:
	$(RM) boom.exe
	$(RM) $(O_release)\*.exe
	$(RM) $(O_debug)\*.exe
	$(RM) $(O_release)\*.o
	$(RM) $(O_debug)\*.o

$(O)/boom.exe: $(OBJS) $(O)/version.o
	$(CC) $(CFLAGS) $(LDFLAGS) $(OBJS) $(O)/version.o -o $@ $(LIBS)
	$(RM) $(O)\version.o

$(O)/%.o:   %.c
	$(CC) $(CFLAGS) -c $< -o $@

$(O)/%.o:   %.s
	$(CC) $(CFLAGS) -c $< -o $@

# Very important that all sources #include this one
$(OBJS): z_zone.h

# If you change the makefile, everything should rebuild
$(OBJS): Makefile

# individual file depedencies follow

$(O)/doomdef.o: doomdef.c doomdef.h z_zone.h m_swap.h version.h

$(O)/doomstat.o: doomstat.c doomstat.h doomdata.h doomtype.h d_net.h \
 d_player.h d_items.h doomdef.h z_zone.h m_swap.h version.h p_pspr.h \
 m_fixed.h i_system.h d_ticcmd.h tables.h info.h d_think.h p_mobj.h

$(O)/dstrings.o: dstrings.c dstrings.h d_englsh.h

$(O)/i_system.o: i_system.c i_system.h d_ticcmd.h doomtype.h i_sound.h \
 sounds.h doomstat.h doomdata.h d_net.h d_player.h d_items.h doomdef.h \
 z_zone.h m_swap.h version.h p_pspr.h m_fixed.h tables.h info.h \
 d_think.h p_mobj.h m_misc.h g_game.h d_event.h w_wad.h

$(O)/i_sound.o: i_sound.c z_zone.h doomstat.h doomdata.h doomtype.h d_net.h \
 d_player.h d_items.h doomdef.h m_swap.h version.h p_pspr.h m_fixed.h \
 i_system.h d_ticcmd.h tables.h info.h d_think.h p_mobj.h mmus2mid.h \
 i_sound.h sounds.h w_wad.h g_game.h d_event.h d_main.h

$(O)/i_video.o: i_video.c z_zone.h doomstat.h doomdata.h doomtype.h d_net.h \
 d_player.h d_items.h doomdef.h m_swap.h version.h p_pspr.h m_fixed.h \
 i_system.h d_ticcmd.h tables.h info.h d_think.h p_mobj.h v_video.h \
 r_data.h r_defs.h r_state.h d_main.h d_event.h

$(O)/i_net.o: i_net.c z_zone.h doomstat.h doomdata.h doomtype.h d_net.h \
 d_player.h d_items.h doomdef.h m_swap.h version.h p_pspr.h m_fixed.h \
 i_system.h d_ticcmd.h tables.h info.h d_think.h p_mobj.h d_event.h \
 m_argv.h i_net.h

$(O)/tables.o: tables.c tables.h m_fixed.h i_system.h d_ticcmd.h doomtype.h

$(O)/f_finale.o: f_finale.c doomstat.h doomdata.h doomtype.h d_net.h \
 d_player.h d_items.h doomdef.h z_zone.h m_swap.h version.h p_pspr.h \
 m_fixed.h i_system.h d_ticcmd.h tables.h info.h d_think.h p_mobj.h \
 d_event.h v_video.h r_data.h r_defs.h r_state.h w_wad.h s_sound.h \
 sounds.h dstrings.h d_englsh.h d_deh.h hu_stuff.h

$(O)/f_wipe.o: f_wipe.c doomdef.h z_zone.h m_swap.h version.h i_video.h \
 doomtype.h v_video.h r_data.h r_defs.h m_fixed.h i_system.h \
 d_ticcmd.h d_think.h p_mobj.h tables.h doomdata.h info.h r_state.h \
 d_player.h d_items.h p_pspr.h m_random.h f_wipe.h

$(O)/d_main.o: d_main.c doomdef.h z_zone.h m_swap.h version.h doomstat.h \
 doomdata.h doomtype.h d_net.h d_player.h d_items.h p_pspr.h m_fixed.h \
 i_system.h d_ticcmd.h tables.h info.h d_think.h p_mobj.h dstrings.h \
 d_englsh.h sounds.h w_wad.h s_sound.h v_video.h r_data.h r_defs.h \
 r_state.h f_finale.h d_event.h f_wipe.h m_argv.h m_misc.h m_menu.h \
 i_sound.h i_video.h g_game.h hu_stuff.h wi_stuff.h st_stuff.h \
 am_map.h p_setup.h r_draw.h r_main.h d_main.h d_deh.h

$(O)/d_net.o: d_net.c doomstat.h doomdata.h doomtype.h d_net.h d_player.h \
 d_items.h doomdef.h z_zone.h m_swap.h version.h p_pspr.h m_fixed.h \
 i_system.h d_ticcmd.h tables.h info.h d_think.h p_mobj.h m_menu.h \
 d_event.h i_video.h i_net.h g_game.h

$(O)/d_items.o: d_items.c info.h d_think.h d_items.h doomdef.h z_zone.h \
 m_swap.h version.h

$(O)/g_game.o: g_game.c doomstat.h doomdata.h doomtype.h d_net.h d_player.h \
 d_items.h doomdef.h z_zone.h m_swap.h version.h p_pspr.h m_fixed.h \
 i_system.h d_ticcmd.h tables.h info.h d_think.h p_mobj.h f_finale.h \
 d_event.h m_argv.h m_misc.h m_menu.h m_random.h p_setup.h p_saveg.h \
 p_tick.h d_main.h wi_stuff.h hu_stuff.h st_stuff.h am_map.h w_wad.h \
 r_main.h r_data.h r_defs.h r_state.h r_draw.h p_map.h s_sound.h \
 dstrings.h d_englsh.h sounds.h r_sky.h d_deh.h p_inter.h g_game.h

$(O)/m_menu.o: m_menu.c doomdef.h z_zone.h m_swap.h version.h doomstat.h \
 doomdata.h doomtype.h d_net.h d_player.h d_items.h p_pspr.h m_fixed.h \
 i_system.h d_ticcmd.h tables.h info.h d_think.h p_mobj.h dstrings.h \
 d_englsh.h d_main.h d_event.h i_video.h v_video.h r_data.h r_defs.h \
 r_state.h w_wad.h r_main.h hu_stuff.h g_game.h s_sound.h sounds.h \
 m_menu.h d_deh.h m_misc.h

$(O)/m_misc.o: m_misc.c doomstat.h doomdata.h doomtype.h d_net.h d_player.h \
 d_items.h doomdef.h z_zone.h m_swap.h version.h p_pspr.h m_fixed.h \
 i_system.h d_ticcmd.h tables.h info.h d_think.h p_mobj.h m_argv.h \
 g_game.h d_event.h m_menu.h am_map.h w_wad.h i_sound.h sounds.h \
 i_video.h v_video.h r_data.h r_defs.h r_state.h hu_stuff.h st_stuff.h \
 dstrings.h d_englsh.h m_misc.h s_sound.h

$(O)/m_argv.o: m_argv.c

$(O)/m_bbox.o: m_bbox.c m_bbox.h z_zone.h m_fixed.h i_system.h d_ticcmd.h \
 doomtype.h

$(O)/m_cheat.o: m_cheat.c doomstat.h doomdata.h doomtype.h d_net.h \
 d_player.h d_items.h doomdef.h z_zone.h m_swap.h version.h p_pspr.h \
 m_fixed.h i_system.h d_ticcmd.h tables.h info.h d_think.h p_mobj.h \
 g_game.h d_event.h r_data.h r_defs.h r_state.h p_inter.h m_cheat.h \
 m_argv.h s_sound.h sounds.h dstrings.h d_englsh.h d_deh.h

$(O)/m_random.o: m_random.c doomstat.h doomdata.h doomtype.h d_net.h \
 d_player.h d_items.h doomdef.h z_zone.h m_swap.h version.h p_pspr.h \
 m_fixed.h i_system.h d_ticcmd.h tables.h info.h d_think.h p_mobj.h \
 m_random.h

$(O)/am_map.o: am_map.c doomstat.h doomdata.h doomtype.h d_net.h d_player.h \
 d_items.h doomdef.h z_zone.h m_swap.h version.h p_pspr.h m_fixed.h \
 i_system.h d_ticcmd.h tables.h info.h d_think.h p_mobj.h st_stuff.h \
 d_event.h r_main.h r_data.h r_defs.h r_state.h p_setup.h p_maputl.h \
 w_wad.h v_video.h p_spec.h am_map.h dstrings.h d_englsh.h d_deh.h

$(O)/p_ceilng.o: p_ceilng.c doomstat.h doomdata.h doomtype.h d_net.h \
 d_player.h d_items.h doomdef.h z_zone.h m_swap.h version.h p_pspr.h \
 m_fixed.h i_system.h d_ticcmd.h tables.h info.h d_think.h p_mobj.h \
 r_main.h r_data.h r_defs.h r_state.h p_spec.h p_tick.h s_sound.h \
 sounds.h

$(O)/p_doors.o: p_doors.c doomstat.h doomdata.h doomtype.h d_net.h \
 d_player.h d_items.h doomdef.h z_zone.h m_swap.h version.h p_pspr.h \
 m_fixed.h i_system.h d_ticcmd.h tables.h info.h d_think.h p_mobj.h \
 r_main.h r_data.h r_defs.h r_state.h p_spec.h p_tick.h s_sound.h \
 sounds.h dstrings.h d_englsh.h d_deh.h

$(O)/p_enemy.o: p_enemy.c doomstat.h doomdata.h doomtype.h d_net.h \
 d_player.h d_items.h doomdef.h z_zone.h m_swap.h version.h p_pspr.h \
 m_fixed.h i_system.h d_ticcmd.h tables.h info.h d_think.h p_mobj.h \
 m_random.h r_main.h r_data.h r_defs.h r_state.h p_maputl.h p_map.h \
 p_setup.h p_spec.h s_sound.h sounds.h p_inter.h g_game.h d_event.h \
 p_enemy.h

$(O)/p_floor.o: p_floor.c doomstat.h doomdata.h doomtype.h d_net.h \
 d_player.h d_items.h doomdef.h z_zone.h m_swap.h version.h p_pspr.h \
 m_fixed.h i_system.h d_ticcmd.h tables.h info.h d_think.h p_mobj.h \
 r_main.h r_data.h r_defs.h r_state.h p_map.h p_spec.h p_tick.h \
 s_sound.h sounds.h

$(O)/p_inter.o: p_inter.c doomstat.h doomdata.h doomtype.h d_net.h \
 d_player.h d_items.h doomdef.h z_zone.h m_swap.h version.h p_pspr.h \
 m_fixed.h i_system.h d_ticcmd.h tables.h info.h d_think.h p_mobj.h \
 dstrings.h d_englsh.h m_random.h am_map.h d_event.h r_main.h r_data.h \
 r_defs.h r_state.h s_sound.h sounds.h d_deh.h p_inter.h

$(O)/p_lights.o: p_lights.c doomdef.h z_zone.h m_swap.h version.h \
 m_random.h doomtype.h r_main.h d_player.h d_items.h p_pspr.h d_net.h \
 m_fixed.h i_system.h d_ticcmd.h tables.h info.h d_think.h p_mobj.h \
 doomdata.h r_data.h r_defs.h r_state.h p_spec.h p_tick.h doomstat.h

$(O)/p_map.o: p_map.c doomstat.h doomdata.h doomtype.h d_net.h d_player.h \
 d_items.h doomdef.h z_zone.h m_swap.h version.h p_pspr.h m_fixed.h \
 i_system.h d_ticcmd.h tables.h info.h d_think.h p_mobj.h r_main.h \
 r_data.h r_defs.h r_state.h p_maputl.h p_map.h p_setup.h p_spec.h \
 s_sound.h sounds.h p_inter.h m_random.h m_bbox.h

$(O)/p_maputl.o: p_maputl.c doomstat.h doomdata.h doomtype.h d_net.h \
 d_player.h d_items.h doomdef.h z_zone.h m_swap.h version.h p_pspr.h \
 m_fixed.h i_system.h d_ticcmd.h tables.h info.h d_think.h p_mobj.h \
 m_bbox.h r_main.h r_data.h r_defs.h r_state.h p_maputl.h p_map.h \
 p_setup.h

$(O)/p_plats.o: p_plats.c doomstat.h doomdata.h doomtype.h d_net.h \
 d_player.h d_items.h doomdef.h z_zone.h m_swap.h version.h p_pspr.h \
 m_fixed.h i_system.h d_ticcmd.h tables.h info.h d_think.h p_mobj.h \
 m_random.h r_main.h r_data.h r_defs.h r_state.h p_spec.h p_tick.h \
 s_sound.h sounds.h

$(O)/p_pspr.o: p_pspr.c doomstat.h doomdata.h doomtype.h d_net.h d_player.h \
 d_items.h doomdef.h z_zone.h m_swap.h version.h p_pspr.h m_fixed.h \
 i_system.h d_ticcmd.h tables.h info.h d_think.h p_mobj.h r_main.h \
 r_data.h r_defs.h r_state.h p_map.h p_inter.h p_enemy.h m_random.h \
 s_sound.h sounds.h d_event.h

$(O)/p_setup.o: p_setup.c doomstat.h doomdata.h doomtype.h d_net.h \
 d_player.h d_items.h doomdef.h z_zone.h m_swap.h version.h p_pspr.h \
 m_fixed.h i_system.h d_ticcmd.h tables.h info.h d_think.h p_mobj.h \
 m_bbox.h m_argv.h g_game.h d_event.h w_wad.h r_main.h r_data.h \
 r_defs.h r_state.h r_things.h p_maputl.h p_map.h p_setup.h p_spec.h \
 p_tick.h p_enemy.h s_sound.h

$(O)/p_sight.o: p_sight.c r_main.h d_player.h d_items.h doomdef.h z_zone.h \
 m_swap.h version.h p_pspr.h m_fixed.h i_system.h d_ticcmd.h \
 doomtype.h tables.h info.h d_think.h p_mobj.h doomdata.h r_data.h \
 r_defs.h r_state.h p_maputl.h p_setup.h m_bbox.h

$(O)/p_spec.o: p_spec.c doomstat.h doomdata.h doomtype.h d_net.h d_player.h \
 d_items.h doomdef.h z_zone.h m_swap.h version.h p_pspr.h m_fixed.h \
 i_system.h d_ticcmd.h tables.h info.h d_think.h p_mobj.h p_spec.h \
 r_defs.h p_tick.h p_setup.h m_random.h d_englsh.h m_argv.h w_wad.h \
 r_main.h r_data.h r_state.h p_maputl.h p_map.h g_game.h d_event.h \
 p_inter.h s_sound.h sounds.h m_bbox.h d_deh.h

$(O)/p_switch.o: p_switch.c doomstat.h doomdata.h do