#############################################################################
#
#   This makefile require the following setup:
#
#       1)      Run the "setenv.bat" in your SDK root directory (e.g. C:\MSTOOLS) 
#               to setup the compiler and tools environment.
#                       c:\mstools\setenv c:\mstools c:\msvc20\bin
#	
#       2)      Run the "ddkenv.bat" in your DDK root directory (e.g. C:\DDK) to 
#               setup the environment to build a basic 32 bit driver.
#                       c:\ddk\ddkenv 32 base
#
#   to make a NON-DEBUG build, type the following line:
#       nmake DEBUG=NO
#   just typing 'nmake' will build a DEBUG build
#
#
#===========================================================================;
TARGETBASE      =adv601
EXT             =dll
TARGETNAME      =$(TARGETBASE)
LOBJ            =WIN32
OBJS            =$(LOBJ)\drvproci.obj $(LOBJ)\adv601.obj \
                 $(LOBJ)\awmodel.obj $(LOBJ)\bstream.obj $(LOBJ)\block.obj \
                 $(LOBJ)\hcoder.obj $(LOBJ)\htable.obj $(LOBJ)\wtf.obj \
                 $(LOBJ)\debugio.obj $(LOBJ)\quant.obj $(LOBJ)\stat.obj \
                 $(LOBJ)\bw.obj  $(LOBJ)\options.obj $(LOBJ)\codec.obj \
                 $(LOBJ)\common.obj $(LOBJ)\herror.obj
                 

#============================================================================
#	Debuging session
#============================================================================
#OBJS        =$(LOBJ)\drvproc.obj $(LOBJ)\advc.obj
#             $(LOBJ)\ulaw.obj #$(LOBJ)\help.obj   


LIBS	=kernel32.lib user32.lib gdi32.lib winmm.lib advapi32.lib LIBC.LIB #crtdll.lib
GOALS	=$(LOBJ)\$(TARGETNAME).$(EXT) $(LOBJ)\$(TARGETNAME).sym

!if "$(DEBUG)" == "NO"
DEF     = 
CDEBUG	=$(DEF)
LDEBUG=-debug:none
!else
#DEF     =-DDEBUG  -DDEBLEVEL=1  -DDEBUG_601_DUMP_SEQ
#DEF     =-DDEBUG  -DDEBLEVEL=1  -DMSDOS -DDEBUG_601_DUMP
#DEF     =-DDEBUG  -DDEBLEVEL=1 -DMSDOS
CDEBUG  =-Zi $(DEF)
LDEBUG=-debug:full -debugtype:cv
!endif

!if "$(VERBOSE)" == "YES"
NOLOGO	=
RCNOLOGO=-v
!else
NOLOGO	=-nologo
RCNOLOGO=
!endif

#TARGETWARN      =-W3 -WX
TARGETWARN      =-W3
#########################
# No Optimization
TARGETOPT     =-O2gityb2
#########################
#TARGETOPT       =-Zl /Zp1
#CFLAGS          =$(TARGETWARN) $(TARGETOPT) -DIS_32 -Gs -G3 -D_X86_ $(CDEBUG) -I..\include -Fd$* -Fo$@
CFLAGS          =$(TARGETWARN) $(TARGETOPT) -DWIN32 -DSOFTCODEC -G5 -Gs  -I..\include -Fd$* -Fo$@
RCFLAGS		=-r -I..\include -D_WIN32 -DIS_32 $(RDEBUG) #RC 
LFLAGS		=-nodefaultlib -align:0x1000 $(LDEBUG)
RC		=rc $(RCNOLOGO)
CC		=cl -c $(NOLOGO)
LINK		=link $(NOLOGO)
MAPSYM		=mapsym $(NOLOGO)
MFLAGS		=

goal:   setenv makedirs $(GOALS) copydll
	@echo ***** Finished making $(TARGETBASE) *****
        @echo ***** Copy $(TARGETBASE).$(EXT) from \$(LOBJ) *****
copydll:
        @copy $(LOBJ)\$(TARGETBASE).$(EXT) >nul

makedirs:
!if !exists($(LOBJ))
	@md $(LOBJ) >nul
!endif

clean:
!if exists($(LOBJ))
	@echo y | del $(LOBJ) >nul
	@rd $(LOBJ) >nul
!endif
	@echo ***** Finished cleaning $(TARGETBASE) *****

setenv:
       @echo *****     IMPORTANT ! IMPORTANT ! IMPORTANT !     *****
       @echo ***** Make sure you have already run the required *****
       @echo ***** batch files described at the beginning of   *****
       @echo ***** this file, otherwise this makefile will     *****
       @echo ***** not work !                                  *****
       @pause

$(LOBJ)\drvproci.obj:	$$(@B).c
	@$(CC) @<<
$(CFLAGS)
$(@B).c
<<

$(LOBJ)\adv601.obj:   $$(@B).c
	@$(CC) @<<
$(CFLAGS)
$(@B).c
<<

$(LOBJ)\awmodel.obj:   	$$(@B).c
	@$(CC) @<<
$(CFLAGS)
$(@B).c
<<

$(LOBJ)\bstream.obj:   	$$(@B).c
	@$(CC) @<<
$(CFLAGS)
$(@B).c
<<

$(LOBJ)\block.obj:   	$$(@B).c
	@$(CC) @<<
$(CFLAGS)
$(@B).c
<<

$(LOBJ)\common.obj:   	$$(@B).c
	@$(CC) @<<
$(CFLAGS)
$(@B).c
<<

$(LOBJ)\codec.obj:      $$(@B).c
	@$(CC) @<<
$(CFLAGS)
$(@B).c
<<

$(LOBJ)\hcoder.obj:   	$$(@B).c
	@$(CC) @<<
$(CFLAGS)
$(@B).c
<<

$(LOBJ)\htable.obj:   	$$(@B).c
	@$(CC) @<<
$(CFLAGS)
$(@B).c
<<

$(LOBJ)\debugio.obj:         $$(@B).c
	@$(CC) @<<
$(CFLAGS)
$(@B).c
<<

$(LOBJ)\quant.obj:   	$$(@B).c
	@$(CC) @<<
$(CFLAGS)
$(@B).c
<<

$(LOBJ)\stat.obj:   	$$(@B).c
	@$(CC) @<<
$(CFLAGS)
$(@B).c
<<

$(LOBJ)\wtf.obj:         $$(@B).c
	@$(CC) @<<
$(CFLAGS)
$(@B).c
<<

$(LOBJ)\bw.obj:         $$(@B).c
	@$(CC) @<<
$(CFLAGS)
$(@B).c
<<

$(LOBJ)\options.obj:   	$$(@B).c
	@$(CC) @<<
$(CFLAGS)
$(@B).c
<<

$(LOBJ)\herror.obj:    $$(@B).c
	@$(CC) @<<
$(CFLAGS)
$(@B).c
<<



$(LOBJ)\$(TARGETNAME).res:      adv601.rc # adv601.rcv
        @$(RC) $(RCFLAGS) -fo$@ -I$(PVER) -I..\INCLUDE adv601.rc

$(LOBJ)\$(TARGETNAME).sym:	$$(@R).map
	@$(MAPSYM) $(MFLAGS) -mo $@ $*.map


$(LOBJ)\$(TARGETNAME).$(EXT): $(OBJS) $(LOBJ)\$$(@B).res $(TARGETNAME).def
	$(LINK) $(LFLAGS) @<<
-out:$(@R).$(EXT)
-machine:IX86
-subsystem:windows,4.0
-base:0x7f840000
-map:$(@R).map
-def:$(@B).def
-dll
$(@R).res
-implib:$(@R).lib
$(OBJS)
$(LIBS)	
<<
