Files
OpenVPNAdapter/win/build.py
Sergey Abramchuk a01ecd6c88 Squashed 'Sources/OpenVPNAdapter/Libraries/Vendors/openvpn/' changes from 554d8b888..cc90cde57
cc90cde57 win: use 'MSVC 2017 Professional' as default compiler
4b072bce1 [OVPN3-311] function.hpp: fix Windows build
48b9b78de [OVPN3-310] logging: fix 'OPENVPN_LOG_NTNL': identifier not found
5a4a87552 cosmetics: helper function to check registry errors
fc52fd8a5 [OC-78] proxy: support PROXY_AUTO_CONFIG_URL on Windows
f5178cff9 [OC-77] proxy: refactor proxy settings code
18e50ec3f ReplyParser: added undefined status
8178ae06f unix file utils: added update_file_mod_time_nanoseconds()
8f20f7693 build: use LZ4_SYS=1 default when target is Linux
4bd996e61 timestr: added date_time_utc() and nanosec_time_to_string()
0eaa2586f string: added remove_spaces() method
d47ae03cc OptionList: added get_c_str() method
1eb9cd657 unix file utils: added mtime_ns parameter to write_binary_unix() and write_binary_atomic()
bf00c6e3e Time::delta_str(): use "INF" to denote infinite time
0e598a87b kovpn.hpp: asio must be included before sys/ and linux/ headers to avoid redefinition conflicts
1d2ce460d BufferType: added read_alloc_buf() method
148ae6085 BufferType: added reset_offset() method
6218ed618 Factor out IP::random_addr_v4() and IP::random_addr_v6() from IP::random_addr().
5468670b9 pool: minor changes
36a885a82 route: allow for specialized IPv4/v6 RouteType
5e29e6628 BufferType: added typedef T value_type
d92021c99 strerror.hpp: added #include <errno.h> for benefit of users
363cbece3 Function: misc cleanup
d88435ecd IP::Route: added defined() method
3371cb745 kovpn.hpp: fix centos build with DCO enabled
dc9e48d98 Fix bug in macos tunnel interface setup. Second ip address should be gateway address
bcdb27993 Merged in schwabe/fix_clang_warnings (pull request #25)
ede5e90ff Merged in schabe/fix_swig_ipadr (pull request #27)
c0d580d24 Merged in schwabe/fix_openvpn_extern (pull request #26)
0965882e5 Merged in schwabe/stats_morecpus (pull request #23)
5f1f8470b Revert bugfix for not compiling IA32 ASM of 2.7.5
bde2c41be dep: switch from mbeTLS 2.7.0 to 2.7.5
9d06b5c97 [OC-77] proxy: support PROXY_AUTO_CONFIG_URL on macOS
3f2ad8e8c Hide const std::string IP methods from SWIG
ba264862a Send also kovpn statistics of CPU Cores >= 16 via status message
2991d38b3 Fix warnings reported by LLVM/Clang
02d2a7975 Fix multiple inclusion of OpenVPN3 header with OPENPVN_EXTERN

git-subtree-dir: Sources/OpenVPNAdapter/Libraries/Vendors/openvpn
git-subtree-split: cc90cde5769dcf9e13fdd9e85d6d0857963dabce
2018-09-27 20:56:53 +03:00

91 lines
3.4 KiB
Python

#!/c/python27/python
import os
from utils import *
def cli_cpp(parms):
return os.path.join(parms['OVPN3'], "core", "test", "ovpncli", "cli.cpp")
def src_fn(parms, srcfile):
# Get source file name
if srcfile:
if '.' not in os.path.basename(srcfile):
srcfile += ".cpp"
else:
srcfile = cli_cpp(parms)
return srcfile
def is_unit_test(argv):
unit_test = False
if len(argv) >= 2:
unit_test = argv[1] == "unittest"
return unit_test
def src_fn_argv(parms, argv):
srcfile = None
if len(argv) >= 1:
srcfile = argv[0]
return src_fn(parms, srcfile)
def build(parms, srcfile, unit_test=False):
# Debug?
if parms['DEBUG']:
dbg_rel_flags = "/Zi"
else:
dbg_rel_flags = "/O2"
# Dictionary we will use to substitute parameters
# onto VC command line.
options = {
"ovpn3" : parms['OVPN3'],
"tap" : os.path.join(build_dir(parms), "tap-windows", "src"),
"tap_component_id" : parms['TAP_WIN_COMPONENT_ID'],
"asio" : os.path.join(build_dir(parms), "asio"),
"mbedtls" : os.path.join(build_dir(parms), "mbedtls"),
"lz4" : os.path.join(build_dir(parms), "lz4", "lib"),
"srcfile" : srcfile,
"extra_defs" : parms['CPP_EXTRA'],
"extra_inc" : "",
"extra_lib_path" : "",
"extra_lib" : "",
}
vc_parms(parms, options)
# Do we need to support XP and Win 2003?
arch = os.environ.get("ARCH", parms['ARCH'])
if arch == "x86_xp":
options['extra_defs'] += " /D_WIN32_WINNT=0x0501" # pre-Vista
else:
options['extra_defs'] += " /D_WIN32_WINNT=0x0600" # Vista and later
options['extra_lib'] += " fwpuclnt.lib"
# Add jsoncpp (optional)
if parms.get('USE_JSONCPP'):
options["jsoncpp"] = os.path.join(build_dir(parms), "jsoncpp")
options['extra_inc'] += " /DHAVE_JSONCPP /I %(jsoncpp)s/dist" % options
options['extra_lib_path'] += " /LIBPATH:%(jsoncpp)s/dist" % options
options['extra_lib'] += " jsoncpp.lib"
if unit_test:
options['extra_lib'] += " gtest.lib"
options['extra_inc'] += " /I %s" % os.path.join(parms["GTEST_ROOT"], "googletest", "include")
options['extra_lib_path'] += " /LIBPATH:%s" % os.path.join(parms["GTEST_ROOT"], "googlemock", "gtest", "Debug")
# Build OpenVPN Connect
if parms.get("CONNECT"):
options['extra_inc'] += " /I " + os.path.join(parms['OVPN3'], "common")
# build it
vc_cmd(parms, r"cl %(extra_defs)s /DNOMINMAX /D_CRT_SECURE_NO_WARNINGS /DUSE_ASIO /DASIO_STANDALONE /DASIO_NO_DEPRECATED /I %(asio)s\asio\include /DUSE_MBEDTLS /I %(mbedtls)s\include /DHAVE_LZ4 /I %(lz4)s%(extra_inc)s -DTAP_WIN_COMPONENT_ID=%(tap_component_id)s /I %(tap)s /I %(ovpn3)s\core /EHsc %(link_static_dynamic_flags)s /W0 %(dbg_rel_flags)s /nologo %(srcfile)s /link /LIBPATH:%(mbedtls)s\library /LIBPATH:%(lz4)s%(extra_lib_path)s mbedtls.lib lz4.lib%(extra_lib)s ws2_32.lib crypt32.lib iphlpapi.lib winmm.lib user32.lib gdi32.lib advapi32.lib wininet.lib shell32.lib ole32.lib rpcrt4.lib Wtsapi32.lib" % options, arch=os.environ.get("ARCH"))
if __name__ == "__main__":
import sys
params = read_params()
src = src_fn_argv(params, sys.argv[1:])
unit_test = is_unit_test(sys.argv[1:])
build(params, src, unit_test)