[[TOC(inline, depth=1)]] = Introduction = You can use the [wiki:BuildingUsingGenericBuildsystem generic buildsystem] from [https://github.com/OpenVPN/openvpn-build openvpn-build subproject] to cross-compile OpenVPN using any toolchain to any target environment. The build host must have a *NIX-like environment, e.g. Linux, *BSD or Cygwin (on Windows). = Generic instructions = You need to install a bunch of tools before attempting a build: * [http://mingw-w64.sourceforge.net/ mingw-w64], version 2.0.x. With recent OpenVPN 2.3.x releases you need to use our patched version of mingw-w64 or [wiki:PatchingDebs build mingw-w64] yourself * gcc-*-arm-linux-gnueabi (if building Arm binaries) * [http://git-scm.com/ Git] * [http://www.nongnu.org/man2html/ man2html] (for ''windows-nsis'' builds) * [http://waterlan.home.xs4all.nl/dos2unix.html dos2unix] (for ''windows-nsis'' builds) * [http://nsis.sourceforge.net/Main_Page NSIS]: if you need support for riducuously long PATHs, you need to use our patched NSIS version or [wiki:PatchingDebs build NSIS] yourself. * [http://osslsigncode.sourceforge.net/ osslsigncode] version 1.4 or later (pkcs12 support needed). Earlier versions can be used with minor modifications to the codesign() method in the build scripts. The automated buildsystem setup script installs patched nsis and mingw-w64 by default. = Converting certificates to PKCS12 format = If you have code-signing certificates generated with MS tools (.spc and .pvk files), you can convert them into standard (pkcs12) format using [[attachment:spc+pvk-to-p12.sh:wiki:BuildingUsingGenericBuildsystem|this script]]. If that fails, look at this [wiki:BuildingUsingGenericBuildsystem@51 old version of this page] for manual instructions. You can also create ''self-signed'' certificate for testing like this: {{{ $ openssl req -newkey rsa:1024 -new -x509 -subj "/CN=test1" -out test.crt $ openssl pkcs12 -export -inkey privkey.pem -in test.crt -out test.p12 }}} Once you have the pkcs12 archive, you can give it and it's password as argument to the buildsystem(s). For details, look here: * [wiki:BuildingUsingGenericBuildsystem#CreatingaNSISinstallerwindows-nsissubdir Building Windows NSIS installer] * [wiki:BuildingUsingGenericBuildsystem#BuildingTAP-Windows Building tap-windows] = Automated openvpn-build setup on Ubuntu = Please use [attachment:setup-generic-buildsystem.5.sh this shell script]. It has been tested and should work on 64-bit flavors of Ubuntu 12.04, 12.10 and 14.04. Please [wiki:GettingHelp let us know] if the script does not work for you. Manual setup instruction can be deduced from the script. = Setup on Windows = If you're building using Cygwin on Windows, it's best to configure Git not to translate LF to CR/LF. For this reason it's probably best to use Cygwin's Git. Also take a look at Cygwin's README to see which packages are required.