# Makefile to build QDBM using Microsoft Visual C++



#================================================================
# Setting variables
#================================================================


# VC++ directory
VCPATH = C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7

# User options
YOUR_CLFLAGS = 
YOUR_LIBFLAGS = 
YOUR_LINKFLAGS=

# Debug configuration
!IF "$(CFG)" == "Debug" || "$(CFG)" == "debug"
!MESSAGE Build using debug configuration
BASE_FLAGS = /MLd /W3 /ZI /Od /FD /GZ /Fo"$(OUTDIR)\\" /Fd"$(OUTDIR)\\"
BASE_DEFS = -D_DEBUG -D__DEBUG__
OUTDIR = .\Debug
LIB_APPEND = _d
EXE_APPEND = _d

# Threaded debug configuration
!ELSEIF "$(CFG)" == "TDebug" || "$(CFG)" == "tdebug"
!MESSAGE Build using threaded debug configuration
BASE_FLAGS = /MDd /W3 /ZI /Od /FD /GZ /Fo"$(OUTDIR)\\" /Fd"$(OUTDIR)\\"
BASE_DEFS = -D_DEBUG -D__DEBUG__
OUTDIR = .\TDebug
LIB_APPEND = _td
EXE_APPEND = _td

# Threaded release configuration
!ELSEIF "$(CFG)" == "TRelease" || "$(CFG)" == "trelease"
!MESSAGE Build using threaded release configuration
BASE_DEFS = -DNDEBUG 
BASE_FLAGS = /MD /W3 /O2 /FD /Fo"$(OUTDIR)\\" /Fd"$(OUTDIR)\\"
OUTDIR = .\TRelease
LIB_APPEND = _t
EXE_APPEND = _t

# Static threaded debug configuration
!ELSEIF "$(CFG)" == "STDebug" || "$(CFG)" == "stdebug"
!MESSAGE Build using static threaded debug configuration
BASE_FLAGS = /MTd /W3 /ZI /Od /FD /GZ /Fo"$(OUTDIR)\\" /Fd"$(OUTDIR)\\"
BASE_DEFS = -D_DEBUG -D__DEBUG__
OUTDIR = .\STDebug
LIB_APPEND = _std
EXE_APPEND = _std

# Static threaded release configuration
!ELSEIF "$(CFG)" == "STRelease" || "$(CFG)" == "strelease"
!MESSAGE Build using static threaded release configuration
BASE_DEFS = -DNDEBUG
BASE_FLAGS = /MT /W3 /O2 /FD /Fo"$(OUTDIR)\\" /Fd"$(OUTDIR)\\"
OUTDIR = .\STRelease
LIB_APPEND = _st
EXE_APPEND = _st

# Release configuration
!ELSE
!MESSAGE Build using release configuration
BASE_DEFS = -DNDEBUG
BASE_FLAGS = /ML /W3 /O2 /FD /Fo"$(OUTDIR)\\" /Fd"$(OUTDIR)\\"
OUTDIR = .\Release
LIB_APPEND =
EXE_APPEND =

!ENDIF

# Building binaries
CLFLAGS = /I "$(VCPATH)\Include" /I "$(VCPATH)\PlatformSDK\Include" /I "." /nologo $(YOUR_CLFLAGS) $(BASE_FLAGS) $(BASE_DEFS)
LIBFLAGS = /libpath:"$(VCPATH)\lib" /libpath:"$(VCPATH)\PlatformSDK\Lib" /libpath:"." /nologo $(YOUR_LIBFLAGS)
LINKFLAGS = /libpath:"$(VCPATH)\lib" /libpath:"$(VCPATH)\PlatformSDK\Lib" /libpath:"." /nologo $(YOUR_LINKFLAGS)

# Targets
MYLIBS = qdbm$(LIB_APPEND).lib
LIBOBJS = $(OUTDIR)\depot.obj $(OUTDIR)\curia.obj $(OUTDIR)\relic.obj \
  $(OUTDIR)\hovel.obj $(OUTDIR)\cabin.obj $(OUTDIR)\villa.obj \
  $(OUTDIR)\vista.obj $(OUTDIR)\odeum.obj $(OUTDIR)\myconf.obj
MYBINS = dpmgr$(EXE_APPEND).exe dptest$(EXE_APPEND).exe dptsv$(EXE_APPEND).exe \
  crmgr$(EXE_APPEND).exe crtest$(EXE_APPEND).exe crtsv$(EXE_APPEND).exe \
  rlmgr$(EXE_APPEND).exe rltest$(EXE_APPEND).exe hvmgr$(EXE_APPEND).exe \
  hvtest$(EXE_APPEND).exe cbtest$(EXE_APPEND).exe cbcodec$(EXE_APPEND).exe \
  vlmgr$(EXE_APPEND).exe vltest$(EXE_APPEND).exe vltsv$(EXE_APPEND).exe \
  odmgr$(EXE_APPEND).exe odtest$(EXE_APPEND).exe odidx$(EXE_APPEND).exe



#================================================================
# Suffix rules
#================================================================


.SUFFIXES :
.SUFFIXES : .c .obj

.c{$(OUTDIR)}.obj :
	cl /c $(CLFLAGS) $<

.c.obj:
	cl /c $(CLFLAGS) $<



#================================================================
# Actions
#================================================================


all : $(OUTDIR) $(MYLIBS) $(MYBINS)


allcfg:
	nmake /NOLOGO /f VCmakefile CFG=Debug
	nmake /NOLOGO /f VCmakefile CFG=Release
	nmake /NOLOGO /f VCmakefile CFG=TDebug
	nmake /NOLOGO /f VCmakefile CFG=TRelease
	nmake /NOLOGO /f VCmakefile CFG=STDebug
	nmake /NOLOGO /f VCmakefile CFG=STRelease


clean :
	-del .\Release\*  /f /q > NUL: 2>&1
	-del .\Debug\*  /f /q > NUL: 2>&1
	-del .\TRelease\*  /f /q > NUL: 2>&1
	-del .\TDebug\*  /f /q > NUL: 2>&1
	-del .\STRelease\*  /f /q > NUL: 2>&1
	-del .\STDebug\*  /f /q > NUL: 2>&1
	del *.obj *.lib *.dll *.exp *.exe


"$(OUTDIR)" :
	if not exist "$(OUTDIR)/" mkdir "$(OUTDIR)"



#================================================================
# Building binaries
#================================================================


qdbm$(LIB_APPEND).lib : $(LIBOBJS)
	lib $(LIBFLAGS) /OUT:$@ $(LIBOBJS)


dpmgr$(EXE_APPEND).exe : $(OUTDIR)\dpmgr.obj qdbm$(LIB_APPEND).lib
	link $(LINKFLAGS) /OUT:$@ $(OUTDIR)\dpmgr.obj qdbm$(LIB_APPEND).lib


dptest$(EXE_APPEND).exe : $(OUTDIR)\dptest.obj qdbm$(LIB_APPEND).lib
	link $(LINKFLAGS) /OUT:$@ $(OUTDIR)\dptest.obj qdbm$(LIB_APPEND).lib


dptsv$(EXE_APPEND).exe : $(OUTDIR)\dptsv.obj qdbm$(LIB_APPEND).lib
	link $(LINKFLAGS) /OUT:$@ $(OUTDIR)\dptsv.obj qdbm$(LIB_APPEND).lib


crmgr$(EXE_APPEND).exe : $(OUTDIR)\crmgr.obj qdbm$(LIB_APPEND).lib
	link $(LINKFLAGS) /OUT:$@ $(OUTDIR)\crmgr.obj qdbm$(LIB_APPEND).lib


crtest$(EXE_APPEND).exe : $(OUTDIR)\crtest.obj qdbm$(LIB_APPEND).lib
	link $(LINKFLAGS) /OUT:$@ $(OUTDIR)\crtest.obj qdbm$(LIB_APPEND).lib


crtsv$(EXE_APPEND).exe : $(OUTDIR)\crtsv.obj qdbm$(LIB_APPEND).lib
	link $(LINKFLAGS) /OUT:$@ $(OUTDIR)\crtsv.obj qdbm$(LIB_APPEND).lib


rlmgr$(EXE_APPEND).exe : $(OUTDIR)\rlmgr.obj qdbm$(LIB_APPEND).lib
	link $(LINKFLAGS) /OUT:$@ $(OUTDIR)\rlmgr.obj qdbm$(LIB_APPEND).lib


rltest$(EXE_APPEND).exe : $(OUTDIR)\rltest.obj qdbm$(LIB_APPEND).lib
	link $(LINKFLAGS) /OUT:$@ $(OUTDIR)\rltest.obj qdbm$(LIB_APPEND).lib


hvmgr$(EXE_APPEND).exe : $(OUTDIR)\hvmgr.obj qdbm$(LIB_APPEND).lib
	link $(LINKFLAGS) /OUT:$@ $(OUTDIR)\hvmgr.obj qdbm$(LIB_APPEND).lib


hvtest$(EXE_APPEND).exe : $(OUTDIR)\hvtest.obj qdbm$(LIB_APPEND).lib
	link $(LINKFLAGS) /OUT:$@ $(OUTDIR)\hvtest.obj qdbm$(LIB_APPEND).lib


cbtest$(EXE_APPEND).exe : $(OUTDIR)\cbtest.obj qdbm$(LIB_APPEND).lib
	link $(LINKFLAGS) /OUT:$@ $(OUTDIR)\cbtest.obj qdbm$(LIB_APPEND).lib


cbcodec$(EXE_APPEND).exe : $(OUTDIR)\cbcodec.obj qdbm$(LIB_APPEND).lib
	link $(LINKFLAGS) /OUT:$@ $(OUTDIR)\cbcodec.obj qdbm$(LIB_APPEND).lib


vlmgr$(EXE_APPEND).exe : $(OUTDIR)\vlmgr.obj qdbm$(LIB_APPEND).lib
	link $(LINKFLAGS) /OUT:$@ $(OUTDIR)\vlmgr.obj qdbm$(LIB_APPEND).lib


vltest$(EXE_APPEND).exe : $(OUTDIR)\vltest.obj qdbm$(LIB_APPEND).lib
	link $(LINKFLAGS) /OUT:$@ $(OUTDIR)\vltest.obj qdbm$(LIB_APPEND).lib


vltsv$(EXE_APPEND).exe : $(OUTDIR)\vltsv.obj qdbm$(LIB_APPEND).lib
	link $(LINKFLAGS) /OUT:$@ $(OUTDIR)\vltsv.obj qdbm$(LIB_APPEND).lib


odmgr$(EXE_APPEND).exe : $(OUTDIR)\odmgr.obj qdbm$(LIB_APPEND).lib
	link $(LINKFLAGS) /OUT:$@ $(OUTDIR)\odmgr.obj qdbm$(LIB_APPEND).lib


odtest$(EXE_APPEND).exe : $(OUTDIR)\odtest.obj qdbm$(LIB_APPEND).lib
	link $(LINKFLAGS) /OUT:$@ $(OUTDIR)\odtest.obj qdbm$(LIB_APPEND).lib


odidx$(EXE_APPEND).exe : $(OUTDIR)\odidx.obj qdbm$(LIB_APPEND).lib
	link $(LINKFLAGS) /OUT:$@ $(OUTDIR)\odidx.obj qdbm$(LIB_APPEND).lib


$(OUTDIR)\depot.obj $(OUTDIR)\dpmgr.obj $(OUTDIR)\dptest.obj $(OUTDIR)\dptsv.obj : \
  depot.h myconf.h

$(OUTDIR)\curia.obj $(OUTDIR)\crmgr.obj $(OUTDIR)\crtest.obj $(OUTDIR)\crtsv.obj : \
  curia.h depot.h myconf.h

$(OUTDIR)\relic.obj $(OUTDIR)\rlmgr.obj $(OUTDIR)\rltest.obj : \
  relic.h depot.h myconf.h

$(OUTDIR)\hovel.obj $(OUTDIR)\hvmgr.obj $(OUTDIR)\hvtest.obj : \
  hovel.h depot.h curia.h myconf.h

$(OUTDIR)\cabin.obj $(OUTDIR)\cbtest.obj $(OUTDIR)\cbcodec.obj : \
  cabin.h myconf.h

$(OUTDIR)\villa.obj $(OUTDIR)\vlmgr.obj $(OUTDIR)\vltest.obj $(OUTDIR)\vltsv.obj : \
  villa.h depot.h cabin.h myconf.h

$(OUTDIR)\vista.obj : vista.h villa.h depot.h curia.h cabin.h myconf.h

$(OUTDIR)\odeum.obj $(OUTDIR)\odmgr.obj $(OUTDIR)\odtest.obj $(OUTDIR)\odidx.obj : \
  odeum.h depot.h curia.h cabin.h villa.h myconf.h

$(OUTDIR)\myconf.obj : myconf.h



# END OF FILE
