# This makefile builds the user-mode component of OpenVPN for Windows in the 
# Visual Studio 2008 environment. Note that this file is basis for the real 
# makefile (..\msvc.mak) but unusable as is. The real makefile is automatically 
# generated during the build process by the Python build scripts.
#
# A few details are in order:
#
# - Everything between @<< and << is inserted into a s.c. "in-line file". This 
#   file drives the linker (link.exe).
# - HEADERS_OBJS is expanded to all all header and source files listed in
#  ..\Makefile.am
# - OPENSSL_DIR and LZO_DIR are dynamically created from settings.in

OPENSSL = @OPENSSL_DIR@
OPENSSL_DYNAMIC = libeay32.lib ssleay32.lib

PKCS11_HELPER = @PKCS11_HELPER_DIR@
!ifdef INCLUDE_PKCS11
PKCS11_HELPER_DYNAMIC = pkcs11-helper.lib
!endif

LZO = @LZO_DIR@
LZO_DYNAMIC = lzo2.lib

INCLUDE_DIRS = -I$(OPENSSL)/include -I$(LZO)/include -I$(PKCS11_HELPER)/include

LIBS = $(OPENSSL_DYNAMIC) $(PKCS11_HELPER_DYNAMIC) $(LZO_DYNAMIC) ws2_32.lib crypt32.lib iphlpapi.lib winmm.lib user32.lib gdi32.lib advapi32.lib wininet.lib

LIB_DIRS = -LIBPATH:$(OPENSSL)\lib -LIBPATH:$(PKCS11_HELPER)\lib -LIBPATH:$(LZO)\lib

EXE = openvpn.exe

CPP=cl.exe
CPP_ARG_COMMON=/nologo /W3 -DWIN32 -DWIN32_LEAN_AND_MEAN -D_CONSOLE -D_MBCS -D_CRT_SECURE_NO_DEPRECATE $(INCLUDE_DIRS) /FD /c

LINK32=link.exe

!ifdef PRODUCT_OPENVPN_DEBUG
# debug:
CPP_PROJ=$(CPP_ARG_COMMON) /MD /Z7
LINK32_FLAGS=/nologo /subsystem:console /incremental:no /opt:ref /opt:icf /debug
!else
# release:
CPP_PROJ=$(CPP_ARG_COMMON) /O2 /MD -DNDEBUG
LINK32_FLAGS=/nologo /subsystem:console /incremental:no
!endif

# HEADERS and OBJS definitions, automatically generated from ../Makefile.am
@HEADERS_OBJS@

openvpn : $(OBJS)
	$(LINK32) @<<
	$(LINK32_FLAGS) "/out:$(EXE)" $(LIB_DIRS) $(LIBS) $(OBJS)
<<

clean :
	del /Q $(OBJS) $(EXE) *.idb *.pdb

.c.obj::
   $(CPP) @<<
   $(CPP_PROJ) $<
<<
