* Updated SDK and NDK to Android 5:
android-sdk_r24.0.2-macosx.zip
android-ndk-r10d-darwin-x86_64.bin
* Updated build-toolchain to build both ARM
and ARM64 toolchains.
* Added ARMv8-a architecture (64-bit) to all
core builds.
* Patched "Page Size" issue in boost_1_57_0.
* Disable minicrypto for now in both Android and Apple builds.
* In deps/polarssl/build-polarssl, don't apply the minicrypto
patch unless "$USE_MINICRYPTO" = "1".
minor edits:
* Don't build OpenSSL.
* Edited ovpncli/README.txt with updated build command.
* Enabled C++11 in compiler flags, and turned off
some spurious warnings.
* Added CXX_COMPILER_FLAGS build flag to allow
C++-only flags to be defined.
Changes to build script as well:
* Honor OTHER_COMPILER_FLAGS and CXX_COMPILER_FLAGS
settings.
* For debug builds, DEBUG_BUILD=1 setting should be placed
in vars-x. Existing build DEBUG=1 setting now only
sets -g.
* For clang builds, don't emit -fvisibility=hidden because
that should be placed in OTHER_COMPILER_FLAGS in vars-x.
(MacLifeCycle).
Monitor connection lifecycle notifications, such as sleep, wakeup,
network-unavailable, and network-available.
Note that not all platforms define a lifecycle object. Some
platforms such as Android and iOS manage lifecycle notifications at
the service level, and they call pause(), resume(), reconnect(),
etc. as needed using the main ovpncli API.
Also, added a reason string to Pause event.
These scripts
scripts/mac/build-minicrypto
scripts/mac/build-polarssl
will now build PolarSSL (on OSX) with libminicrypto linkage.
Currently, only SHA1/256/512 implementations from OpenSSL are
built in libminicrypto. We leave the current PolarSSL AES
implementation as-is since it now implements AES-NI.
Also added portable openssl/build-openssl script.
* Added new cross-platform boost/build-boost script.
* Added new LINK_MODE var (static|shared) that is
used by Boost, PolarSSL, and OpenSSL (Linux) builds.
* More DEP_DIR flexibility:
(a) DEP_DIR can be defined prior to call of build-all scripts.
(b) On Linux, vars-linux script will not override DEP_DIR.
BOOST_ASIO_DISABLE_KQUEUE is left undefined. To enable
fallback to Mac TunTap driver, MAC_TUNTAP_FALLBACK
and BOOST_ASIO_DISABLE_KQUEUE must be defined.
for different ARM platforms:
1. armeabi
2. armeabi-v7a
Android build script will package both versions of libovpncli.so
in the .apk, where the correct version should be automatically
chosen by Android on install.
* build-all can be run from any directory, will still use
~/src/mac to write products.
* to make sure that scripts don't trigger a false error exit
by their caller, add "exit 0" to last line of all scripts
called by build-all.
Dusted off LZ4 implementation and enabled in iOS
and cli.cpp builds.
Tested LZ4 as well with OpenVPN 3 acting as the client,
with a hacked AS and OpenVPN 2.3 (JY) acting as the server
(see lz4hack patches).
Ported iOS client and OpenVPN 3 core to ARM-64.
Now building a "fat binary" with Xcode 5.0.1 that
targets arm7, arm7s, and arm64.
Outstanding issues:
* IPv6 doesn't route through tunnel on iOS7
* Client doesn't install on iOS 5.1.1.
* Updated to Xcode 4.5 and tested client build on iOS6.
* Note that it is no longer necessary to copy the private
SystemConfiguration header files for the VPN API into the
Xcode tree. The OpenVPN Xcode project file will now
reference them directly from the ovpn3 tree.
* Note that in Xcode 4.5, the iPhoneOSProductTypes.xcspec file that
must be edited to allow bundle signing is now a binary plist.
Use the Mac plutil tool to convert it to JSON so it can be edited
then convert back to binary:
$ cp iPhoneOSProductTypes.xcspec iPhoneOSProductTypes.xcspec.backup
$ plutil -convert json -r iPhoneOSProductTypes.xcspec
[ edit iPhoneOSProductTypes.xcspec according to instructions in
ovpn3/doc/Build_VPN_App_and_Plugin.pdf ]
$ plutil -convert binary1 iPhoneOSProductTypes.xcspec
* The ARM assembler provided in Xcode 4.5 is no longer able to
assemble the Minicrypto ASM algorithms. As a workaround, before
updating to Xcode 4.5, preserve the previous clang binary by
copying it to ~/clang3/clang -- the build-minicrypto script will
expect it to exist. This is the version of clang that must be used:
$ ~/clang3/clang --version
Apple clang version 3.0 (tags/Apple/clang-211.10.1) (based on LLVM 3.0svn)
Target: x86_64-apple-darwin11.4.2
Thread model: posix
* Make sure to update your PATH to include the new Xcode 4.5 clang and
rebuild all libraries. I found that updating to Xcode 4.5 left the
old clang in /usr/bin. The Xcode 4.5 clang should show this version
info:
$ clang --version
Apple clang version 4.1 (tags/Apple/clang-421.11.65) (based on LLVM 3.1svn)
Target: x86_64-apple-darwin11.4.2
Thread model: posix
* Added $O3/scripts/mac/build-all script to build all Mac/iOS
dependencies.
used as both client and server implementation.
Added DH support to PolarSSL.
Added CLIENT_NO_RENEG and SERVER_NO_RENEG flags to test code
in proto.cpp to allow scenarios to be tested where either
the server, client, or both initiate renegotiation.
Updated test/ovpncli/cli.cpp with new command line options
and will now run on Mac OS X.
Updated Android and iOS build systems to no longer include
any LZO support, and to include Snappy support instead.