makefile.w32-vc
6fbf66fa
 # This makefile builds the user-mode component
 # of OpenVPN for WIN32 in the MSVC++ environment.
 #
 # Build Dependencies:
 #	OpenSSL		(SSL/TLS/crypto library)
 #	LZO		(real-time compression library)
 #
 # Targets:
 #	static -- link statically with OpenSSL
 #	dynamic -- link dynamically with OpenSSL
 #
 # Note that LZO is always linked statically.
 
 # Change these to point to your OpenSSL and LZO top-level
 # directories.
 
 OPENSSL = \src\openssl-0.9.7d
 OPENSSL_STATIC = libeay32s.lib ssleay32s.lib
 #OPENSSL_STATIC = libeay32sd.lib ssleay32sd.lib
 OPENSSL_DYNAMIC = libeay32.lib ssleay32.lib
 #OPENSSL_DYNAMIC = libeay32d.lib ssleay32d.lib
 
 LZO = \src\lzo-1.08.vc
 
718526e0
 PKCS11_HELPER = \src\pkcs11-helper-1.02
6fbf66fa
 
718526e0
 INCLUDE_DIRS = -I$(OPENSSL)/include -I$(LZO)/include -I$(PKCS11_HELPER)/include
6fbf66fa
 
718526e0
 LIBS = lzo.lib libpkcs11-helper-1.lib ws2_32.lib crypt32.lib iphlpapi.lib winmm.lib user32.lib gdi32.lib advapi32.lib wininet.lib
 
 LIB_DIRS = -LIBPATH:$(OPENSSL)\out -LIBPATH:$(LZO) -LIBPATH:$(PKCS11_HELPER)\lib
6fbf66fa
 
 EXE = openvpn.exe
 
 CPP=cl.exe
1d89886e
 CPP_ARG_COMMON=/nologo /W3 /G5 /O2 -DWIN32 -DWIN32_LEAN_AND_MEAN -D_CONSOLE -D_MBCS -D_CRT_SECURE_NO_DEPRECATE $(INCLUDE_DIRS) /FD /c
6fbf66fa
 # release:
1d89886e
 CPP_PROJ=$(CPP_ARG_COMMON) /MD -DNDEBUG
6fbf66fa
 # debug:
1d89886e
 #CPP_PROJ=$(CPP_ARG_COMMON) /MDd /Zi /Od -D_DEBUG
6fbf66fa
 
 LINK32=link.exe
 # release:
 LINK32_FLAGS=/nologo /subsystem:console /incremental:no /out:"$(EXE)"
 # debug:
 #LINK32_FLAGS=/nologo /subsystem:console /incremental:no /debug /out:"$(EXE)"
 
 # Make sure the HEADERS and OBJS definitions below match the same
 # definitions in makefile.w32.
 
 HEADERS = \
 	base64.h \
 	basic.h \
 	buffer.h \
 	circ_list.h common.h \
 	tap-win32/common.h \
         config-win32.h \
 	crypto.h \
 	cryptoapi.h \
 	errlevel.h \
 	error.h \
 	event.h \
         fdmisc.h \
 	forward-inline.h \
 	forward.h \
 	fragment.h \
         gremlin.h \
 	helper.h \
 	init.h \
 	integer.h \
 	interval.h \
 	list.h \
 	lzo.h \
 	manage.h \
 	mbuf.h \
 	memdbg.h \
 	misc.h \
 	mroute.h \
 	mss.h \
 	mtcp.h \
 	mtu.h \
 	mudp.h \
 	multi.h \
 	ntlm.h \
 	occ-inline.h \
 	occ.h \
718526e0
 	pkcs11.h \
6fbf66fa
         openvpn.h \
 	openvpn-plugin.h \
 	options.h \
 	otime.h \
 	packet_id.h \
 	perf.h \
 	ping-inline.h \
 	ping.h \
 	plugin.h \
 	pool.h \
         proto.h \
 	proxy.h \
 	push.h \
 	reliable.h \
 	route.h \
 	schedule.h \
 	session_id.h \
         shaper.h \
 	sig.h \
 	socket.h \
 	socks.h \
 	ssl.h \
         status.h \
 	syshead.h \
         thread.h \
 	tun.h \
14a4962a
 	lladdr.h \
6fbf66fa
 	win32.h
 
 OBJS =  base64.obj \
 	buffer.obj \
 	crypto.obj \
 	cryptoapi.obj \
 	error.obj \
 	event.obj \
 	fdmisc.obj \
 	forward.obj \
         fragment.obj \
 	gremlin.obj \
 	helper.obj \
 	init.obj \
 	interval.obj \
         list.obj \
 	lzo.obj \
 	manage.obj \
 	mbuf.obj \
 	misc.obj \
 	mroute.obj \
 	mss.obj \
 	mtcp.obj \
 	mtu.obj \
 	mudp.obj \
 	multi.obj \
 	ntlm.obj \
 	occ.obj \
718526e0
 	pkcs11.obj \
6fbf66fa
         openvpn.obj \
 	options.obj \
 	otime.obj \
 	packet_id.obj \
 	perf.obj \
 	ping.obj \
 	plugin.obj \
         pool.obj \
 	proto.obj \
 	proxy.obj \
 	push.obj \
 	reliable.obj \
         route.obj \
 	schedule.obj \
 	session_id.obj \
 	shaper.obj \
 	sig.obj \
 	socket.obj \
         socks.obj \
 	ssl.obj \
 	status.obj \
 	thread.obj \
 	tun.obj \
14a4962a
 	lladdr.obj \
6fbf66fa
 	win32.obj
 
 dynamic : $(OBJS)
 	$(LINK32) @<<
 	$(LINK32_FLAGS) $(LIB_DIRS) $(LIBS) $(OPENSSL_DYNAMIC) $(OBJS)
 <<
 
 static : $(OBJS)
 	$(LINK32) @<<
 	$(LINK32_FLAGS) $(LIB_DIRS) $(LIBS) $(OPENSSL_STATIC) $(OBJS)
 <<
 
 clean :
 	del /Q $(OBJS) $(EXE) *.idb *.pdb
 
 .c.obj::
    $(CPP) @<<
    $(CPP_PROJ) $<
 <<