Browse code

msvc: Move common project settings to reusable property sheets

The Visual Studio 2017 project files were refactored by migrating all
repeating common settings into three property sheets: Debug.props,
Release.props and the existing PropertySheet.props.
This simplifies configuration management while providing uniformity
across projects, configurations and platforms.
Acked-by: Lev Stipakov <lstipakov@gmail.com>
Message-Id: <20181008094600.10164-2-simon@rozman.si>
URL: https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg17634.html

Signed-off-by: Gert Doering <gert@greenie.muc.de>

Simon Rozman authored on 2018/10/08 18:46:00
Showing 8 changed files
1 1
new file mode 100644
... ...
@@ -0,0 +1,22 @@
0
+<?xml version="1.0" encoding="utf-8"?>
1
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2
+  <ImportGroup Label="PropertySheets">
3
+    <Import Project="PropertySheet.props" />
4
+  </ImportGroup>
5
+  <PropertyGroup Label="UserMacros" />
6
+  <PropertyGroup>
7
+    <_PropertySheetDisplayName>compat-Debug</_PropertySheetDisplayName>
8
+    <LinkIncremental>true</LinkIncremental>
9
+  </PropertyGroup>
10
+  <ItemDefinitionGroup>
11
+    <ClCompile>
12
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
13
+      <Optimization>Disabled</Optimization>
14
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
15
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
16
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
17
+      <MinimalRebuild>true</MinimalRebuild>
18
+    </ClCompile>
19
+  </ItemDefinitionGroup>
20
+  <ItemGroup />
21
+</Project>
0 22
\ No newline at end of file
... ...
@@ -9,8 +9,23 @@
9 9
     <LZO_HOME>$(OPENVPN_DEPROOT)</LZO_HOME>
10 10
     <PKCS11H_HOME>$(OPENVPN_DEPROOT)</PKCS11H_HOME>
11 11
   </PropertyGroup>
12
-  <PropertyGroup />
13
-  <ItemDefinitionGroup />
12
+  <PropertyGroup>
13
+    <OutDir>$(SolutionDir)$(Platform)-Output\$(Configuration)\</OutDir>
14
+    <_PropertySheetDisplayName>compat</_PropertySheetDisplayName>
15
+  </PropertyGroup>
16
+  <ItemDefinitionGroup>
17
+    <ClCompile>
18
+      <WarningLevel>Level3</WarningLevel>
19
+      <PreprocessorDefinitions>WIN32;$(CPPFLAGS);%(PreprocessorDefinitions)</PreprocessorDefinitions>
20
+      <AdditionalIncludeDirectories>$(SOURCEBASE);$(SOURCEBASE)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
21
+    </ClCompile>
22
+    <Link>
23
+      <GenerateDebugInformation>true</GenerateDebugInformation>
24
+    </Link>
25
+    <ResourceCompile>
26
+      <AdditionalIncludeDirectories>$(SOURCEBASE);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
27
+    </ResourceCompile>
28
+  </ItemDefinitionGroup>
14 29
   <ItemGroup>
15 30
     <BuildMacro Include="SOURCEBASE">
16 31
       <Value>$(SOURCEBASE)</Value>
17 32
new file mode 100644
... ...
@@ -0,0 +1,25 @@
0
+<?xml version="1.0" encoding="utf-8"?>
1
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2
+  <ImportGroup Label="PropertySheets">
3
+    <Import Project="PropertySheet.props" />
4
+  </ImportGroup>
5
+  <PropertyGroup Label="UserMacros" />
6
+  <PropertyGroup>
7
+    <_PropertySheetDisplayName>compat-Release</_PropertySheetDisplayName>
8
+    <LinkIncremental>false</LinkIncremental>
9
+  </PropertyGroup>
10
+  <ItemDefinitionGroup>
11
+    <ClCompile>
12
+      <IntrinsicFunctions>true</IntrinsicFunctions>
13
+      <FunctionLevelLinking>true</FunctionLevelLinking>
14
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
15
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
16
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
17
+    </ClCompile>
18
+    <Link>
19
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
20
+      <OptimizeReferences>true</OptimizeReferences>
21
+    </Link>
22
+  </ItemDefinitionGroup>
23
+  <ItemGroup />
24
+</Project>
0 25
\ No newline at end of file
... ...
@@ -52,83 +52,46 @@
52 52
   </ImportGroup>
53 53
   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
54 54
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
55
-    <Import Project="PropertySheet.props" />
55
+    <Import Project="Release.props" />
56 56
   </ImportGroup>
57 57
   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
58 58
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
59
-    <Import Project="PropertySheet.props" />
59
+    <Import Project="Release.props" />
60 60
   </ImportGroup>
61 61
   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
62 62
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
63
-    <Import Project="PropertySheet.props" />
63
+    <Import Project="Debug.props" />
64 64
   </ImportGroup>
65 65
   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
66 66
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
67
-    <Import Project="PropertySheet.props" />
67
+    <Import Project="Debug.props" />
68 68
   </ImportGroup>
69 69
   <PropertyGroup Label="UserMacros" />
70 70
   <PropertyGroup>
71 71
     <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
72
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Platform)-Output\$(Configuration)\</OutDir>
73
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)$(Platform)-Output\$(Configuration)\</OutDir>
74
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
75
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Platform)-Output\$(Configuration)\</OutDir>
76
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)$(Platform)-Output\$(Configuration)\</OutDir>
77
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
78 72
   </PropertyGroup>
79 73
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
80 74
     <ClCompile>
81
-      <Optimization>Disabled</Optimization>
82
-      <AdditionalIncludeDirectories>$(SOURCEBASE);$(SOURCEBASE)/include;$(OPENSSL_HOME)/include;$(LZO_HOME)/include;$(PKCS11H_HOME)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
83
-      <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;$(CPPFLAGS);%(PreprocessorDefinitions)</PreprocessorDefinitions>
84
-      <MinimalRebuild>true</MinimalRebuild>
85
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
86
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
87
-      <PrecompiledHeader>
88
-      </PrecompiledHeader>
89
-      <WarningLevel>Level3</WarningLevel>
90
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
75
+      <AdditionalIncludeDirectories>$(OPENSSL_HOME)/include;$(LZO_HOME)/include;$(PKCS11H_HOME)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
76
+      <PreprocessorDefinitions>_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
91 77
     </ClCompile>
92 78
   </ItemDefinitionGroup>
93 79
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
94 80
     <ClCompile>
95
-      <Optimization>Disabled</Optimization>
96
-      <AdditionalIncludeDirectories>$(SOURCEBASE);$(SOURCEBASE)/include;$(OPENSSL_HOME)/include;$(LZO_HOME)/include;$(PKCS11H_HOME)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
97
-      <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;$(CPPFLAGS);%(PreprocessorDefinitions)</PreprocessorDefinitions>
98
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
99
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
100
-      <PrecompiledHeader>
101
-      </PrecompiledHeader>
102
-      <WarningLevel>Level3</WarningLevel>
103
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
81
+      <AdditionalIncludeDirectories>$(OPENSSL_HOME)/include;$(LZO_HOME)/include;$(PKCS11H_HOME)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
82
+      <PreprocessorDefinitions>_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
104 83
     </ClCompile>
105 84
   </ItemDefinitionGroup>
106 85
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
107 86
     <ClCompile>
108
-      <Optimization>MaxSpeed</Optimization>
109
-      <IntrinsicFunctions>true</IntrinsicFunctions>
110
-      <AdditionalIncludeDirectories>$(SOURCEBASE);$(SOURCEBASE)/include;$(OPENSSL_HOME)/include;$(LZO_HOME)/include;$(PKCS11H_HOME)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
111
-      <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;$(CPPFLAGS);%(PreprocessorDefinitions)</PreprocessorDefinitions>
112
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
113
-      <FunctionLevelLinking>true</FunctionLevelLinking>
114
-      <PrecompiledHeader>
115
-      </PrecompiledHeader>
116
-      <WarningLevel>Level3</WarningLevel>
117
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
87
+      <AdditionalIncludeDirectories>$(OPENSSL_HOME)/include;$(LZO_HOME)/include;$(PKCS11H_HOME)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
88
+      <PreprocessorDefinitions>_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
118 89
     </ClCompile>
119 90
   </ItemDefinitionGroup>
120 91
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
121 92
     <ClCompile>
122
-      <Optimization>MaxSpeed</Optimization>
123
-      <IntrinsicFunctions>true</IntrinsicFunctions>
124
-      <AdditionalIncludeDirectories>$(SOURCEBASE);$(SOURCEBASE)/include;$(OPENSSL_HOME)/include;$(LZO_HOME)/include;$(PKCS11H_HOME)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
125
-      <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;$(CPPFLAGS);%(PreprocessorDefinitions)</PreprocessorDefinitions>
126
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
127
-      <FunctionLevelLinking>true</FunctionLevelLinking>
128
-      <PrecompiledHeader>
129
-      </PrecompiledHeader>
130
-      <WarningLevel>Level3</WarningLevel>
131
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
93
+      <AdditionalIncludeDirectories>$(OPENSSL_HOME)/include;$(LZO_HOME)/include;$(PKCS11H_HOME)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
94
+      <PreprocessorDefinitions>_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
132 95
     </ClCompile>
133 96
   </ItemDefinitionGroup>
134 97
   <ItemGroup>
... ...
@@ -52,133 +52,74 @@
52 52
   </ImportGroup>
53 53
   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
54 54
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
55
-    <Import Project="..\compat\PropertySheet.props" />
55
+    <Import Project="..\compat\Release.props" />
56 56
   </ImportGroup>
57 57
   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
58 58
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
59
-    <Import Project="..\compat\PropertySheet.props" />
59
+    <Import Project="..\compat\Release.props" />
60 60
   </ImportGroup>
61 61
   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
62 62
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
63
-    <Import Project="..\compat\PropertySheet.props" />
63
+    <Import Project="..\compat\Debug.props" />
64 64
   </ImportGroup>
65 65
   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
66 66
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
67
-    <Import Project="..\compat\PropertySheet.props" />
67
+    <Import Project="..\compat\Debug.props" />
68 68
   </ImportGroup>
69 69
   <PropertyGroup Label="UserMacros" />
70 70
   <PropertyGroup>
71 71
     <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
72
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Platform)-Output\$(Configuration)\</OutDir>
73
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)$(Platform)-Output\$(Configuration)\</OutDir>
74
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
75
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
76
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
77
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Platform)-Output\$(Configuration)\</OutDir>
78
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)$(Platform)-Output\$(Configuration)\</OutDir>
79
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
80
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
81
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
82 72
   </PropertyGroup>
83 73
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
84 74
     <ClCompile>
85
-      <Optimization>Disabled</Optimization>
86
-      <AdditionalIncludeDirectories>$(SOURCEBASE);$(SOURCEBASE)/src/compat;$(SOURCEBASE)/include;$(TAP_WINDOWS_HOME)/include;$(OPENSSL_HOME)/include;$(LZO_HOME)/include;$(PKCS11H_HOME)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
87
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;$(CPPFLAGS);%(PreprocessorDefinitions)</PreprocessorDefinitions>
88
-      <MinimalRebuild>true</MinimalRebuild>
89
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
90
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
91
-      <PrecompiledHeader>
92
-      </PrecompiledHeader>
93
-      <WarningLevel>Level3</WarningLevel>
94
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
95
-      <UndefinePreprocessorDefinitions>UNICODE</UndefinePreprocessorDefinitions>
75
+      <AdditionalIncludeDirectories>..\compat;$(TAP_WINDOWS_HOME)/include;$(OPENSSL_HOME)/include;$(LZO_HOME)/include;$(PKCS11H_HOME)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
76
+      <PreprocessorDefinitions>_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
77
+      <UndefinePreprocessorDefinitions>UNICODE;%(UndefinePreprocessorDefinitions)</UndefinePreprocessorDefinitions>
96 78
     </ClCompile>
97
-    <ResourceCompile>
98
-      <AdditionalIncludeDirectories>$(SOURCEBASE);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
99
-    </ResourceCompile>
79
+    <ResourceCompile />
100 80
     <Link>
101 81
       <AdditionalDependencies>legacy_stdio_definitions.lib;Ncrypt.lib;libeay32.lib;ssleay32.lib;lzo2.lib;pkcs11-helper.dll.lib;gdi32.lib;ws2_32.lib;wininet.lib;crypt32.lib;iphlpapi.lib;winmm.lib;Fwpuclnt.lib;Rpcrt4.lib;%(AdditionalDependencies)</AdditionalDependencies>
102 82
       <AdditionalLibraryDirectories>$(OPENSSL_HOME)/lib;$(LZO_HOME)/lib;$(PKCS11H_HOME)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
103
-      <GenerateDebugInformation>true</GenerateDebugInformation>
104 83
       <SubSystem>Console</SubSystem>
105
-      <TargetMachine>MachineX86</TargetMachine>
106 84
     </Link>
107 85
   </ItemDefinitionGroup>
108 86
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
109 87
     <ClCompile>
110
-      <Optimization>Disabled</Optimization>
111
-      <AdditionalIncludeDirectories>$(SOURCEBASE);$(SOURCEBASE)/src/compat;$(SOURCEBASE)/include;$(TAP_WINDOWS_HOME)/include;$(OPENSSL_HOME)/include;$(LZO_HOME)/include;$(PKCS11H_HOME)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
112
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;$(CPPFLAGS);%(PreprocessorDefinitions)</PreprocessorDefinitions>
113
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
114
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
115
-      <PrecompiledHeader>
116
-      </PrecompiledHeader>
117
-      <WarningLevel>Level3</WarningLevel>
118
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
119
-      <UndefinePreprocessorDefinitions>UNICODE</UndefinePreprocessorDefinitions>
88
+      <AdditionalIncludeDirectories>..\compat;$(TAP_WINDOWS_HOME)/include;$(OPENSSL_HOME)/include;$(LZO_HOME)/include;$(PKCS11H_HOME)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
89
+      <PreprocessorDefinitions>_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
90
+      <UndefinePreprocessorDefinitions>UNICODE;%(UndefinePreprocessorDefinitions)</UndefinePreprocessorDefinitions>
120 91
     </ClCompile>
121
-    <ResourceCompile>
122
-      <AdditionalIncludeDirectories>$(SOURCEBASE);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
123
-    </ResourceCompile>
92
+    <ResourceCompile />
124 93
     <Link>
125 94
       <AdditionalDependencies>legacy_stdio_definitions.lib;Ncrypt.lib;libeay32.lib;ssleay32.lib;lzo2.lib;pkcs11-helper.dll.lib;gdi32.lib;ws2_32.lib;wininet.lib;crypt32.lib;iphlpapi.lib;winmm.lib;Fwpuclnt.lib;Rpcrt4.lib;%(AdditionalDependencies)</AdditionalDependencies>
126 95
       <AdditionalLibraryDirectories>$(OPENSSL_HOME)/lib;$(LZO_HOME)/lib;$(PKCS11H_HOME)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
127
-      <GenerateDebugInformation>true</GenerateDebugInformation>
128 96
       <SubSystem>Console</SubSystem>
129 97
     </Link>
130 98
   </ItemDefinitionGroup>
131 99
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
132 100
     <ClCompile>
133
-      <Optimization>MaxSpeed</Optimization>
134
-      <IntrinsicFunctions>true</IntrinsicFunctions>
135
-      <AdditionalIncludeDirectories>$(SOURCEBASE);$(SOURCEBASE)/src/compat;$(SOURCEBASE)/include;$(TAP_WINDOWS_HOME)/include;$(OPENSSL_HOME)/include;$(LZO_HOME)/include;$(PKCS11H_HOME)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
136
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;$(CPPFLAGS);%(PreprocessorDefinitions)</PreprocessorDefinitions>
137
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
138
-      <FunctionLevelLinking>true</FunctionLevelLinking>
139
-      <PrecompiledHeader>
140
-      </PrecompiledHeader>
141
-      <WarningLevel>Level3</WarningLevel>
142
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
143
-      <UndefinePreprocessorDefinitions>UNICODE</UndefinePreprocessorDefinitions>
101
+      <AdditionalIncludeDirectories>..\compat;$(TAP_WINDOWS_HOME)/include;$(OPENSSL_HOME)/include;$(LZO_HOME)/include;$(PKCS11H_HOME)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
102
+      <PreprocessorDefinitions>_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
103
+      <UndefinePreprocessorDefinitions>UNICODE;%(UndefinePreprocessorDefinitions)</UndefinePreprocessorDefinitions>
144 104
     </ClCompile>
145
-    <ResourceCompile>
146
-      <AdditionalIncludeDirectories>$(SOURCEBASE);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
147
-    </ResourceCompile>
105
+    <ResourceCompile />
148 106
     <Link>
149 107
       <AdditionalDependencies>legacy_stdio_definitions.lib;Ncrypt.lib;libeay32.lib;ssleay32.lib;lzo2.lib;pkcs11-helper.dll.lib;gdi32.lib;ws2_32.lib;wininet.lib;crypt32.lib;iphlpapi.lib;winmm.lib;Fwpuclnt.lib;Rpcrt4.lib;%(AdditionalDependencies)</AdditionalDependencies>
150 108
       <AdditionalLibraryDirectories>$(OPENSSL_HOME)/lib;$(LZO_HOME)/lib;$(PKCS11H_HOME)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
151
-      <GenerateDebugInformation>true</GenerateDebugInformation>
152 109
       <SubSystem>Console</SubSystem>
153
-      <OptimizeReferences>true</OptimizeReferences>
154
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
155
-      <TargetMachine>MachineX86</TargetMachine>
156 110
     </Link>
157 111
   </ItemDefinitionGroup>
158 112
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
159 113
     <ClCompile>
160
-      <Optimization>MaxSpeed</Optimization>
161
-      <IntrinsicFunctions>true</IntrinsicFunctions>
162
-      <AdditionalIncludeDirectories>$(SOURCEBASE);$(SOURCEBASE)/src/compat;$(SOURCEBASE)/include;$(TAP_WINDOWS_HOME)/include;$(OPENSSL_HOME)/include;$(LZO_HOME)/include;$(PKCS11H_HOME)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
163
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;$(CPPFLAGS);%(PreprocessorDefinitions)</PreprocessorDefinitions>
164
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
165
-      <FunctionLevelLinking>true</FunctionLevelLinking>
166
-      <PrecompiledHeader>
167
-      </PrecompiledHeader>
168
-      <WarningLevel>Level3</WarningLevel>
169
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
170
-      <UndefinePreprocessorDefinitions>UNICODE</UndefinePreprocessorDefinitions>
114
+      <AdditionalIncludeDirectories>..\compat;$(TAP_WINDOWS_HOME)/include;$(OPENSSL_HOME)/include;$(LZO_HOME)/include;$(PKCS11H_HOME)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
115
+      <PreprocessorDefinitions>_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
116
+      <UndefinePreprocessorDefinitions>UNICODE;%(UndefinePreprocessorDefinitions)</UndefinePreprocessorDefinitions>
171 117
     </ClCompile>
172
-    <ResourceCompile>
173
-      <AdditionalIncludeDirectories>$(SOURCEBASE);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
174
-    </ResourceCompile>
118
+    <ResourceCompile />
175 119
     <Link>
176 120
       <AdditionalDependencies>legacy_stdio_definitions.lib;Ncrypt.lib;libeay32.lib;ssleay32.lib;lzo2.lib;pkcs11-helper.dll.lib;gdi32.lib;ws2_32.lib;wininet.lib;crypt32.lib;iphlpapi.lib;winmm.lib;Fwpuclnt.lib;Rpcrt4.lib;%(AdditionalDependencies)</AdditionalDependencies>
177 121
       <AdditionalLibraryDirectories>$(OPENSSL_HOME)/lib;$(LZO_HOME)/lib;$(PKCS11H_HOME)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
178
-      <GenerateDebugInformation>true</GenerateDebugInformation>
179 122
       <SubSystem>Console</SubSystem>
180
-      <OptimizeReferences>true</OptimizeReferences>
181
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
182 123
     </Link>
183 124
   </ItemDefinitionGroup>
184 125
   <ItemGroup>
... ...
@@ -228,6 +228,12 @@
228 228
     <ClCompile Include="tls_crypt.c">
229 229
       <Filter>Source Files</Filter>
230 230
     </ClCompile>
231
+    <ClCompile Include="env_set.c">
232
+      <Filter>Source Files</Filter>
233
+    </ClCompile>
234
+    <ClCompile Include="run_command.c">
235
+      <Filter>Source Files</Filter>
236
+    </ClCompile>
231 237
   </ItemGroup>
232 238
   <ItemGroup>
233 239
     <ClInclude Include="base64.h">
... ...
@@ -476,6 +482,12 @@
476 476
     <ClInclude Include="tls_crypt.h">
477 477
       <Filter>Header Files</Filter>
478 478
     </ClInclude>
479
+    <ClInclude Include="env_set.h">
480
+      <Filter>Header Files</Filter>
481
+    </ClInclude>
482
+    <ClInclude Include="run_command.h">
483
+      <Filter>Header Files</Filter>
484
+    </ClInclude>
479 485
   </ItemGroup>
480 486
   <ItemGroup>
481 487
     <ResourceCompile Include="openvpn_win32_resources.rc">
... ...
@@ -52,124 +52,66 @@
52 52
   </ImportGroup>
53 53
   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
54 54
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
55
-    <Import Project="..\compat\PropertySheet.props" />
55
+    <Import Project="..\compat\Release.props" />
56 56
   </ImportGroup>
57 57
   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
58 58
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
59
-    <Import Project="..\compat\PropertySheet.props" />
59
+    <Import Project="..\compat\Release.props" />
60 60
   </ImportGroup>
61 61
   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
62 62
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
63
-    <Import Project="..\compat\PropertySheet.props" />
63
+    <Import Project="..\compat\Debug.props" />
64 64
   </ImportGroup>
65 65
   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
66 66
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
67
-    <Import Project="..\compat\PropertySheet.props" />
67
+    <Import Project="..\compat\Debug.props" />
68 68
   </ImportGroup>
69 69
   <PropertyGroup Label="UserMacros" />
70 70
   <PropertyGroup>
71 71
     <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
72
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Platform)-Output\$(Configuration)\</OutDir>
73
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)$(Platform)-Output\$(Configuration)\</OutDir>
74
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
75
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
76
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
77
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Platform)-Output\$(Configuration)\</OutDir>
78
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)$(Platform)-Output\$(Configuration)\</OutDir>
79
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
80
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
81
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
82 72
   </PropertyGroup>
83 73
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
84 74
     <ClCompile>
85
-      <Optimization>Disabled</Optimization>
86
-      <AdditionalIncludeDirectories>$(SOURCEBASE);..\..\include;..\openvpn;..\compat;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
87
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;$(CPPFLAGS);%(PreprocessorDefinitions)</PreprocessorDefinitions>
88
-      <MinimalRebuild>true</MinimalRebuild>
89
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
90
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
91
-      <PrecompiledHeader>
92
-      </PrecompiledHeader>
93
-      <WarningLevel>Level3</WarningLevel>
94
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
75
+      <AdditionalIncludeDirectories>..\openvpn;..\compat;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
76
+      <PreprocessorDefinitions>_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
95 77
     </ClCompile>
96
-    <ResourceCompile>
97
-      <AdditionalIncludeDirectories>$(SOURCEBASE);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
98
-    </ResourceCompile>
78
+    <ResourceCompile />
99 79
     <Link>
100 80
       <AdditionalDependencies>Userenv.lib;Iphlpapi.lib;ntdll.lib;Fwpuclnt.lib;Netapi32.lib;Shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
101
-      <GenerateDebugInformation>true</GenerateDebugInformation>
102 81
       <SubSystem>Console</SubSystem>
103
-      <TargetMachine>MachineX86</TargetMachine>
104 82
     </Link>
105 83
   </ItemDefinitionGroup>
106 84
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
107 85
     <ClCompile>
108
-      <Optimization>Disabled</Optimization>
109
-      <AdditionalIncludeDirectories>$(SOURCEBASE);..\..\include;..\openvpn;..\compat;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
110
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;$(CPPFLAGS);%(PreprocessorDefinitions)</PreprocessorDefinitions>
111
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
112
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
113
-      <PrecompiledHeader>
114
-      </PrecompiledHeader>
115
-      <WarningLevel>Level3</WarningLevel>
116
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
86
+      <AdditionalIncludeDirectories>..\openvpn;..\compat;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
87
+      <PreprocessorDefinitions>_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
117 88
     </ClCompile>
118
-    <ResourceCompile>
119
-      <AdditionalIncludeDirectories>$(SOURCEBASE);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
120
-    </ResourceCompile>
89
+    <ResourceCompile />
121 90
     <Link>
122 91
       <AdditionalDependencies>legacy_stdio_definitions.lib;Userenv.lib;Iphlpapi.lib;ntdll.lib;Fwpuclnt.lib;Netapi32.lib;Shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
123
-      <GenerateDebugInformation>true</GenerateDebugInformation>
124 92
       <SubSystem>Console</SubSystem>
125 93
     </Link>
126 94
   </ItemDefinitionGroup>
127 95
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
128 96
     <ClCompile>
129
-      <Optimization>MaxSpeed</Optimization>
130
-      <IntrinsicFunctions>true</IntrinsicFunctions>
131
-      <AdditionalIncludeDirectories>$(SOURCEBASE);..\..\include;..\openvpn;..\compat;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
132
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;$(CPPFLAGS);%(PreprocessorDefinitions)</PreprocessorDefinitions>
133
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
134
-      <FunctionLevelLinking>true</FunctionLevelLinking>
135
-      <PrecompiledHeader>
136
-      </PrecompiledHeader>
137
-      <WarningLevel>Level3</WarningLevel>
138
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
97
+      <AdditionalIncludeDirectories>..\openvpn;..\compat;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
98
+      <PreprocessorDefinitions>_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
139 99
     </ClCompile>
140
-    <ResourceCompile>
141
-      <AdditionalIncludeDirectories>$(SOURCEBASE);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
142
-    </ResourceCompile>
100
+    <ResourceCompile />
143 101
     <Link>
144 102
       <AdditionalDependencies>Userenv.lib;Iphlpapi.lib;ntdll.lib;Fwpuclnt.lib;Netapi32.lib;Shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
145
-      <GenerateDebugInformation>true</GenerateDebugInformation>
146 103
       <SubSystem>Console</SubSystem>
147
-      <OptimizeReferences>true</OptimizeReferences>
148
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
149
-      <TargetMachine>MachineX86</TargetMachine>
150 104
     </Link>
151 105
   </ItemDefinitionGroup>
152 106
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
153 107
     <ClCompile>
154
-      <Optimization>MaxSpeed</Optimization>
155
-      <IntrinsicFunctions>true</IntrinsicFunctions>
156
-      <AdditionalIncludeDirectories>$(SOURCEBASE);..\..\include;..\openvpn;..\compat;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
157
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
158
-      <FunctionLevelLinking>true</FunctionLevelLinking>
159
-      <PrecompiledHeader>
160
-      </PrecompiledHeader>
161
-      <WarningLevel>Level3</WarningLevel>
162
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
108
+      <AdditionalIncludeDirectories>..\openvpn;..\compat;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
109
+      <PreprocessorDefinitions>_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
163 110
     </ClCompile>
164
-    <ResourceCompile>
165
-      <AdditionalIncludeDirectories>$(SOURCEBASE);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
166
-    </ResourceCompile>
111
+    <ResourceCompile />
167 112
     <Link>
168 113
       <AdditionalDependencies>legacy_stdio_definitions.lib;Userenv.lib;Iphlpapi.lib;ntdll.lib;Fwpuclnt.lib;Netapi32.lib;Shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
169
-      <GenerateDebugInformation>true</GenerateDebugInformation>
170 114
       <SubSystem>Console</SubSystem>
171
-      <OptimizeReferences>true</OptimizeReferences>
172
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
173 115
     </Link>
174 116
   </ItemDefinitionGroup>
175 117
   <ItemGroup>
... ...
@@ -15,10 +15,22 @@
15 15
     </Filter>
16 16
   </ItemGroup>
17 17
   <ItemGroup>
18
-    <ClCompile Include="openvpnserv.c">
18
+    <ClCompile Include="service.c">
19 19
       <Filter>Source Files</Filter>
20 20
     </ClCompile>
21
-    <ClCompile Include="service.c">
21
+    <ClCompile Include="automatic.c">
22
+      <Filter>Source Files</Filter>
23
+    </ClCompile>
24
+    <ClCompile Include="common.c">
25
+      <Filter>Source Files</Filter>
26
+    </ClCompile>
27
+    <ClCompile Include="interactive.c">
28
+      <Filter>Source Files</Filter>
29
+    </ClCompile>
30
+    <ClCompile Include="validate.c">
31
+      <Filter>Source Files</Filter>
32
+    </ClCompile>
33
+    <ClCompile Include="..\openvpn\block_dns.c">
22 34
       <Filter>Source Files</Filter>
23 35
     </ClCompile>
24 36
   </ItemGroup>
... ...
@@ -26,6 +38,12 @@
26 26
     <ClInclude Include="service.h">
27 27
       <Filter>Header Files</Filter>
28 28
     </ClInclude>
29
+    <ClInclude Include="validate.h">
30
+      <Filter>Header Files</Filter>
31
+    </ClInclude>
32
+    <ClInclude Include="..\openvpn\block_dns.h">
33
+      <Filter>Header Files</Filter>
34
+    </ClInclude>
29 35
   </ItemGroup>
30 36
   <ItemGroup>
31 37
     <ResourceCompile Include="openvpnserv_resources.rc">