Skip to content

Commit 269d02c

Browse files
committed
Add support for LLVM integrated build as part of Visual Studio solution
build. LLVM build follows similar pattern as BTLS build and will be build as part of regular Visual Studio build Mono runtime if LLVM has been enabled through the autogen.sh, --enable-llvm or –with-llvm argument. It is also supports msbuild properties MONO_ENABLE_LLVM, MONO_EXTERNAL_LLVM_CONFIG, if Visual Studio Mono runtime has been built without using autogen.sh. When just using –enable-llvm, LLVM build will try to build internal LLVM branch under external/llvm or if override has been set in props file (using MONO_INTERNAL_LLVM_SOURCE_DIR), an alternative LLVM source directory path. If –with-llvm has been used pointing to an llvm-config.exe, no internal LLVM will be build, but the external LLVM build will be used. Needed LLVM executables (opt.exe, llc.exe) will be installed into regular Visual Studio Mono runtime build output directory. The internal Mono LLVM 6.0 release will build as part of changes to this commit, but it has not yet been fixed to work as expected during runtime. That work will be done in different commit. The Mono LLVM 3.6 branch will however work as expected for Windows x64 and can be setup and used using –with-llvm argument or build as part of Visual Studio build Mono runtime by enabling msbuild properties, MONO_ENABLE_LLVM and MONO_INTERNAL_LLVM_SOURCE_DIR.
1 parent f038e7c commit 269d02c

14 files changed

+918
-98
lines changed

msvc/build-external-btls.vcxproj

+3-13
Original file line numberDiff line numberDiff line change
@@ -145,25 +145,15 @@
145145
</PostBuildEvent>
146146
</ItemDefinitionGroup>
147147
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
148+
<Import Project="mono.external.targets" />
148149
<ImportGroup Label="ExtensionTargets">
149150
</ImportGroup>
150151
<PropertyGroup>
151152
<_BtlsCFlags Condition="'$(MONO_PREPROCESSOR_DEFINITIONS)' != ''">$(MONO_PREPROCESSOR_DEFINITIONS.Replace(";"," "))</_BtlsCFlags>
152153
<_BtlsCFlags>$(_BtlsCFlags.Trim())</_BtlsCFlags>
153154
<_BtlsCFlags Condition="'$(_BtlsCFlags)' != ''">-D$(_BtlsCFlags.Replace(" "," -D"))</_BtlsCFlags>
154-
<_BtlsBuildDir>$(MONO_BUILD_DIR_PREFIX)$(Platform)\obj\external\btls-build-shared\$(Configuration)</_BtlsBuildDir>
155155
<_BtlsBuildCommand>build-external-btls.bat &quot;$(MONO_DIR)&quot; &quot;$(_BtlsBuildDir)&quot; &quot;$(OutDir)&quot; &quot;$(_BtlsCFlags)&quot; &quot;$(Platform)&quot; &quot;$(Configuration)&quot;</_BtlsBuildCommand>
156-
<_BtlsCheckCommand>findstr /i /r /c:&quot;.*#define.*HAVE_BTLS.*1&quot; $(MONO_DIR)/cygconfig.h >nul 2>&amp;1</_BtlsCheckCommand>
157156
</PropertyGroup>
158-
<Target Name="_CheckEnableBtls" Condition="'$(MONO_ENABLE_BTLS)' == ''">
159-
<Exec Command="$(_BtlsCheckCommand)" IgnoreExitCode="true" EchoOff="true">
160-
<Output TaskParameter="ExitCode" PropertyName="_CheckEnableBtlsExitCode"/>
161-
</Exec>
162-
<PropertyGroup>
163-
<MONO_ENABLE_BTLS Condition="'$(_CheckEnableBtlsExitCode)' == '0'">true</MONO_ENABLE_BTLS>
164-
<MONO_ENABLE_BTLS Condition="'$(_CheckEnableBtlsExitCode)' == '1'">false</MONO_ENABLE_BTLS>
165-
</PropertyGroup>
166-
</Target>
167157
<Target Name="_AfterBuildExternalBtls" Condition="'$(MONO_ENABLE_BTLS)' == 'true'">
168158
<Exec Command="$(_BtlsBuildCommand) &quot;Build&quot; &quot;$(MSBuildBinPath)\&quot;">
169159
<Output TaskParameter="ExitCode" PropertyName="_BuildExternalBtlsExitCode" />
@@ -174,6 +164,6 @@
174164
<Output TaskParameter="ExitCode" PropertyName="_CleanExternalBtlsExitCode" />
175165
</Exec>
176166
</Target>
177-
<Target Name="AfterBuild" DependsOnTargets="_CheckEnableBtls;_AfterBuildExternalBtls" />
178-
<Target Name="AfterClean" DependsOnTargets="_CheckEnableBtls;_AfterCleanExternalBtls" />
167+
<Target Name="AfterBuild" DependsOnTargets="_ConfigureExternalMonoBTLSBuildEnvironment;_AfterBuildExternalBtls" />
168+
<Target Name="AfterClean" DependsOnTargets="_ConfigureExternalMonoBTLSBuildEnvironment;_AfterCleanExternalBtls" />
179169
</Project>

0 commit comments

Comments
 (0)