!if "$(TARGET)" == ""
TARGET=Release
!endif

!if "$(TARGET)" == "Debug"
SUFFIX=_debug
CFLAGS=/Od /MDd
DLLFLAGS=/LDd /DEBUG
!else
CFLAGS=/Oi /O2 /Oy /GF /Y- /MD /DNDEBUG
DLLFLAGS=/LD
!endif

CFLAGS=/nologo /GL /Zi /EHsc $(CFLAGS) /Iinclude

!if "$(OPENSSL_PATH)" != ""
CFLAGS=$(CFLAGS) /DLIBSSH2_OPENSSL /I$(OPENSSL_PATH)\include
LIBS=$(LIBS) $(OPENSSL_PATH)\lib\crypto.lib $(OPENSSL_PATH)\lib\ssl.lib
!else
CFLAGS=$(CFLAGS) /DLIBSSH2_WINCNG
LIBS=crypt32.lib bcrypt.lib
!endif

!if "$(ZLIB_PATH)" != ""
CFLAGS=$(CFLAGS) /DLIBSSH2_HAVE_ZLIB /I$(ZLIB_PATH)\include
LIBS=$(LIBS) $(ZLIB_PATH)\lib\zlib.lib
!endif

LIBS=$(LIBS) ws2_32.lib user32.lib advapi32.lib gdi32.lib

INTDIR=$(TARGET)

SUBDIR=src

!include "src/Makefile.inc"

OBJECTS=$(CSOURCES:.c=.obj)

!if "$(TARGET)" == "Debug"
OBJECTS=Debug/$(OBJECTS: = Debug/)
OBJECTS=$(OBJECTS: Debug/ = )
!else
TARGET=Release
OBJECTS=Release/$(OBJECTS: = Release/)
OBJECTS=$(OBJECTS: Release/ = )
!endif

!if "$(AR)" == ""
AR=lib
ARFLAGS=-nologo /LTCG
!endif

RESOURCE=$(INTDIR)\libssh2.res
DLL=libssh2$(SUFFIX).dll
STATICLIB=$(INTDIR)\libssh2.lib

!if "$(BUILD_STATIC_LIB)" == ""
all: $(INTDIR) $(DLL)
!else
all: $(INTDIR) $(STATICLIB)
!endif

$(INTDIR):
	@if not exist $(INTDIR) mkdir $(INTDIR)

$(DLL): $(OBJECTS) $(RESOURCE)
	$(CC) -o $(DLL) $(CFLAGS) $(DLLFLAGS) $(OBJECTS) $(RESOURCE) $(LIBS)

$(STATICLIB): $(OBJECTS)
	$(AR) $(ARFLAGS) -out:$@ $(OBJECTS)

$(RESOURCE): src\libssh2.rc
	$(RC) /Iinclude /Fo"$@" $?

all-sub: $(INTDIR) all

clean-sub: clean

{$(SUBDIR)}.c{$(INTDIR)}.obj::
	$(CC) -c $(CFLAGS) /Fo"$(INTDIR)\\" $<

clean:
	-rd 2>NUL /q /s $(TARGET)

real-clean vclean: clean
	-del 2>NUL libssh2.dll
	-del 2>NUL libssh2.exp
	-del 2>NUL libssh2.ilk
	-del 2>NUL libssh2.lib
	-del 2>NUL *.pdb