As requested, I'm sending these patch files to the mailing list for
review...

INSTALL.patch adds some additional information to the current INSTALL file
for OpenVPN-2.3.x

INSTALL-nonstandard.txt shows how to integrate OpenSSL/LZO unpacked from
tarballs and built, with a successful build with OpenVPN-2.3.x

Bill Parker (wp02855 at gmail dot com)
Installing OpenVPN-2.3.8 with non-standard library/header file locations:

Occasionally, a user or developer may want to build OpenVPN using
source tarballs like LZO (real-time compression library), OpenSSL
(needed for encryption) (0.9.8 or higher, 1.0.2d is the latest
version as of this writing), PolarSSL (alternative encryption
library, version 1.1 or higher), LibPAM, or PKCS, etc.

The source code for LZO real-time compression library can be found at:

http://www.oberhumer.com/opensource/lzo/

The source code for the OpenSSL encryption library can be found at:

http://www.openssl.org

The source code for the PolarSSL encryption library can be found at:

https://polarssl.org/

Below are some variables which can be added to the './configure' line
to let GCC know where to find various header files and/or library files.

Variables with _CFLAGS typically take the following form:

nnn_CFLAGS="-I<path to include files>"

Note the '-I' before the <path to include files>

Variables with _LIBS typically take the following form:

nnn_LIBS="-L<path to library (static or shared) files>

Note the '-L' before the <path to library (static or shared) files>

also make sure to tell OpenVPN where to 'look' for the libraries
with -lssl and -lcrypto flags on your _LIBS options.

As an example, here is what the options would look for using OpenSSL
built from source tarball (which installs in /usr/local/ssl) and using
LZO built from source tarball:

./configure LZO_CFLAGS="-I/usr/local/include/lzo" \
                    LZO_LIS="--L/usr/local/lib" \
                        OPENSSL_SSL_CFLAGS="-I/usr/local/ssl/include/openssl" \
                        OPENSSL_SSL_LIBS="-L/usr/local/ssl/lib -lssl" \
                        OPENSSL_CRYPTO_LIBS="-L/usr/local/ssl/lib -lcrypto" \
                        OPENSSL_CRYPTO_CFLAGS="-I/usr/local/ssl/include/openssl"

Note: the above could also be entered on a single line with a space
between each option.

The CFLAGS option 'LZO_CFLAGS' specifies where the LZO header/include
files can be found by GCC, and the LIBS option 'LZO_LIBS' specifies
where the LZO library files can be found by GCC.

The above example is from a default install of LZO-2.0.9 using the
following build for LZO:

./configure; make; make check; make test; make install

As you can see, the CFLAGS option 'OPENSSL_SSL_CFLAGS/OPENSSL_CRYPTO_CFLAGS'
gives the full path where GCC can find the source header/include files for
OpenSSL and the LIBS option 'OPENSSL_SSL_LIBS/OPENSSL_CRYPTO_LIBS' gives
the full path where GCC can find the library files for OpenSSL.

The above example is from a default install of OpenSSL-1.0.2d using the
following build for OpenSSL:

./config; make; make test; make install

This also assumes you unpacked the source tarball(s) in
/usr/local/src, and you have the following layout below
(your operating system may have a different layout):

drwxr-xr-x.  2 root root 4096 Aug  3 19:57 bin
drwxr-xr-x.  2 root root 4096 Aug 16  2014 etc
drwxr-xr-x.  2 root root 4096 Aug 16  2014 games
drwxr-xr-x.  5 root root 4096 Aug  4 15:01 include
drwxr-xr-x.  7 root root 4096 Aug  4 15:01 lib
drwxr-xr-x.  4 root root 4096 Aug  3 19:57 lib64
drwxr-xr-x.  2 root root 4096 Aug 16  2014 libexec
drwxr-xr-x.  6 root root 4096 Aug  3 19:57 openssl
drwxr-xr-x.  2 root root 4096 Aug 16  2014 sbin
drwxr-xr-x.  6 root root 4096 Jul 31 19:25 share
drwxr-xr-x. 42 root root 4096 Aug  4 14:56 src
drwxr-xr-x.  9 root root 4096 Aug  4 14:03 ssl

Here is a sample of various flags below can be added
to the ./configure line as additional options:

LZO_LIBS                                <full path to LZO static/shared library 
files>
LZO_CFLAGS                              <full path to LZO include/header files>
POLARSSL_LIBS                   <full path to PolarSSL static/shared library 
files>
POLARSSL_CFLAGS                 <full path to PolarSSL include/header files>
OPENSSL_SSL_LIBS                <full path to OpenSSL SSL static/shared library 
files>
OPENSSL_SSL_CFLAGS              <full path to OpenSSL SSL include/header files>
OPENSSL_CRYPTO_LIBS             <full path to OpenSSL Crypto static/shared 
library files>
OPENSSL_CRYPTO_CFLAGS   <full path to OpenSSL Crypto include/header files>
PKCS11_HELPER_LIBS              <full path to PKCS11 Helper static/shared 
library files>
PKCS11_HELPER_CFLAGS    <full path to PKCS11 Helper include/header files>
LIBPAM_LIBS                             <full path to PAM static/shared library 
files>
LIBPAM_CFLAGS                   <full path to PAM library include/header files>

Here is an example if PAM/LibPam is build from source and the header files
are installed in /usr/local/pam/include and the library files are installed
in /usr/local/pam/lib:

./configure LIBPAM_CFLAGS="-I/usr/local/pam/include" 
LIBPAM_LIBS="-L/usr/local/pam/lib"

If the PAM library files were stored in '/usr/local/lib', and the header files 
were
stored in '/usr/local/include', the 'configure' line would look like this:

./configure LIBPAM_CFLAGS="-I/usr/local/include" LIBPAM_LIBS="-L/usr/local/lib"

Attachment: INSTALL.patch
Description: Binary data

Reply via email to