# This Makefile builds the user-mode component # of OpenVPN for WIN32 in the MinGW environment. # # Build Dependencies: # mingw (GNU C compiler for windows) # msys (GNU utilities and shell for windows) # OpenSSL (SSL/TLS/crypto library) # LZO (real-time compression library) # Dmalloc (debugging only) # # Targets: # static -- link statically with OpenSSL # dynamic -- link dynamically with OpenSSL # dmalloc -- enable memory debugging using the dmalloc library # # Note that LZO is always linked statically. # # To build openssl-0.9.7d, remember to edit ms\mw.bat # adding '--win32' flag to make command: # # make --win32 -f ms/mingw32.mak # # Now cd to top level openssl directory in a Windows # command-prompt window, and type: # # ms\mw # # See additional .bat scripts in install-win32 for OpenSSL # build setup. # # If you are building with dmalloc debugging support # see windbg.h for additional dmalloc notes. ######################################################### # Change these to point to your OpenSSL, LZO, and # (optionally) dmalloc top-level directories. OPENSSL = /c/src/openssl-0.9.7i LZO = /c/src/lzo-2.02 DMALLOC = /c/src/dmalloc-5.4.2 ######################################################### CC = gcc -g -O2 -Wall -Wno-unused-function -Wno-unused-variable -mno-cygwin CC_DMALLOC = gcc -g -O2 -Wall -Wno-unused-function -Wno-unused-variable -mno-cygwin -fno-inline -DDMALLOC INCLUDE_DIRS = -I${OPENSSL}/include -I${LZO}/include INCLUDE_DIRS_DMALLOC = ${INCLUDE_DIRS} -I${DMALLOC} LIBS = -llzo2 -lcrypt32 -lWinInet -lws2_32 -lgdi32 -liphlpapi -lwinmm LIBS_DMALLOC = ${LIBS} -ldmalloc LIB_DIRS = -L${OPENSSL}/out -L${LZO} LIB_DIRS_DMALLOC = ${LIB_DIRS} -L${DMALLOC} EXE = openvpn.exe 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 \ ieproxy.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 \ win32.h OBJS = base64.o \ buffer.o \ crypto.o \ cryptoapi.o \ error.o \ event.o \ fdmisc.o \ forward.o \ fragment.o \ gremlin.o \ helper.o \ ieproxy.o \ init.o \ interval.o \ list.o \ lzo.o \ manage.o \ mbuf.o \ misc.o \ mroute.o \ mss.o \ mtcp.o \ mtu.o \ mudp.o \ multi.o \ ntlm.o \ occ.o \ pkcs11.o pkcs11-helper.o \ openvpn.o \ options.o \ otime.o \ packet_id.o \ perf.o \ ping.o \ plugin.o \ pool.o \ proto.o \ proxy.o \ push.o \ reliable.o \ route.o \ schedule.o \ session_id.o \ shaper.o \ sig.o \ socket.o \ socks.o \ ssl.o \ status.o \ thread.o \ tun.o \ win32.o dynamic : MY_CC = ${CC} dynamic : MY_INCLUDE_DIRS = ${INCLUDE_DIRS} dynamic : ${OBJS} ${MY_CC} -o ${EXE} ${OBJS} ${LIB_DIRS} -lssl32 -leay32 ${LIBS} static : MY_CC = ${CC} static : MY_INCLUDE_DIRS = ${INCLUDE_DIRS} static : ${OBJS} ${CC} -o ${EXE} ${OBJS} ${LIB_DIRS} -lssl -lcrypto ${LIBS} dmalloc : MY_CC = ${CC_DMALLOC} dmalloc : MY_INCLUDE_DIRS = ${INCLUDE_DIRS_DMALLOC} dmalloc : ${OBJS} ${MY_CC} -o ${EXE} ${OBJS} ${LIB_DIRS_DMALLOC} -lssl32 -leay32 ${LIBS_DMALLOC} clean : rm -f ${OBJS} ${EXE} %.o : %.c ${HEADERS} ${MY_CC} ${MY_INCLUDE_DIRS} -c $< -o $@