#Makefile neutrinoSX2 for Win32 / cygwin

.PHONY: clean


#Changes following VAR to your system configuration


#For use with gprof : 
#FIRST : Execute nSX2
#SECOND: gprof ./nsx2.exe > profiling.txt
#CC = gcc -pg
#CFLAGS = -Wall -O3  -funroll-loops -ffast-math -mcpu=pentium


CC = gcc 
CFLAGS = -Wall -O3 -fomit-frame-pointer -funroll-loops -ffast-math -mcpu=pentium 

LIB = -L/usr/lib -L/usr/local/lib -lSDL 

CINCLUDE = -I/usr/local/include  -I./plugin_GS_04 

#End of Configuration



#Main Emu Objects
OBJ = nSX2.o elf_file.o r5900_memory.o r5900_main.o GS_main.o DMA_main.o nSX2_config.o

#Ini API Objects
OBJ_INIPARSER = iniparser/dictionary.o iniparser/iniparser.o iniparser/strlib.o

#Graphics Synthetiser Objects
OBJ_GS_04 = plugin_gs_04/Draw.o plugin_gs_04/Prim.o plugin_gs_04/Soft.o plugin_gs_04/GS.o plugin_gs_04/Linux-SDL/X11.o  plugin_gs_04/Linux-SDL/Conf.o

#muGUI Objects
MUGUI_OBJ = ./muGUI/BFont.o ./muGUI/SDL_Prim.o ./muGUI/muGUI.o ./muGUI/muGUI_widget.o

#SDL_gfx
SDLGFX_OBJ = ./muGUI/SDL_gfx/SDL_gfxPrimitives.c  ./muGUI/SDL_gfx/SDL_rotozoom.c


all: nSX2



nSX2:	$(OBJ) $(OBJ_GS_04)  $(MUGUI_OBJ) $(OBJ_INIPARSER) $(SDLGFX_OBJ)
	$(CC) -o $@ $(OBJ)  $(OBJ_GS_04)  $(MUGUI_OBJ) $(OBJ_INIPARSER) $(SDLGFX_OBJ) $(LIB) 
	#strip --strip-all $@
		

#dependencies
#Main Emu Objects
nSX2.o: nSX2.h plugin_gs_04/PS2Edefs.h  nSX2.c
	$(CC) $(CFLAGS) -c nSX2.c -o nSX2.o
	
elf_file.o: nSX2.h elf_file.h elf_file.c
	$(CC) $(CFLAGS) -c elf_file.c -o elf_file.o

r5900_memory.o: nSX2.h elf_file.h plugin_gs_04/PS2Edefs.h r5900_memory.c
	$(CC) $(CFLAGS) -c r5900_memory.c -o r5900_memory.o
	
r5900_main.o: nSX2.h r5900_main.h r5900_main_table.h r5900_main.c
	$(CC) $(CFLAGS) -c r5900_main.c -o r5900_main.o

GS_main.o: nSX2.h plugin_gs_04/PS2Edefs.h GS_main.c
	$(CC) $(CFLAGS) -c GS_main.c -o GS_main.o

DMA_main.o: nSX2.h plugin_gs_04/PS2Edefs.h DMA_main.c
	$(CC) $(CFLAGS) -c DMA_main.c -o DMA_main.o

nSX2_config.o: nSX2.h nSX2_config.c
	$(CC) $(CFLAGS) -c nSX2_config.c -o nSX2_config.o

#dependencies
#Ini Parser Objects
iniparser/dictionary.o: iniparser/dictionary.c
	$(CC) $(CFLAGS) -c iniparser/dictionary.c -o iniparser/dictionary.o

iniparser/iniparser.o: iniparser/iniparser.c
	$(CC) $(CFLAGS) -c iniparser/iniparser.c -o iniparser/iniparser.o

iniparser/strlib.o: iniparser/strlib.c
	$(CC) $(CFLAGS) -c iniparser/strlib.c -o iniparser/strlib.o



#dependencies
#Graphics Synthetiser Objects
# 0.4
plugin_gs_04/Draw.o: plugin_gs_04/Draw.h plugin_gs_04/Draw.c
	$(CC) $(CFLAGS) -c plugin_gs_04/Draw.c -o plugin_gs_04/Draw.o
	
plugin_gs_04/Prim.o: plugin_gs_04/GS.h plugin_gs_04/Soft.h plugin_gs_04/Prim.c
	$(CC) $(CFLAGS) -c plugin_gs_04/Prim.c -o plugin_gs_04/Prim.o
	
plugin_gs_04/Soft.o: plugin_gs_04/GS.h plugin_gs_04/Soft.c
	$(CC) $(CFLAGS) -c plugin_gs_04/Soft.c -o plugin_gs_04/Soft.o
	
plugin_gs_04/GS.o: plugin_gs_04/GS.h plugin_gs_04/GS.c
	$(CC) $(CFLAGS) -DVERSION=0 -DBUILD=0 -c plugin_gs_04/GS.c -o plugin_gs_04/GS.o
	
plugin_gs_04/Linux-SDL/X11.o: plugin_gs_04/GS.h plugin_gs_04/Draw.h plugin_gs_04/Linux-SDL/X11.c
	$(CC) $(CFLAGS) -c plugin_gs_04/Linux-SDL/X11.c -o plugin_gs_04/Linux-SDL/X11.o
	
plugin_gs_04/Linux-SDL/Conf.o: nSX2.h plugin_gs_04/GS.h plugin_gs_04/Linux-SDL/Conf.c
	$(CC) $(CFLAGS) -c plugin_gs_04/Linux-SDL/Conf.c -o plugin_gs_04/Linux-SDL/Conf.o


#muGUI
./muGUI/BFont.o:  ./muGUI/BFont.c
	$(CC) $(CFLAGS) $(CINCLUDE) -c ./muGUI/BFont.c -o ./muGUI/BFont.o

./muGUI/SDL_Prim.o:  ./muGUI/SDL_Prim.c
	$(CC) $(CFLAGS) $(CINCLUDE) -c ./muGUI/SDL_Prim.c -o ./muGUI/SDL_Prim.o

/muGUI/muGUI.o:  ./muGUI/muGUI.c ./muGUI/muGUI.h ./muGUI/muGUI_widget.h
	$(CC) $(CFLAGS) $(CINCLUDE) -c ./muGUI/muGUI.c -o ./muGUI/muGUI.o

/muGUI/muGUI_widget.o:  ./muGUI/muGUI.h ./muGUI/muGUI_widget.h
	$(CC) $(CFLAGS) $(CINCLUDE) -c ./muGUI/muGUI_widget.c -o ./muGUI/muGUI_widget.o

	
clean:
	rm -f $(OBJ)
	rm -f $(OBJ_GS_04)
	rm -f $(OBJ_INIAPI)
	rm -f $(MUGUI_OBJ)
	

	
