#
# Makefile for Microsoft Visual C++
#

CPP = cl
CPPFLAGS = /Ox /EHsc /I.. /nologo

all : libraries encoder decoder conversion

libraries : DiracCommon.lib DiracMotionEst.lib DiracDecoder.lib DiracEncoder.lib 

encoder : DiracEncoder.exe

decoder : DiracDecoder.exe

conversion : BMPtoRGB.exe RGBtoBMP.exe RGBtoUYVY.exe RGBtoYUV411.exe \
             RGBtoYUV420.exe RGBtoYUV422.exe RGBtoYUV444.exe UYVYtoRGB.exe \
             YUV411toRGB.exe YUV420toRGB.exe YUV422toRGB.exe YUV444toRGB.exe

clean :
	-del *.obj
	-del *.lib
	-del *.exe

DiracCommon.lib : band_codec.obj bit_manager.obj common.obj frame.obj \
	golomb.obj frame_buffer.obj mot_comp.obj motion.obj mv_codec.obj \
	pic_io.obj upconvert.obj wavelet_utils.obj cmd_line.obj
	lib /out:$@ /nologo $**

band_codec.obj : ..\libdirac_common\band_codec.cpp
	$(CPP) $(CPPFLAGS) /c $**

bit_manager.obj : ..\libdirac_common\bit_manager.cpp
	$(CPP) $(CPPFLAGS) /c $**

common.obj : ..\libdirac_common\common.cpp
	$(CPP) $(CPPFLAGS) /c $**

frame.obj : ..\libdirac_common\frame.cpp
	$(CPP) $(CPPFLAGS) /c $**

golomb.obj : ..\libdirac_common\golomb.cpp
	$(CPP) $(CPPFLAGS) /c $**

frame_buffer.obj : ..\libdirac_common\frame_buffer.cpp
	$(CPP) $(CPPFLAGS) /c $**

mot_comp.obj : ..\libdirac_common\mot_comp.cpp
	$(CPP) $(CPPFLAGS) /c $**

motion.obj : ..\libdirac_common\motion.cpp
	$(CPP) $(CPPFLAGS) /c $**

mv_codec.obj : ..\libdirac_common\mv_codec.cpp
	$(CPP) $(CPPFLAGS) /c $**

pic_io.obj  : ..\libdirac_common\pic_io.cpp
	$(CPP) $(CPPFLAGS) /c $**

upconvert.obj  : ..\libdirac_common\upconvert.cpp
	$(CPP) $(CPPFLAGS) /c $**

wavelet_utils.obj : ..\libdirac_common\wavelet_utils.cpp
	$(CPP) $(CPPFLAGS) /c $**
	
cmd_line.obj : ..\libdirac_common\cmd_line.cpp
	$(CPP) $(CPPFLAGS) /c $**
	
DiracMotionEst.lib : block_match.obj downconvert.obj me_mode_decn.obj me_subpel.obj \
                        me_utils.obj motion_estimate.obj
	lib /out:$@ /nologo $**

block_match.obj : ..\libdirac_motionest\block_match.cpp
	$(CPP) $(CPPFLAGS) /c $**

downconvert.obj : ..\libdirac_motionest\downconvert.cpp
	$(CPP) $(CPPFLAGS) /c $**

me_mode_decn.obj : ..\libdirac_motionest\me_mode_decn.cpp
	$(CPP) $(CPPFLAGS) /c $**

me_subpel.obj : ..\libdirac_motionest\me_subpel.cpp
	$(CPP) $(CPPFLAGS) /c $**

me_utils.obj : ..\libdirac_motionest\me_utils.cpp
	$(CPP) $(CPPFLAGS) /c $**

motion_estimate.obj : ..\libdirac_motionest\motion_estimate.cpp
	$(CPP) $(CPPFLAGS) /c $**

DiracDecoder.lib : comp_decompress.obj frame_decompress.obj seq_decompress.obj
	lib /out:$@ /nologo $**

comp_decompress.obj : ..\libdirac_decoder\comp_decompress.cpp
	$(CPP) $(CPPFLAGS) /c $**

frame_decompress.obj : ..\libdirac_decoder\frame_decompress.cpp
	$(CPP) $(CPPFLAGS) /c $**

seq_decompress.obj : ..\libdirac_decoder\seq_decompress.cpp
	$(CPP) $(CPPFLAGS) /c $**

DiracEncoder.lib : comp_compress.obj frame_compress.obj seq_compress.obj
	lib /out:$@ /nologo $**

comp_compress.obj : ..\libdirac_encoder\comp_compress.cpp
	$(CPP) $(CPPFLAGS) /c $**

frame_compress.obj : ..\libdirac_encoder\frame_compress.cpp
	$(CPP) $(CPPFLAGS) /c $**

seq_compress.obj : ..\libdirac_encoder\seq_compress.cpp
	$(CPP) $(CPPFLAGS) /c $**
        
encmain.obj : ..\encoder\encmain.cpp
	$(CPP) $(CPPFLAGS) /c $**
    
decmain.obj : ..\decoder\decmain.cpp
	$(CPP) $(CPPFLAGS) /c $**

DiracEncoder.exe : encmain.obj DiracEncoder.lib DiracMotionEst.lib DiracCommon.lib
	link /out:DiracEncoder.exe /nologo $**

DiracDecoder.exe : decmain.obj DiracDecoder.lib DiracCommon.lib
	link /out:DiracDecoder.exe /nologo $**


bitmap.obj : ..\util\conversion\common\bitmap.cpp
	$(CPP) $(CPPFLAGS) /c $**

setstdiomode.obj : ..\util\conversion\common\setstdiomode.cpp
	$(CPP) $(CPPFLAGS) /c $**


BMPtoRGB.obj : ..\util\conversion\BMPtoRGB.cpp
	$(CPP) $(CPPFLAGS) /I ..\util\conversion\common /c /c $**

RGBtoBMP.obj : ..\util\conversion\RGBtoBMP.cpp
	$(CPP) $(CPPFLAGS) /I ..\util\conversion\common /c /c $**

RGBtoUYVY.obj : ..\util\conversion\RGBtoUYVY.cpp
	$(CPP) $(CPPFLAGS) /I ..\util\conversion\common /c /c $**

RGBtoYUV411.obj : ..\util\conversion\RGBtoYUV411.cpp
	$(CPP) $(CPPFLAGS) /I ..\util\conversion\common /c /c $**

RGBtoYUV420.obj : ..\util\conversion\RGBtoYUV420.cpp
	$(CPP) $(CPPFLAGS) /I ..\util\conversion\common /c /c $**

RGBtoYUV422.obj : ..\util\conversion\RGBtoYUV422.cpp
	$(CPP) $(CPPFLAGS) /I ..\util\conversion\common /c /c $**

RGBtoYUV444.obj : ..\util\conversion\RGBtoYUV444.cpp
	$(CPP) $(CPPFLAGS) /I ..\util\conversion\common /c /c $**

UYVYtoRGB.obj : ..\util\conversion\UYVYtoRGB.cpp
	$(CPP) $(CPPFLAGS) /I ..\util\conversion\common /c /c $**

YUV411toRGB.obj : ..\util\conversion\YUV411toRGB.cpp
	$(CPP) $(CPPFLAGS) /I ..\util\conversion\common /c /c $**

YUV420toRGB.obj : ..\util\conversion\YUV420toRGB.cpp
	$(CPP) $(CPPFLAGS) /I ..\util\conversion\common /c /c $**

YUV422toRGB.obj : ..\util\conversion\YUV422toRGB.cpp
	$(CPP) $(CPPFLAGS) /I ..\util\conversion\common /c /c $**

YUV444toRGB.obj : ..\util\conversion\YUV444toRGB.cpp
	$(CPP) $(CPPFLAGS) /I ..\util\conversion\common /c /c $**


BMPtoRGB.exe : BMPtoRGB.obj setstdiomode.obj bitmap.obj
		link /out:BMPtoRGB.exe /nologo $**

RGBtoBMP.exe : RGBtoBMP.obj setstdiomode.obj bitmap.obj
		link /out:RGBtoBMP.exe /nologo $**

RGBtoUYVY.exe : RGBtoUYVY.obj setstdiomode.obj bitmap.obj
		link /out:RGBtoUYVY.exe /nologo $**

RGBtoYUV411.exe : RGBtoYUV411.obj setstdiomode.obj bitmap.obj
		link /out:RGBtoYUV411.exe /nologo $**

RGBtoYUV420.exe : RGBtoYUV420.obj setstdiomode.obj bitmap.obj
		link /out:RGBtoYUV420.exe /nologo $**

RGBtoYUV422.exe : RGBtoYUV422.obj setstdiomode.obj bitmap.obj
		link /out:RGBtoYUV422.exe /nologo $**

RGBtoYUV444.exe : RGBtoYUV444.obj setstdiomode.obj bitmap.obj
		link /out:RGBtoYUV444.exe /nologo $**

UYVYtoRGB.exe : UYVYtoRGB.obj setstdiomode.obj bitmap.obj
		link /out:UYVYtoRGB.exe /nologo $**

YUV411toRGB.exe : YUV411toRGB.obj setstdiomode.obj bitmap.obj
		link /out:YUV411toRGB.exe /nologo $**

YUV420toRGB.exe : YUV420toRGB.obj setstdiomode.obj bitmap.obj
		link /out:YUV420toRGB.exe /nologo $**

YUV422toRGB.exe : YUV422toRGB.obj setstdiomode.obj bitmap.obj
		link /out:YUV422toRGB.exe /nologo $**

YUV444toRGB.exe : YUV444toRGB.obj setstdiomode.obj bitmap.obj
		link /out:YUV444toRGB.exe /nologo $**
