#
# Nov-29-1993 Haituanv	Kill the obsolete -DENGLISH_LOCALIZATION in CFLAGS.
# Nov-29-1993 Haituanv	Add -D_MBCS to CFLAGS to MBCS enable even US version.
# Nov-29-1993 Haituanv	Add EXTRA_CFLAGS to allow build with extra flags:
#							nmake EXTRA_FLAGS=-DFOO, for example.
# Dec-01-1993 Haituanv	Add DBC=0 (default)
# Dec-14-1993 Haituanv	Remove DBC=0, default now is DBC enable build
# Jan-31-1994 Haituanv	External message file
#

!IFDEF NTMAKEENV
#
# DO NOT EDIT THIS SECTION!!!  Edit .\sources. if you want to add a new source
# file to this component.  This section merely indirects to the real make file
# that is shared by all the components of WINDOWS NT
#
!INCLUDE $(NTMAKEENV)\makefile.def

!ELSE

#	Makefile for NT/TNT version of cvpack
#
#	The following arguments are passed in from the master makefile
#

#
# Oct-01-1993 Haituanv	Nuke the useless CL macro
#

#	Inference rules

.SUFFIXES: .exe .obj .c .asm

!ifndef LANGAPI
LANGAPI = \langapi
!endif

!if	"$(PROCESSOR_ARCHITECTURE)" == "x86"

CC	= cl
OPTFLAG = -O2

!elseif "$(PROCESSOR_ARCHITECTURE)" == "MIPS"

CC	= mcl
OPTFLAG = -Ox

!endif

!ifndef LOCALE
LOCALE=US
!endif

!if "$(LOCALE)" == "US"
MSG=eng
!elseif "$(LOCALE)" == "JAPAN"
MSG=jap
!elseif "$(LOCALE)" == "FRANCE"
MSG=frn
!elseif "$(LOCALE)" == "GERMANY"
MSG=ger
!elseif "$(LOCALE)" == "ITALY"
MSG=itl
!else
!error Unknown value for LOCALE.  Use JAPAN, FRANCE, GERMANY, ITALY
!endif

!ifndef ZSWITCH
ZSWITCH = -Zi -Fd$(ODIR)\cvpack.pdb
!endif

!ifndef TARGETNB09
LINKPDB = -PDB:$(ODIR)\cvpack.pdb
!else
LINKPDB = -PDB:none
!endif

CFLAGS	= -Gf -Gy -I$(LANGAPI)\include -W3 -c -MD $(EXTRA_CFLAGS) 

!if "$(DBC)" != "0"
CFLAGS	= $(CFLAGS) -D_MBCS
!message --- building _MBCS version
!endif

!ifdef RELEASE
EXE	= cvpack
ODIR	= opckn
LFLAGS	=
LDEBUG	= none
CFLAGS	= -DDBG=0 -DNDEBUG $(CFLAGS) $(OPTFLAG)
!else
EXE	= cvpack
ODIR	= opcknd
LFLAGS	= $(LINKPDB)
LDEBUG	= full
CFLAGS	= -DDBG=1 -DDEBUGVER $(CFLAGS) -Od $(ZSWITCH)
!endif

!ifndef NOBROWSER
CFLAGS	= $(CFLAGS) -FR$(ODIR)^\
!endif

!if	"$(PROCESSOR_ARCHITECTURE)" != "x86"
CFLAGS	= $(CFLAGS) -DNO_TDB
!endif

.c{$(ODIR)}.obj:
		$(CC) @<< $<
$(CFLAGS) -Fp$(ODIR)\precomp.pch -Fo$*.obj -Yucompact.h
<<

OBJS	= \
	$(ODIR)\bufio.obj	\
	$(ODIR)\cnvtprim.obj	\
	$(ODIR)\compact6.obj	\
	$(ODIR)\compact7.obj	\
	$(ODIR)\cvpack.obj	\
	$(ODIR)\dbgdumps.obj	\
	$(ODIR)\engine.obj	\
	$(ODIR)\error.obj	\
	$(ODIR)\module.obj	\
	$(ODIR)\getmsg.obj 	\
	$(ODIR)\obsolete.obj	\
	$(ODIR)\pelines.obj 	\
	$(ODIR)\precomp.obj	\
	$(ODIR)\recurse.obj 	\
	$(ODIR)\stack.obj	\
	$(ODIR)\symbols6.obj	\
	$(ODIR)\symbols7.obj	\
	$(ODIR)\tables.obj	\
	$(ODIR)\utils.obj	\
	$(ODIR)\utils6.obj	\
	$(ODIR)\vbuf.obj	\
	$(ODIR)\writebuf.obj

!ifndef RELEASE
OBJS =	$(OBJS) 		\
	$(ODIR)\dmalloc.obj	\
	$(ODIR)\pedump.obj
!endif

!if	"$(PROCESSOR_ARCHITECTURE)" == "x86"
OBJS	=			\
	$(OBJS) 		\
	$(LANGAPI)\lib\instrapi.lib

!endif

all: $(ODIR)\$(EXE).exe	 $(ODIR)\$(EXE).err

$(ODIR)\$(EXE).exe: $(ODIR) $(OBJS)
	link @<<$(@R).lnk
$(LFLAGS)
-out:$@
-debug:$(LDEBUG)
-stack:32768,4096
-map:$(@R).map
$(OBJS: = ^
)
dbi.lib
<<keep
	rem rebind godosxnt.exe $@	// no longer license pharlap extender
!ifndef NOBROWSER
	bscmake /n /o cvpack $(ODIR)\*.sbr
!endif

$(ODIR):
	@-mkdir $(ODIR)

$(ODIR)\precomp.obj: precomp.c compact.h $(LANGAPI)\include\cvinfo.h cvtdef.h \
	$(LANGAPI)\include\cvexefmt.h vbuf.h defines.h padmacro.h \
	msg.h version.h inlines.h fileio.h
	@-mkdir $(ODIR) > nul
!ifdef SBR
	$(CC) @<<
$(CFLAGS) -Fp$(ODIR)\precomp.pch -Fo$(ODIR)\precomp.obj -Yccompact.h -FR$(ODIR)\precomp.sbr precomp.c
<<
!else
	$(CC) @<<
$(CFLAGS) -Fp$(ODIR)\precomp.pch -Fo$(ODIR)\precomp.obj -Yccompact.h precomp.c
<<
!endif

$(ODIR)\main.obj: main.c compact.h $(ODIR)\precomp.obj

$(ODIR)\obsolete.obj: obsolete.c compact.h $(ODIR)\precomp.obj

$(ODIR)\utils6.obj: utils6.c compact.h $(ODIR)\precomp.obj

$(ODIR)\compact6.obj: compact6.c compact.h $(ODIR)\precomp.obj

$(ODIR)\engine.obj: engine.c compact.h $(ODIR)\precomp.obj

$(ODIR)\error.obj: error.c compact.h $(ODIR)\precomp.obj

$(ODIR)\module.obj: module.c compact.h exehdr.h writebuf.h \
					$(ODIR)\precomp.obj

$(ODIR)\recurse.obj: recurse.c compact.h $(ODIR)\precomp.obj

$(ODIR)\stack.obj: stack.c compact.h $(ODIR)\precomp.obj

$(ODIR)\tables.obj: tables.c compact.h writebuf.h $(LANGAPI)\include\typesrvr.h $(ODIR)\precomp.obj

$(ODIR)\utils.obj: utils.c compact.h $(ODIR)\precomp.obj

$(ODIR)\vbuf.obj: vbuf.c compact.h $(ODIR)\precomp.obj

$(ODIR)\cnvtprim.obj: cnvtprim.c compact.h $(ODIR)\precomp.obj

$(ODIR)\symbols6.obj: symbols6.c compact.h $(ODIR)\precomp.obj

$(ODIR)\symbols7.obj: symbols7.c compact.h $(ODIR)\precomp.obj

$(ODIR)\writebuf.obj: writebuf.c compact.h writebuf.h $(ODIR)\precomp.obj

$(ODIR)\dbgdumps.obj: dbgdumps.c compact.h $(ODIR)\precomp.obj

$(ODIR)\pelines.obj: pelines.c compact.h $(ODIR)\precomp.obj

$(ODIR)\bufio.obj: bufio.c bufio.h fileio.h msg.h
	$(CC) $(CFLAGS) -Fo$(ODIR)\bufio.obj bufio.c

$(ODIR)\pedump.obj: pedump.c compact.h $(ODIR)\precomp.obj

$(ODIR)\dmalloc.obj: dmalloc.c dmalloc.h dmalloc_.h compact.h $(ODIR)\precomp.obj


#
# Message support
#

$(ODIR)\$(EXE).err: $(ODIR)\msg.inp
	mkmsg -err $@ $?

$(ODIR)\getmsg.obj: $(LANGAPI)\getmsg\getmsg.c
	$(CC) $(CFLAGS) -c -Fo$@ $?

msg.h: $(ODIR)\msg.inp
	mkmsg -h msg.h $(ODIR)\msg.inp

$(ODIR)\msg.inp: msg.$(MSG)
	$(CC) -EP $(CFLAGS) msg.$(MSG) > $@

!endif
