# 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=

# Configurations
!IF "$(CFG)" == "ld"
!MESSAGE Build using static debug configuration
BASE_FLAGS = /MLd /W3 /ZI /Od /FD /GZ /Fo"$(OUTDIR)\\" /Fd"$(OUTDIR)\\"
BASE_DEFS = /D_DEBUG /D__DEBUG__
OUTDIR = .\tmp_ld
LIB_APPEND = _ld
EXE_APPEND = _ld
!ELSEIF "$(CFG)" == "l"
!MESSAGE Build using static release configuration
BASE_DEFS = /DNDEBUG
BASE_FLAGS = /ML /W3 /O2 /FD /Fo"$(OUTDIR)\\" /Fd"$(OUTDIR)\\"
OUTDIR = .\tmp_l
LIB_APPEND = _l
EXE_APPEND = _l
!ELSEIF "$(CFG)" == "td"
!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 = .\tmp_td
LIB_APPEND = _td
EXE_APPEND = _td
!ELSEIF "$(CFG)" == "t"
!MESSAGE Build using static threaded release configuration
BASE_DEFS = /DNDEBUG
BASE_FLAGS = /MT /W3 /O2 /FD /Fo"$(OUTDIR)\\" /Fd"$(OUTDIR)\\"
OUTDIR = .\tmp_t
LIB_APPEND = _t
EXE_APPEND = _t
!ELSEIF "$(CFG)" == "dd"
!MESSAGE Build using dynamic threaded debug configuration
BASE_FLAGS = /MDd /W3 /ZI /Od /FD /GZ /Fo"$(OUTDIR)\\" /Fd"$(OUTDIR)\\"
BASE_DEFS = /D_DEBUG /D__DEBUG__
OUTDIR = .\tmp_dd
LIB_APPEND = _dd
EXE_APPEND = _dd
!ELSE
!MESSAGE Build using dynamic threaded release configuration
BASE_DEFS = /DNDEBUG
BASE_FLAGS = /MD /W3 /O2 /FD /Fo"$(OUTDIR)\\" /Fd"$(OUTDIR)\\"
OUTDIR = .\tmp
LIB_APPEND =
EXE_APPEND =
!ENDIF

# Building binaries
CLFLAGS = /I "$(VCPATH)\Include" /I "$(VCPATH)\PlatformSDK\Include" /I "." \
  /nologo $(YOUR_CLFLAGS) $(BASE_FLAGS) $(BASE_DEFS) /D_CRT_SECURE_NO_DEPRECATE=1
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).dll qdbm$(LIB_APPEND).lib qdbm$(LIB_APPEND)_static.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=ld
	nmake /NOLOGO /f VCmakefile CFG=l
	nmake /NOLOGO /f VCmakefile CFG=td
	nmake /NOLOGO /f VCmakefile CFG=t
	nmake /NOLOGO /f VCmakefile CFG=dd
	nmake /NOLOGO /f VCmakefile


clean :
	-rd tmp_ld /S /Q > NUL: 2>&1
	-rd tmp_l /S /Q > NUL: 2>&1
	-rd tmp_td /S /Q > NUL: 2>&1
	-rd tmp_t /S /Q > NUL: 2>&1
	-rd tmp_dd /S /Q > NUL: 2>&1
	-rd tmp /S /Q > NUL: 2>&1
	-del *.obj *.lib *.dll *.exp *.exe casket /F /Q > NUL: 2>&1


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



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


qdbm$(LIB_APPEND).dll : $(LIBOBJS) qdbm.def
	link /DLL /DEF:qdbm.def $(LINKFLAGS) /OUT:$@ /IMPLIB:qdbm$(LIB_APPEND).lib $(LIBOBJS)


qdbm$(LIB_APPEND).lib : qdbm$(LIB_APPEND).dll


qdbm$(LIB_APPEND)_static.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
