#
# Makefile template
#

PROJECT	      = aura
EXEFILE	      =	main.elf
OBJECTSEKS    = plasma.o plasma_vu.o \
		meta.o meta_vu.o \
		bonbon.o bonbon_vu.o \
		pixel_vu.o pixel.o \
		radial.o \
		meshtest2.o \
		tracer.o \
		tracer_vu.o \
		overlay.o \
		greetings.o \
		meshtest.o\
		textbar.o

OBJECTSGFX    = texture.o \
		glow.o \
		draw.o \
                font.o \
		mesh.o \
		mesh_vu.o \
		cubemap.o
OBJECTSLIB    = math.o \
		dma.o \
		matrix.o \
		gif.o \
		vu.o \
		string.o \
		paduse.o \
		vag.o \
		spu.o \
		assembly.o \
		iopupload.o \
		myassert.o \
		oggvorbisuse.o \
		alloca.o \
		qsort.o \
		spline.o \
		sound.o \
		hsvrgb.o \
		jpguse.o
OBJECTSDEMO   = main.o\
		 timing.o
OBJECTSDATA   = gfx/font1.o \
		gfx/font1_alpha.o \
		gfx/phong.o \
		timings.o \
		midifile.o \
		gfx/obj03.o \
		gfx/obj04.o \
		gfx/clipme.o \
		gfx/envmap.o \
		gfx/metunnel.o \
		gfx/metuntext.o \
		gfx/tex1.o \
		gfx/tuncm_UP.o \
		gfx/tuncm_DN.o \
		gfx/tuncm_LF.o \
		gfx/tuncm_RT.o \
		gfx/tuncm_FR.o \
		gfx/tuncm_BK.o \
		gfx/sprite.o \
		gfx/kalaidoskopimage.o \
		gfx/kalaidoskopimage_alpha.o \
		gfx/font2.o \
		gfx/font2_alpha.o \
		gfx/greetingsbg.o \
		gfx/introbg.o \
		gfx/sdlogopcx.o \
		gfx/sdlogo3ds.o \
		gfx/metablobpcx.o \
		gfx/obj01.o \
		gfx/spik512.o \
		gfx/metablob3ds.o \
		gfx/tuntracer.o \
		gfx/tuntracer01_alpha.o \
		gfx/tuntracer02_alpha.o \
		gfx/metaalpha_alpha.o \
		gfx/metaalpha.o \
		gfx/smadr.o \
		gfx/smadr2.o \
		gfx/smadr3.o \
		gfx/spiky.o \
		gfx/flyver.o \
		gfx/metablobbg.o

OBJECTSMUSIC_ 	= 
OBJECTSMUSIC 	= musik.o
VORBISPATH      = oggvorbis/
OBJECTSVORBIS   = $(VORBISPATH)mdct.o $(VORBISPATH)lsp.o $(VORBISPATH)bitwise.o $(VORBISPATH)framing.o $(VORBISPATH)info.o $(VORBISPATH)block.o $(VORBISPATH)synthesis.o $(VORBISPATH)sharedbook.o $(VORBISPATH)window.o $(VORBISPATH)registry.o $(VORBISPATH)smallft.o $(VORBISPATH)codebook.o $(VORBISPATH)psy.o $(VORBISPATH)floor0.o $(VORBISPATH)floor1.o $(VORBISPATH)envelope.o $(VORBISPATH)bitrate.o $(VORBISPATH)lpc.o $(VORBISPATH)res0.o $(VORBISPATH)mapping0.o 
JPGPATH      	= jpgd093bps2/
OBJECTSJPG	= $(JPGPATH)idct.o $(JPGPATH)H2v2.o $(JPGPATH)jpegdecoder.o 

OBJECTS = $(OBJECTSEKS) $(OBJECTSLIB) $(OBJECTSVORBIS) $(OBJECTSDATA) $(OBJECTSMUSIC) $(OBJECTSDEMO) $(OBJECTSGFX) $(OBJECTSJPG)

PREFIX		= ee-
#AS		= $(PREFIX)gcc
AS = $(PREFIX)as
CC		= $(PREFIX)gcc
LD		= $(PREFIX)gcc
DVPASM		= dvp-as
OBJDUMP		= $(PREFIX)objdump
RM		= rm -f

CFLAGS =	-O2 -D_EE -mips3 -mcpu=r5900 -ffreestanding -fno-builtin \
		-fshort-double -mlong64 -mhard-float -mno-abicalls  -EL -Wall
CPPFLAGS = -O2 -fshort-double -ffast-math -mhard-float -msingle-float  -c -Werror
ASFLAGS = -mcpu=5900 -EL

LDFLAGS =	-Wl,-Map,$(PROJECT).map -L.

# Include settings for ps2lib/newlib
include $(PS2LIB)/ee/Makefile.include

CPPFLAGS += -I$(PS2LIB)/common/include -I$(PS2LIB)/ee/include

.SUFFIXES: .c .s .vsm .o .pcx .elf .asm .vag .txt .3ds .ogg .jpg

$(PROJECT).elf: $(OBJECTS)
	$(CC) $(LDFLAGS) -o $(PROJECT).elf $(OBJECTS) -lkernel -lpad -lgcc

.c.o:
	$(CC) $(CFLAGS) -c $< -o $@

.s.o:
	$(CC) $(CFLAGS) -c $< -o $@

.cpp.o:
	$(CC) $(CPPFLAGS)  $< -o $@
.txt.asm:
	./rawtoasm $< $@ $@
.3ds.asm:
	./rawtoasm $< $@ $@
.pcx.asm:
	./rawtoasm $< $@ $@
.jpg.asm:
	./rawtoasm $< $@ $@
.vag.asm:
	./rawtoasm $< $@ $@
.ogg.asm:
	./rawtoasm $< $@ $@
.asm.o:
	$(AS) $(ASFLAGS) $< -o $@
.vsm.o:
	$(DVPASM) $< -o $@
#.s.o:
#	$(AS) $(ASFLAGS) $< -o $@

$(EXEFILE):$(OBJECTS);
	$(CC) $(LFLAGS) -o $(EXEFILE) $(OBJECTS)

clean:
	$(RM) *.elf *.o *.map gfx/*.o
rawtoasm:
	gcc rawtoasm.c -o rawtoasm

