#
CC = gcc
CXBE = cxbe

DOOMFLAGS = -DIPPORT_USERRESERVED=5000
SDLFLAGS = -DENABLE_XBOX -DDISABLE_AUDIO -DDISABLE_CDROM -DDISABLE_THREADS -DDISABLE_TIMERS -DDISABLE_ENDIAN -DDISABLE_FILE
CC_FLAGS = -c -g -std=gnu99 -ffreestanding -nostdlib -fno-builtin -fno-exceptions -mno-cygwin -march=i386 $(SDLFLAGS)
INCLUDE  = -I/usr/local/openxdk/i386-pc-xbox/include -I/usr/local/openxdk/include

CLINK = -nostdlib
ALIGN = -Wl,--file-alignment,0x20 -Wl,--section-alignment,0x20 
SHARED = -shared
ENTRYPOINT = -Wl,--entry,_WinMainCRTStartup 
STRIP = -Wl,--strip-all
LD_FLAGS = $(CLINK) $(ALIGN) $(SHARED) $(ENTRYPOINT) $(STRIP)
LD_DIRS = -L/usr/local/openxdk/i386-pc-xbox/lib -L/usr/local/openxdk/lib 
LD_LIBS  = $(LD_DIRS) -lSDL -lopenxdk -lhal -lc -lhal -lc -lusb -lxboxkrnl -lm

OBJS = \
am_map.o \
d_items.o \
d_main.o \
d_net.o \
doomdef.o \
doomstat.o \
dstrings.o \
f_finale.o \
f_wipe.o \
g_game.o \
hu_lib.o \
hu_stuff.o \
i_main.o \
i_net.o \
i_sound.o \
i_system.o \
i_video.o \
info.o \
m_argv.o \
m_bbox.o \
m_cheat.o \
m_fixed.o \
m_menu.o \
m_misc.o \
m_random.o \
m_swap.o \
p_ceilng.o \
p_doors.o \
p_enemy.o \
p_floor.o \
p_inter.o \
p_lights.o \
p_map.o \
p_maputl.o \
p_mobj.o \
p_plats.o \
p_pspr.o \
p_saveg.o \
p_setup.o \
p_sight.o \
p_spec.o \
p_switch.o \
p_telept.o \
p_tick.o \
p_user.o \
r_bsp.o \
r_data.o \
r_draw.o \
r_main.o \
r_plane.o \
r_segs.o \
r_sky.o \
r_things.o \
s_sound.o \
sounds.o \
st_lib.o \
st_stuff.o \
tables.o \
v_video.o \
w_wad.o \
wi_stuff.o \
z_zone.o 

all: doom.exe

.c.o:
	$(CC) -c $< $(CC_FLAGS) $(DOOMFLAGS) $(INCLUDE)

doom.exe: $(OBJS)
	$(CC) -o $@ $(OBJS) $(LD_LIBS) $(LD_FLAGS)
	$(CXBE) -TITLE:"$@" -DUMPINFO:"doom.cxbe" -OUT:"doom.xbe" $@ > /dev/null
clean: 
	rm -f *.o *.exe *.dll *.xbe *.cxbe


