LIBSONAME=../bin/ffdshow.ax

SRCS=ffdshow_all.cpp TffDecoder_reg.cpp

SRCS_C=ffdebug.c

ifneq ($(CC),icl)
SRCS_NASM=cpuid.asm memcpy.asm
endif

include makefile.inc

ALLS=lib \
     ../bin/libmpeg2_ff.dll \
     ../bin/ff_libmad.dll \
     ../bin/ff_libfaad2.dll \
     ../bin/ff_theora.dll \
     ../bin/ff_x264.dll \
     ../bin/ff_liba52.dll \
     ../bin/ff_libdts.dll \
     ../bin/ff_samplerate.dll \
     ../bin/ff_tremor.dll \
     ../bin/ff_wmv9.dll \
     ../bin/ff_realaac.dll \
     ../bin/TomsMoComp_ff.dll \
     ../bin/ff_kernelDeint.dll \
     ../bin/ff_unrar.dll \
     ../bin/ff_vfw.dll \
     ../bin/ff_acm.acm \
     ../bin/libmplayer.dll \
     ../bin/libavcodec.dll \
     ../bin/ffvdub.vdf \
     ../bin/makeAVIS.exe

ifneq ($(CC),icl)
ALLS+=../bin/ffavisynth.dll \
      ../bin/FLT_ffdshow.dll \
      ../bin/verinc.exe \
      ../bin/rebase.exe
endif

ALLS+=$(LIBSONAME)

.all: $(ALLS)

LIBS=acm/Tacm.o \
     audioFilters/ffdshow_audiofilters_all.o \
     codecs/ffdshow_codecs_all.o \
     convert/ffdshow_convert_all.o \
     dialog/ffdshow_dialog_all.o dialog/TSpecifyPropertyPagesVE.o \
     filters/ffdshow_filters_all.o \
     imgFilters/ffdshow_imgfilters_all.o \
     muxers/ffdshow_muxers_all.o xiph/ogg/bitwise.o xiph/ogg/framing.o \
     settings/ffdshow_settings_all.o settings/lzo/minilzo.o \
     subtitles/ffdshow_subtitles_all.o \
     baseclasses/baseclasses_all.o \
     ffmpeg/libavcodec/golomb.o

ifneq ($(CC),icl)
LIBS+=audioFilters/TaudioFilterConvert.o audioFilters/dotproduct.o \
      imgFilters/TffPictCopy.o imgFilters/simple_idct_mmx.o ffmpeg/libavcodec/i386/skl_dct_sse.o ffmpeg/libavcodec/i386/skl_dct_sse2.o ffmpeg/libavcodec/i386/skl_fdct_mmx.o ffmpeg/libavcodec/i386/skl_fdct_sse2.o
endif

ifeq ($(CC),cl)
LIBS+=imgFilters/awarpsharp/aws.obj audioFilters/dotproduct.obj
endif


lib:    
	$(MAKE) -C baseclasses
	$(MAKE) -C acm
	$(MAKE) -C audioFilters
	$(MAKE) -C convert
	$(MAKE) -C dialog
	$(MAKE) -C imgFilters
	$(MAKE) -C codecs
	$(MAKE) -C settings
	$(MAKE) -C subtitles
	$(MAKE) -C muxers
	$(MAKE) -C filters

ifneq ($(CC),cl)
../bin/libavcodec.dll:
	$(MAKE) -C ffmpeg

../bin/libmplayer.dll:
	$(MAKE) -C mplayer
endif

../bin/libmpeg2_ff.dll:
	$(MAKE) -C codecs/libmpeg2

../bin/ff_libmad.dll:
	$(MAKE) -C codecs/libmad

../bin/ff_libfaad2.dll:
	$(MAKE) -C codecs/faad

../bin/ff_theora.dll:
	$(MAKE) -C codecs/theora

../bin/ff_x264.dll:
	$(MAKE) -C codecs/x264

../bin/ff_liba52.dll:
	$(MAKE) -C codecs/liba52

../bin/ff_libdts.dll:
	$(MAKE) -C codecs/libdts

../bin/ff_samplerate.dll:
	$(MAKE) -C audioFilters/resample/libsamplerate

../bin/ff_tremor.dll:
	$(MAKE) -C codecs/tremor

../bin/ff_wmv9.dll:
	$(MAKE) -C codecs/wmv9

../bin/ff_realaac.dll:
	$(MAKE) -C codecs/realaac

../bin/TomsMoComp_ff.dll:
	$(MAKE) -C imgFilters/TomsMoComp

../bin/ff_kernelDeint.dll:
	$(MAKE) -C imgFilters/KernelDeint

../bin/ff_unrar.dll:
	$(MAKE) -C ../unrar

../bin/ff_vfw.dll:
	$(MAKE) -C ../ffvfw

../bin/ff_acm.acm:
	$(MAKE) -C ../ffacm

../bin/ffavisynth.dll:
	$(MAKE) -C ../ffavisynth

../bin/ffvdub.vdf:
	$(MAKE) -C ../ffvdub/src

../bin/FLT_ffdshow.dll:
	$(MAKE) -C ../dscaler

../bin/makeAVIS.exe:
	$(MAKE) -C ../makeAVIS

../bin/verinc.exe:
	$(MAKE) -C ../verinc
	../bin/verinc.exe version.ver

../bin/rebase.exe:
	$(MAKE) -C ../rebase

ifneq ($(CC),icl)
DO_REBASE=../bin/rebase.exe ../bin/rebase.txt
endif

RESSRC=ffdshow.rc 

ifneq ($(CC),icl)
ffdshow.res.o:../bin/verinc.exe 
endif

ifeq ($(CC),icl)
$(LIBSONAME):$(OBJS) $(LIBS) $(RESSRC:.rc=.res.o) ffdshow.def
	link $(OBJS) $(LIBS) ffdshow.res.o \
             msvcrt.lib msvcprt.lib \
             kernel32.lib user32.lib advapi32.lib winmm.lib ole32.lib uuid.lib oleaut32.lib comctl32.lib gdi32.lib shell32.lib comdlg32.lib oldnames.lib shlwapi.lib \
             dinput.lib dxguid.lib \
             libircmt.lib libmmds.lib \
             /dll /machine:AMD64 /nodefaultlib \
             /def:"ffdshow.def" \
             /out:$(LIBSONAME) 
	$(DO_REBASE)
else
ifeq ($(CC),cl)
$(LIBSONAME):$(OBJS) $(LIBS) $(RESSRC:.rc=.res.o) ffdshow.def
	link $(OBJS) $(LIBS) ffdshow.res.o \
             msvcrt.lib msvcprt.lib \
             kernel32.lib user32.lib advapi32.lib winmm.lib ole32.lib uuid.lib oleaut32.lib comctl32.lib gdi32.lib shell32.lib comdlg32.lib oldnames.lib shlwapi.lib \
             dinput.lib dxguid.lib \
             /dll /machine:I386 /nodefaultlib \
             /def:"ffdshow.def" \
             /out:$(LIBSONAME) 
	$(DO_REBASE)

else
$(LIBSONAME):../bin/verinc.exe $(OBJS) $(LIBS) $(RESSRC:.rc=.res.o) ffdshow.def.gcc
	$(FFDSHOW_PREFIX)dllwrap -mno-cygwin --target=i386-mingw32 \
                -o $(LIBSONAME) -def ffdshow.def.gcc -Wl,--strip-all \
  		$(OBJS) $(LIBS) ffdshow.res.o \
  		-lmsvcrt -lstdc++ -lsupc++ \
                -lgdi32 -lcomdlg32 -lwinmm -lcomctl32 -luuid -lole32 -loleaut32 \
                -ldinput -ldxguid -lshlwapi
	$(DO_REBASE)
endif
endif

clean:	
	$(RM) $(TEMPFILES) $(LIBSONAME) mplayer/Tlibmplayer.o ffmpeg/Tlibavcodec.o xiph/ogg/bitwise.o xiph/ogg/framing.o
	$(MAKE) -C baseclasses clean
	$(MAKE) -C acm clean
	$(MAKE) -C audioFilters clean
	$(MAKE) -C convert clean
	$(MAKE) -C dialog clean
	$(MAKE) -C imgFilters clean
	$(MAKE) -C codecs clean
	$(MAKE) -C settings clean
	$(MAKE) -C subtitles clean
	$(MAKE) -C muxers clean
	$(MAKE) -C filters clean
ifneq ($(CC),cl)
ifneq ($(CC),icl)
	$(MAKE) -C ffmpeg clean
	$(MAKE) -C mplayer clean
endif
endif
	$(MAKE) -C codecs/libmpeg2 clean
	$(MAKE) -C codecs/libmad clean
	$(MAKE) -C codecs/faad clean
	$(MAKE) -C codecs/theora clean
	$(MAKE) -C codecs/x264 clean
	$(MAKE) -C codecs/liba52 clean
	$(MAKE) -C codecs/libdts clean
	$(MAKE) -C audioFilters/resample/libsamplerate clean
	$(MAKE) -C codecs/tremor clean
	$(MAKE) -C codecs/wmv9 clean
	$(MAKE) -C codecs/realaac clean
	$(MAKE) -C imgFilters/TomsMoComp clean
	$(MAKE) -C imgFilters/KernelDeint clean
	$(MAKE) -C ../unrar clean
	$(MAKE) -C ../ffvfw clean
	$(MAKE) -C ../ffacm clean
	$(MAKE) -C ../ffavisynth clean
	$(MAKE) -C ../ffvdub/src clean
	$(MAKE) -C ../dscaler clean
	$(MAKE) -C ../makeAVIS clean
	$(MAKE) -C ../verinc clean

dep:
	$(MAKE) .depend
	$(MAKE) -C acm .depend
	$(MAKE) -C audioFilters .depend
	$(MAKE) -C baseclasses .depend
	$(MAKE) -C convert .depend
	$(MAKE) -C dialog .depend
	$(MAKE) -C imgFilters .depend
	$(MAKE) -C codecs .depend
	$(MAKE) -C settings .depend
	$(MAKE) -C subtitles .depend
	$(MAKE) -C muxers .depend
	$(MAKE) -C filters .depend
ifneq ($(CC),cl)
ifneq ($(CC),icl)
	$(MAKE) -C ffmpeg .depend
	$(MAKE) -C mplayer .depend
endif
endif
	$(MAKE) -C codecs/libmpeg2 .depend
	$(MAKE) -C codecs/libmad .depend
	$(MAKE) -C codecs/faad .depend
	$(MAKE) -C codecs/theora .depend
	$(MAKE) -C codecs/x264 .depend
	$(MAKE) -C codecs/liba52 .depend
	$(MAKE) -C codecs/libdts .depend
	$(MAKE) -C audioFilters/resample/libsamplerate .depend
	$(MAKE) -C codecs/tremor .depend
	$(MAKE) -C codecs/wmv9 .depend
	$(MAKE) -C codecs/realaac .depend
	$(MAKE) -C imgFilters/TomsMoComp .depend
	$(MAKE) -C imgFilters/KernelDeint .depend
	$(MAKE) -C ../unrar .depend
	$(MAKE) -C ../ffvfw .depend
	$(MAKE) -C ../ffacm .depend
	$(MAKE) -C ../ffavisynth .depend
	$(MAKE) -C ../ffvdub/src .depend
	$(MAKE) -C ../dscaler .depend
	$(MAKE) -C ../makeAVIS .depend
	$(MAKE) -C ../verinc .depend

distclean:
	$(RM) $(TEMPFILES) $(LIBSONAME) mplayer/Tlibmplayer.o ffmpeg/Tlibavcodec.o xiph/ogg/bitwise.o xiph/ogg/framing.o .depend
	$(MAKE) -C baseclasses distclean
	$(MAKE) -C acm distclean
	$(MAKE) -C audioFilters distclean
	$(MAKE) -C convert distclean
	$(MAKE) -C dialog distclean
	$(MAKE) -C imgFilters distclean
	$(MAKE) -C codecs distclean
	$(MAKE) -C settings distclean
	$(MAKE) -C subtitles distclean
	$(MAKE) -C muxers distclean
	$(MAKE) -C filters distclean
ifneq ($(CC),cl)
ifneq ($(CC),icl)
	$(MAKE) -C ffmpeg distclean
	$(MAKE) -C mplayer distclean
endif
endif
	$(MAKE) -C codecs/libmpeg2 distclean
	$(MAKE) -C codecs/libmad distclean
	$(MAKE) -C codecs/faad distclean
	$(MAKE) -C codecs/theora distclean
	$(MAKE) -C codecs/x264 distclean
	$(MAKE) -C codecs/liba52 distclean
	$(MAKE) -C codecs/libdts distclean
	$(MAKE) -C audioFilters/resample/libsamplerate distclean
	$(MAKE) -C codecs/tremor distclean
	$(MAKE) -C codecs/wmv9 distclean
	$(MAKE) -C codecs/realaac distclean
	$(MAKE) -C imgFilters/TomsMoComp distclean
	$(MAKE) -C imgFilters/KernelDeint distclean
	$(MAKE) -C ../unrar distclean
	$(MAKE) -C ../ffvfw distclean
	$(MAKE) -C ../ffacm distclean
	$(MAKE) -C ../ffavisynth distclean
	$(MAKE) -C ../ffvdub/src distclean
	$(MAKE) -C ../dscaler distclean
	$(MAKE) -C ../makeAVIS distclean
	$(MAKE) -C ../verinc distclean

#
# include dependency files if they exist
#
ifneq ($(wildcard .depend),)
include .depend
endif
