#----------------------------------------------------------------------------
# File:		Makefile for PS2CPU Version
# Author:	Tony Saveski, tony@ui.com.au
#----------------------------------------------------------------------------
# Copyright (c) 2003, Unicorn Interactive Pty Ltd.
# All Rights Reserved.
#----------------------------------------------------------------------------
# Licenced under Academic Free License version 2.0
# Read DreamGL LICENSE.txt file for further details.
#----------------------------------------------------------------------------
CC=ee-gcc
AS=ee-as
LD=ee-ld
AR=ee-ar

#PS2SDK=/usr/local/ps2dev
#PS2SDK=/usr/local/ps2lib-2.0beta

DIR_BIN=bin
DIR_LIB=lib
DIR_INC=include
DIR_SRC_PS2CPU=src
DIR_SRC_SAMPLES=samples

LIB_DREAMGL=$(DIR_LIB)/libdreamgl.a

STD_LIBS=-lm -lc -lkernel -lc -lgcc
DEMO_LIBS= -ldreamgl -lps2Perf -L$(PS2DEV)/ps2Perf/lib $(STD_LIBS) 

CFLAGS= \
	-Wall -W -EL -G0 -O3 -mips3 -nostdlib \
	-I$(PS2DEV)/ps2Perf/include \
	-I$(DIR_INC) \
	-I$(DIR_SRC_PS2CPU) \
	-I$(DIR_SRC_PS2CPU) \
	-I$(PS2SDK)/common/include \
	-I$(PS2SDK)/ee/include \
	-L$(PS2SDK)/ee/lib \
	-L$(DIR_LIB) \
	-DDGL_PS2

LINKFILE=$(PS2SDK)/ee/startup/linkfile
CRTFILE=$(PS2SDK)/ee/startup/crt0.o

CSRC = \
	$(DIR_SRC_PS2CPU)/ee.c \
	$(DIR_SRC_PS2CPU)/gs.c \
	$(DIR_SRC_PS2CPU)/gl.c \
	$(DIR_SRC_PS2CPU)/dgl.c \
	$(DIR_SRC_PS2CPU)/ps2_dgl.c \
	$(DIR_SRC_PS2CPU)/gl_color.c \
	$(DIR_SRC_PS2CPU)/gl_enable.c \
	$(DIR_SRC_PS2CPU)/gl_matrix.c \
	$(DIR_SRC_PS2CPU)/gl_texcoord.c \
	$(DIR_SRC_PS2CPU)/gl_texture.c \
	$(DIR_SRC_PS2CPU)/gl_vertex.c

SSRC = \
	$(DIR_SRC_PS2CPU)/ee_asm.s \
	$(DIR_SRC_PS2CPU)/dma_asm.s \
	$(DIR_SRC_PS2CPU)/gs_asm.s

COBJ=$(CSRC:.c=.o)
SOBJ=$(SSRC:.s=.o)
OBJ=$(COBJ) $(SOBJ)


all: $(DIR_BIN) $(DIR_LIB) $(LIB_DREAMGL) $(DIR_BIN)/demo1.elf $(DIR_BIN)/demo2.elf $(DIR_BIN)/demo3.elf $(DIR_BIN)/demo4.elf $(DIR_BIN)/demo5.elf

$(DIR_BIN):
	mkdir -p $(DIR_BIN)

$(DIR_LIB):
	mkdir -p $(DIR_LIB)

$(LIB_DREAMGL): $(OBJ)
	@echo "-------------------------------------------------"
	$(AR) -cr $(LIB_DREAMGL) $(OBJ)

$(DIR_BIN)/demo1.elf: $(LIB_DREAMGL) $(DIR_SRC_SAMPLES)/main_ps2.o $(DIR_SRC_SAMPLES)/demo1.o
	@echo "-------------------------------------------------"
	$(CC) $(CFLAGS) -T$(LINKFILE) -o $(DIR_BIN)/demo1.elf $(DIR_SRC_SAMPLES)/main_ps2.o $(DIR_SRC_SAMPLES)/demo1.o $(CRTFILE) $(DEMO_LIBS)

$(DIR_BIN)/demo2.elf: $(LIB_DREAMGL) $(DIR_SRC_SAMPLES)/main_ps2.o $(DIR_SRC_SAMPLES)/demo2.o
	@echo "-------------------------------------------------"
	$(CC) $(CFLAGS) -T$(LINKFILE) -o $(DIR_BIN)/demo2.elf $(DIR_SRC_SAMPLES)/main_ps2.o $(DIR_SRC_SAMPLES)/demo2.o $(CRTFILE) $(DEMO_LIBS)

$(DIR_BIN)/demo3.elf: $(LIB_DREAMGL) $(DIR_SRC_SAMPLES)/main_ps2.o $(DIR_SRC_SAMPLES)/demo3.o
	@echo "-------------------------------------------------"
	$(CC) $(CFLAGS) -T$(LINKFILE) -o $(DIR_BIN)/demo3.elf $(DIR_SRC_SAMPLES)/main_ps2.o $(DIR_SRC_SAMPLES)/demo3.o $(CRTFILE) $(DEMO_LIBS)

$(DIR_BIN)/demo4.elf: $(LIB_DREAMGL) $(DIR_SRC_SAMPLES)/main_ps2.o $(DIR_SRC_SAMPLES)/demo4.o $(DIR_SRC_SAMPLES)/testbmp.o
	@echo "-------------------------------------------------"
	$(CC) $(CFLAGS) -T$(LINKFILE) -o $(DIR_BIN)/demo4.elf $(DIR_SRC_SAMPLES)/main_ps2.o $(DIR_SRC_SAMPLES)/demo4.o $(DIR_SRC_SAMPLES)/testbmp.o $(CRTFILE) $(DEMO_LIBS)

$(DIR_BIN)/demo5.elf: $(LIB_DREAMGL) $(DIR_SRC_SAMPLES)/main_ps2.o $(DIR_SRC_SAMPLES)/demo5.o $(DIR_SRC_SAMPLES)/tunnel.o
	@echo "-------------------------------------------------"
	$(CC) $(CFLAGS) -T$(LINKFILE) -o $(DIR_BIN)/demo5.elf $(DIR_SRC_SAMPLES)/main_ps2.o $(DIR_SRC_SAMPLES)/demo5.o $(DIR_SRC_SAMPLES)/tunnel.o $(CRTFILE) $(DEMO_LIBS)



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

%.o: %.s
	@echo "-------------------------------------------------"
	$(CC) -xassembler-with-cpp -c $(CFLAGS) $< -o $@

install: all
	mkdir -p $(PS2DEV)/dreamgl/include/GL
	mkdir -p $(PS2DEV)/dreamgl/lib
	cp -f $(LIB_DREAMGL) $(PS2DEV)/dreamgl/lib
	cp -f include/GL/*.h $(PS2DEV)/dreamgl/include/GL


clean:
	rm -f $(OBJ) $(DIR_SRC_SAMPLES)/*.o $(DIR_BIN)/*.elf $(LIB_DREAMGL)

d2u:
	dos2unix Makefile LICENSE.txt README.txt CHANGES.txt
	dos2unix $(DIR_SRC_PS2CPU)/*.c $(DIR_SRC_PS2CPU)/*.h $(DIR_SRC_PS2CPU)/*.s
	dos2unix $(DIR_SRC_SAMPLES)/*.c