def build(parms, srcfile, unit_test=False):
    if parms['DEBUG']:
        dbg_rel_flags = '/Zi'
    else:
        dbg_rel_flags = '/O2'
    options = {'ovpn3': parms['OVPN3'], 'tap': os.path.join(parms['TAP'], '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)
    arch = os.environ.get('ARCH', parms['ARCH'])
    if (arch == 'x86_xp'):
        options['extra_defs'] += ' /D_WIN32_WINNT=0x0501'
    else:
        options['extra_defs'] += ' /D_WIN32_WINNT=0x0600'
        options['extra_lib'] += ' fwpuclnt.lib'
    if ('jsoncpp' in parms['LIB_VERSIONS']):
        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'))
    if parms.get('CONNECT'):
        options['extra_inc'] += (' /I ' + os.path.join(parms['OVPN3'], 'common'))
    vc_cmd(parms, ('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' % options), arch=os.environ.get('ARCH'))
def build(parms, srcfile, unit_test=False):
    if parms['DEBUG']:
        dbg_rel_flags = '/Zi'
    else:
        dbg_rel_flags = '/O2'
    options = {'ovpn3': parms['OVPN3'], 'tap': os.path.join(parms['TAP'], '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)
    arch = os.environ.get('ARCH', parms['ARCH'])
    if (arch == 'x86_xp'):
        options['extra_defs'] += ' /D_WIN32_WINNT=0x0501'
    else:
        options['extra_defs'] += ' /D_WIN32_WINNT=0x0600'
        options['extra_lib'] += ' fwpuclnt.lib'
    if ('jsoncpp' in parms['LIB_VERSIONS']):
        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'))
    if parms.get('CONNECT'):
        options['extra_inc'] += (' /I ' + os.path.join(parms['OVPN3'], 'common'))
    vc_cmd(parms, ('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' % options), arch=os.environ.get('ARCH'))