# ---------------------------------------------------------------------------
# Use the following lines to set your installation directories
# ---------------------------------------------------------------------------
INC_DIR = .\include
LIB_DIR = .\lib
OBJ_DIR = .\obj
BIN_DIR = .\bin
DLL_DIR = .\dll
SRC_LIB_DIR = .\src\library
SRC_BIN_DIR = .\src\bin

# ---------------------------------------------------------------------------
# Use the following lines to set the directories where Lua is installed
# ---------------------------------------------------------------------------
LUA_INC = $(LUA4INC)
LUA_LIB = $(LUA4LIB)
LUA_LIBD = $(LUA4LIBD)

# ---------------------------------------------------------------------------
# Version Information
# ---------------------------------------------------------------------------
LUACOM_VERSION = 1.0-Lua4


# ---------------------------------------------------------------------------
# Compiler options
# ---------------------------------------------------------------------------
CC = CL

INCS = -I$(LUA_INC) -I$(INC_DIR) -I$(SRC_LIB_DIR)

# Comment the following lines if you don't want debug information
CC_USE_DEBUG = /Z7 /Od /Yd
LINK_USE_DEBUG = /DEBUG /PDB:NONE

CFLAGS = /GX /GR /MLd $(CC_USE_DEBUG) $(INCS) -DWIN32

.SUFFIXES:
.SUFFIXES: .cpp .obj

# ---------------------------------------------------------------------------
# Linker options
# ---------------------------------------------------------------------------
DEFAULT_LIBS = kernel32.lib user32.lib shell32.lib advapi32.lib ole32.lib oleaut32.lib

LFLAGS = /nologo /subsystem:console /incremental:no /machine:I386 \
				$(DEFAULT_LIBS) $(LINK_USE_DEBUG)

LUA_LIBS = $(LUA_LIB)/lua4.lib $(LUA_LIB)/lualib4.lib 
LUA_LIBSD = $(LUA_LIBD)/lua4.lib $(LUA_LIBD)/lualib4.lib 

# ---------------------------------------------------------------------------
# Target options
# ---------------------------------------------------------------------------
LC_LIB = $(LIB_DIR)\luacom.lib
LC_DLL = $(DLL_DIR)\luacom-$(LUACOM_VERSION).dll
LC_IMPLIB = $(DLL_DIR)\luacom.lib

LC_CONSOLE_LIB = $(BIN_DIR)\luacom-lib-test.exe
LC_CONSOLE_DLL = $(BIN_DIR)\luacom-dll-test.exe

all: lc_lib lc_dll lc_bin_lib lc_bin_dll
lc_lib: $(LIB_DIR) $(OBJ_DIR) $(LC_LIB)
lc_dll: $(OBJ_DIR) $(BIN_DIR) $(DLL_DIR) $(LC_DLL)
lc_bin_lib: $(OBJ_DIR) $(BIN_DIR) $(LC_CONSOLE_LIB)
lc_bin_dll: $(OBJ_DIR) $(BIN_DIR) $(LC_CONSOLE_DLL)

$(LIB_DIR)::
	if not exist $(LIB_DIR) \
	   mkdir $(LIB_DIR)

$(OBJ_DIR)::
	if not exist $(OBJ_DIR) \
	   mkdir $(OBJ_DIR)

$(BIN_DIR)::
	if not exist $(BIN_DIR) \
	   mkdir $(BIN_DIR)

$(DLL_DIR)::
	if not exist $(DLL_DIR) \
	   mkdir $(DLL_DIR)


clean-obj:
	del $(OBJ_DIR)\*.obj 
	rmdir $(OBJ_DIR)

clean:
	del $(OBJ_DIR)\*.obj 
	rmdir $(OBJ_DIR)
	del $(LIB_DIR)\*.lib
	rmdir $(LIB_DIR)
	del $(BIN_DIR)\*.exe 
	rmdir $(BIN_DIR)
	del $(DLL_DIR)\*.dll
	del $(DLL_DIR)\*.lib
	del $(DLL_DIR)\*.exp	
	rmdir $(DLL_DIR)
	

DEF = $(SRC_LIB_DIR)/luacom.def

LIB_OBJS = $(OBJ_DIR)/LuaAux.obj \
           $(OBJ_DIR)/luabeans.obj \
           $(OBJ_DIR)/luacom.obj \
           $(OBJ_DIR)/tLuaCOM.obj \
           $(OBJ_DIR)/tLuaCOMException.obj \
           $(OBJ_DIR)/tLuaCOMTypeHandler.obj \
           $(OBJ_DIR)/tLuaDispatch.obj \
           $(OBJ_DIR)/tLuaObjList.obj \
           $(OBJ_DIR)/tLuaVector.obj \
           $(OBJ_DIR)/tStringBuffer.obj \
           $(OBJ_DIR)/tUtil.obj \
           $(OBJ_DIR)/tCOMUtil.obj \
           $(OBJ_DIR)/tLuaCOMClassFactory.obj \
           $(OBJ_DIR)/tLuaCOMConnPoints.obj

BIN_OBJS = $(OBJ_DIR)/luacom_console.obj

$(LC_LIB): $(LIB_OBJS)
	lib /NOLOGO /OUT:$@ $(LIB_OBJS)


{$(SRC_LIB_DIR)}.cpp{$(OBJ_DIR)}.obj:
	$(CC) /c $(CFLAGS) /Fo$@ $<

{$(SRC_BIN_DIR)}.cpp{$(OBJ_DIR)}.obj:
	$(CC) /c $(CFLAGS) /Fo$@ $<


$(LC_CONSOLE_LIB): $(BIN_OBJS) $(LC_LIB)
	link /out:$@ $(BIN_OBJS) $(LC_LIB) $(LFLAGS) $(LUA_LIBS)
	
$(LC_CONSOLE_DLL): $(BIN_OBJS) $(LC_DLL)
	link /out:$@ $(BIN_OBJS) $(LC_IMPLIB) $(LFLAGS) $(LUA_LIBSD)

$(LC_DLL): $(LIB_OBJS) $(DEF)
	link /DLL /IMPLIB:$(LC_IMPLIB) /out:$@ /DEF:$(DEF) $(LIB_OBJS) $(LFLAGS) $(LUA_LIBSD)

include ./mak/dependences.mak

