diff options
Diffstat (limited to 'domake-win')
-rw-r--r-- | domake-win | 138 |
1 files changed, 138 insertions, 0 deletions
diff --git a/domake-win b/domake-win new file mode 100644 index 0000000..bd730e0 --- /dev/null +++ b/domake-win @@ -0,0 +1,138 @@ +#!/bin/sh + +# This is the master OpenVPN build script for Windows. +# This script will build OpenVPN, the TAP driver, and +# the installer from source, targeting x86 on Windows +# 2000 and higher, and x64 on Windows 2003 and higher. +# For quick start options, see pre-built notes below. +# +# Note that if you are only looking to build the +# openvpn user-space binaries (openvpn.exe +# and openvpnserv.exe) you can use the +# provided autoconf/automake build environment. +# +# If you are building from an expanded .tar.gz file, +# make sure to run "./doclean" before "./domake-win". +# +# See top-level build configuration and settings in: +# +# version.m4 +# install-win32/settings.in +# +# Mandatory prerequisites: +# +# MinGW -- for GNU C compiler +# MSYS -- for bash +# msysDTK -- for perl +# NSIS -- for building installer +# +# The following additional prerequisites may be omitted +# when building in pre-built mode (see note below). +# +# svn -- for checking out source code (or TortoiseSVN) +# Windows Driver Kit (6001_17121_HyperV_WDK.iso) -- for building +# TAP driver + tapinstall +# +# Required libraries (must be prebuilt) +# +# OpenSSL -- define OPENSSL_DIR in settings.in +# LZO -- define LZO_DIR in settings.in +# PKCS11-HELPER -- define PKCS11_HELPER_DIR +# +# Optional OpenVPN GUI binary (prebuilt) +# -- define OPENVPN_GUI_DIR and OPENVPN_GUI in settings.in +# +# Required source code not included in OpenVPN SVN repository +# because of MS licensing restrictions: +# +# ../tapinstall -- This is based on 'devcon' which is found in the +# Windows Driver Kit (formerly known as DDK). +# Copy the 'devcon' source tree to ../tapinstall +# Edit 'sources' and modify TARGETNAME=tapinstall + +# Note that all variables referenced here such as GENOUT, +# GENOUT_PREBUILT, and CLEAN are defined in install-win32/settings.in + +# SPECIAL NOTES ON PRE-BUILT MODE +# Setting up a complete tool chain to build OpenVPN and all +# dependencies on Windows can be an onerous task, so the capability +# is provided to reference a directory of pre-built components during +# the build process. When dependencies are missing to build a given +# component (such as the TAP driver), the build script will auto-detect +# this and use the pre-built version instead. This would allow you, for +# example, to build an OpenVPN installer with custom edits to +# install-win32/settings.in, but then avoid needing to build all other +# components (such as OpenSSL, LZO, Pkcs11-helper, TAP driver, Windows +# service, etc.). The procedure is as follows. First Download and expand +# the pre-built binaries from: +# +# http://openvpn.net/prebuilt/ (choose the most recent -prebuilt .tbz file) +# +# After expanding the .tbz file, cd to the top level directory and +# expand an OpenVPN source distribution taken from either the subversion +# repository or a source .tar.gz file. It's best to use an OpenVPN source +# version that is the same or slightly later than the pre-built binaries +# file. So now you have a directory containing something that looks like +# this: +# +# gen-prebuilt -> from prebuilt .tbz file +# lzo-2.02 -> from prebuilt .tbz file +# openssl-0.9.8i -> from prebuilt .tbz file +# pkcs11-helper -> from prebuilt .tbz file +# openvpn-2.1_rc13.tar.gz -> downloaded from openvpn.net +# openvpn-2.1_rc13 -> directory expanded from above file +# +# Now cd to your expanded source tree (openvpn-2.1_rc13 in the +# example above), make edits to install-win32/settings.in (or even +# patch the OpenVPN source code directly), and run this script: +# +# ./domake-win +# +# If everything runs correctly, you should have a custom installer +# written to ./gen/install + +# First build the autodefs directory, containing C, sh, and NSIS versions +# of global settings, using install-win32/settings.in as source. +# These settings will then drive the rest of the build process. +install-win32/winconfig + +# clean all generated files +install-win32/doclean + +# Load a pre-built GENOUT directory if GENOUT_PREBUILT is defined +# and the GENOUT directory is non-existing +install-win32/getprebuilt + +# Each of the scripts below build, get, and/or possibly sign a different +# OpenVPN component, placing the generated files in GENOUT. Each of these +# steps is fully indepedent, and can be executed in any order or omitted. +# The exception is the last script which gathers together all files from +# GENOUT and builds the installer. + +# Make the OpenVPN user-space components (OpenVPN and service) +install-win32/makeopenvpn + +# Make the OpenVPN TAP driver +install-win32/maketap + +# Make the tapinstall utility, used to install the TAP driver +install-win32/maketapinstall + +# Get the OpenSSL libraries from a pre-build OpenSSL tree +install-win32/getopenssl + +# Get the PKCS-11 helper library from a pre-built OpenSSL tree +install-win32/getpkcs11helper + +# Get the OpenVPN GUI (must be prebuilt) +install-win32/getgui + +# Get the OpenVPN XML-based GUI (must be prebuilt) +install-win32/getxgui + +# Produce the license text, install README, and sample config files +install-win32/maketext + +# This final step builds the OpenVPN installer using generated +# files from GENOUT +install-win32/buildinstaller |