# 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 INCLUDE_DIRS = -I$(OPENSSL)/include -I$(LZO)/include LIBS = lzo.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) EXE = openvpn.exe CPP=cl.exe 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 # release: CPP_PROJ=$(CPP_ARG_COMMON) /MD -DNDEBUG # debug: #CPP_PROJ=$(CPP_ARG_COMMON) /MDd /Zi /Od -D_DEBUG 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 \ pkcs11.h pkcs11-helper.h cryptoki.h \ 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 \ lladdr.h \ 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 \ pkcs11.obj pkcs11-helper.obj \ 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 \ lladdr.obj \ 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) $< <<