###############################################################################
##    Makefile-vc
##
##    This file is part of Object Script Library
##    Copyright (C) 2005-2007 Tom N Harris <telliamed@whoopdedo.org>
##
##    Permission is hereby granted, free of charge, to any person obtaining
##    a copy of this software and associated documentation files (the 
##    "Software"), to deal in the Software without restriction, including 
##    without limitation the rights to use, copy, modify, merge, publish, 
##    distribute, sublicense, and/or sell copies of the Software, and to 
##    permit persons to whom the Software is furnished to do so.
##    
##    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 
##    EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 
##    OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-
##    INFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 
##    BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN 
##    AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR 
##    IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 
##    THE SOFTWARE.
##
###############################################################################

CPU=i386
APPVER=4.0
!include <win32.mak>

srcdir = .\source
bin1dir = .\bin1
bin2dir = .\bin2
bin3dir = .\bin3
bindirectories = $(bin1dir) $(bin2dir) $(bin3dir)

LGDIR = ..\lg
LGLIB = lg.lib

DEFINES = -D_MT -DWINVER=0x0400 -D_WIN32_WINNT=0x0400 -DWIN32_LEAN_AND_MEAN

!ifdef DEBUG
CXXDEBUG = -MTd -Od -DDEBUG
LDDEBUG = -DEBUG
!else
CXXDEBUG = -MT -Ox -G5 -DNDEBUG
LDDEBUG = -RELEASE
!endif

LDFLAGS = -nologo $(dlllflags)
LIBDIRS = 
LIBS = $(LGLIB) uuid.lib $(baselibs)
INCLUDES = -I. -I$(srcdir) -I$(LGDIR)
CXXFLAGS = $(cflags) -nologo -W3 -wd4800 -TP -EHsc
LIBFLAGS = -nologo

SRCS =  $(srcdir)\ScriptLib.cpp \
	$(srcdir)\GetObjectParams.cpp \
	$(srcdir)\SetObjectParams.cpp \
	$(srcdir)\GetObjectParamString.cpp \
	$(srcdir)\GetObjectParamInt.cpp \
	$(srcdir)\GetObjectParamFloat.cpp \
	$(srcdir)\GetObjectParamBool.cpp \
	$(srcdir)\GetObjectParamObject.cpp \
	$(srcdir)\GetObjectParamTime.cpp \
	$(srcdir)\SetObjectParamString.cpp \
	$(srcdir)\SetObjectParamInt.cpp \
	$(srcdir)\SetObjectParamFloat.cpp \
	$(srcdir)\SetObjectParamBool.cpp \
	$(srcdir)\GetParamString.cpp \
	$(srcdir)\GetParamInt.cpp \
	$(srcdir)\GetParamFloat.cpp \
	$(srcdir)\GetParamBool.cpp \
	$(srcdir)\GetParamObject.cpp \
	$(srcdir)\GetParamTime.cpp \
	$(srcdir)\SetParamString.cpp \
	$(srcdir)\SetParamInt.cpp \
	$(srcdir)\SetParamFloat.cpp \
	$(srcdir)\SetParamBool.cpp \
	$(srcdir)\RemoveObjectParam.cpp \
	$(srcdir)\AddSingleMetaProperty.cpp \
	$(srcdir)\RemoveSingleMetaProperty.cpp \
	$(srcdir)\AddMetaProperty.cpp \
	$(srcdir)\RemoveMetaProperty.cpp \
	$(srcdir)\GetOneLinkDest.cpp \
	$(srcdir)\GetOneLinkByData.cpp \
	$(srcdir)\GetOneLinkByDataDest.cpp \
	$(srcdir)\GetOneLinkInheritedSrc.cpp \
	$(srcdir)\GetOneLinkByDataInheritedSrc.cpp \
	$(srcdir)\GetAnyLink.cpp \
	$(srcdir)\GetAnyLinkDest.cpp \
	$(srcdir)\GetAnyLinkByData.cpp \
	$(srcdir)\GetAnyLinkByDataDest.cpp \
	$(srcdir)\GetAnyLinkInheritedSrc.cpp \
	$(srcdir)\GetAnyLinkByDataInheritedSrc.cpp \
	$(srcdir)\IterateLinks.cpp \
	$(srcdir)\IterateLinksByData.cpp \
	$(srcdir)\DeleteAllLinks.cpp \
	$(srcdir)\DeleteAllLinksByData.cpp \
	$(srcdir)\FixupPlayerLinks.cpp \
	$(srcdir)\SimpleSend.cpp \
	$(srcdir)\SimplePost.cpp \
	$(srcdir)\CDSend.cpp \
	$(srcdir)\CDSendData.cpp \
	$(srcdir)\StrToObject.cpp \
	$(srcdir)\ShowBook.cpp \
	$(srcdir)\ShowString.cpp \
	$(srcdir)\DebugPrintf.cpp \
	$(srcdir)\DisplayPrintf.cpp \
	$(srcdir)\MultiParmAssignFloat.cpp \
	$(srcdir)\MultiParmAssignInt.cpp \
	$(srcdir)\MultiParmAssignString.cpp \
	$(srcdir)\MultiParmAssignVector.cpp \
	$(srcdir)\CalcTextTime.cpp \
	$(srcdir)\strsep.cpp \
	$(srcdir)\strqsep.cpp \
	$(srcdir)\strtocolor.cpp \
	$(srcdir)\strtotime.cpp \

OBJS = $(SRCS:.cpp=.obj)
# NMAKE doesn't expand macros in substitutions. How lame.
OBJS1 = $(OBJS:.\source=.\bin1)
OBJS2 = $(OBJS:.\source=.\bin2)
OBJS3 = $(OBJS:.\source=.\bin3)

SCRIPTLIB1 = ScriptLib1.lib
SCRIPTLIB2 = ScriptLib2.lib
SCRIPTLIB3 = ScriptLib3.lib

{$(srcdir)\}.cpp{$(bin1dir)\}.obj:
	$(cc) $(CXXFLAGS) $(CXXDEBUG) $(DEFINES) -D_DARKGAME=1 $(INCLUDES) -Fd$(bin1dir)\-Fo$@ -c $<

{$(srcdir)\}.cpp{$(bin2dir)\}.obj:
	$(CC) $(CXXFLAGS) $(CXXDEBUG) $(DEFINES) -D_DARKGAME=2 $(INCLUDES) -Fd$(bin2dir)\ -Fo$@ -c $<

{$(srcdir)\}.cpp{$(bin3dir)\}.obj:
	$(CC) $(CXXFLAGS) $(CXXDEBUG) $(DEFINES) -D_DARKGAME=3 $(INCLUDES) -Fd$(bin3dir)\ -Fo$@ -c $<


all: $(bindirectories) $(SCRIPTLIB1) $(SCRIPTLIB2) $(SCRIPTLIB3)

clean:
	del /q $(bin1dir)\*.obj $(bin2dir)\*.obj $(bin3dir)\*.obj $(SCRIPTLIB1) $(SCRIPTLIB2) $(SCRIPTLIB3)

BINS: $(bindirectories)
	-md $**

$(bin1dir):
	-

$(bin2dir):
	-

$(bin3dir):
	-


$(SCRIPTLIB1): $(OBJS1)
	$(implib) $(libflags) -out:$@ $?

$(SCRIPTLIB2): $(OBJS2)
	$(implib) $(libflags) -out:$@ $?

$(SCRIPTLIB3): $(OBJS3)
	$(implib) $(libflags) -out:$@ $?

