wiki:BuildingOnWindows

Version 17 (modified by Samuli Seppänen, 13 years ago) (diff)

--

Introduction

The traditional way to build OpenVPN for Windows is to cross-compile it on *NIX. This works, but does not allow signing the TUN/TAP driver, which is required for Windows Vista/7 and later. Due to this a new, relatively simple Python-based build system was written. This new build system allows building OpenVPN on Windows more easily, but requires the use of a commercial version of Visual Studio development environment. However, the new build system is "external" from Visual Studio's viewpoint, so meddling with VS's graphical user interface is not necessary.

Installing prequisites

Visual Studio 2008 Professional

Visual Studio 2008 Professional is required to build OpenVPN on Windows. Note that the free Express edition

Windows Software Development Kit

Windows Software Development Kit (Wikipedia page) may be necessary to build OpenVPN (verify this).

Windows Driver Kit

Windows Driver Kit (Wikipedia page) is required to build the TUN/TAP driver.

Python

The new Windows build system is written in Python.

WinRAR

WinRAR or some other tool capable of extracting .tar.gz and .tar.bz2 archives is necessary to extract the LZO and OpenSSL release archives.

ActivePerl

ActivePerl is required to build OpenSSL, which in turn is required to build OpenVPN. Look here for details.

LZO library

Sources for the LZO library are required to build OpenVPN.

OpenSSL

Sources for the OpenSSL library are required to build OpenVPN.

Installing optional Git support

Git support is needed if you want to conveniently build the latest development code. You don't need Git support if you fetch the sources from another computer and copy them over, or use source code from release tar.gz or zip files.

Git for Windows

Git for Windows or msysgit is required to work with Git repositories on Windows.

GitExtensions

GitExtensions makes working with Git easier on Windows. It includes Visual Studio 2008 plugin, Windows explorer support and a GUI to configure and use Git repositories.

KDiff3

KDiff3 is used in handling merge conflicts. It's required by GitExtensions.

Git Source Control Provider

Git Source Control Provider is a Visual Studio 2008/2010 plugin. It can also be used to launch Git for Windows and GitExtensions? from within Visual Studio.

Building OpenSSL

It's necessary to build OpenSSL to build OpenVPN as described here.

Preparing the source tree for building

If you want to build the latest development code fetch it using Git for Windows (Git shell) or GitExtensions (GUI). Check these instructions to see which Git URI to use. Once you have fetched OpenVPN sources you need to copy openssl and lzo these header file directories the root build directory:

  • <lzo-directory>/include/lzo
  • <openssl-directory>/include/openssl

After this the OpenVPN build directory should look like this (files omitted):

|-- contrib
|-- debug
|-- easy-rsa
|-- images
|-- install-win32
|-- lzo
|-- management
|-- msvc
|-- openssl
|-- plugin
|-- sample-config-files
|-- sample-keys
|-- sample-scripts
|-- service-win32
|-- suse
|-- tap-win32
|-- win

Building OpenVPN

Fire up a console/MS DOS prompt and go to <openvpn-root-build-directory>/win. Then just start the build:

C:\Python27\python.exe build.py

To clean up before or after the build, issue

C:\Python27\python.exe build.py clean

Integrating Git with Visual Studio (optional)

If you wish to use Windows for OpenVPN development integrating Git with Visual Studio (2008) may make sense.

External links