aboutsummaryrefslogblamecommitdiff
path: root/domake-win
blob: d956b32e126c8a0a386a5b43537d4524ce4832ef (plain) (tree)
1
2
3
4
5
6
7
8
9

         
                                                      
                                                     

                                                      
                                                     
 
                                                    
 


                             




                                     



                                                       
                                                            

                                                                


                                       


                                                    
 


                                                                    

                                                             
 






                                                                  
 

                                                                     
 



                                                                       







                                                                           
 
                                                                                    


























                                                                            

                                                                
                       



                                            



                                                                 



                                                                          
                                  

                                                     
                         




                             
                     










                                                              
                    
 


                                                  




                                                                   
                            
#!/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.
#
# See top-level build configuration and settings in:
#
#   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
#
# ../svc-template -- This directory should contain service.[ch]
#                    from the MS Platform SDK.

# 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:
#
#     https://secure.openvpn.net/devel/ (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.7m   -> from prebuilt .tbz file
#   pkcs11-helper    -> from prebuilt .tbz file
#   openvpn-2.1_rc7a.tar.gz  -> downloaded from openvpn.net
#   openvpn-2.1_rc7a -> directory expanded from above file
#
#   Now cd to your expanded source tree (openvpn-2.1_rc7a 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

# Delete the GENOUT directory if CLEAN="yes"
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 component (openvpn.exe)
install-win32/makeopenvpn

# Make the OpenVPN service
install-win32/makeservice

# 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