Skip to content

Commit 38dbfca

Browse files
committed
[mono-runtimes] Build required mono runtimes.
Add a new build-tools/mono-runtimes project to build the required Mono runtimes for Xamarin.Android app execution on Android devices. Xamarin.Android 6.0 ("cycle 6") includes Mono runtimes compiled for five architectures: * armeabi (armv5) * armeabi-v7a (armv7) * arm64-v8a (aarch64) * x86 * x86_64 An additional "host" architecture is also built to build the "monodroid" profile assemblies such as mscorlib.dll. In the interest of expediency and not requiring that *six* different runtimes be built -- which can greatly increase build times and storage requirements -- the initial xamarin-android open-source build will only build the armeabi-v7a (armv7) and "host" architectures. Additionally, the <UnzipDirectoryChildren/> task needed to be altered to use unzip(1) on OS X instead of using System.IO.Compression.ZipFile, because the ZipFile implementation included with Mono 4.4 doesn't respect file attributes such as the +x, causing all files to be extracted as 644 (rw-r--r--), resulting in an NDK toolchain which wouldn't work. To resolve this issue, execution on OS X and Linux now uses unzip(1). ~~ Adding new architectures ~~ To build Mono for a new architecture, edit build-tools/mono-runtimes/mono-runtimes.projitems and add a new @(_MonoRuntime) entry for the desired architecture. TODO: Figure out if there's a reasonable way to "opt-in" or "opt-out" of CPU architectures so that it isn't an "all or nothing" prospect.
1 parent 6fd330d commit 38dbfca

File tree

11 files changed

+258
-4
lines changed

11 files changed

+258
-4
lines changed

.gitmodules

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
[submodule "external/mono"]
2+
path = external/mono
3+
url = git@github.com:mono/mono.git

Makefile

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,9 @@ MSBUILD = xbuild /p:Configuration=$(CONFIGURATION)
44
all:
55
$(MSBUILD)
66

7+
prepare:
8+
nuget restore
9+
git submodule update --init --recursive
10+
711
clean:
812
$(MSBUILD) /t:Clean

README.md

Lines changed: 33 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,5 +44,36 @@ URL to download files from is controlled by the `$(AndroidUri)` property.
4444
At this point in time, building Xamarin.Android is only supported on OS X.
4545
We will work to improve this.
4646

47-
To build Xamarin.Android, load `Xamarin.Android.sln` into Xamarin Studio 6
48-
and Build the project.
47+
To build Xamarin.Android, first prepare the project:
48+
49+
make prepare
50+
51+
This will perform `git submodule update`, and any other pre-build tasks
52+
that need to be performed.
53+
54+
Then, you may do one of the following:
55+
56+
1. Run make:
57+
58+
make
59+
60+
2. Load `Xamarin.Android.sln` into Xamarin Studio and Build the project.
61+
62+
# Build Output Directory Structure
63+
64+
There are two configurations, `Debug` and `Release`, controlled by the
65+
`$(Configuration)` MSBuild property.
66+
67+
The `bin\Build$(Configuration)` directory, e.g. `bin\BuildDebug`, contains
68+
artifacts needed for *building* the repository. They should not be needed
69+
for later execution.
70+
71+
The `bin\$(Configuration)` directory, e.g. `bin\Debug`, contains
72+
*redistributable* artifacts, such as tooling and runtimes. This directory
73+
acts as a *local installation prefix*, in which the directory structure
74+
mirrors that of the OS X Xamarin.Android.framework directory structure:
75+
76+
* `bin\$(Configuration)\lib\xbuild\Xamarin\Android`: MSBuild-related support
77+
files and required runtimes used by the MSBuild tooling.
78+
* `bin\$(Configuration)\lib\xbuild-frameworks\MonoAndroid`: Xamarin.Android
79+
profile assemblies and facade assemblies.

Xamarin.Android.sln

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ Project("{9344BDBB-3E7F-41FC-A0DD-8665D75EE146}") = "android-toolchain", "build-
77
EndProject
88
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Android.Tools.BootstrapTasks", "src\Xamarin.Android.Tools.BootstrapTasks\Xamarin.Android.Tools.BootstrapTasks.csproj", "{E8492EFB-D14A-4F32-AA28-88848322ECEA}"
99
EndProject
10+
Project("{9344BDBB-3E7F-41FC-A0DD-8665D75EE146}") = "mono-runtimes", "build-tools\mono-runtimes\mono-runtimes.mdproj", "{C03E6CF1-7460-4CDC-A4AB-292BBC0F61F2}"
11+
EndProject
1012
Global
1113
GlobalSection(SolutionConfigurationPlatforms) = preSolution
1214
Debug|AnyCPU = Debug|AnyCPU
@@ -21,10 +23,15 @@ Global
2123
{E8492EFB-D14A-4F32-AA28-88848322ECEA}.Release|AnyCPU.Build.0 = Release|AnyCPU
2224
{E8492EFB-D14A-4F32-AA28-88848322ECEA}.Debug|AnyCPU.ActiveCfg = Debug|Any CPU
2325
{E8492EFB-D14A-4F32-AA28-88848322ECEA}.Debug|AnyCPU.Build.0 = Debug|Any CPU
26+
{C03E6CF1-7460-4CDC-A4AB-292BBC0F61F2}.Debug|AnyCPU.ActiveCfg = Debug|Any CPU
27+
{C03E6CF1-7460-4CDC-A4AB-292BBC0F61F2}.Debug|AnyCPU.Build.0 = Debug|Any CPU
28+
{C03E6CF1-7460-4CDC-A4AB-292BBC0F61F2}.Release|AnyCPU.ActiveCfg = Release|Any CPU
29+
{C03E6CF1-7460-4CDC-A4AB-292BBC0F61F2}.Release|AnyCPU.Build.0 = Release|Any CPU
2430
EndGlobalSection
2531
GlobalSection(NestedProjects) = preSolution
2632
{8FF78EB6-6FC8-46A7-8A15-EBBA9045C5FA} = {E351F97D-EA4F-4E7F-AAA0-8EBB1F2A4A62}
2733
{E8492EFB-D14A-4F32-AA28-88848322ECEA} = {E351F97D-EA4F-4E7F-AAA0-8EBB1F2A4A62}
34+
{C03E6CF1-7460-4CDC-A4AB-292BBC0F61F2} = {E351F97D-EA4F-4E7F-AAA0-8EBB1F2A4A62}
2835
EndGlobalSection
2936
GlobalSection(MonoDevelopProperties) = preSolution
3037
Policies = $0

build-tools/android-toolchain/android-toolchain.targets

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,12 @@
3636
<MakeDir Directories="$(AndroidToolchainDirectory)\sdk;$(AndroidToolchainDirectory)\ndk" />
3737

3838
<UnzipDirectoryChildren
39+
HostOS="$(HostOS)"
3940
SourceFiles="@(AndroidSdkItem->'$(AndroidToolchainCacheDirectory)\%(Identity)')"
4041
DestinationFolder="$(AndroidToolchainDirectory)\sdk"
4142
/>
4243
<UnzipDirectoryChildren
44+
HostOS="$(HostOS)"
4345
SourceFiles="@(AndroidNdkItem->'$(AndroidToolchainCacheDirectory)\%(Identity)')"
4446
DestinationFolder="$(AndroidToolchainDirectory)\ndk"
4547
/>
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3+
<PropertyGroup>
4+
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
5+
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
6+
<ItemType>GenericProject</ItemType>
7+
<ProjectGuid>{C03E6CF1-7460-4CDC-A4AB-292BBC0F61F2}</ProjectGuid>
8+
</PropertyGroup>
9+
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
10+
<OutputPath>..\..\bin\Debug</OutputPath>
11+
</PropertyGroup>
12+
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
13+
<OutputPath>..\..\bin\Release</OutputPath>
14+
</PropertyGroup>
15+
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
16+
<PropertyGroup>
17+
<BuildDependsOn>
18+
ResolveReferences;
19+
_Autogen;
20+
_ConfigureRuntimes;
21+
_BuildRuntimes;
22+
_InstallRuntimes;
23+
_InstallBcl;
24+
</BuildDependsOn>
25+
</PropertyGroup>
26+
<Import Project="mono-runtimes.targets" />
27+
<ItemGroup>
28+
<ProjectReference Include="..\android-toolchain\android-toolchain.mdproj">
29+
<Project>{8FF78EB6-6FC8-46A7-8A15-EBBA9045C5FA}</Project>
30+
<Name>android-toolchain</Name>
31+
<ReferenceOutputAssembly>False</ReferenceOutputAssembly>
32+
</ProjectReference>
33+
</ItemGroup>
34+
</Project>
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3+
<ItemGroup>
4+
<_MonoRuntime Include="armeabi-v7a">
5+
<Ar>$(_ArmAr)</Ar>
6+
<As>$(_ArmAs)</As>
7+
<Cc>$(_ArmCc)</Cc>
8+
<Cpp>$(_ArmCpp) $(_ArmCppFlags)</Cpp>
9+
<CFlags>$(_ArmCFlags) -mtune=cortex-a8 -march=armv7-a -mfpu=vfp -mfloat-abi=softfp $(_TargetCFlags)</CFlags>
10+
<Cxx>$(_ArmCxx)</Cxx>
11+
<CxxFlags>$(_ArmCxxFlags) -mtune=cortex-a8 -march=armv7-a -mfpu=vfp -mfloat-abi=softfp $(_TargetCxxFlags) </CxxFlags>
12+
<CxxCpp>$(_ArmCxxCpp) $(_ArmCppFlags)</CxxCpp>
13+
<Ld>$(_ArmLd)</Ld>
14+
<LdFlags>$(_ArmLdFlags)</LdFlags>
15+
<RanLib>$(_ArmRanLib)</RanLib>
16+
<Strip>$(_ArmStrip)</Strip>
17+
<ConfigureFlags>--host=armv5-linux-androideabi $(_TargetConfigureFlags)</ConfigureFlags>
18+
<OutputRuntime>libmonosgen-2.0.so</OutputRuntime>
19+
<OutputProfiler>libmono-profiler-log.so</OutputProfiler>
20+
<OutputMonoPosixHelper>libMonoPosixHelper.so</OutputMonoPosixHelper>
21+
</_MonoRuntime>
22+
<_MonoRuntime Include="host">
23+
<Ar>ar</Ar>
24+
<As>as</As>
25+
<Cc>clang</Cc>
26+
<CFlags>$(_CommonCFlags) -mmacosx-version-min=10.9</CFlags>
27+
<Cxx>clang++</Cxx>
28+
<CxxCpp>cpp</CxxCpp>
29+
<CxxFlags></CxxFlags>
30+
<Ld>ld</Ld>
31+
<LdFlags></LdFlags>
32+
<RanLib>ranlib</RanLib>
33+
<Strip>strip -S</Strip>
34+
<ConfigureFlags>--enable-maintainer-mode --without-ikvm-native --with-monodroid --with-mcs-docs=no --disable-mono-debugger --with-profile2=no --with-profile4=no --with-profile4_5=yes --disable-boehm --enable-nls=no --disable-iconv</ConfigureFlags>
35+
<OutputRuntime>libmonosgen-2.0.dylib</OutputRuntime>
36+
<OutputProfiler>libmono-profiler-log.dylib</OutputProfiler>
37+
<OutputMonoPosixHelper>libMonoPosixHelper.dylib</OutputMonoPosixHelper>
38+
</_MonoRuntime>
39+
</ItemGroup>
40+
</Project>
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3+
<PropertyGroup>
4+
<_CommonCFlags Condition=" '$(Configuration)' == 'Debug' ">-ggdb3 -O0 -fno-omit-frame-pointer</_CommonCFlags>
5+
<_CommonCFlags Condition=" '$(Configuration)' == 'Release' ">-g -O2</_CommonCFlags>
6+
<_CommonConfigureFlags>--without-ikvm-native --enable-maintainer-mode --with-profile2=no --with-profile4=no --with-profile4_5=no --with-monodroid --enable-nls=no --with-sigaltstack=yes --with-tls=pthread mono_cv_uscore=yes</_CommonConfigureFlags>
7+
<_TargetConfigureFlags>$(_CommonConfigureFlags) --enable-minimal=ssa,portability,attach,verifier,full_messages,sgen_remset,sgen_marksweep_par,sgen_marksweep_fixed,sgen_marksweep_fixed_par,sgen_copying,logging,security,shared_handles --disable-mcs-build --disable-executables</_TargetConfigureFlags>
8+
<_SecurityCFlags>-Wl,-z,now -Wl,-z,relro -Wl,-z,noexecstack -fstack-protector</_SecurityCFlags>
9+
<_TargetCFlags>$(_SecurityCFlags) -DMONODROID=1</_TargetCFlags>
10+
<_TargetCxxFlags>$(_SecurityCFlags) -DMONODROID=1</_TargetCxxFlags>
11+
<_TargetLdFlags>-ldl -lm -llog -lc -lgcc</_TargetLdFlags>
12+
<_ArmNdkPlatformPath>$(AndroidToolchainDirectory)\ndk\platforms\android-4</_ArmNdkPlatformPath>
13+
<_ArmAr>$(AndroidToolchainDirectory)\toolchains\arm-linux-androideabi-clang\bin\arm-linux-androideabi-ar</_ArmAr>
14+
<_ArmAs>$(AndroidToolchainDirectory)\toolchains\arm-linux-androideabi-clang\bin\arm-linux-androideabi-as</_ArmAs>
15+
<_ArmCc>$(AndroidToolchainDirectory)\toolchains\arm-linux-androideabi-clang\bin\arm-linux-androideabi-clang</_ArmCc>
16+
<_ArmCFlags>$(_CommonCFlags) -D__POSIX_VISIBLE=201002 -DSK_RELEASE -DNDEBUG -UDEBUG -fpic</_ArmCFlags>
17+
<_ArmCpp>$(AndroidToolchainDirectory)\toolchains\arm-linux-androideabi-clang\bin\arm-linux-androideabi-cpp</_ArmCpp>
18+
<_ArmCppFlags>-I$(_ArmNdkPlatformPath)\arch-arm\usr\include\</_ArmCppFlags>
19+
<_ArmCxx>$(AndroidToolchainDirectory)\toolchains\arm-linux-androideabi-clang\bin\arm-linux-androideabi-clang++</_ArmCxx>
20+
<_ArmCxxFlags>-I$(_ArmNdkPlatformPath)\arch-arm\usr\include\</_ArmCxxFlags>
21+
<_ArmCxxCpp>$(AndroidToolchainDirectory)\toolchains\arm-linux-androideabi-clang\bin\arm-linux-androideabi-cpp</_ArmCxxCpp>
22+
<_ArmLd>$(AndroidToolchainDirectory)\toolchains\arm-linux-androideabi-clang\bin\arm-linux-androideabi-ld</_ArmLd>
23+
<_ArmLdFlags>$(_TargetLdFlags) -Wl,--fix-cortex-a8 -Wl,-rpath-link=$(_ArmNdkPlatformPath)\arch-arm\usr\lib,-dynamic-linker=/system/bin/linker -L$(_ArmNdkPlatformPath)\arch-arm\usr\lib</_ArmLdFlags>
24+
<_ArmRanLib>$(AndroidToolchainDirectory)\toolchains\arm-linux-androideabi-clang\bin\arm-linux-androideabi-ranlib</_ArmRanLib>
25+
<_ArmStrip>$(AndroidToolchainDirectory)\toolchains\arm-linux-androideabi-clang\bin\arm-linux-androideabi-strip</_ArmStrip>
26+
</PropertyGroup>
27+
</Project>
Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3+
<Import Project="..\..\Configuration.props" />
4+
<Import Project="mono-runtimes.props" />
5+
<Import Project="mono-runtimes.projitems" />
6+
<PropertyGroup>
7+
<_MonoPath>..\..\external\mono</_MonoPath>
8+
</PropertyGroup>
9+
<Target Name="_Autogen"
10+
Inputs="$(_MonoPath)\autogen.sh"
11+
Outputs="$(_MonoPath)\configure">
12+
<Exec
13+
Command="NOCONFIGURE=1 ./autogen.sh"
14+
WorkingDirectory="$(_MonoPath)"
15+
/>
16+
</Target>
17+
<Target Name="_ConfigureRuntimes"
18+
Inputs="$(_MonoPath)\configure"
19+
Outputs="@(_MonoRuntime->'obj\%(Identity)\.stamp')">
20+
<MakeDir Directories="@(_MonoRuntime->'obj\%(Identity)')" />
21+
<Exec
22+
Command="..\..\$(_MonoPath)\configure LDFLAGS=&quot;%(_MonoRuntime.LdFlags)&quot; CFLAGS=&quot;%(_MonoRuntime.CFlags)&quot; CXXFLAGS=&quot;%(_MonoRuntime.CxxFlags)&quot; CC=&quot;%(_MonoRuntime.Cc)&quot; CXX=&quot;%(_MonoRuntime.Cxx)&quot; CPP=&quot;%(_MonoRuntime.Cpp)&quot; CXXCPP=&quot;%(_MonoRuntime.CxxCpp)&quot; LD=&quot;%(_MonoRuntime.Ld)&quot; AR=&quot;%(_MonoRuntime.Ar)&quot; AS=&quot;%(_MonoRuntime.As)&quot; RANLIB=&quot;%(_MonoRuntime.RanLib)&quot; STRIP=&quot;%(_MonoRuntime.Strip)&quot; --cache-file=..\%(_MonoRuntime.Identity).config.cache %(_MonoRuntime.ConfigureFlags)"
23+
WorkingDirectory="@(_MonoRuntime->'obj\%(Identity)')"
24+
/>
25+
<Touch
26+
Files="@(_MonoRuntime->'obj\%(Identity)\.stamp')"
27+
AlwaysCreate="True"
28+
/>
29+
</Target>
30+
<Target Name="_BuildRuntimes"
31+
Inputs="@(_MonoRuntime->'obj\%(Identity)\.stamp')"
32+
Outputs="@(_MonoRuntime->'obj\%(Identity)\mono\mini\.libs\%(OutputRuntime)');@(_MonoRuntime->'obj\%(Identity)\mono\profiler\.libs\%(OutputProfiler)');@(_MonoRuntime->'obj\%(Identity)\support\.libs\%(OutputMonoPosixHelper)')">
33+
<Exec
34+
Command="make $(MAKEFLAGS) # %(_MonoRuntime.Identity)"
35+
WorkingDirectory="@(_MonoRuntime->'obj\%(Identity)')"
36+
/>
37+
</Target>
38+
<Target Name="_InstallRuntimes"
39+
Inputs="@(_MonoRuntime->'obj\%(Identity)\mono\mini\.libs\%(OutputRuntime)');@(_MonoRuntime->'obj\%(Identity)\mono\profiler\.libs\%(OutputProfiler)');@(_MonoRuntime->'obj\%(Identity)\support\.libs\%(OutputMonoPosixHelper)')"
40+
Outputs="@(_MonoRuntime->'$(OutputPath)\lib\xbuild\Xamarin\Android\lib\%(Identity)\%(OutputRuntime)');@(_MonoRuntime->'$(OutputPath)\lib\xbuild\Xamarin\Android\lib\%(Identity)\%(OutputProfiler)');@(_MonoRuntime->'$(OutputPath)\lib\xbuild\Xamarin\Android\lib\%(Identity)\%(OutputMonoPosixHelper)')">
41+
<MakeDir Directories="@(_MonoRuntime->'$(OutputPath)\lib\xbuild\Xamarin\Android\lib\%(Identity)')" />
42+
<Copy
43+
SourceFiles="@(_MonoRuntime->'obj\%(Identity)\mono\mini\.libs\%(OutputRuntime)')"
44+
DestinationFiles="@(_MonoRuntime->'$(OutputPath)\lib\xbuild\Xamarin\Android\lib\%(Identity)\%(OutputRuntime)')"
45+
/>
46+
<Touch
47+
Files="@(_MonoRuntime->'$(OutputPath)\lib\xbuild\Xamarin\Android\lib\%(Identity)\%(OutputRuntime)')"
48+
/>
49+
<Copy
50+
SourceFiles="@(_MonoRuntime->'obj\%(Identity)\mono\mini\.libs\%(OutputRuntime)')"
51+
DestinationFiles="@(_MonoRuntime->'$(OutputPath)\lib\xbuild\Xamarin\Android\lib\%(Identity)\%(OutputRuntime)-unstripped')"
52+
/>
53+
<Exec
54+
Command="%(_MonoRuntime.Strip) &quot;@(_MonoRuntime->'$(OutputPath)\lib\xbuild\Xamarin\Android\lib\%(Identity)\%(OutputRuntime)')&quot;"
55+
/>
56+
<Copy
57+
SourceFiles="@(_MonoRuntime->'obj\%(Identity)\mono\profiler\.libs\%(OutputProfiler)')"
58+
DestinationFiles="@(_MonoRuntime->'$(OutputPath)\lib\xbuild\Xamarin\Android\lib\%(Identity)\%(OutputProfiler)')"
59+
/>
60+
<Touch
61+
Files="@(_MonoRuntime->'$(OutputPath)\lib\xbuild\Xamarin\Android\lib\%(Identity)\%(OutputProfiler)')"
62+
/>
63+
<Copy
64+
SourceFiles="@(_MonoRuntime->'obj\%(Identity)\support\.libs\%(OutputMonoPosixHelper)')"
65+
DestinationFiles="@(_MonoRuntime->'$(OutputPath)\lib\xbuild\Xamarin\Android\lib\%(Identity)\%(OutputMonoPosixHelper)')"
66+
/>
67+
<Touch
68+
Files="@(_MonoRuntime->'$(OutputPath)\lib\xbuild\Xamarin\Android\lib\%(Identity)\%(OutputMonoPosixHelper)')"
69+
/>
70+
</Target>
71+
<Target Name="_InstallBcl"
72+
Inputs="$(_MonoPath)\mcs\class\lib\monodroid\mscorlib.dll"
73+
Outputs="$(OutputPath)\lib\xbuild-frameworks\MonoAndroid\v1.0\mscorlib.dll">
74+
<MakeDir Directories="$(OutputPath)\lib\xbuild-frameworks\MonoAndroid\v1.0" />
75+
<MakeDir Directories="$(OutputPath)\lib\xbuild-frameworks\MonoAndroid\v1.0\Facades" />
76+
<ItemGroup>
77+
<_Assemblies Include="$(_MonoPath)\mcs\class\lib\monodroid\*.dll" />
78+
<_Facades Include="$(_MonoPath)\mcs\class\lib\monodroid\Facades\*.dll" />
79+
</ItemGroup>
80+
<Copy
81+
SourceFiles="@(_Assemblies)"
82+
DestinationFolder="$(OutputPath)\lib\xbuild-frameworks\MonoAndroid\v1.0"
83+
/>
84+
<Copy
85+
SourceFiles="@(_Facades)"
86+
DestinationFolder="$(OutputPath)\lib\xbuild-frameworks\MonoAndroid\v1.0\Facades"
87+
/>
88+
<Touch
89+
Files="$(OutputPath)\lib\xbuild-frameworks\MonoAndroid\v1.0\mscorlib.dll"
90+
/>
91+
</Target>
92+
</Project>

external/mono

Submodule mono added at 7b4a585

0 commit comments

Comments
 (0)