NOTE: this article is outdated. The "generic" and "windows-nsis" build systems have not been in use in years. They can still be found from depths of openvpn-build Git repository, but are not that useful. The only case where you might want to look at them is when you want to cross-compile OpenVPN or build NSIS packages of it using Linux or equivalent.
Project structure
Look here for details.
Building natively on *NIX
If building from Git sources, first do a
$ autoreconf -vi
If building from a release tarball, you can skip the above step. To configure, build and install OpenVPN, use these commands:
$ ./configure <configure-options> $ make $ make install
In most cases, you'd use something like this:
$ ./configure
If you're using password authentication, you may be interested in support for password stored in (properly protected!) files:
$ ./configure --enable-password-save
Or, if you want to use smart cards and such, you should use
$ ./configure --enable-pkcs11
Cross-compiling on *NIX ("generic" subdir)
Removed, only MSVC builds are currently supported.
Creating a NSIS installer ("windows-nsis" subdir)
Removed, only MSI installer is currently supported.
Code-signing
SignTool is used to sign OpenVPN installer, libraries and executables.. Official OpenVPN releases will be signed with OpenVPN Technologies, Inc. code signing keys. However, it's fairly easy to build a custom version of OpenVPN and sign it with your own code-signing keys.
Making the release builds of OpenVPN
See [wiki:Openvpn2ReleaseProcess].
External links
Official OpenVPN Git repositories
