#TARGET = ..\bin\scenegraph_sdl_test.exe
#TARGET = ..\bin\scenegraph_dwt_test.exe
#TARGET = ..\bin\math_test.exe
#TARGET = ..\bin\tetris.exe
#TARGET = ..\bin\pngfile_test.exe
#TARGET = ..\bin\nanami_viewer.exe
#TARGET = ..\bin\to_nanami.exe
#TARGET = ..\bin\furimu.exe
#TARGET = ..\bin\scene_editor.exe
TARGET = ..\bin\scene0main.exe

#ARGS = ..\resource\test_pcnt.773
#ARGS = ..\resource\test_pcntmw.773
#ARGS = ..\resource\any_b.mqo ..\resource\test_pcnt.773
#ARGS = ..\resource\test.mqo ..\resource\test2.mkm ..\resource\test_pcntmw.773
#ARGS = test\scene0.d

OPT = -unittest
RELEASE_OPT = -O -release

DOC_OPT = -D -Dd..\doc -o-

GL_LIB = ..\lib\opengl32.lib ..\lib\glu32.lib

SDL_LIB = ..\lib\SDL.lib ..\lib\SDL_mixer.lib ..\lib\SDL_ttf.lib ..\lib\SDL_image.lib
SDL_OPT = -version=SDL_WINDOW -Isdl -Iopengl

DWT_LIB = dwt.lib advapi32.lib comctl32.lib gdi32.lib shell32.lib comdlg32.lib ole32.lib \
	user32_dwt.lib imm32_dwt.lib shell32_dwt.lib msimg32_dwt.lib usp10_dwt.lib gdi32_dwt.lib \
	kernel32_dwt.lib olepro32_dwt.lib oleaut32_dwt.lib oleacc_dwt.lib uuid.lib dwtgl.lib
DWT_OPT = -version=DWT_WINDOW -version=OLE_COM -L/SUBSYSTEM:windows:5 -Isdl

compile : $(TARGET)

run : $(TARGET)
	$(TARGET) $(ARGS)
	rem ---- end ---- $**

all : ..\bin\scenegraph_sdl_test.exe \
	..\bin\scenegraph_dwt_test.exe \
	..\bin\nanami_viewer.exe \
	..\bin\to_nanami.exe \
	..\bin\scene0main.exe \
	..\bin\scene_editor.exe

doc :
	dmd $(DOC_OPT) coneneko\math.d coneneko\scenegraph.d coneneko\pngfile.d coneneko\camera.d \
		coneneko\exunits.d coneneko\sjis2utf8.d coneneko\nanami.d
	dmd coneneko\units.d coneneko\texture.d $(DOC_OPT) $(SDL_OPT)
	dmd coneneko\glext.d $(DOC_OPT) -Iopengl
	dmd coneneko\sdlwindow.d coneneko\sceneview.d $(DOC_OPT) $(SDL_OPT)
	dmd coneneko\dwtwindow.d $(DOC_OPT) $(DWT_OPT)

clean :
	del ..\bin\*.exe
	del *.obj
	del *.map
	del pngtest2.png
	del ..\bin\trace.def
	del ..\bin\trace.log
	del ..\lib\coneneko.lib

scenegraph.obj : coneneko\scenegraph.d
	dmd -c $** $(OPT)

sdlwindow.obj : coneneko\sdlwindow.d
	dmd -c $** $(OPT) $(SDL_OPT)

dwtwindow.obj : coneneko\dwtwindow.d
	dmd -c $** $(OPT) $(DWT_OPT)

math.obj : coneneko\math.d
	dmd -c $** $(OPT)

nanami.obj : coneneko\nanami.d
	dmd -c $** $(OPT)

camera.obj : coneneko\camera.d
	dmd -c $** $(OPT)

exunits.obj : coneneko\exunits.d
	dmd -c $** $(OPT) $(SDL_OPT)

glext.obj : coneneko\glext.d
	dmd -c -of$@ $** $(OPT) $(SDL_OPT)

units.obj : coneneko\units.d
	dmd -c -of$@ $** $(OPT) $(SDL_OPT)

dwtglext.obj : coneneko\glext.d
	dmd -c -of$@ $** $(OPT) $(DWT_OPT)

dwtunits.obj : coneneko\units.d
	dmd -c -of$@ $** $(OPT) $(DWT_OPT)

sjis2utf8.obj : coneneko\sjis2utf8.d
	dmd -c -of$@ $** $(OPT)

..\bin\scenegraph_sdl_test.exe : test\scenegraph_test.d \
	glext.obj units.obj sdlwindow.obj scenegraph.obj math.obj nanami.obj exunits.obj texture.obj
	dmd -of$@ $** $(OPT) $(SDL_LIB) $(SDL_OPT) $(GL_LIB)

..\bin\scenegraph_dwt_test.exe : test\scenegraph_test.d \
	dwtglext.obj dwtunits.obj dwtwindow.obj scenegraph.obj math.obj nanami.obj exunits.obj texture.obj
	dmd -of$@ $** $(OPT) $(DWT_LIB) $(SDL_LIB) $(DWT_OPT)

..\bin\math_test.exe : test\math_test.d glext.obj units.obj sdlwindow.obj \
	scenegraph.obj math.obj texture.obj
	dmd -of$@ $** $(OPT) $(SDL_LIB) $(SDL_OPT) $(GL_LIB)

..\bin\tetris.exe : test\tetris.d glext.obj units.obj sdlwindow.obj \
	scenegraph.obj math.obj texture.obj exunits.obj
	dmd -of$@ $** $(OPT) $(SDL_LIB) $(SDL_OPT) $(GL_LIB)

..\bin\glew2glext.exe : glew2glext\main.d
	dmd -of$@ $** $(OPT)

create_glext : ..\bin\glew2glext.exe
	cmd /c "..\bin\glew2glext.exe -header > coneneko\glext.d"
	cmd /c "..\bin\glew2glext.exe < glew2glext\glew\GL_ARB_vertex_buffer_object >> coneneko\glext.d"
	cmd /c "..\bin\glew2glext.exe < glew2glext\glew\GL_ARB_vertex_program >> coneneko\glext.d"
	cmd /c "..\bin\glew2glext.exe < glew2glext\glew\GL_ARB_shader_objects >> coneneko\glext.d"
	cmd /c "..\bin\glew2glext.exe < glew2glext\glew\GL_ARB_vertex_shader >> coneneko\glext.d"
	cmd /c "..\bin\glew2glext.exe < glew2glext\glew\GL_ARB_fragment_shader >> coneneko\glext.d"
	cmd /c "..\bin\glew2glext.exe < glew2glext\glew\GL_ARB_multitexture >> coneneko\glext.d"
	cmd /c "..\bin\glew2glext.exe < glew2glext\glew\GL_EXT_framebuffer_object >> coneneko\glext.d"
	cmd /c "..\bin\glew2glext.exe < glew2glext\glew\GL_ARB_texture_float >> coneneko\glext.d"
	cmd /c "..\bin\glew2glext.exe < glew2glext\glew\GL_ARB_depth_texture >> coneneko\glext.d"

..\resource\test_pcnt.773 : ..\resource\test.mqo
	..\nanami\tonanami.exe ..\resource\any_b.mqo ..\resource\test_pcnt.773

..\resource\test_pcntmw.773 : ..\resource\test.mqo
	..\nanami\tonanami.exe ..\resource\test.mqo ..\resource\test2.mkm ..\resource\test_pcntmw.773

LIBPNG_PATH = ..\..\lpng128
ZLIB_PATH = C:\rootdir\dmd\src\phobos\etc\c\zlib

PNG_SRCS = $(LIBPNG_PATH)\png.c $(LIBPNG_PATH)\pngerror.c $(LIBPNG_PATH)\pngget.c \
	$(LIBPNG_PATH)\pngmem.c $(LIBPNG_PATH)\pngpread.c $(LIBPNG_PATH)\pngread.c \
	$(LIBPNG_PATH)\pngrio.c $(LIBPNG_PATH)\pngrtran.c $(LIBPNG_PATH)\pngrutil.c \
	$(LIBPNG_PATH)\pngset.c $(LIBPNG_PATH)\pngtrans.c $(LIBPNG_PATH)\pngwio.c \
	$(LIBPNG_PATH)\pngwrite.c $(LIBPNG_PATH)\pngwtran.c $(LIBPNG_PATH)\pngwutil.c

..\bin\pngfile.dll : pngfile\main.cpp pngfile\main.def $(PNG_SRCS) $(ZLIB_PATH)\zlib.lib
	dmc -o$@ $** -I$(LIBPNG_PATH) -I$(ZLIB_PATH)

..\bin\pngfile_test.exe : pngfile.obj test\pngfile_test.d ..\lib\pngfile.lib
	dmd -of$@ $** $(OPT)

pngfile.obj : coneneko\pngfile.d
	dmd -c $** $(OPT)

..\lib\pngfile.lib : ..\bin\pngfile.dll
	implib /noi /system $@ $**

..\bin\nanami_viewer.exe : nanami_viewer\main.d glext.obj units.obj sdlwindow.obj \
	scenegraph.obj math.obj nanami.obj camera.obj exunits.obj sjis2utf8.obj texture.obj
	dmd -of$@ $** $(OPT) $(SDL_LIB) $(SDL_OPT) $(GL_LIB)

..\bin\to_nanami.exe : to_nanami\main.d \
	to_nanami\mqo.d to_nanami\mkm.d to_nanami\anchor.d \
	to_nanami\skeleton.d to_nanami\blackboard.d to_nanami\mmgenerator.d \
	glext.obj units.obj sdlwindow.obj scenegraph.obj math.obj nanami.obj sjis2utf8.obj texture.obj exunits.obj
	dmd -of$@ $** $(OPT) $(SDL_LIB) $(SDL_OPT) $(GL_LIB)

sceneview.obj : coneneko\sceneview.d
	dmd -c $** $(OPT) $(SDL_OPT)

texture.obj : coneneko\texture.d
	dmd -c $** $(OPT) $(SDL_OPT)

OBJS = camera.obj \
	dwtwindow.obj \
	exunits.obj \
	glext.obj \
	math.obj \
	nanami.obj \
	pngfile.obj \
	scenegraph.obj \
	sceneview.obj \
	sdlwindow.obj \
	sjis2utf8.obj \
	texture.obj \
	units.obj

..\lib\coneneko.lib : $(OBJS) $(GL_LIB) $(SDL_LIB) ..\lib\pngfile.lib
	lib -c $@ $**

..\bin\scene0main.exe : test\scene0main.d test\scene0.d ..\lib\coneneko.lib
	dmd -of$@ $** $(OPT) -Isdl -Iopengl

..\bin\furimu.exe : test\furimu.d \
	glext.obj scenegraph.obj units.obj exunits.obj math.obj texture.obj \
	nanami.obj camera.obj sjis2utf8.obj sceneview.obj sdlwindow.obj pngfile.obj \
	..\lib\pngfile.lib
	dmd -of$@ $** $(OPT) $(SDL_LIB) $(SDL_OPT) $(GL_LIB)

scene : $(SCENE_FILE) \
	glext.obj units.obj sdlwindow.obj scenegraph.obj math.obj nanami.obj exunits.obj texture.obj
	dmd -of..\bin\scene.exe $** $(OPT) $(SDL_LIB) $(SDL_OPT) -version=TEST
	..\bin\scene.exe

..\lib\SDL_mixer.lib : ..\bin\SDL_mixer.dll
	implib /noi /system $@ $**

..\lib\SDL_image.lib : ..\bin\SDL_image.dll
	implib /noi /system $@ $**

..\lib\SDL_ttf.lib : ..\bin\SDL_ttf.dll
	implib /noi /system $@ $**

..\lib\SDL.lib : ..\bin\SDL.dll
	implib /noi /system $@ $**

..\bin\scene_editor.exe : scene_editor\main.d scene_editor\editview.d \
	dwtglext.obj dwtunits.obj dwtwindow.obj sdlwindow.obj pngfile.obj \
	..\lib\pngfile.lib \
	scenegraph.obj math.obj sceneview.obj exunits.obj nanami.obj texture.obj
	dmd -of$@ $** $(OPT) $(DWT_LIB) $(DWT_OPT) $(SDL_LIB) $(SDL_OPT)

# 7-zip32.exe a -tzip conenekoYMDD.zip @release_list.txt
release :
	make doc
	make clean
	make all OPT="$(RELEASE_OPT)"
